检查页面更新.

This commit is contained in:
lijiahangmax
2025-07-01 01:45:47 +08:00
parent fcec6579d7
commit 87a2892fc4
5 changed files with 89 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
import type { MenuQueryResponse } from '@/api/system/menu';
import type { AxiosResponse } from 'axios';
import axios from 'axios';
/**
@@ -35,7 +36,9 @@ export interface UserUpdatePasswordResponse {
* 获取用户聚合信息
*/
export function getUserAggregateInfo() {
return axios.get<UserAggregateResponse>('/infra/user-aggregate/user');
return axios.get<AxiosResponse<UserAggregateResponse>>('/infra/user-aggregate/user', {
unwrap: true
});
}
/**

View File

@@ -4,7 +4,7 @@ export const MessageStatus = {
READ: 1,
};
export const MESSAGE_CONFIG_KEY = 'messageConfig';
export const MESSAGE_CONFIG_KEY = 'message-config';
// 查询数量
export const messageLimit = 15;

View File

@@ -8,6 +8,41 @@ import { removeRouteListener } from '@/utils/route-listener';
import { getUserAggregateInfo } from '@/api/user/user-aggregate';
import { useAppStore, useCacheStore, useMenuStore, useTabBarStore, useTipsStore } from '@/store';
const CHECK_APP_VERSION_KEY = 'check-app-version';
// 检查版本更新
const checkForVersionUpdate = (serverVersion: string) => {
try {
if (!serverVersion) {
return;
}
const clientVersion = import.meta.env.VITE_APP_VERSION;
// 版本相同
if (serverVersion === clientVersion) {
localStorage.removeItem(CHECK_APP_VERSION_KEY);
return;
}
// 版本不同
const lastCheck = localStorage.getItem(CHECK_APP_VERSION_KEY);
const lastCheckData = lastCheck ? JSON.parse(lastCheck) : null;
// 判断是否是同版本 或 距离上次提醒不超过 24 小时
if (lastCheckData?.version === serverVersion && Date.now() - (lastCheckData?.time || 0) < 24 * 60 * 60 * 1000) {
return;
}
// 提示用户更新
if (window.confirm('检测到新版本, 是否刷新页面以获取最新内容?')) {
window.location.reload();
}
// 更新 localStorage 记录
localStorage.setItem(CHECK_APP_VERSION_KEY, JSON.stringify({
version: serverVersion,
time: Date.now(),
}));
} catch (error) {
// ignored
}
};
export default defineStore('user', {
state: (): UserState => ({
id: undefined,
@@ -32,7 +67,9 @@ export default defineStore('user', {
// 获取用户信息
async getUserInfo() {
const { data } = await getUserAggregateInfo();
const { data: { data }, headers } = await getUserAggregateInfo();
// 检查版本更新
checkForVersionUpdate(headers?.['x-app-version']);
// 设置用户信息
this.setUserInfo({
id: data.user.id,