2025-09-30 21:53:10 +08:00

143 lines
3.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="wh-full">
<BasicLoading
:isShow="isShow"
bgColor="#fff"
isShowTitle
textColor="#000"
title="启动中..."
:type="1"
/>
</view>
</template>
<script lang="ts" setup>
import { onLoad } from "@dcloudio/uni-app";
import { useDataStore } from "@/store/modules/data";
import { useUserStore } from "@/store/modules/user";
import { checkOpenId, findJsByPhoneApi } from "@/api/system/login";
import { PermissionCacheManager } from "@/utils/permission";
const { setGlobal, getGlobal } = useDataStore();
const { afterLoginAction } = useUserStore();
const { setFile, getFile } = useDataStore();
const isShow = ref(true);
/**
* 强制刷新权限
*/
async function forceRefreshPermission(changeTime?: string): Promise<void> {
try {
// 重新获取用户权限
const userStore = useUserStore();
const currentUser = userStore.getUser;
if (currentUser && currentUser.id) {
// 重新调用权限获取接口
const { authenticationApi } = await import('@/api/system/login');
const result = await authenticationApi({ userId: currentUser.id });
if (result && result.result) {
// 直接设置权限并刷新缓存不调用setAuth避免重复操作
userStore.auth = result.result;
// 手动刷新缓存,传递权限变更时间
const { refreshPermissionCache } = await import('@/utils/permission');
refreshPermissionCache(result.result, changeTime);
}
}
} catch (error) {
console.error('强制刷新权限失败:', error);
}
}
function goByqd(data: any) {
if (data && data.qdId) {
// 有签到参数,重定向到签到确认页面
let confirmUrl = `/pages/view/routine/qd/confirm?qdId=${data.qdId}`;
if (data.rqgqtime) {
confirmUrl += `&rqgqtime=${data.rqgqtime}`;
}
if (data.timestampqd) {
confirmUrl += `&timestampqd=${data.timestampqd}`;
}
console.log('重定向到签到确认页面:', confirmUrl);
uni.reLaunch({
url: confirmUrl
});
return;
}
}
function goByJs(js: any) {
if (js.confirmStatus == "A") {
// 跳转到自助服务首页
uni.reLaunch({
url: "/pages/base/service/index",
});
} else {
setFile({
...js,
...getFile,
});
setTimeout(() => {
uni.reLaunch({
url: "/pages/view/hr/teacherProfile/index",
});
}, 1500);
}
}
onLoad(async (data: any) => {
console.log('launchPage onLoad - 接收到的参数:', data);
if (data && data.openId) {
try {
const res = await checkOpenId({
openId: data.openId,
appCode: "JS",
});
if (data && data.qdId) {
goByqd(data);
}else if (res.resultCode == 1 && res.result) {
// 执行登录操作
afterLoginAction(res.result);
// 如果有changeTime参数更新权限缓存
if (data.changeTime) {
const { refreshPermissionCache } = await import('@/utils/permission');
const userStore = useUserStore();
const currentPermissions = userStore.getAuth;
if (currentPermissions && currentPermissions.length > 0) {
refreshPermissionCache(currentPermissions, data.changeTime);
}
}
// 跳转页面
console.log('launchPage onLoad - 准备调用goByJs');
goByJs(res.result.js);
} else {
uni.reLaunch({
url: "/pages/system/login/login",
});
}
} catch (err) {
console.error('launchPage onLoad - checkOpenId失败:', err);
uni.reLaunch({
url: "/pages/system/login/login"
});
}
} else {
console.log('launchPage onLoad - 没有openId参数跳转到登录页面');
uni.reLaunch({
url: "/pages/system/login/login"
});
}
});
</script>