feat(client): 完成 P3 业务页联动闭环(D6/D8/D10/D11)
- 待办:列表/详情 + approve/reject/return/transfer(D6) - 报销:列表/详情 + create/submit/withdraw/pay(D8) - 票据:列表/上传/OCR轮询/绑定/预览(D10) - 统一:Api types + 错误映射 + react-query缓存失效(D11)
这个提交包含在:
@@ -0,0 +1,62 @@
|
||||
export function mapApiErrorMessage(
|
||||
code: string,
|
||||
details?: Record<string, unknown>,
|
||||
fallbackMessage?: string,
|
||||
) {
|
||||
if (code === "AUTH_001") {
|
||||
return "账号或密码错误,请检查后重试。";
|
||||
}
|
||||
|
||||
if (code === "AUTH_004") {
|
||||
return "登录状态失效,请重新登录。";
|
||||
}
|
||||
|
||||
if (code === "PERM_001") {
|
||||
return "当前账号无权限执行该操作。";
|
||||
}
|
||||
|
||||
if (code === "PERM_002") {
|
||||
return "你不是当前任务处理人,无法执行该操作。";
|
||||
}
|
||||
|
||||
if (code === "SYS_404") {
|
||||
return "目标数据不存在或已被删除。";
|
||||
}
|
||||
|
||||
if (code === "VALID_002") {
|
||||
return "输入内容长度不足,请补充后再提交。";
|
||||
}
|
||||
|
||||
if (code === "VALID_001") {
|
||||
if (details?.payment === "already_paid_conflict") {
|
||||
return "该报销单已支付且付款信息冲突,请刷新后确认。";
|
||||
}
|
||||
|
||||
if (details?.status === "invalid_pay_status") {
|
||||
return "当前状态不允许执行付款。";
|
||||
}
|
||||
|
||||
if (details?.transfer === "chain_limit_exceeded") {
|
||||
return "当前任务转审次数已达上限。";
|
||||
}
|
||||
|
||||
if (details?.transfer === "same_assignee_not_allowed") {
|
||||
return "不能将任务转审给自己。";
|
||||
}
|
||||
|
||||
if (details?.toApproverId === "target_not_approver") {
|
||||
return "目标人员不具备审批权限。";
|
||||
}
|
||||
|
||||
if (details?.toApproverId === "invalid_target") {
|
||||
return "目标审批人不存在或已停用。";
|
||||
}
|
||||
|
||||
if (details?.task === "already_processed") {
|
||||
return "该任务已被处理,请刷新列表。";
|
||||
}
|
||||
}
|
||||
|
||||
return fallbackMessage || "请求失败,请稍后重试。";
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户