diff --git a/changelogs/2026-03/2026-03-23_contract_scheme_bug.md b/changelogs/2026-03/2026-03-23_contract_scheme_bug.md new file mode 100644 index 0000000..e7091c9 --- /dev/null +++ b/changelogs/2026-03/2026-03-23_contract_scheme_bug.md @@ -0,0 +1,57 @@ +# 【BUG】合同方案选择弹窗 + 小程序补全信息 + +## 1. 合同方案选择弹窗 — 值绑定问题 + +**现象**:订单详情 → 手动签署 → 选择合同方案弹窗,下拉框显示了"全国旅游监管平台",但仍然报红"请选择合同方案",无法提交。 + +**原因**:下拉框 `v-model` 绑定的 value 可能是空值或类型不匹配。 + +**排查重点**: +- `GET /admin/contract/scheme/list` 返回的 schemeId 是 **字符串**(如 `"3"`),不是数字 +- 下拉选项的 value 必须用 `item.schemeId`(字符串),不要用 `Number(item.schemeId)` +- 表单校验 rules 如果用了 `type: 'number'`,改为 `type: 'string'` + +**接口返回示例**: +```json +{ + "code": 200, + "data": [ + { + "schemeId": "1", + "name": "标准电子签约方案(博华测试)冬季小团", + "contractPlatform": "12301", + "contractMode": "STANDARD", + "status": "ACTIVE" + }, + { + "schemeId": "3", + "name": "全国旅游监管平台", + "contractPlatform": "12301", + "contractMode": "STANDARD", + "agencyCode": "hulai", + "status": "ACTIVE" + } + ] +} +``` + +**注意**:`schemeId` 是字符串类型(Long序列化为String),El-Select 的 value 绑定要对应字符串。 + +--- + +## 2. 小程序补全信息 — 不应阻塞 + +**现象**:小程序用户补全出行人信息时偶现"服务不可用"。 + +**说明**: +- 补全出行人调用 `PUT /mp/order/{orderId}/edit`,这个接口只做数据保存 +- 保险投保和合同签约是**后端异步执行**的(`@Async`),不会阻塞补全请求 +- 如果前端在补全后**同步**调用了保险或合同相关接口,可能导致超时 +- **正确做法**:补全信息后只等 editOrder 返回,保险/合同状态通过订单详情的 `processStatus` 轮询即可 + +**processStatus 流转**: +``` +PENDING_INFO(待补全)→ PENDING_INSURANCE(投保中)→ PENDING_CONTRACT(签约中)→ PENDING_VEHICLE(待派车) +``` + +补全成功后 processStatus 会从 `PENDING_INFO` 变为 `PENDING_INSURANCE`,之后自动推进。前端只需轮询订单详情看 processStatus 变化。