fix(ui): 其余视图错误提示收敛为「拦截器统一弹」,消除同族双弹
承接 R64(Admin.vue)已定口径,本轮覆盖其余全部视图。 根因:src/api/request.js 响应拦截器已覆盖全部失败路径,且每种失败只弹一次 ⇒ 调用方 catch 内再 ElMessage.error 即必然双弹。helper.error 不改 HTTP 状态, 故删除调用方提示不会丢后端文案。 删除 11 处重复提示(跨 5 文件): - Login.vue 管理员登录 catch(adminLogin 未传 silent ⇒ 拦截器必弹) - Activate.vue handleStep1 / handleActivate / resendSms - ForgotPassword.vue handleStep1 / handleReset / resendSms - Competition.vue submitUploadFiles / deleteUploadedWork / onMounted 外层 catch - Dashboard.vue enterContest(warning 形态,同族) 刻意保留(已有显式理由,不得误删): - silent 路径调用方唯一提示:Login 选手登录、Competition 大题加载/保存/交卷/自动交卷 - 客户端校验(未发请求)、原生 fetch(MockExam 样例模板)、独立 axios 实例(Materials)、 el-upload on-success(Admin) 另: - src/api/request.js 增补「错误提示口径」权威块(全站单一源 + 四类例外), 五个视图各加一行口径指针注释,防回退。 - 无行为变更:仅移除重复提示,finally/return/refreshCaptcha/router.push 全部保留。
This commit is contained in:
@@ -112,6 +112,10 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
// ===== 错误提示口径(R65 收敛)=====
|
||||
// 请求失败的提示一律由 src/api/request.js 响应拦截器统一给出(覆盖全部失败路径),
|
||||
// 本文件 **不在 catch 内重复弹窗**(同族双弹)。例外:客户端校验(未发请求)/
|
||||
// 已带 silent(调用方即唯一提示方)/ 非 axios 路径(原生 fetch、独立 axios 实例)。
|
||||
/**
|
||||
* Dashboard.vue - 选手工作台
|
||||
*
|
||||
@@ -216,8 +220,8 @@ async function enterContest() {
|
||||
ElMessage.warning(data.message || (data.status === 'ended' ? '考试已结束,无法进入' : '考试未在进行中,请等待考试开始'))
|
||||
return
|
||||
}
|
||||
} catch (e) {
|
||||
ElMessage.warning('获取考试状态失败,请稍后重试')
|
||||
} catch {
|
||||
// 失败提示由响应拦截器统一给出,此处不再重复弹窗(同族双弹)
|
||||
return
|
||||
}
|
||||
router.push('/competition')
|
||||
|
||||
Reference in New Issue
Block a user