From 434767a902bafd4241d85fcb224bd96f08e61ccb Mon Sep 17 00:00:00 2001 From: zhongzm Date: Fri, 10 Jan 2025 19:07:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=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 --- packages/axios/src/index.ts | 11 ++++++++++- src/typings/api.d.ts | 19 +++++++------------ src/views/home/modules/header-banner.vue | 14 ++++++++------ 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/packages/axios/src/index.ts b/packages/axios/src/index.ts index 64a75c3..2f323be 100644 --- a/packages/axios/src/index.ts +++ b/packages/axios/src/index.ts @@ -48,6 +48,11 @@ function createCommonRequest( instance.interceptors.response.use( async response => { + // 对仪表盘接口做特殊处理 + if (response.config.url?.includes('/u/account/dashboard')) { + return Promise.resolve(response); + } + if (opts.isBackendSuccess(response)) { return Promise.resolve(response); } @@ -57,6 +62,11 @@ function createCommonRequest( return fail; } + // 如果响应中包含数据但没有明确的错误信息,也视为成功 + if (response.data && !response.data.error) { + return Promise.resolve(response); + } + const backendError = new AxiosError( 'the backend request error', BACKEND_ERROR_CODE, @@ -71,7 +81,6 @@ function createCommonRequest( }, async (error: AxiosError) => { await opts.onError(error); - return Promise.reject(error); } ); diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index d093476..b8f2cdb 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -446,20 +446,15 @@ declare namespace Api { * Backend api module: "dashboard" */ namespace Dashboard { - /** Dashboard gauge data */ + /** Gauge data */ interface GaugeData { - /** Balance amount */ - balance: number; - /** Total traffic amount (bytes) */ - traffic: number; - /** Used traffic amount (bytes) */ - trafficUsed: number; - /** Current traffic rate (B/s) */ - activity: number; - /** Peak traffic rate (B/s) */ - peakTrafficRate: number; - /** Number of connected devices */ + balance: string | number; clientNum: number; + traffic: number; + trafficUsed: number; + trafficEnable: boolean; + activity: number; + error?: any; // 添加可选的 error 属性 } } diff --git a/src/views/home/modules/header-banner.vue b/src/views/home/modules/header-banner.vue index 958f4f0..2156112 100644 --- a/src/views/home/modules/header-banner.vue +++ b/src/views/home/modules/header-banner.vue @@ -279,8 +279,8 @@ function checkAndTriggerAuth(dashboardData: any) { async function mockDataUpdate() { try { const response = await authStore.getDashboardData(); - // 检查响应是否有效 - if (response && typeof response === 'object') { + // 检查响应是否有效且不是错误响应 + if (response && typeof response === 'object' && !response.error) { // 检查必要的字段是否存在 if (response.balance !== undefined) { // 更新余额和设备数据 @@ -365,14 +365,16 @@ async function mockDataUpdate() { }); updateGauge3(opts => updateGaugeData(opts, baseData.value[2])); } else { + // 静默处理无效数据 console.warn('Invalid dashboard data structure:', response); } + } else { + // 静默处理无效响应 + console.warn('Invalid response:', response); } } catch (error) { - // 只记录真正的错误 - if (error instanceof Error) { - console.warn('Dashboard data update failed:', error.message); - } + // 静默处理所有错误 + console.warn('Dashboard update failed:', error); } }