后台八个列表(题目、比赛、用户、公告、题单、AI 报告、从题库加题、标签下的题)原来是 `const res = await getXxx(); rows.value = res.results`:接口 500 或断网时什么都不提示, 表格停在旧数据上;关键词防抖和翻页一交错,先发的晚回来会把新结果盖掉。 shared/composables/listLoader.ts 的 track() 把请求包一层:带请求序号、出错按后端文案提示 (登录过期、没权限这几种全局拦截器已经提示过,不弹第二遍)、表格挂 loading。 实跑:六个列表各 10 行正常;拦掉题目列表的接口再翻页,弹「网络异常,请检查网络后重试」 (原来没有任何反应)。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4dfd14f95b
commit
d4aadc7722
10 files changed
+122
-27
No files matched your search
@@ -67,6 +67,13 @@ interface ApiClient {
|
||||
* 导出给不走 axios 的请求用(AI 的流式接口是裸 fetch,见 utils/stream.ts)——
|
||||
* 同一个错误码从两条路进来,学生看到的结果不该有两个样子。
|
||||
*/
|
||||
/** handleGlobalApiError 已经替调用方提示过的错误码,调用方别再弹第二遍 */
|
||||
export const GLOBALLY_HANDLED_CODES: readonly string[] = [
|
||||
"login-required",
|
||||
"account-disabled",
|
||||
"permission-denied",
|
||||
]
|
||||
|
||||
export function handleGlobalApiError(code: string, message?: string) {
|
||||
if (code === "login-required") {
|
||||
storage.remove(STORAGE_KEY.AUTHED)
|
||||
|
||||
Reference in new issue
Block a user