2.4 KiB
2.4 KiB
fix(contract): 合同详情页状态变更记录与字段值中文化
日期: 2026-04-28 PR: #1534 (commit 9d420cb61d) 工单: #1532 影响端: 管理后台 (admin) - 合同详情页
背景
合同详情页「状态变更记录」显示英文 PENDING → GENERATED 来源: MANUAL、「签约模式 ONLINE」、「证件类型 ID_CARD`,应显示中文。
后端改动
新增 4 个 *Label 字段(接口返回 JSON 同时含原始 value + 中文 label,前端用哪个都可以):
ContractDetailVO.statusLogs[] 每项新增
{
"logId": 1,
"oldStatus": "PENDING",
"oldStatusLabel": "待创建", // 新增
"newStatus": "GENERATED",
"newStatusLabel": "已生成", // 新增
"source": "MANUAL",
"sourceLabel": "手动", // 新增
"createTime": "2026-04-28T14:21:14"
}
ContractDetailVO.travelers[] 每项新增
{
"name": "王骁",
"idCardType": "ID_CARD",
"idCardTypeLabel": "身份证", // 新增
"idCardNo": "152****5216"
}
主体已存在 ✅
ContractVO.modeLabel (ONLINE → 线上签署) 之前就有,前端记得用。
字典/枚举来源
| label 来源 | 枚举类 |
|---|---|
oldStatusLabel/newStatusLabel |
ContractStatus.labelOf(value) |
sourceLabel |
新增枚举 ContractStatusSource.labelOf(value) (CALLBACK=回调/POLLING=轮询/MANUAL=手动/SYSTEM=系统) |
idCardTypeLabel |
IdCardType.labelOf(value) |
modeLabel |
ContractMode.labelOf(value) |
labelOf() 静态方法对未知值/null 都返回 null(不抛异常),前端可放心展示无需 try/catch。
前端 TODO(yst/mmg)
合同详情页:把英文渲染替换成 label 字段。建议优先级:
- 状态变更记录 list:
oldStatusLabel、newStatusLabel、sourceLabel取代原来的 oldStatus/newStatus/source - 出行人 list:「证件类型」列用
idCardTypeLabel取代idCardType - 「签约模式」字段用
modeLabel(如果之前已经用mode,改成modeLabel)
label 字段如果是 null(脏数据/未知值场景)做空字符串兜底即可,不要 throw。
部署状态
⏸ 待手动触发 Deploy Panel 部署 hl-order-service-v2 到测试服。本地无法访问 Panel(timeout)。
影响范围
- 后端零破坏(只加字段,不删不改)
- 前端不消费新字段时仍兼容(原
oldStatus/newStatus/source/idCardType/mode都保留)