114 行
4.2 KiB
Markdown
114 行
4.2 KiB
Markdown
# 微信小程序 · 出发准备清单「接送机」拆成「到达」+「离开」两项 + 按出行人覆盖三态
|
||
|
||
- **变更日期**: 2026-04-23
|
||
- **PR**: #1289
|
||
- **端**: 微信小程序(管理端不涉及)
|
||
- **影响面**: 行前准备清单(出发倒计时聚合接口)
|
||
- **兼容性**: **需要前端同步调整**(清单项数量从 6 变 7,单项 key 新增,状态值新增 `WARNING`)
|
||
|
||
---
|
||
|
||
## 变化一:清单项数量 6 → 7
|
||
|
||
| 之前 | 现在 |
|
||
|---|---|
|
||
| 6 项:`DEPOSIT_PAID` / `TRAVELER_INFO` / **`ARRIVAL_INFO`**(接送机合一)/ `CONTRACT_SIGN` / `INSURANCE` / `CHECKLIST_CONFIRMED` | 7 项:`DEPOSIT_PAID` / `TRAVELER_INFO` / **`ARRIVAL_INFO`**(到达)/ **`DEPARTURE_INFO`**(离开)/ `CONTRACT_SIGN` / `INSURANCE` / `CHECKLIST_CONFIRMED` |
|
||
|
||
### `ChecklistItemKey` 取值对照
|
||
|
||
| 新 key | 之前文案 | 现在文案 |
|
||
|---|---|---|
|
||
| `ARRIVAL_INFO` | `接送机信息` | **`到达信息`** |
|
||
| `DEPARTURE_INFO`(新增) | — | **`离开信息`** |
|
||
|
||
前端如果用 `ARRIVAL_INFO` 这个枚举值做判断:逻辑保留即可,但文案"接送机"需要改为"到达";新增 `DEPARTURE_INFO` 需要渲染一项。
|
||
|
||
---
|
||
|
||
## 变化二:状态新增 `WARNING`(黄色提示态)
|
||
|
||
之前单项状态只有两个:`DONE / PENDING`;现在在到达/离开两项上新增 **`WARNING`**。
|
||
|
||
### 到达 / 离开项的三态判断
|
||
|
||
| 状态 | 触发条件 | 文案示例(title + subtitle) |
|
||
|---|---|---|
|
||
| `DONE` | 订单有至少 1 批到达/离开,且**所有出行人都已被某个批次覆盖** | 「到达信息已填」 · 「N 批 · 全员已覆盖」 |
|
||
| `WARNING`(新)| 有批次但**漏填了部分出行人** | 「到达信息未填全」 · 「还有 X 人未安排」 |
|
||
| `PENDING` | **0 批次** | 「填写到达信息」 · 「司机将根据此信息接机」 |
|
||
|
||
离开项同理,文案里"到达 / 接机" → "离开 / 送机"。
|
||
|
||
> 前端如果沿用「DONE=绿色 / PENDING=灰色」两色方案,新增一个"黄色"(`WARNING`)即可。
|
||
|
||
---
|
||
|
||
## 变化三:`actionPayload` 新增 `section` 字段
|
||
|
||
点击「到达 / 离开」项跳转表单时,`actionPayload` 新增 `section` 区分是到达还是离开:
|
||
|
||
```json
|
||
{
|
||
"title": "填写到达信息",
|
||
"status": "PENDING",
|
||
"actionType": "NAVIGATE",
|
||
"actionPayload": {
|
||
"target": "arrival_form",
|
||
"orderId": 1900001,
|
||
"section": "arrival" // ← 新增,取值 arrival | departure
|
||
}
|
||
}
|
||
```
|
||
|
||
前端跳到达/离开表单页时,可用 `section` 定位默认展开的 tab。
|
||
|
||
---
|
||
|
||
## 接口
|
||
|
||
路径不变(以 Swagger 为准)。返回体结构:
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": {
|
||
"items": [
|
||
{ "key": "DEPOSIT_PAID", "status": "DONE", "title": "...", "subtitle": "..." },
|
||
{ "key": "TRAVELER_INFO", "status": "PENDING", "title": "...", "subtitle": "..." },
|
||
{ "key": "ARRIVAL_INFO", "status": "WARNING", "title": "到达信息未填全", "subtitle": "还有 1 人未安排",
|
||
"actionType": "NAVIGATE", "actionPayload": { "target": "arrival_form", "orderId": 1900001, "section": "arrival" } },
|
||
{ "key": "DEPARTURE_INFO", "status": "PENDING", "title": "填写离开信息", "subtitle": "司机将根据此信息送机",
|
||
"actionType": "NAVIGATE", "actionPayload": { "target": "arrival_form", "orderId": 1900001, "section": "departure" } },
|
||
{ "key": "CONTRACT_SIGN", "status": "DONE" },
|
||
{ "key": "INSURANCE", "status": "DONE" },
|
||
{ "key": "CHECKLIST_CONFIRMED", "status": "PENDING" }
|
||
]
|
||
},
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 前端需要做的事
|
||
|
||
1. 清单项渲染循环:从 6 项改为按后端返回 `items` 数组长度渲染(避免硬编码数量)
|
||
2. 新增 `DEPARTURE_INFO` 的 icon / 文案映射
|
||
3. 新增 `WARNING` 状态的颜色 / 图标样式
|
||
4. 点击到达/离开项跳转时,从 `actionPayload.section` 判断 tab 默认态
|
||
|
||
---
|
||
|
||
## 不影响范围
|
||
|
||
- 其它 5 项(`DEPOSIT_PAID / TRAVELER_INFO / CONTRACT_SIGN / INSURANCE / CHECKLIST_CONFIRMED`)行为**零变化**
|
||
- 到达 / 离开信息的 CRUD 接口(`/mp/order/{orderId}/arrival` 等)**零变化**
|
||
- 管理端行前清单(若有)**不涉及**
|
||
|
||
---
|
||
|
||
## 相关
|
||
|
||
- PR:[wx/HL#1289](https://git.1814.love:8443/wx/HL/pulls/1289)
|
||
- 部署:`hl-order-service-v2`(8094)
|