fix(web): 强制同步运行中禁用按钮——列表/详情统一 sync_status=running 判定

- 列表行与监控详情页:sync_status=running 时按钮显示「同步中…」并禁用,
  防止与调度器并发触发导致 409;自有账号详情请求期间 loading 禁用
- conflictMessage:409/503 无 hint 时也透出后端分类 error 文案,
  兜住「请求失败」空白提示;回归见 TestCompetitorSyncClaimFailureClassification
This commit is contained in:
2026-09-30 12:55:41 +08:00
parent c6a4d20c03
commit d535f178d6
4 changed files with 18 additions and 7 deletions
+5 -1
View File
@@ -5,11 +5,15 @@ export function dateTime(value?: string | number | null): string {
return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleString();
}
// 对齐归档版 conflictMessage:优先后端 error 字段,409 冲突时附加提示。
// 对齐归档版 conflictMessage:优先后端 error 字段;409/503 冲突类错误即使无 hint 也直接透出后端
// 分类文案(如「该竞品正在同步中」),避免接口报错时界面无任何反馈。
export function conflictMessage(error: any, conflictHint?: string): string {
const status = error?.status ?? error?.body?.status;
const message = error?.message || error?.body?.error || '请求失败';
if (status === 409 && conflictHint) return `${message}:${conflictHint}`;
if ((status === 409 || status === 503) && message === '请求失败') {
return conflictHint ? conflictHint : `请求失败(${status}),请稍后重试`;
}
return message;
}