fix(frontend): 错误提示单一化/成功提示后置/日志页首次成功拉取

- request.ts blob 失败分支:先解析真实文案再统一提示——此前先弹兜底
  「导出失败」再异步补弹真实 message(双提示),401 时跳转提示与
  实际原因错位;401 语义文案在导出场景不再失真
- useConfirmAction:收尾(列表刷新)成功后才弹成功提示——此前先弹
  「已删除」再刷新,after 失败被吞时成功/失败提示同屏矛盾
- 日志页登录 tab 首次成功加载后不再重复拉取(loginLoadedOk 由
  fetcher 成功返回置位,失败切回可重拉,不复活「失败停空表」旧坑)
- login_flow.py 密码改从 E2E_ADMIN_PASSWORD 读(与 system_management
  同一约定),硬编码默认值在他机上会假绿为「凭据错误」
- e2e 冒烟:登录 8 项 + 系统管理 13 项全过(拦截器全局改动验证)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
liuwenxinandClaude Code committed 2026-10-15 09:22:12 +08:00
1 parent c2b462df3b
commit 7f8f88c148
4 files changed
+37 -20

No files matched your search

+13 -12
View File
@@ -63,20 +63,21 @@ service.interceptors.response.use(
}
return response
},
(error: AxiosError<ApiResult>) => {
async (error: AxiosError<ApiResult>) => {
const status = error.response?.status
let message = error.response?.data?.message ?? '网络异常,请稍后重试'
// blob 请求失败时 data 是 Blob(如导出接口返回的 JSON 信封错误),需读出真实 message
if (error.response?.data instanceof Blob) {
const raw = error.response?.data
let message = (raw as ApiResult | undefined)?.message ?? '网络异常,请稍后重试'
// blob 请求失败时 data 是 Blob(如导出接口返回的 JSON 信封错误):
// 先解析出真实文案再统一提示 —— 先弹兜底再异步补弹会造成双提示,
// 401 时跳转提示也会与实际原因错位
if (raw instanceof Blob) {
message = '导出失败,请稍后重试'
void error.response.data.text().then((text) => {
try {
const body = JSON.parse(text) as { message?: string }
if (body.message) ElMessage.error(body.message)
} catch {
/* 非 JSON 响应,保持兜底提示 */
}
})
try {
const body = JSON.parse(await raw.text()) as { message?: string }
if (body.message) message = body.message
} catch {
/* 非 JSON 响应,保持兜底提示 */
}
}
if (status === 401) {