| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /**
- * 登录页面脚本
- */
- // 全局刷新验证码函数(必须在 layui.use 之前定义,因为 HTML 中有 onclick 调用)
- function refreshCaptcha() {
- var account = $('input[name="account"]').val() || 'default';
- var timestamp = new Date().getTime();
- $('#captchaImg').attr('src', Config.getApiUrl(Config.api.imgCode) + '/' + account + '?t=' + timestamp);
- }
- layui.use(['form', 'layer'], function() {
- var form = layui.form;
- var layer = layui.layer;
-
- // 初始化验证码
- refreshCaptcha();
-
- // 账号输入时刷新验证码
- $('input[name="account"]').on('blur', function() {
- var account = $(this).val();
- if (account) {
- refreshCaptcha();
- }
- });
-
- // 登录表单提交
- form.on('submit(loginSubmit)', function(data) {
- var fieldData = data.field;
-
- layer.msg('正在登录...', { icon: 16, shade: 0.3, time: 0 });
-
- $.ajax({
- url: Config.getApiUrl(Config.api.login),
- type: 'POST',
- contentType: 'application/json',
- data: JSON.stringify(fieldData),
- success: function(res) {
- layer.closeAll();
-
- // 兼容两种响应格式:
- // 1. ResultVo 包装格式: { code: 200, msg: 'success', data: { token, ... } }
- // 2. 直接返回数据格式: { token, id, account, ... }
- var responseData = res;
- var isSuccess = false;
-
- if (res.code !== undefined) {
- // 有 code 字段,使用 ResultVo 格式
- isSuccess = (res.code === 200 || res.code === 0);
- responseData = res.data || {};
- } else if (res.token) {
- // 直接返回用户数据
- isSuccess = true;
- }
-
- if (isSuccess) {
- // 保存token和用户信息
- var token = responseData.token || res.token || '';
- localStorage.setItem('token', token);
- localStorage.setItem('userInfo', JSON.stringify(responseData));
-
- layer.msg('登录成功!', { icon: 1, time: 1000 }, function() {
- location.href = 'pages/main.html';
- });
- } else {
- layer.msg(res.msg || res.message || '登录失败', { icon: 2 });
- refreshCaptcha();
- }
- },
- error: function(xhr) {
- layer.closeAll();
- var msg = '请求失败,请检查网络或服务是否可用';
- if (xhr.responseJSON && xhr.responseJSON.msg) {
- msg = xhr.responseJSON.msg;
- }
- layer.msg(msg, { icon: 2 });
- refreshCaptcha();
- }
- });
-
- return false;
- });
-
- // 回车登录
- document.onkeydown = function(e) {
- if (e.keyCode === 13) {
- $('.login-form button[type="submit"]').click();
- }
- };
- });
|