154 lines
3.3 KiB
Vue
154 lines
3.3 KiB
Vue
<template></template>
|
||
|
||
<script setup>
|
||
import { ref, onMounted } from "vue";
|
||
import { useStore } from "vuex";
|
||
import {
|
||
getCookie
|
||
} from "@/utils/cookie";
|
||
import {
|
||
setItem
|
||
} from "@/utils/storage";
|
||
import { getSessionForSfzh, idCardNoLogin, idCardNoLoginPcs, getSessionForSfzhPcs } from "@/api/user-manage";
|
||
import emitter from "@/utils/eventBus.js";
|
||
import {
|
||
setTimeStamp
|
||
} from "@/utils/auth";
|
||
const loginDialog = ref(false);
|
||
const deptList = ref([]);
|
||
const store = useStore();
|
||
|
||
// 处理页面可见性变化的函数
|
||
const handleVisibilityChange = () => {
|
||
// 获取会话信息 - 带上所有cookies
|
||
fetch('https://pcs.lz.dsj.xz:9020/getSession', {
|
||
method: 'GET',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
},
|
||
// 确保发送所有cookies,包括跨域cookies
|
||
credentials: 'include',
|
||
})
|
||
.then((response) => {
|
||
// 检查响应状态
|
||
if (!response.ok) {
|
||
throw new Error(`HTTP error! status: ${response.status}`);
|
||
}
|
||
return response.json();
|
||
})
|
||
.then((data) => {
|
||
|
||
|
||
|
||
|
||
|
||
let { placeId, userId } = data.rows[0]
|
||
if (placeId == 'amdin') {
|
||
placeId = ''
|
||
}
|
||
idCardNoLoginLogin(userId, placeId)
|
||
// 这里可以根据返回的数据进行后续处理
|
||
})
|
||
.catch((error) => {
|
||
console.error('获取会话信息失败:', error);
|
||
// 可以添加错误通知或重试逻辑
|
||
})
|
||
};
|
||
function redirectAuth() {
|
||
const url = window.location.href
|
||
const urlObj = new URL(url);
|
||
const hostname = urlObj.hostname.split('.')[0]
|
||
// if (hostname == 'pcs'||hostname == 'zhpcs') {
|
||
// pcsHandleLogin()
|
||
// } else {
|
||
// handleLogin();
|
||
// }
|
||
handleVisibilityChange()
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
// 身份证号进行登录
|
||
const idCardNoLoginLogin = (idCard, orgId) => {
|
||
idCardNoLogin({
|
||
idCardNo: idCard,
|
||
orgCode: orgId
|
||
}).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);
|
||
setItem("SFRH", resIdCard.sfrh);
|
||
setItem("USERID", resIdCard.userId);
|
||
setItem("menusPermission", resIdCard.menuCodeSet);
|
||
setItem("idEntityCard", resIdCard.idEntityCard);
|
||
setItem("deptId", resIdCard.deptList);
|
||
// 保存登录时间
|
||
setTimeStamp();
|
||
emitter.emit("handleClick")
|
||
// 重定向到首页
|
||
setTimeout(() => {
|
||
if (window.parent !== window.self) {
|
||
window.location.hash = window.location.href.split("#")[1];
|
||
} else {
|
||
console.log("首页");
|
||
window.location.hash = "/";
|
||
}
|
||
}, 1000);
|
||
}).catch((error) => {
|
||
console.error("免登失败:", error);
|
||
// 免登失败时重定向到登录页面
|
||
// window.location.hash = "/login";
|
||
});
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
onMounted(() => {
|
||
redirectAuth();
|
||
});
|
||
</script>
|
||
|
||
<style></style>
|