减少冗余代码
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
<div class="brand-text">
|
||||
<h1 class="title">方舟工单</h1>
|
||||
<span class="sub-text">ARK TICKET SYSTEM v3.0</span>
|
||||
<span class="sub-text">ARK TICKET SYSTEM v4.0</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<el-form :model="loginForm" :rules="loginRules" ref="loginFormRef" class="ark-form">
|
||||
<el-form-item prop="username">
|
||||
<div class="input-prefix">ID</div>
|
||||
<el-input v-model="loginForm.username" placeholder="工员编号" class="ark-input" />
|
||||
<el-input v-model="loginForm.username" placeholder="员工编号" class="ark-input" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="password">
|
||||
@@ -64,17 +64,17 @@ import { ref, reactive } from "vue";
|
||||
import { DataBoard } from "@element-plus/icons-vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { userApi } from "@/api/ticket";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const route = useRoute();
|
||||
const loginForm = reactive({ username: "", password: "" });
|
||||
const rememberMe = ref(false);
|
||||
const loading = ref(false);
|
||||
const loginFormRef = ref(null);
|
||||
|
||||
const loginRules = reactive({
|
||||
username: [{ required: true, message: "请输入工员编号", trigger: "blur" }],
|
||||
username: [{ required: true, message: "请输入员工编号", trigger: "blur" }],
|
||||
password: [{ required: true, message: "请输入密钥", trigger: "blur" }],
|
||||
});
|
||||
|
||||
@@ -85,52 +85,32 @@ const handleLogin = async () => {
|
||||
loading.value = true;
|
||||
|
||||
const res = await userApi.login(loginForm.username, loginForm.password);
|
||||
// console.log(res)
|
||||
// 注意:这里由于你之前的封装,可能需要判断 res.data.code 还是 res.code
|
||||
// 如果用了拦截器,直接判断 res.code
|
||||
|
||||
if (res.code === 200) {
|
||||
const token = res.data.token;
|
||||
const userInfo = JSON.stringify(res.data.user_info);
|
||||
const role = res.data.user_info.role;
|
||||
// ThinkPHP 会自动通过 Set-Cookie 下发 session,浏览器自动接管,无需手动存 token
|
||||
const userInfo = res.data;
|
||||
const userInfoStr = JSON.stringify(userInfo);
|
||||
|
||||
// console.log(role)
|
||||
// 用户信息存前端,仅用于显示用户名和角色路由判断
|
||||
const storage = rememberMe.value ? localStorage : sessionStorage;
|
||||
storage.setItem("user_info", userInfoStr);
|
||||
|
||||
// --- 核心逻辑开始 ---
|
||||
if (rememberMe.value) {
|
||||
// 勾选了:存入 localStorage,实现持久化
|
||||
localStorage.setItem("token", token);
|
||||
localStorage.setItem("user_info", userInfo);
|
||||
} else {
|
||||
// 没勾选:存入 sessionStorage,关闭标签页即失效
|
||||
sessionStorage.setItem("token", token);
|
||||
sessionStorage.setItem("user_info", userInfo);
|
||||
}
|
||||
// --- 核心逻辑结束 ---
|
||||
ElMessage({
|
||||
message: "身份验证通过,方舟系统加载中...",
|
||||
type: "success",
|
||||
duration: 300,
|
||||
});
|
||||
|
||||
ElMessage.success("身份验证通过,方舟系统加载中...");
|
||||
|
||||
// 3. 根据角色执行路由跳转
|
||||
setTimeout(() => {
|
||||
switch (role) {
|
||||
case "admin":
|
||||
router.push("/"); // 管理员跳转至主页
|
||||
break;
|
||||
case "user":
|
||||
router.push("/user"); // 跳转至 UserView (请确保路由配置中有此路径)
|
||||
break;
|
||||
case "client":
|
||||
router.push("/client"); // 跳转至 ClientView (请确保路由配置中有此路径)
|
||||
break;
|
||||
default:
|
||||
ElMessage.warning("未识别的角色权限,请联系管理员");
|
||||
break;
|
||||
}
|
||||
}, 1000);
|
||||
// 触发路由守卫,自动处理跳转
|
||||
await router.push(route.query.redirect || "/");
|
||||
} else {
|
||||
ElMessage.error(res.message || "登录失败");
|
||||
ElMessage.error(res.message || "登录失败,请检查账号和密码");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Login Error:", error);
|
||||
if (error.name !== "ValidationError") {
|
||||
ElMessage.error("登录请求异常,请稍后重试");
|
||||
// console.error("登录错误:", error);
|
||||
}
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user