Fix Bug #441: 门诊手术安排:手术室护士角色进入页面提示"无权限"且"获取卫生机构列表失败"
根因:响应拦截器中 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 <noreply@anthropic.com>
This commit is contained in:
@@ -178,22 +178,25 @@ service.interceptors.request.use(config => {
|
|||||||
}
|
}
|
||||||
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
|
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
|
||||||
} else if (code === 500) {
|
} else if (code === 500) {
|
||||||
// 检查是否需要跳过错误提示
|
// 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理)
|
||||||
if (!res.config?.skipErrorMsg) {
|
if (res.config?.skipErrorMsg) {
|
||||||
ElMessage({ message: msg, type: 'error' })
|
return Promise.resolve(res.data)
|
||||||
}
|
}
|
||||||
|
ElMessage({ message: msg, type: 'error' })
|
||||||
return Promise.reject(new Error(msg))
|
return Promise.reject(new Error(msg))
|
||||||
} else if (code === 601) {
|
} else if (code === 601) {
|
||||||
// 检查是否需要跳过错误提示
|
// 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理)
|
||||||
if (!res.config?.skipErrorMsg) {
|
if (res.config?.skipErrorMsg) {
|
||||||
ElMessage({ message: msg, type: 'warning' })
|
return Promise.resolve(res.data)
|
||||||
}
|
}
|
||||||
|
ElMessage({ message: msg, type: 'warning' })
|
||||||
return Promise.reject(new Error(msg))
|
return Promise.reject(new Error(msg))
|
||||||
} else if (code !== 200) {
|
} else if (code !== 200) {
|
||||||
// 检查是否需要跳过错误提示
|
// 检查是否需要跳过错误提示(静默请求:返回响应让.then()处理)
|
||||||
if (!res.config?.skipErrorMsg) {
|
if (res.config?.skipErrorMsg) {
|
||||||
ElNotification.error({ title: msg })
|
return Promise.resolve(res.data)
|
||||||
}
|
}
|
||||||
|
ElNotification.error({ title: msg })
|
||||||
return Promise.reject('error')
|
return Promise.reject('error')
|
||||||
} else {
|
} else {
|
||||||
return Promise.resolve(res.data)
|
return Promise.resolve(res.data)
|
||||||
|
|||||||
Reference in New Issue
Block a user