From 0649c4e3de6f6257624004e189a4dbc7f6ffe80d Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Fri, 17 Oct 2025 14:14:34 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E4=BC=98=E5=8C=96=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-visor-ui/src/api/error.ts | 12 ++++++++++++ orion-visor-ui/src/api/interceptor.ts | 3 ++- orion-visor-ui/src/api/user/user-aggregate.ts | 4 ++-- orion-visor-ui/src/router/guard/user-login-info.ts | 5 ++++- orion-visor-ui/src/store/modules/user/index.ts | 7 ++++++- 5 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 orion-visor-ui/src/api/error.ts diff --git a/orion-visor-ui/src/api/error.ts b/orion-visor-ui/src/api/error.ts new file mode 100644 index 00000000..2c1be754 --- /dev/null +++ b/orion-visor-ui/src/api/error.ts @@ -0,0 +1,12 @@ +import type { AxiosResponse } from 'axios'; + +// api 错误 +export class ApiError extends Error { + data: AxiosResponse; + + constructor(message: string, data: AxiosResponse) { + super(message); + this.name = 'ApiError'; + this.data = data; + } +} diff --git a/orion-visor-ui/src/api/interceptor.ts b/orion-visor-ui/src/api/interceptor.ts index a2b6b146..7235b934 100644 --- a/orion-visor-ui/src/api/interceptor.ts +++ b/orion-visor-ui/src/api/interceptor.ts @@ -5,6 +5,7 @@ import { useUserStore } from '@/store'; import { getToken } from '@/utils/auth'; import { httpBaseUrl } from '@/utils/env'; import { reLoginTipsKey } from '@/types/symbol'; +import { ApiError } from '@/api/error'; axios.defaults.timeout = 15000; axios.defaults.setAuthorization = true; @@ -72,7 +73,7 @@ axios.interceptors.response.use( }); } } - return Promise.reject(new Error(res.msg || 'Error')); + return Promise.reject(new ApiError(res.msg || 'Error', res)); }, (error) => { // 判断是否弹出请求错误信息 diff --git a/orion-visor-ui/src/api/user/user-aggregate.ts b/orion-visor-ui/src/api/user/user-aggregate.ts index fa95ac6f..455f0e4c 100644 --- a/orion-visor-ui/src/api/user/user-aggregate.ts +++ b/orion-visor-ui/src/api/user/user-aggregate.ts @@ -1,5 +1,5 @@ import type { MenuQueryResponse } from '@/api/system/menu'; -import type { AxiosResponse } from 'axios'; +import type { HttpResponse } from '@/types/global'; import axios from 'axios'; /** @@ -36,7 +36,7 @@ export interface UserUpdatePasswordResponse { * 获取用户聚合信息 */ export function getUserAggregateInfo() { - return axios.get>('/infra/user-aggregate/user', { + return axios.get>('/infra/user-aggregate/user', { unwrap: true }); } diff --git a/orion-visor-ui/src/router/guard/user-login-info.ts b/orion-visor-ui/src/router/guard/user-login-info.ts index 9f23deb9..79da2625 100644 --- a/orion-visor-ui/src/router/guard/user-login-info.ts +++ b/orion-visor-ui/src/router/guard/user-login-info.ts @@ -31,7 +31,10 @@ export default function setupUserLoginInfoGuard(router: Router) { next(); } } catch (error) { - Message.error('获取用户信息失败'); + // 登录过期 + if ((error as any)?.data?.data?.code !== 401) { + Message.error('获取用户信息失败'); + } // 获取失败退出登录 await userStore.logout(); next({ diff --git a/orion-visor-ui/src/store/modules/user/index.ts b/orion-visor-ui/src/store/modules/user/index.ts index 0a39d838..369cba98 100644 --- a/orion-visor-ui/src/store/modules/user/index.ts +++ b/orion-visor-ui/src/store/modules/user/index.ts @@ -7,6 +7,7 @@ import { clearToken, setToken } from '@/utils/auth'; import { removeRouteListener } from '@/utils/route-listener'; import { getUserAggregateInfo } from '@/api/user/user-aggregate'; import { useAppStore, useCacheStore, useMenuStore, useTabBarStore, useTipsStore } from '@/store'; +import { ApiError } from '@/api/error'; const CHECK_APP_VERSION_KEY = 'check-app-version'; @@ -67,9 +68,13 @@ export default defineStore('user', { // 获取用户信息 async getUserInfo() { - const { data: { data }, headers } = await getUserAggregateInfo(); + const resp = await getUserAggregateInfo(); + const { data: { code, msg, data }, headers } = resp; // 检查版本更新 checkForVersionUpdate(headers?.['x-app-version']); + if (code !== 200) { + throw new ApiError(msg, resp); + } // 设置用户信息 this.setUserInfo({ id: data.user.id,