login.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="author" content=""/>
  6. <meta name="description" content=""/>
  7. <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
  8. <meta name="format-detection" content="telphone=no,email=no"/>
  9. <meta name="viewport"
  10. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  11. <meta http-equiv="Pragma" content="no-cache">
  12. <meta http-equiv="Cache-control" content="no-cache">
  13. <meta http-equiv="Cache" content="no-cache">
  14. <title>经销商</title>
  15. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css"/>
  16. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>
  17. <link rel="stylesheet" href="/components/custom/css/common.css"/>
  18. <link rel="stylesheet" href="css/xyf.common.min.css"/>
  19. <style>
  20. .remember-row {
  21. padding: 5px 16px;
  22. margin-top: -8px;
  23. }
  24. .remember-row label {
  25. display: inline-block;
  26. float: none;
  27. width: auto;
  28. padding: 11px 0;
  29. }
  30. .remember-row input[type=checkbox] {
  31. position: relative;
  32. right: unset;
  33. top: 2px;
  34. }
  35. </style>
  36. </head>
  37. <body class="bg-white">
  38. <div class="page-main">
  39. <div class="login-logo"></div>
  40. <div class="input-group-card">
  41. <div class="input-row input-clear">
  42. <input id="userName" type="tel" maxlength="11" placeholder="手机号">
  43. <span class="mui-icon mui-icon-arrowdown userList mui-hidden"></span>
  44. </div>
  45. <div class="input-row input-clear mui-hidden agentRow">
  46. <input id="agent" type="text" placeholder="代理商" readonly>
  47. <span class="mui-icon mui-icon-arrowdown noClick"></span>
  48. <input id="agentId" type="hidden">
  49. </div>
  50. <div class="input-row input-clear">
  51. <input id="password" type="password" maxlength="20" placeholder="密码">
  52. <span class="mui-icon mui-icon-eye"></span>
  53. </div>
  54. </div>
  55. <div class="remember-row mui-input-row mui-checkbox font-12 font-b-4">
  56. <input name="remember" id="remember" type="checkbox" checked>
  57. <label for="remember">记住用户名和密码</label>
  58. </div>
  59. <p class="login-forget">
  60. <a href="password-forget.html">忘记密码?</a>
  61. </p>
  62. <div class="subt">
  63. <input class="mui-btn-block" type="button" id="loginBtn" value="登录" onclick="login()">
  64. <a class="mui-text-center custom-top mui-hidden registerShow" href="register.html">注册</a>
  65. </div>
  66. </div>
  67. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js?v=20190712"></script>
  68. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  69. <script src="https://cdn.washpayer.com/components/lib/md5.js"></script>
  70. <script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script>
  71. <script src="https://cdn.washpayer.com/components/lib/moment.min.js"></script>
  72. <script src="/components/custom/js/common.js"></script>
  73. <script src="js/xyf.common.js"></script>
  74. <script src="js/xyf.login.js"></script>
  75. <script>
  76. var agentLogoUrl = getCookie(Cookie_Constant.agentLogoUrl);
  77. var agentId = getCookie("dealer_login_agentid");
  78. var managerId = getCookie("dealer_login_managerid");
  79. var registerShow = getQueryString("register");
  80. if (registerShow != "false") {
  81. $(".registerShow").removeClass("mui-hidden");
  82. }
  83. if (agentLogoUrl) {
  84. $(".login-logo").css("background-image", "url(" + agentLogoUrl + ")");
  85. }
  86. document.onkeydown = function (event) {
  87. if (event.keyCode == 13) {
  88. login();
  89. }
  90. };
  91. //初始化选择器
  92. var agentPicker;
  93. mui.ready(function () {
  94. agentPicker = new mui.PopPicker();
  95. if (agentId) {
  96. // 如果有agentId,则不需要获取
  97. $("#agentId").val(agentId);
  98. //如果触发了手动输入用户名,则重置代理商id(因为在这之前代理商id可能是从历史账号中获得的)
  99. $("#userName").on("input", function () {
  100. console.log('unser name input reset angetId', agentId)
  101. $("#agentId").val(agentId);
  102. })
  103. } else if (managerId) {
  104. //如果是厂商ID,则需要获取agent列表
  105. $("#userName").on("input", function () {
  106. var userName = $(this).val();
  107. getOwnerAgents(userName, managerId);
  108. }).trigger("input");//初始化表单有填充也获取一次
  109. } else {
  110. mui.alert("请通过公众号菜单进入!", '温馨提示', '确定');
  111. $(".page-main").hide();
  112. }
  113. $("#agent").on("click", function () {
  114. agentPicker.show(function (items) {
  115. var data = items[0] || {};
  116. $("#agent").val(data.displayName);
  117. $("#agentId").val(data.value);
  118. $(".login-logo").css("background-image", "url(" + data.agentLogoUrl + ")");
  119. });
  120. });
  121. var userPicker = new mui.PopPicker();
  122. var list = getLocalStorage('dealer_login_user_list')
  123. if ($.isArray(list) && list.length > 0) {
  124. //必须倒删
  125. for (var index = list.length - 1; index >= 0; index--) {
  126. var item = list[index]
  127. var time = item.time
  128. // 删除30天前的数据
  129. if (moment(time).add(30, "day") < moment()) {
  130. list.splice(index, 1)
  131. }
  132. }
  133. setLocalStorage('dealer_login_user_list', list)
  134. userPicker.setData(list.reverse());// 最后的账号优先显示,用 reverse反转
  135. $('.userList').removeClass('mui-hidden')
  136. }
  137. $('.userList').on('click', function () {
  138. userPicker.show(function (items) {
  139. var data = items[0] || {};
  140. $("#userName").val(data.text);
  141. $("#password").val(data.value);
  142. $("#agentId").val(data.agentId);
  143. });
  144. })
  145. });
  146. var lastUserName = "";//防止username不变也触发
  147. //获取代理商列表
  148. function getOwnerAgents(userName, managerId) {
  149. if (isPhone(userName) && userName != lastUserName) {
  150. lastUserName = userName;
  151. myAjax({
  152. type: "GET",
  153. url: "/dealer/getOwnerAgents",
  154. mask: '正在加载配置...',
  155. data: {"username": userName, "managerId": managerId},
  156. dataType: "json",
  157. success: function (res) {
  158. if (res.result == 1) {
  159. //多个agent则需要用户选
  160. if (res.para.items && res.para.items.length > 1) {
  161. $(".agentRow").removeClass("mui-hidden");//展示agent输入框
  162. setPickerData(res.para.items);
  163. } else {
  164. $(".agentRow").addClass("mui-hidden");//隐藏agent输入框
  165. if (res.para.items && res.para.items.length == 1) {
  166. $("#agentId").val(res.para.items[0].agentId);
  167. }
  168. }
  169. } else {
  170. mui.alert(res.description, '温馨提示', '确定');
  171. }
  172. }
  173. });
  174. }
  175. }
  176. function setPickerData(list) {
  177. for (var i = 0; i < list.length; i++) {
  178. var item = list[i];
  179. item.value = item.agentId;
  180. item.text = "<div class='mui-picker-icon' style='background-image:url(" + item.agentLogoUrl + ")'></div>" + item.displayName;
  181. }
  182. agentPicker.setData(list);
  183. }
  184. function login() {
  185. //检查手机号码
  186. var userName = $("#userName").val();
  187. if (!isPhone(userName)) {
  188. mui.toast("请输入11位正确手机号码");
  189. return;
  190. }
  191. //检查密码
  192. var password = $("#password").val();
  193. if (password.length < 6) {
  194. mui.toast("请输入正确的密码");
  195. return;
  196. }
  197. //检查是否需要带上agentId
  198. var agentId = $("#agentId").val();
  199. if ($.isEmptyObject(agentId) && !$(".agentRow").hasClass("mui-hidden")) {
  200. mui.toast("请您选择代理商");
  201. return;
  202. }
  203. // 因为界面只能输入20位,所以如果比20位长,那么一定上上次存储的md5
  204. var haxPW = hex_md5(password)
  205. if (password.length > 20) {
  206. haxPW = password
  207. }
  208. var data = {"name": userName, agentId: agentId, "password": haxPW}
  209. myAjax({
  210. type: "POST",
  211. url: "/dealer/login",
  212. mask: '正在登录...',
  213. data: data,
  214. dataType: "json",
  215. success: function (res) {
  216. if (res.result == 1) {
  217. var url = '/app/index.html';
  218. rememberAccount(data)
  219. goPage(url);
  220. } else if (res.result == 0) {
  221. var btnArray = ['忘记密码', '确定'];
  222. mui.confirm(res.description, '温馨提示', btnArray, function (e) {
  223. if (e.index == 0) {
  224. //点击忘记密码的业务
  225. var url = 'password-forget.html';
  226. goPage(url);
  227. }
  228. //点击确认默认隐藏dialog
  229. });
  230. } else {
  231. mui.alert(res.description, '温馨提示', '确定');
  232. }
  233. $('.mui-popup').focus();// ios的输入框获取焦点,导致弹窗点击不了,必须加上该代码
  234. }
  235. });
  236. }
  237. function rememberAccount(data) {
  238. var flag = $('#remember').is(':checked')
  239. if (flag) {
  240. var saveData = {
  241. text: data.name,
  242. value: data.password,
  243. agentId: $("#agentId").val(),
  244. time: moment().format("YYYY-MM-DD")
  245. }
  246. var list = getLocalStorage('dealer_login_user_list')
  247. if (!$.isArray(list)) {
  248. list = []
  249. }
  250. var findIndex = -1
  251. for (var index in list) {
  252. var item = list[index]
  253. if (item.text === data.name) {
  254. findIndex = index
  255. break
  256. }
  257. }
  258. if (findIndex > -1) {
  259. // 更新用户的密码
  260. list[findIndex] = saveData
  261. } else {
  262. // 新增用户名
  263. list.push(saveData)
  264. }
  265. setLocalStorage('dealer_login_user_list', list)
  266. }
  267. }
  268. </script>
  269. </body>
  270. </html>