Files
sgxt_web/src/views/login/zeroTrust_login.vue

154 lines
3.3 KiB
Vue
Raw Normal View History

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-11-22 21:59:58 +08:00
import emitter from "@/utils/eventBus.js";
2025-10-09 21:33:58 +08:00
import {
setTimeStamp
} from "@/utils/auth";
const loginDialog = ref(false);
const deptList = ref([]);
const store = useStore();
2025-11-22 21:59:58 +08:00
// 处理页面可见性变化的函数
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);
// 可以添加错误通知或重试逻辑
})
};
2025-10-09 21:33:58 +08:00
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]
2025-11-22 21:59:58 +08:00
// if (hostname == 'pcs'||hostname == 'zhpcs') {
// pcsHandleLogin()
// } else {
// handleLogin();
// }
handleVisibilityChange()
2025-10-09 21:33:58 +08:00
}
2025-11-22 21:59:58 +08:00
// 身份证号进行登录
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
2025-10-09 21:33:58 +08:00
});
2025-11-22 21:59:58 +08:00
// 保存用户信息到本地存储
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";
});
}
2025-10-09 21:33:58 +08:00
onMounted(() => {
redirectAuth();
});
</script>
<style></style>