fix(admin): 错误提示收敛为「拦截器统一弹」,消除同族双弹
背景:Admin.vue 大量 catch { ElMessage.error(...) } 与 api/request.js 响应拦截器重复——\n一次失败请求用户会同时看到两条报错。拦截器已覆盖全部失败路径(业务码≠0 / 403/404/500 /\n超时 / 网络异常),故调用方 catch 不再弹提示。
分类(23 处 → 删 15 / 留 8):\n- 删 15:通用失败(拦截器已弹),保留状态回滚与 console.error\n- 留 2 + 请求加 silent:true:两个导入接口——后端 admin.js 明写「前端已统一加\n 『Excel 导入失败:』前缀,这里只回传纯错误,避免重复前缀」,删调用方会破坏跨层契约\n- 留 1:resetTestData(已 silent);留 3:客户端校验(未发请求);留 2:非 axios 路径
Admin.vue 文件头新增「错误提示口径(R64 收敛)」约定块防回退。\n验证:静态终态 23→9(应删项 0 残留)/ TDZ 15 文件 / 真浏览器 dev+产物 max=1 /\n变异自证 max=2 且还原 md5 一致 / ui-runtime-check 5-5 / build 157 文件 70 .gz /\nci-gates.sh 10 步 EXIT=0。
This commit is contained in:
@@ -28,8 +28,14 @@ export function importExcel(formData) {
|
||||
// 注意:不要手动设置 Content-Type。axios/浏览器在发送 FormData 时会自动补上
|
||||
// `multipart/form-data; boundary=...`;手动写死 'multipart/form-data'(无 boundary)
|
||||
// 会导致后端 getFileStream 解析失败(Missing boundary)-> 500,且永不落库。
|
||||
//
|
||||
// silent: true —— 抑制响应拦截器的通用错误提示。本接口的**失败提示由调用方负责**:
|
||||
// 后端刻意只回传纯错误(admin.js importExcel catch 注释:「前端已统一加
|
||||
// 「Excel 导入失败:」前缀,这里只回传纯错误,避免重复前缀」),故此处必须静默,
|
||||
// 否则会与 Admin.vue 的「Excel 导入失败:<原因>」构成同族双弹。
|
||||
return request.post('/admin/import-excel', formData, {
|
||||
timeout: 60000,
|
||||
silent: true,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -134,8 +140,11 @@ export function setQuestions(group, questionType, data) {
|
||||
*/
|
||||
export function importQuestionsExcel(group, formData) {
|
||||
// 同上:不要手动设置 Content-Type,避免缺失 boundary 导致后端解析 500。
|
||||
// silent: true —— 同 importExcel:失败提示由调用方(Admin.vue onExcelFileChange)
|
||||
// 以「Excel 导入失败:<原因>」形式统一给出,此处静默以避免同族双弹。
|
||||
return request.post(`/admin/exam/${group}/questions/import-excel`, formData, {
|
||||
timeout: 120000,
|
||||
silent: true,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user