登录页面修改
This commit is contained in:
parent
1963dbbba1
commit
589874dec3
@ -187,7 +187,7 @@ import loginImg from "@/assets/images/logo.png";
|
|||||||
import { UserOutlined, LockOutlined, MobileOutlined } from "@ant-design/icons-vue";
|
import { UserOutlined, LockOutlined, MobileOutlined } from "@ant-design/icons-vue";
|
||||||
import { getCaptcha, sendSmsCode, smsLoginApi, resetPassword } from "@/api/auth";
|
import { getCaptcha, sendSmsCode, smsLoginApi, resetPassword } from "@/api/auth";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
import { setPath } from "@/utils/auth";
|
import { setPath, setToken } from "@/utils/auth";
|
||||||
// 组件依赖
|
// 组件依赖
|
||||||
|
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
@ -200,6 +200,7 @@ import { encrypt, decrypt } from "@/utils/rsaEncrypt";
|
|||||||
|
|
||||||
// 状态管理依赖
|
// 状态管理依赖
|
||||||
import { useUserStore } from "@/store/modules/user";
|
import { useUserStore } from "@/store/modules/user";
|
||||||
|
import { usePermissionStoreHook } from "@/store/modules/permission";
|
||||||
|
|
||||||
// 国际化
|
// 国际化
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
@ -385,42 +386,88 @@ function onFinish() {
|
|||||||
* 短信验证码登录
|
* 短信验证码登录
|
||||||
*/
|
*/
|
||||||
const onSmsLogin = async () => {
|
const onSmsLogin = async () => {
|
||||||
// 对短信登录表单进行验证
|
|
||||||
try {
|
try {
|
||||||
// 验证手机号格式
|
// ========== 第一部分:表单验证 ==========
|
||||||
const phoneRegex = /^1[3-9]\d{9}$/;
|
const phoneRegex = /^1[3-9]\d{9}$/;
|
||||||
if (!loginData.value.username || !phoneRegex.test(loginData.value.username)) {
|
if (!loginData.value.username || !phoneRegex.test(loginData.value.username)) {
|
||||||
message.error("请输入正确的手机号");
|
message.error("请输入正确的手机号");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 验证验证码
|
|
||||||
if (!loginData.value.code || loginData.value.code.trim() === '') {
|
if (!loginData.value.code || loginData.value.code.trim() === '') {
|
||||||
message.error("请输入验证码");
|
message.error("请输入验证码");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// console.log()
|
|
||||||
// debugger
|
// ========== 第二部分:设置加载状态 ==========
|
||||||
state.loading = true;
|
state.loading = true;
|
||||||
|
|
||||||
// 调用短信登录接口
|
// ========== 第三部分:调用短信登录 API ==========
|
||||||
await smsLoginApi(
|
console.log('开始调用短信登录API, 手机号:', loginData.value.username);
|
||||||
|
const res: any = await smsLoginApi(
|
||||||
loginData.value.username, // 手机号
|
loginData.value.username, // 手机号
|
||||||
loginData.value.code // 验证码
|
loginData.value.code // 短信验证码
|
||||||
);
|
);
|
||||||
|
console.log('短信登录API响应:', res);
|
||||||
|
|
||||||
// 登录成功处理
|
// ========== 第四部分:检查响应结果 ==========
|
||||||
const res: any = setPath("/login-sjtb");
|
console.log('检查响应结果, res.code:', res.code, '类型:', typeof res.code);
|
||||||
if (res.code == 0) {
|
|
||||||
|
// 注意:code 可能是字符串 "0" 或数字 0,需要兼容处理
|
||||||
|
if (res.code !== 0 && res.code !== '0') {
|
||||||
|
console.error('短信登录失败, 错误码:', res.code, '错误信息:', res.msg);
|
||||||
|
message.error(res.msg || "登录失败");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ========== 第五部分:提取并存储 Token ==========
|
||||||
|
console.log('开始提取Token, res.data:', res.data);
|
||||||
|
const token = res.data?.token || res.data; // 兼容两种结构
|
||||||
|
|
||||||
|
if (!token) {
|
||||||
|
console.error('Token为空, res.data结构:', JSON.stringify(res.data));
|
||||||
|
message.error("登录失败:未获取到Token");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Token获取成功:', token);
|
||||||
|
// 存储到 Cookie
|
||||||
|
setToken(token);
|
||||||
|
|
||||||
|
// 更新 Store 状态(注意是大写 Token)
|
||||||
|
userStore.Token = token;
|
||||||
|
console.log('Token已存储到Store');
|
||||||
|
|
||||||
|
// ========== 第六部分:获取用户信息和角色 ==========
|
||||||
|
console.log('开始获取用户信息...');
|
||||||
|
const userInfo = await userStore.getInfo();
|
||||||
|
console.log('用户信息获取成功:', userInfo);
|
||||||
|
const roles = userInfo.roles;
|
||||||
|
console.log('用户角色:', roles);
|
||||||
|
|
||||||
|
// ========== 第七部分:生成路由(获取菜单)==========
|
||||||
|
console.log('开始生成路由...');
|
||||||
|
const permissionStore = usePermissionStoreHook();
|
||||||
|
const accessRoutes:any = await permissionStore.generateRoutes(roles);
|
||||||
|
console.log('路由生成成功, 路由数量:', accessRoutes.length);
|
||||||
|
|
||||||
|
// ========== 第八部分:动态添加路由 ==========
|
||||||
|
accessRoutes.forEach((route: any) => {
|
||||||
|
router.addRoute(route);
|
||||||
|
});
|
||||||
|
|
||||||
|
// ========== 第九部分:设置路径并跳转 ==========
|
||||||
|
setPath("/login-sjtb");
|
||||||
|
router.push({ path: accessRoutes[0].children[0].opturl });
|
||||||
message.success("登录成功");
|
message.success("登录成功");
|
||||||
|
|
||||||
// 跳转到首页
|
|
||||||
router.push({ path: "/" });
|
|
||||||
}
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// console.error("短信登录失败", error);
|
// ========== 第十部分:错误处理 ==========
|
||||||
// message.error(error.message || "登录失败,请重试");
|
console.error("短信登录失败", error);
|
||||||
|
message.error(error.message || "登录失败,请重试");
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
|
// ========== 第十一部分:关闭加载状态 ==========
|
||||||
state.loading = false;
|
state.loading = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user