2025-10-09 21:33:58 +08:00
|
|
|
<template></template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref, onMounted } from "vue";
|
|
|
|
|
import { useStore } from "vuex";
|
|
|
|
|
import {
|
|
|
|
|
getCookie
|
|
|
|
|
} from "@/utils/cookie";
|
|
|
|
|
import {
|
|
|
|
|
setItem
|
|
|
|
|
} from "@/utils/storage";
|
2025-10-26 12:25:50 +08:00
|
|
|
import { getSessionForSfzh, idCardNoLogin, idCardNoLoginPcs, getSessionForSfzhPcs } from "@/api/user-manage";
|
2025-10-09 21:33:58 +08:00
|
|
|
import {
|
|
|
|
|
setTimeStamp
|
|
|
|
|
} from "@/utils/auth";
|
|
|
|
|
const loginDialog = ref(false);
|
|
|
|
|
const deptList = ref([]);
|
|
|
|
|
const store = useStore();
|
|
|
|
|
function redirectAuth() {
|
2025-10-26 12:25:50 +08:00
|
|
|
const url = window.location.href
|
|
|
|
|
const urlObj = new URL(url);
|
|
|
|
|
const hostname = urlObj.hostname.split('.')[0]
|
|
|
|
|
if (hostname == 'pcs'||hostname == 'zhpcs') {
|
|
|
|
|
pcsHandleLogin()
|
|
|
|
|
} else {
|
|
|
|
|
handleLogin();
|
|
|
|
|
}
|
2025-10-09 21:33:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleLogin = (e) => {
|
|
|
|
|
// 先尝试获取cookie中的clientKey
|
|
|
|
|
const token = getCookie("clientKey");
|
|
|
|
|
|
|
|
|
|
if (token) {
|
|
|
|
|
// 使用clientKey获取会话信息
|
|
|
|
|
getSessionForSfzh({ cookie: token }).then((res) => {
|
|
|
|
|
// 使用获取到的idEntityCard进行免登
|
|
|
|
|
idCardNoLogin({
|
|
|
|
|
idCardNo: res
|
|
|
|
|
}).then((resIdCard) => {
|
|
|
|
|
// 登录成功后设置token和用户信息到store
|
|
|
|
|
store.commit("user/setToken", resIdCard.jwtToken);
|
|
|
|
|
store.commit("user/setDeptList", resIdCard.deptList);
|
|
|
|
|
store.commit("user/setUserName", resIdCard.userName);
|
|
|
|
|
store.commit("user/setMenuList", resIdCard.menuList);
|
|
|
|
|
store.commit("user/setUserInfo", {
|
|
|
|
|
token: resIdCard.jwtToken,
|
|
|
|
|
permission: {
|
|
|
|
|
buttonPermission: ["removeTest", "viewTest"],
|
|
|
|
|
menus: resIdCard.menuCodeSet
|
|
|
|
|
},
|
|
|
|
|
menuList: resIdCard.menuList,
|
|
|
|
|
deptList: resIdCard.deptList
|
|
|
|
|
});
|
|
|
|
|
// 保存用户信息到本地存储
|
|
|
|
|
setItem("USERNAME", resIdCard.userName);
|
2025-10-26 12:25:50 +08:00
|
|
|
setItem("SFRH", resIdCard.sfrh);
|
|
|
|
|
setItem("USERID", resIdCard.userId);
|
|
|
|
|
setItem("menusPermission", resIdCard.menuCodeSet);
|
|
|
|
|
setItem("idEntityCard", resIdCard.idEntityCard);
|
|
|
|
|
setItem("deptId", resIdCard.deptList);
|
|
|
|
|
// 保存登录时间
|
|
|
|
|
setTimeStamp();
|
|
|
|
|
// 重定向到首页
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
window.location.hash = "/";
|
|
|
|
|
}, 1000);
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
console.error("免登失败:", error);
|
|
|
|
|
// 免登失败时重定向到登录页面
|
|
|
|
|
// window.location.hash = "/login";
|
|
|
|
|
});
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
console.error("获取会话信息失败:", error);
|
|
|
|
|
// 获取会话信息失败时重定向到登录页面
|
|
|
|
|
// window.location.hash = "/login";
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error("没有找到clientKey cookie");
|
|
|
|
|
// 没有cookie时重定向到登录页面
|
|
|
|
|
window.location.hash = "/login";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const pcsHandleLogin = (e) => {
|
|
|
|
|
// 先尝试获取cookie中的clientKey
|
|
|
|
|
const token = getCookie("clientKey");
|
|
|
|
|
|
|
|
|
|
if (token) {
|
|
|
|
|
// 使用clientKey获取会话信息
|
|
|
|
|
getSessionForSfzhPcs({ cookie: token }).then((res) => {
|
|
|
|
|
// 使用获取到的idEntityCard进行免登
|
|
|
|
|
idCardNoLoginPcs({
|
|
|
|
|
idCardNo: res
|
|
|
|
|
}).then((resIdCard) => {
|
|
|
|
|
// 登录成功后设置token和用户信息到store
|
|
|
|
|
store.commit("user/setToken", resIdCard.jwtToken);
|
|
|
|
|
store.commit("user/setDeptList", resIdCard.deptList);
|
|
|
|
|
store.commit("user/setUserName", resIdCard.userName);
|
|
|
|
|
store.commit("user/setMenuList", resIdCard.menuList);
|
|
|
|
|
store.commit("user/setUserInfo", {
|
|
|
|
|
token: resIdCard.jwtToken,
|
|
|
|
|
permission: {
|
|
|
|
|
buttonPermission: ["removeTest", "viewTest"],
|
|
|
|
|
menus: resIdCard.menuCodeSet
|
|
|
|
|
},
|
|
|
|
|
menuList: resIdCard.menuList,
|
|
|
|
|
deptList: resIdCard.deptList
|
|
|
|
|
});
|
|
|
|
|
// 保存用户信息到本地存储
|
|
|
|
|
setItem("USERNAME", resIdCard.userName);
|
2025-10-09 21:33:58 +08:00
|
|
|
setItem("SFRH", resIdCard.sfrh);
|
|
|
|
|
setItem("USERID", resIdCard.userId);
|
|
|
|
|
setItem("menusPermission", resIdCard.menuCodeSet);
|
|
|
|
|
setItem("idEntityCard", resIdCard.idEntityCard);
|
|
|
|
|
setItem("deptId", resIdCard.deptList);
|
|
|
|
|
// 保存登录时间
|
|
|
|
|
setTimeStamp();
|
|
|
|
|
// 重定向到首页
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
window.location.hash = "/";
|
|
|
|
|
}, 1000);
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
console.error("免登失败:", error);
|
|
|
|
|
// 免登失败时重定向到登录页面
|
|
|
|
|
// window.location.hash = "/login";
|
|
|
|
|
});
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
console.error("获取会话信息失败:", error);
|
|
|
|
|
// 获取会话信息失败时重定向到登录页面
|
|
|
|
|
// window.location.hash = "/login";
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
console.error("没有找到clientKey cookie");
|
|
|
|
|
// 没有cookie时重定向到登录页面
|
|
|
|
|
window.location.hash = "/login";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
redirectAuth();
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style></style>
|