fix(web): 强制同步运行中禁用按钮——列表/详情统一 sync_status=running 判定
- 列表行与监控详情页:sync_status=running 时按钮显示「同步中…」并禁用, 防止与调度器并发触发导致 409;自有账号详情请求期间 loading 禁用 - conflictMessage:409/503 无 hint 时也透出后端分类 error 文案, 兜住「请求失败」空白提示;回归见 TestCompetitorSyncClaimFailureClassification
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user