fix: 调整加载个人信息逻辑

This commit is contained in:
2025-02-23 03:55:09 +08:00
parent 3f50400915
commit 79797b6ffc
4 changed files with 26 additions and 9 deletions

View File

@@ -27,7 +27,8 @@ import {
type UserInfo,
userInfoKey,
removeToken,
getTokenInfo
getTokenInfo,
getUserInfo
} from "@/utils/auth";
/** 自动导入全部静态路由,无需再手动引入!匹配 src/router/modules 目录(任何嵌套级别)中具有 .ts 扩展名的所有文件,除了 remaining.ts 文件
@@ -129,6 +130,8 @@ router.beforeEach((to: ToRouteType, _from, next) => {
whiteList.includes(to.fullPath) ? next(_from.fullPath) : next();
}
const data = getTokenInfo();
/**获取个人信息 */
getUserInfo();
if (!data.isExpire) {
// 无权限跳转403页面
if (

View File

@@ -1,5 +1,6 @@
import { storageLocal } from "@pureadmin/utils";
import { useUserStoreHook } from "@/store/modules/user";
import { getUserInfoAPI } from "@/api/login";
export interface UserInfo {
/** 用户名 */
@@ -114,3 +115,16 @@ export function getTokenInfo(): {
export const hasAuth = (auth: string) => {
return useUserStoreHook().permissions.includes(auth);
};
/**获取用户信息 */
export const getUserInfo = async () => {
const res = await getUserInfoAPI();
if (res.success) {
const user = storageLocal().getItem<object>(userInfoKey);
storageLocal().setItem(userInfoKey, {
...user,
...res.data
});
setUserInfo(res.data);
}
};

View File

@@ -34,8 +34,6 @@ import Check from "@iconify-icons/ep/check";
import User from "@iconify-icons/ri/user-3-fill";
import Info from "@iconify-icons/ri/information-line";
import { GetCaptchaAPI } from "@/api/login";
import { getUserInfoAPI } from "@/api/login";
import { setUserInfo } from "@/utils/auth";
const Period = getConfig("Period");
defineOptions({
@@ -88,10 +86,6 @@ const onLogin = async (formEl: FormInstance | undefined) => {
// 获取后端路由
return initRouter().then(async () => {
disabled.value = true;
const res = await getUserInfoAPI();
if (res.success) {
setUserInfo(res.data);
}
router
.push(getTopMenu(true).path)
.then(() => {

View File

@@ -121,6 +121,7 @@ import * as echarts from "echarts";
import Monitor from "@iconify-icons/ep/monitor";
import PieChart from "@iconify-icons/ep/pie-chart";
import Odometer from "@iconify-icons/ep/odometer";
import { onBeforeRouteLeave } from "vue-router";
const cache = reactive({
commandStats: [] as { name: string; value: number }[],
@@ -240,13 +241,18 @@ const initUsedMemoryChart = () => {
chart.setOption(option);
};
/**定时ID */
const timer = ref();
onMounted(async () => {
await getCacheInfo();
setInterval(() => {
timer.value = setInterval(() => {
getCacheInfo();
}, 60000);
});
/**页面离开时清除定时器 */
onBeforeRouteLeave(() => {
clearInterval(timer.value);
});
</script>
<style scoped lang="scss">