userLogin.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. define([
  2. 'html!templates/user/userLogin',
  3. 'css!styles/user/userLogin'
  4. ],
  5. function(tpcLyout) {
  6. /**
  7. * 模块状态,用于存储模块的状态 例如:收起,关闭
  8. * @type {Object}
  9. */
  10. var status = {
  11. initialized: false,
  12. showUserLogin: false,
  13. forgetStatu: false
  14. };
  15. /**
  16. * 模块数据 用于数据存储和外部调用
  17. * @type {Object}
  18. * 数据存放
  19. */
  20. var modValue = {
  21. loginUrl: onemapUrlConfig.login_serverUrl
  22. };
  23. function init() {
  24. if (!status.initialized) {
  25. $("body").append(tpcLyout)
  26. bindEvents();
  27. status.initialized = true;
  28. } else {
  29. $("#userLogin").removeClass("hide");
  30. }
  31. }
  32. function bindEvents() {
  33. /**
  34. * 交互
  35. */
  36. $("#userLogin .close").bind('click', function() {
  37. $("#userLogin").addClass("hide");
  38. })
  39. //注册
  40. $("#userLogin .openReg").bind('click', function() {
  41. $("#userLogin .login").hide();
  42. $("#userLogin .regist").show();
  43. })
  44. //登录
  45. $("#userLogin .openLogin").bind('click', function() {
  46. $("#userLogin .login").show();
  47. $("#userLogin .regist").hide();
  48. })
  49. //复选框
  50. $("#userLogin .autoLogin,#userLogin .check").bind('click', function() {
  51. if ($(this).hasClass('active')) {
  52. $(this).removeClass('active');
  53. } else {
  54. $(this).addClass('active');
  55. }
  56. })
  57. //登录方式
  58. $("#userLogin .head .passWay").bind('click', function() {
  59. $("#userLogin .head span").removeClass('active');
  60. $(this).addClass('active');
  61. $("#userLogin .passShow").addClass('show');
  62. $("#userLogin .msgShow").removeClass('show');
  63. $("#userLogin .login .user").attr("placeholder", "请输入邮箱");
  64. })
  65. $("#userLogin .head .msgWay").bind('click', function() {
  66. $("#userLogin .head span").removeClass('active');
  67. $(this).addClass('active');
  68. $("#userLogin .msgShow").addClass('show');
  69. $("#userLogin .passShow").removeClass('show');
  70. $("#userLogin .login .user").attr("placeholder", "请输入手机号").text("");
  71. })
  72. /**
  73. * 交互结束
  74. */
  75. /**
  76. * 请求开始
  77. */
  78. //忘记密码
  79. $("#userLogin .forgetPass").bind('click',function(){
  80. $("#userLogin .regist").show();
  81. $("#userLogin .login").hide();
  82. $("#userLogin .regist li.queding").show();
  83. $("#userLogin .regist .zhuce,#userLogin .regist .xieyi,#userLogin .regist .other").hide();
  84. $("#userLogin .regist .para").eq(0).hide();
  85. status.forgetStatu = true;
  86. })
  87. $("#userLogin .regist button.queding").bind('click',function(){
  88. var shouji = $("#userLogin .regist .regNum").val();
  89. var mima = $("#userLogin .regist .regPass").val();
  90. var yanzhengma = $("#userLogin .regist .yzm").val();
  91. if(shouji.length>0&&mima.length>0&&yanzhengma.length>0){
  92. $.ajax({
  93. url: onemapUrlConfig.login_serverUrl + '/v1.0/user/mobile/reset_password',
  94. method: 'POST',
  95. dataType: 'json',
  96. data: {
  97. mobile: shouji,
  98. password: mima,
  99. code: yanzhengma
  100. }
  101. }).done(function (data) {
  102. console.log(data);
  103. if (data.status == 0) {
  104. ONEMAP.C.publisher.publish({
  105. type: 'success',
  106. message: '重置密码成功'
  107. }, 'noteBar::add');
  108. $("#userLogin .regist").hide();
  109. $("#userLogin .login").show();
  110. $("#userLogin .regist li").show();
  111. $("#userLogin .regist li.queding").hide();
  112. status.forgetStatu = false;
  113. } else {
  114. ONEMAP.C.publisher.publish({
  115. type: 'warning',
  116. message: data.message
  117. }, 'noteBar::add');
  118. }
  119. })
  120. } else{
  121. // ONEMAP.C.publisher.publish({
  122. // type: 'warning',
  123. // message: '请填写正确信息'
  124. // }, 'noteBar::add');
  125. }
  126. })
  127. //注册获取验证码
  128. $("#userLogin .regist .getYzm").bind('click', function() {
  129. var num = $("#userLogin .regist .regNum").val();
  130. //验证手机号
  131. var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
  132. if (!reg.test(num)) {
  133. ONEMAP.C.publisher.publish({
  134. type: 'warning',
  135. message: '请输入正确的手机号'
  136. }, 'noteBar::add');
  137. } else {
  138. var pUrl = onemapUrlConfig.login_serverUrl + '/v1.0/user/mobile/register/code';
  139. if(status.forgetStatu){
  140. pUrl = onemapUrlConfig.login_serverUrl + '/v1.0/user/mobile/reset_password/code';
  141. }
  142. $.ajax({
  143. url: pUrl,
  144. method: 'POST',
  145. dataType: 'json',
  146. data: {
  147. mobile: num
  148. }
  149. }).done(function(data) {
  150. console.log(data);
  151. if (data.status == 0) {
  152. ONEMAP.C.publisher.publish({
  153. type: 'success',
  154. message: '获取成功'
  155. }, 'noteBar::add');
  156. } else {
  157. ONEMAP.C.publisher.publish({
  158. type: 'warning',
  159. message: data.message
  160. }, 'noteBar::add');
  161. }
  162. })
  163. }
  164. })
  165. //注册
  166. $("#userLogin .regist .regBtn").bind('click', function() {
  167. var check = $("#userLogin .regist .check").hasClass('active');
  168. if (!check) {
  169. $("#userLogin .regist .xieyi .redAlert").addClass('show');
  170. } else {
  171. $("#userLogin .regist .xieyi .redAlert").removeClass('show');
  172. }
  173. var redAlert = $("#userLogin .regist .para .redAlert");
  174. for (let i = 0; i < redAlert.length; i++) {
  175. if (redAlert.eq(i).next().val().length < 1) {
  176. redAlert.eq(i).addClass('show');
  177. } else {
  178. redAlert.eq(i).removeClass('show');
  179. }
  180. if (redAlert.eq(i).next().hasClass('regNum') && redAlert.eq(i).next().val().length < 11) {
  181. redAlert.eq(i).text('请输入正确的手机号').addClass('show');
  182. } else if (redAlert.eq(i).next().hasClass('regNum') && redAlert.eq(i).next().val().length >= 11) {
  183. var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
  184. if (!reg.test(redAlert.eq(i).next().val())) {
  185. ONEMAP.C.publisher.publish({
  186. type: 'warning',
  187. message: '请输入正确的手机号'
  188. }, 'noteBar::add');
  189. } else {
  190. redAlert.eq(i).text('请输入手机号').removeClass('show');
  191. }
  192. }
  193. if (redAlert.eq(i).next().hasClass('regPass') && redAlert.eq(i).next().val().length < 6) {
  194. redAlert.eq(i).text('密码不得少于6位').addClass('show');
  195. } else if (redAlert.eq(i).next().hasClass('regPass') && redAlert.eq(i).next().val().length >= 6) {
  196. redAlert.eq(i).text('请输入密码').removeClass('show');
  197. }
  198. }
  199. if (!redAlert.hasClass('show') && check) {
  200. $.ajax({
  201. url: onemapUrlConfig.login_serverUrl + '/v1.0/user/mobile/register',
  202. method: 'POST',
  203. dataType: 'json',
  204. data: {
  205. username: $("#userLogin .regist .regName").val(),
  206. mobile: $("#userLogin .regist .regNum").val(),
  207. password: $("#userLogin .regist .regPass").val(),
  208. code: $("#userLogin .regist .yzm").val()
  209. }
  210. }).done(function(data) {
  211. console.log(data);
  212. if (data.status == 0) {
  213. ONEMAP.C.publisher.publish({
  214. type: 'success',
  215. message: '获取成功'
  216. }, 'noteBar::add');
  217. } else {
  218. ONEMAP.C.publisher.publish({
  219. type: 'warning',
  220. message: data.message
  221. }, 'noteBar::add');
  222. }
  223. })
  224. }
  225. })
  226. // 协议
  227. $("#userLogin .regist li.xieyi a").bind('click', function() {
  228. $("#xieyi").addClass('active')
  229. })
  230. $("#xieyi .close").bind('click', function() {
  231. $("#xieyi").removeClass('active')
  232. })
  233. //登录获取验证码
  234. $("#userLogin .login .getYzm").bind('click', function() {
  235. var phoneNum = $("#userLogin .login .user").val();
  236. //验证手机号
  237. var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
  238. if (!reg.test(phoneNum)) {
  239. ONEMAP.C.publisher.publish({
  240. type: 'warning',
  241. message: '请输入正确的手机号'
  242. }, 'noteBar::add');
  243. } else {
  244. $.ajax({
  245. url: onemapUrlConfig.login_serverUrl + '/v1.0/user/mobile/login/code',
  246. method: 'POST',
  247. dataType: 'json',
  248. data: {
  249. mobile: phoneNum
  250. }
  251. }).done(function(data) {
  252. console.log(data);
  253. if (data.status == 0) {
  254. ONEMAP.C.publisher.publish({
  255. type: 'success',
  256. message: '获取成功'
  257. }, 'noteBar::add');
  258. } else {
  259. ONEMAP.C.publisher.publish({
  260. type: 'warning',
  261. message: data.message
  262. }, 'noteBar::add');
  263. }
  264. })
  265. }
  266. })
  267. //登录
  268. $("#userLogin .login .loginBtn").bind('click', function() {
  269. // 通过验证码
  270. if ($("#userLogin .msgShow").hasClass('show')) {
  271. var phoneNum = $("#userLogin .login .user").val();
  272. var yzm = $("#userLogin .login .yzm").val();
  273. //验证手机号
  274. var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;
  275. if (!reg.test(phoneNum)) {
  276. ONEMAP.C.publisher.publish({
  277. type: 'warning',
  278. message: '请输入正确的手机号'
  279. }, 'noteBar::add');
  280. } else if (yzm.length < 1) {
  281. ONEMAP.C.publisher.publish({
  282. type: 'warning',
  283. message: '请输入验证码'
  284. }, 'noteBar::add');
  285. } else {
  286. $.ajax({
  287. url: onemapUrlConfig.oauthServiceUrl + '/v1.0/user/mobile/login',
  288. method: 'POST',
  289. dataType: 'json',
  290. headers: {
  291. "Cookie": ONEMAP.C.session,
  292. },
  293. data: {
  294. mobile: phoneNum,
  295. code: yzm
  296. }
  297. }).done(function(data) {
  298. console.log(data);
  299. if (data.status == 0) {
  300. ONEMAP.C.publisher.publish({
  301. type: 'success',
  302. message: '登录成功'
  303. }, 'noteBar::add');
  304. _.merge(ONEMAP.D.user, data.data);
  305. // ONEMAP.D.isLoad = true;
  306. ONEMAP.D.user.name = data.data.mobile;
  307. // ONEMAP.D.user.roles = data.data.roles;
  308. if (ONEMAP.D.user.name.indexOf("map_super_user") > -1) {
  309. $('#userContent .userInfo .moreLink .linkList li.set').show();
  310. }
  311. $("#userLogin").addClass('hide');
  312. $('#userContent .userInfo .moreLink,.lgtop').show();
  313. $('#userContent .popup-lt,#userContent .popup-lb,#userContent .popup-rt,#userContent .popup-rb').show();
  314. $('#userContent .username').html(ONEMAP.D.user.name); //填入用户名
  315. $("#userContent .mt10").show(); //展示上次登录时间
  316. $("#userContent .quit").show(); //展示退出登录
  317. $("#userContent .userInfo .login").hide(); //隐藏提示登录信息
  318. $("#userContent .userInfo .moreLink .linkList li.myBh").addClass('uFavo').addClass('active');
  319. } else {
  320. ONEMAP.C.publisher.publish({
  321. type: 'warning',
  322. message: data.message
  323. }, 'noteBar::add');
  324. }
  325. })
  326. }
  327. } else if ($("#userLogin .passShow").hasClass('show')) {
  328. var userEmail = $("#userLogin .login .user").val();
  329. var psd = $("#userLogin .login .lock").val();
  330. // shell示例
  331. // curl -v -XPOST 'http://202.107.245.52:3010/account/login' -H "Content-Type: application/json" -d '{"username": "admin", "password": "admin888"}'
  332. // curl -v 'http://202.107.245.52:3010/v1.0/user/me' -H 'Cookie: session=08eb5ff4-49a8-4efa-b725-228ceb24cda2'
  333. $.ajax({
  334. type: "POST",
  335. dataType: 'json',
  336. url: onemapUrlConfig.oauthServiceUrl + '/account/login', //3010
  337. contentType: 'application/json',
  338. headers: {
  339. "Cookie": ONEMAP.C.session,
  340. },
  341. data: JSON.stringify({
  342. "username": userEmail,
  343. "password": psd
  344. })
  345. }).done(function(data) {
  346. console.log(data)
  347. window.location.reload();
  348. }).error(function(data) {
  349. ONEMAP.C.publisher.publish({
  350. type: 'warning',
  351. message: '该用户尚未注册'
  352. }, 'noteBar::add');
  353. })
  354. }
  355. })
  356. //微信登录
  357. $("#userLogin .login img.weixin").bind('click', function() {
  358. window.location.replace(onemapUrlConfig.oauthServiceUrl + '/oauth_client/weixin/login?next=' + onemapUrlConfig.siteUrl);
  359. })
  360. $("#userLogin .login img.qq").bind('click', function() {
  361. window.location.replace(onemapUrlConfig.oauthServiceUrl + '/oauth_client/qq/login?next=' + onemapUrlConfig.siteUrl);
  362. })
  363. $("#userLogin .login img.weibo").bind('click', function() {
  364. window.location.replace(onemapUrlConfig.oauthServiceUrl + '/oauth_client/weibo/login?next=' + onemapUrlConfig.siteUrl);
  365. })
  366. }
  367. return ONEMAP.M.userLogin = {
  368. init: init
  369. }
  370. })