hl-api-changelog/changelogs/2026-03/2026-03-23_contract_scheme_bug.md
API Changelog Bot c09286edca bug: 合同方案选择弹窗值绑定 + 小程序补全信息不应阻塞
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 12:13:47 +08:00

58 行
2.1 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 【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 变化。