(function ($) { $.fn.userLogin = function (param) { var html = '
' + '
' + '' + '
' + '
  • 用户名请输入用户名
  • ' + '
  • 手机号请输入手机号
  • ' + '
  • 密码请输入密码
  • ' + '
  • 验证码请输入验证码
  • ' + '
  • 阅读并接受《MAPPLUS用户协议请阅读协议及声明
  • ' + '
  • ' + '
  • ' + '
  • 我已注册,现在去
  • ' + '
  • ' + '
    ' + '
    ' + '
    ' + '
    '; $(this).append(html); //当前正在浏览的方式: pc/mobile var curNumCode = "sinup"; function setTip(type, str) { $("#userLogin .tip").html(str) $("#userLogin .tip").addClass(type) $("#userLogin .tip").show() setTimeout(function () { $("#userLogin .tip").hide() $("#userLogin .tip").removeClass(type) $("#userLogin .tip").html("") }, 4000); } var cookie = { /** * 设置cookie * @type {Function} * @param name {String} 名称 * @param value {String} 值 * @param days {Number} 过期时间(天) * @example */ set: function (name, value, days) { document.cookie = name + "=" + value; }, /** * 获取cookie * @type {Function} * @param name {String} 名称 * @returns {null|String} 返回值 * @example */ get: function (name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); arr = document.cookie.match(reg); if (arr) { return arr[2]; } else { return null; } }, /** * 删除cookie * @type {Function} * @param name {String} 名称 * @example */ del: function (name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = this.get(name); if (cval !== null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); } } function uuid4() { var text = ""; var length = [8, 4, 4, 4, 12]; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var j = 0; j < 5; j++) { for (var i = 0; i < length[j]; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } if (j < 3) { text += "-" } } return text; } function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return decodeURI(r[2]); return ''; }; //判断接口中是否有session,如果有设置session if (getQueryString('session')) { session = getQueryString('session'); cookie.del('session'); cookie.set('session', session); var href = window.location.origin; window.location.replace(href); } else { session = uuid4(); } var isLoad = false // $.ajax({ // type: "get", // dataType: 'jsonp', // url: param.userServer + '/v1.0/user/me', // success: function (data) { // if (data.status == 401) { // isLoad = false // cookie.del('session'); // cookie.set('session', session); // var callData = { // isLoad: isLoad, // userInfo: data.data // } // if (param.callback) // param.callback(callData) // } else { // //$("#userLogin").addClass('hide'); // isLoad = true // if (param.callback) // var callData = { // isLoad: isLoad, // userInfo: data.data // } // getCurUserJWT(callData) // } // }, // error: function (data) { // console.log(data) // } // }); if (localStorage.getItem("systemToken")) { $.ajax({ type: "GET", headers: { token: localStorage.getItem("systemToken"), }, dataType: "json", url: param.userServer + '/oauth/user/validateToken', success: function (result) { if (result.code == 200) { if (param.callback) { var callData = { isLoad: true, userInfo: JSON.parse(localStorage.getItem("userInfo")) } param.callback(callData) } } else { localStorage.removeItem("systemToken") localStorage.removeItem("userInfo") if (param.callback) { var callData = { isLoad: false } param.callback(callData) } } }, error: function (err) { localStorage.removeItem("systemToken") localStorage.removeItem("userInfo") if (param.callback) { var callData = { isLoad: false } param.callback(callData) } } }); } else { if (param.callback) { var callData = { isLoad: false } param.callback(callData) } } /** * [getCurUserJWT description] * 获取当前用户的jwt * @return {[type]} [description] */ function getCurUserJWT(calldata) { $.ajax({ type: "post", url: param.userServer + '/v1.0/user/jwt', success: function (data) { if (data.status == 0) { calldata.jwt = data.data; param.callback(calldata) } }, error: function (data) { console.log(data) } }); } /** * 交互 */ $("#userLogin .close").bind('click', function () { // $("#userLogin").addClass("hide"); $("#userLogin").hide("hide"); }) //注册 $("#userLogin .openReg").bind('click', function () { $("#userLogin .login").hide(); $("#userLogin .regist").show(); $("#userLogin .regist li.queding").hide(); $("#userLogin .regist .zhuce, #userLogin .regist .xieyi, #userLogin .regist .other").show(); $("#userLogin .regist .para").eq(0).show(); $("#userLogin .regist .back").hide(); curNumCode = "sinup"; }) //忘记密码 $("#userLogin .forgetPass").bind('click', function () { $("#userLogin .regist").show(); $("#userLogin .login").hide(); $("#userLogin .regist li.queding").show(); $("#userLogin .regist .zhuce, #userLogin .regist .xieyi, #userLogin .regist .other").hide(); $("#userLogin .regist .para").eq(0).hide(); $("#userLogin .regist .back").show(); curNumCode = "forgetPass"; }) //登录 $("#userLogin .openLogin").bind('click', function () { $("#userLogin .login").show(); $("#userLogin .regist").hide(); }) //复选框 $("#userLogin .autoLogin,#userLogin .check").bind('click', function () { if ($(this).hasClass('active')) { $(this).removeClass('active'); } else { $(this).addClass('active'); } }) //登录方式 $("#userLogin .head .passWay").bind('click', function () { $("#userLogin .head span").removeClass('active'); $(this).addClass('active'); $("#userLogin .passShow").addClass('show'); $("#userLogin .msgShow").removeClass('show'); $("#userLogin .login .user").attr("placeholder", "请输入用户名"); }) $("#userLogin .head .msgWay").bind('click', function () { $("#userLogin .head span").removeClass('active'); $(this).addClass('active'); $("#userLogin .msgShow").addClass('show'); $("#userLogin .passShow").removeClass('show'); $("#userLogin .login .user").attr("placeholder", "请输入手机号").text(""); }) // 协议 $("#userLogin .regist li.xieyi a").bind('click', function () { $("#xieyi").addClass('active') }) $("#xieyi .close").bind('click', function () { $("#xieyi").removeClass('active') }) /** * 交互结束 */ /** * 请求开始 */ //重置密码 $("#userLogin .regist button.queding").bind('click', function () { var shouji = $("#userLogin .regist .regNum").val(); var mima = $("#userLogin .regist .regPass").val(); var yanzhengma = $("#userLogin .regist .yzm").val(); if (shouji.length > 0 && mima.length > 0 && yanzhengma.length > 0) { $.ajax({ url: param.userServer + '/v1.0/user/mobile/reset_password', method: 'POST', dataType: 'json', data: { mobile: shouji, password: mima, code: yanzhengma } }).done(function (data) { console.log(data); if (data.status == 0) { setTip("success", "重置密码成功") $("#userLogin .regist").hide(); $("#userLogin .login").show(); $("#userLogin .regist li").show(); $("#userLogin .regist li.queding").hide(); } else { setTip("warning", data.message) } }) } else { setTip("warning", '请填写正确信息') } }) //注册获取验证码 $("#userLogin .regist .getYzm").bind('click', function () { var num = $("#userLogin .regist .regNum").val(); //验证手机号 var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; if (!reg.test(num)) { setTip("warning", '请输入正确的手机号') } else { if (curNumCode == "sinup") { var url = param.userServer + '/v1.0/user/mobile/register/code'; } else { var url = param.userServer + '/v1.0/user/mobile/reset_password/code'; } $.ajax({ url: url, method: 'POST', dataType: 'json', data: { mobile: num } }).done(function (data) { console.log(data); if (data.status == 0) { showNumCover(); setTip("success", '获取成功') } else { setTip("warning", data.message) } }) } }) //注册 $("#userLogin .regist .regBtn").bind('click', function () { var check = $("#userLogin .regist .check").hasClass('active'); if (!check) { $("#userLogin .regist .xieyi .redAlert").addClass('show'); } else { $("#userLogin .regist .xieyi .redAlert").removeClass('show'); } var redAlert = $("#userLogin .regist .para .redAlert"); for (let i = 0; i < redAlert.length; i++) { if (redAlert.eq(i).next().val().length < 1) { redAlert.eq(i).addClass('show'); } else { redAlert.eq(i).removeClass('show'); } if (redAlert.eq(i).next().hasClass('regNum') && redAlert.eq(i).next().val().length < 11) { redAlert.eq(i).text('请输入正确的手机号').addClass('show'); } else if (redAlert.eq(i).next().hasClass('regNum') && redAlert.eq(i).next().val().length >= 11) { var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; if (!reg.test(redAlert.eq(i).next().val())) { setTip("warning", '请输入正确的手机号') } else { redAlert.eq(i).text('请输入手机号').removeClass('show'); } } if (redAlert.eq(i).next().hasClass('regPass') && redAlert.eq(i).next().val().length < 6) { redAlert.eq(i).text('密码不得少于6位').addClass('show'); } else if (redAlert.eq(i).next().hasClass('regPass') && redAlert.eq(i).next().val().length >= 6) { redAlert.eq(i).text('请输入密码').removeClass('show'); } } if (!redAlert.hasClass('show') && check) { $.ajax({ url: param.userServer + '/v1.0/user/mobile/register', method: 'POST', dataType: 'json', data: { username: $("#userLogin .regist .regName").val(), mobile: $("#userLogin .regist .regNum").val(), password: $("#userLogin .regist .regPass").val(), code: $("#userLogin .regist .yzm").val(), referer_src: document.title } }).done(function (data) { console.log(data); if (data.status == 0) { // ONEMAP.C.publisher.publish({ // type: 'success', // message: '获取成功' // }, 'noteBar::add'); setTip("success", '获取成功') } else { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: data.message // }, 'noteBar::add'); setTip("warning", data.message) } }) } }) function showNumCover() { $("#userLogin .btn_cov").show(); var i = 60; $("#userLogin .btn_cov").html(i + '秒后再次发送'); setTimeout(function () { $("#userLogin .btn_cov").hide(); clearInterval(interval); }, 60000) var interval = setInterval(function () { i--; $("#userLogin .btn_cov").html(i + '秒后再次发送'); }, 1000) } //登录获取验证码 $("#userLogin .login .getYzm").bind('click', function () { var phoneNum = $("#userLogin .login .user").val(); //验证手机号 var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; if (!reg.test(phoneNum)) { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: '请输入正确的手机号' // }, 'noteBar::add'); setTip("warning", "请输入正确的手机号!") } else { $.ajax({ url: param.userServer + '/v1.0/user/mobile/login/code', method: 'POST', dataType: 'json', data: { mobile: phoneNum } }).done(function (data) { console.log(data); if (data.status == 0) { // ONEMAP.C.publisher.publish({ // type: 'success', // message: '获取成功' // }, 'noteBar::add'); showNumCover(); setTip("success", "获取成功!") } else { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: data.message // }, 'noteBar::add'); setTip("warning", data.message) } }) } }) $("#userLogin .login .lock").bind('keydown', function (e) { if (e.keyCode === 13) { userLogin(); } }); //登录 $("#userLogin .login .loginBtn").bind('click', function () { userLogin(); }) function userLogin() { var userEmail = $("#userLogin .login .user").val(); var psd = $("#userLogin .login .lock").val(); $.ajax({ url: param.userServer + '/oauth/user/login', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;' }, data: { userName: userEmail, password: psd, clientId: 0 } }).done(function (data) { var result = JSON.parse(data); var content = result.content; content.name = content.username; content.nickname = content.username; if (result.code === 200) { localStorage.setItem("systemToken", result.message ); localStorage.setItem("userInfo", JSON.stringify(content) ); $("#userLogin").hide(); var callData = { isLoad: true, userInfo: content } if (param.callback) param.callback(callData) setTimeout(() => { window.location.reload(); }, 500); ONEMAP.C.publisher.publish({ type: 'success', message: '登录成功!' }, 'noteBar::add'); } else { var callData = { isLoad: false, } if (param.callback) param.callback(callData) ONEMAP.C.publisher.publish({ type: 'error', message: '登录失败!' }, 'noteBar::add'); } }).error(function (data) { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: '该用户尚未注册' // }, 'noteBar::add'); // setTip("warning", '登录失败!') var callData = { isLoad: false, } if (param.callback) param.callback(callData) ONEMAP.C.publisher.publish({ type: 'error', message: '登录失败!' }, 'noteBar::add'); }) return; // 通过验证码 if ($("#userLogin .msgShow").hasClass('show')) { var phoneNum = $("#userLogin .login .user").val(); var yzm = $("#userLogin .login .yzm").val(); //验证手机号 var reg = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/; if (!reg.test(phoneNum)) { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: '请输入正确的手机号' // }, 'noteBar::add'); setTip("warning", "请输入正确的手机号") } else if (yzm.length < 1) { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: '请输入验证码' // }, 'noteBar::add'); setTip("warning", "请输入验证码") } else { $.ajax({ url: param.userServer + '/v1.0/user/mobile/login', method: 'POST', dataType: 'json', headers: { "Cookie": session, }, data: { mobile: phoneNum, code: yzm } }).done(function (data) { console.log(data); if (data.status == 0) { setTip("warning", '登录成功'); window.location.reload(); } else { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: data.message // }, 'noteBar::add'); setTip("warning", data.message) } }) } } else if ($("#userLogin .passShow").hasClass('show')) { var userEmail = $("#userLogin .login .user").val(); var psd = $("#userLogin .login .lock").val(); // shell示例 // curl -v -XPOST 'http://202.107.245.52:3010/account/login' -H "Content-Type: application/json" -d '{"username": "admin", "password": "admin888"}' // curl -v 'http://202.107.245.52:3010/v1.0/user/me' -H 'Cookie: session=08eb5ff4-49a8-4efa-b725-228ceb24cda2' $.ajax({ type: "POST", dataType: 'json', url: param.userServer + '/account/login', //3010 contentType: 'application/json', headers: { "Cookie": session, }, data: JSON.stringify({ "username": userEmail, "password": psd }) }).done(function (data) { if (data.meta.code == 400) { setTip("warning", '用户名或密码错误'); return false; } window.location.reload(); }).error(function (data) { // ONEMAP.C.publisher.publish({ // type: 'warning', // message: '该用户尚未注册' // }, 'noteBar::add'); setTip("warning", '该用户尚未注册!') }) } } //微信登录 $("#userLogin .login p.weixin").bind('click', function () { window.location.replace(param.userServer + '/oauth_client/weixin/login?next=' + param.system); }) $("#userLogin .login p.qq").bind('click', function () { window.location.replace(param.userServer + '/oauth_client/qq/login?next=' + param.system); }) $("#userLogin .login p.weibo").bind('click', function () { window.location.replace(param.userServer + '/oauth_client/weibo/login?next=' + param.system); }) this.logout = function () { cookie.del('session'); window.location.reload(); } return this; } })(jQuery)