app.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /**
  2. * 演示程序当前的 “注册/登录” 等操作,是基于 “本地存储” 完成的
  3. * 当您要参考这个演示程序进行相关 app 的开发时,
  4. * 请注意将相关方法调整成 “基于服务端Service” 的实现。
  5. **/
  6. (function($, owner) {
  7. /**
  8. * 用户登录
  9. **/
  10. owner.login = function(loginInfo, callback) {
  11. callback = callback || $.noop;
  12. loginInfo = loginInfo || {};
  13. loginInfo.warehouseCode = loginInfo.warehouseCode || '';
  14. loginInfo.userCode = loginInfo.userCode || '';
  15. loginInfo.password = loginInfo.password || '';
  16. if (loginInfo.warehouseCode.length < 1) {
  17. return callback('仓库代码最短为 1 个字符');
  18. }
  19. if (loginInfo.userCode.length < 4) {
  20. //return callback('用户代码最短为 4 个字符');
  21. }
  22. if (loginInfo.password.length < 6) {
  23. //return callback('用户密码最短为 6 个字符');
  24. }
  25. //服务器地址
  26. var serverUrl = localStorage.getItem('$serverUrl');
  27. if (serverUrl == null || serverUrl == '') {
  28. return callback('请先设置服务器');
  29. }
  30. var loginUrl = serverUrl + '/app/loginV2/loginAction';
  31. var result = null;
  32. //ajax登录
  33. mui.ajax(loginUrl,{
  34. async: false,
  35. data:{
  36. warehouseCode:loginInfo.warehouseCode,
  37. userCode:loginInfo.userCode,
  38. password:loginInfo.password,
  39. version:1
  40. },
  41. dataType:'json',//服务器返回json格式数据
  42. contentType:"application/json",
  43. type:'post',//HTTP请求类型
  44. timeout:10000,//超时时间设置为10秒;
  45. success:function(tempResult){
  46. result = tempResult;
  47. },
  48. error:function(xhr,type,errorThrown){
  49. //异常处理
  50. console.log(type);
  51. return callback('登录失败,AJAX异常');
  52. }
  53. });
  54. if (result.code != 0) {
  55. return callback(result.msg);
  56. }
  57. var loginVo = result.data;
  58. //调试使用
  59. localStorage.setItem('$warehouseCode',loginInfo.warehouseCode);
  60. localStorage.setItem('$userCode',loginInfo.userCode);
  61. localStorage.setItem('$password',loginInfo.password);
  62. localStorage.setItem('$warehouseUrl', loginVo.clientUrl);
  63. localStorage.setItem('$loginTime',new Date().toLocaleTimeString());
  64. return owner.createState(loginInfo, callback);
  65. };
  66. owner.createState = function(loginInfo, callback) {
  67. var state = owner.getState();
  68. state.warehouseCode = loginInfo.warehouseCode;
  69. state.userCode = loginInfo.userCode;
  70. state.timestamp = (new Date()).getTime();
  71. state.localeTime = new Date().toLocaleTimeString();
  72. owner.setState(state);
  73. return callback();
  74. };
  75. /**
  76. * 设置服务器地址
  77. **/
  78. owner.reg = function(serverInfo, callback) {
  79. callback = callback || $.noop;
  80. serverInfo = serverInfo || {};
  81. serverInfo.ip = serverInfo.ip || '';
  82. serverInfo.port = serverInfo.port || '80';
  83. if (serverInfo.ip.length < 5) {
  84. return callback('服务器地址最短需要 5 个字符');
  85. }
  86. //ajax
  87. var url = 'http://' + serverInfo.ip + ':' + serverInfo.port;
  88. var testUrl = url + '/app/loginV2/test';
  89. var isSuccess = false;
  90. mui.ajax(testUrl,{
  91. async: false,
  92. data:{
  93. test:1
  94. },
  95. dataType:'json',//服务器返回json格式数据
  96. contentType:"application/json",
  97. type:'post',//HTTP请求类型
  98. timeout:10000,//超时时间设置为10秒;
  99. success:function(data){
  100. if(data.code == 0){
  101. isSuccess = true;
  102. }
  103. //JSON.stringify()将 JSON对象转为json字符串
  104. var data = JSON.stringify(data);
  105. console.info(data);
  106. },
  107. error:function(xhr,type,errorThrown){
  108. //异常处理
  109. console.log(type);
  110. return callback('发生异常,地址错误或网络异常!');
  111. }
  112. });
  113. if(isSuccess){
  114. //保存服务器地址
  115. localStorage.setItem('$serverUrl', url);
  116. localStorage.setItem('$serverIp', serverInfo.ip);
  117. localStorage.setItem('$serverPort', serverInfo.port);
  118. return callback();//必须留空
  119. }
  120. return callback('设置服务器失败,地址ajax验证未返回正确状态');
  121. };
  122. /**
  123. * 获取当前状态
  124. **/
  125. owner.getState = function() {
  126. var stateText = localStorage.getItem('$state') || "{}";
  127. return JSON.parse(stateText);
  128. };
  129. /**
  130. * 设置当前状态
  131. **/
  132. owner.setState = function(state) {
  133. state = state || {};
  134. localStorage.setItem('$state', JSON.stringify(state));
  135. //var settings = owner.getSettings();
  136. //settings.gestures = '';
  137. //owner.setSettings(settings);
  138. };
  139. var checkEmail = function(email) {
  140. email = email || '';
  141. return (email.length > 3 && email.indexOf('@') > -1);
  142. };
  143. /**
  144. * 找回密码
  145. **/
  146. owner.forgetPassword = function(email, callback) {
  147. callback = callback || $.noop;
  148. if (!checkEmail(email)) {
  149. return callback('邮箱地址不合法');
  150. }
  151. return callback(null, '新的随机密码已经发送到您的邮箱,请查收邮件。');
  152. };
  153. /**
  154. * 获取应用本地配置
  155. **/
  156. owner.setSettings = function(settings) {
  157. settings = settings || {};
  158. localStorage.setItem('$settings', JSON.stringify(settings));
  159. }
  160. /**
  161. * 设置应用本地配置
  162. **/
  163. owner.getSettings = function() {
  164. var settingsText = localStorage.getItem('$settings') || "{}";
  165. return JSON.parse(settingsText);
  166. }
  167. /**
  168. * 获取本地是否安装客户端
  169. **/
  170. owner.isInstalled = function(id) {
  171. if (id === 'qihoo' && mui.os.plus) {
  172. return true;
  173. }
  174. if (mui.os.android) {
  175. var main = plus.android.runtimeMainActivity();
  176. var packageManager = main.getPackageManager();
  177. var PackageManager = plus.android.importClass(packageManager)
  178. var packageName = {
  179. "qq": "com.tencent.mobileqq",
  180. "weixin": "com.tencent.mm",
  181. "sinaweibo": "com.sina.weibo"
  182. }
  183. try {
  184. return packageManager.getPackageInfo(packageName[id], PackageManager.GET_ACTIVITIES);
  185. } catch (e) {}
  186. } else {
  187. switch (id) {
  188. case "qq":
  189. var TencentOAuth = plus.ios.import("TencentOAuth");
  190. return TencentOAuth.iphoneQQInstalled();
  191. case "weixin":
  192. var WXApi = plus.ios.import("WXApi");
  193. return WXApi.isWXAppInstalled()
  194. case "sinaweibo":
  195. var SinaAPI = plus.ios.import("WeiboSDK");
  196. return SinaAPI.isWeiboAppInstalled()
  197. default:
  198. break;
  199. }
  200. }
  201. }
  202. }(mui, window.app = {}));