From ec1df8af81f0014a1394239dfc113bf7966de353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Thu, 14 May 2026 10:12:24 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#441:=20=E9=97=A8=E8=AF=8A=E6=89=8B?= =?UTF-8?q?=E6=9C=AF=E5=AE=89=E6=8E=92=EF=BC=9A=E6=89=8B=E6=9C=AF=E5=AE=A4?= =?UTF-8?q?=E6=8A=A4=E5=A3=AB=E8=A7=92=E8=89=B2=E8=BF=9B=E5=85=A5=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=8F=90=E7=A4=BA"=E6=97=A0=E6=9D=83=E9=99=90"?= =?UTF-8?q?=E4=B8=94"=E8=8E=B7=E5=8F=96=E5=8D=AB=E7=94=9F=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E5=88=97=E8=A1=A8=E5=A4=B1=E8=B4=A5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:响应拦截器中 skipErrorMsg: true 仅抑制了弹窗提示,但仍返回 Promise.reject, 导致 .catch() 路径仍可能触发错误消息或异常行为。 修复:当 skipErrorMsg 为 true 且返回业务错误码(403/500/601等)时,改为 Promise.resolve(res.data), 让 .then() 分支通过 res.code !== 200 判断实现静默降级,不触发 .catch()。 Co-Authored-By: Claude Opus 4.7 --- openhis-ui-vue3/src/utils/request.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/openhis-ui-vue3/src/utils/request.js b/openhis-ui-vue3/src/utils/request.js index 9bead717b..e59770a0e 100755 --- a/openhis-ui-vue3/src/utils/request.js +++ b/openhis-ui-vue3/src/utils/request.js @@ -178,22 +178,25 @@ service.interceptors.request.use(config => { } return Promise.reject('无效的会话,或者会话已过期,请重新登录。') } else if (code === 500) { - // 检查是否需要跳过错误提示 - if (!res.config?.skipErrorMsg) { - ElMessage({ message: msg, type: 'error' }) + // 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理) + if (res.config?.skipErrorMsg) { + return Promise.resolve(res.data) } + ElMessage({ message: msg, type: 'error' }) return Promise.reject(new Error(msg)) } else if (code === 601) { - // 检查是否需要跳过错误提示 - if (!res.config?.skipErrorMsg) { - ElMessage({ message: msg, type: 'warning' }) + // 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理) + if (res.config?.skipErrorMsg) { + return Promise.resolve(res.data) } + ElMessage({ message: msg, type: 'warning' }) return Promise.reject(new Error(msg)) } else if (code !== 200) { - // 检查是否需要跳过错误提示 - if (!res.config?.skipErrorMsg) { - ElNotification.error({ title: msg }) + // 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理) + if (res.config?.skipErrorMsg) { + return Promise.resolve(res.data) } + ElNotification.error({ title: msg }) return Promise.reject('error') } else { return Promise.resolve(res.data)