134 行
7.3 KiB
Markdown
134 行
7.3 KiB
Markdown
---
|
||
schema: "hl-changelog/v2"
|
||
ticket: "frontend-fleet-reassign-display"
|
||
title: "改派选完车辆/司机后,槽位「当前车辆/当前司机」列与按天改派表格不回显新选择"
|
||
consumer: "admin"
|
||
author: "wx(GIT)"
|
||
change_type: "前端缺陷"
|
||
backend_status: "not_required"
|
||
gateway_status: "not_required"
|
||
frontend_status: "implemented"
|
||
frontend_owner: "mmg"
|
||
frontend_ref: "82f5b771"
|
||
target_release: ""
|
||
verified_at: ""
|
||
status_note: "前端缺陷:改派选完车辆/司机(完成选择)后,槽位顶部列与按天改派表格均不回显新选择。选择已在前端草稿(底部可见)且可正常提交生效,纯前端回显未刷新。前端已修复(cb763a74):选完后两处列立即回显新选择。"
|
||
updated_at: "2026-08-09"
|
||
base: "dev-v3"
|
||
generated: "2026-08-08T22:50:00+08:00"
|
||
---
|
||
|
||
# 改派选完车辆/司机后,槽位列与按天改派表格不回显新选择
|
||
|
||
> 前端缺陷,待前端修复。后端无问题(改派可正常提交生效)。
|
||
|
||
## 现象(TEST 实测,订单 26-6436 周梦洁)
|
||
|
||
改派流程操作:改派 → 下一步 → 选择改派 → 清除车辆/司机 → 选择车辆/司机 → 弹窗选**蒙A-T7777 + 宝音德力格尔** → 点「完成选择」。
|
||
|
||
回到排车页后(用户实测标注):
|
||
- **槽位表格顶部**:「当前车辆」「当前司机」列——有时回显新选(蒙A-E2E99 王信),有时仍显示「待重新选择」,**不稳定**。
|
||
- **按天改派表格**(3 个服务日 8/23~8/25):「当前车辆」「当前司机」列**始终仍显示旧派单**「**蒙A-E2E01 道尔吉**」(未回显新选)——这是主要问题。
|
||
- **底部改派草稿**正确显示「蒙A-T7777(丰田普拉多)· 宝音德力格尔 135\*\*\*\*5009」——选择已被前端记录,只是上面两处列没刷新。
|
||
|
||
用户以为没选上,易困惑/重复操作。
|
||
|
||
## 涉及接口
|
||
|
||
### 1. 派单详情(回显数据源)
|
||
|
||
```
|
||
GET https://api.test.1814.love:9443/admin/fleet/board/orders/{orderId}
|
||
```
|
||
|
||
路径参数:`orderId`(如 2086270156475936769,团号 26-6436)
|
||
|
||
响应(节选,data 节点)——**这是改派前的当前派单事实**:
|
||
```json
|
||
{
|
||
"currentAssignment": {
|
||
"id": "2086276434870853634",
|
||
"vehiclePlate": "蒙A-E2E01",
|
||
"driverName": "道尔吉",
|
||
"assignmentStatus": "assigned"
|
||
},
|
||
"vehicleSlots": [{
|
||
"fleetItemIndex": 0,
|
||
"vehiclePlate": "蒙A-E2E01",
|
||
"driverName": "道尔吉",
|
||
"slotStatus": "assigned",
|
||
"vehicleId": "2085284111341023234",
|
||
"driverId": "2065272150012444674"
|
||
}]
|
||
}
|
||
```
|
||
|
||
**说明**:改派「完成选择」后,新选择只在前端**草稿态**(尚未提交 change),此时槽位列/按天表格若仍读 `currentAssignment`/`vehicleSlots`(即旧 assigned 派单),就永远显示旧值。前端应在选完后用**草稿的新 vehicleId/driverId(车辆车牌/司机姓名)**覆盖回显这两处列,而不是继续展示 assigned 事实。
|
||
|
||
### 1b. 按天改派表格数据源(重点问题的具体接口)
|
||
|
||
按天改派表格(3 个服务日的「当前车辆/当前司机」列)读的是**同一个详情接口的 `dailyVehiclePlan` 字段**:
|
||
|
||
```
|
||
GET https://api.test.1814.love:9443/admin/fleet/board/orders/{orderId}
|
||
```
|
||
|
||
响应 `data.dailyVehiclePlan`(数组,每个服务日一项)实际值(改派前的旧派单):
|
||
```json
|
||
[
|
||
{"serviceDate":"2026-08-23","vehiclePlate":"蒙A-E2E01","vehicleModel":"丰田普拉多","driverName":"道尔吉","driverPhone":"135****5014","assignmentStatus":"assigned","planState":"USED","vehicleId":"2085284111341023234","driverId":"2065272150012444674"},
|
||
{"serviceDate":"2026-08-24", "...": "同上(蒙A-E2E01 道尔吉)"},
|
||
{"serviceDate":"2026-08-25", "...": "同上"}
|
||
]
|
||
```
|
||
|
||
**问题点**:改派「完成选择」后,新选择在前端草稿态(`newVehicleId/newDriverId`),但按天表格继续读 `dailyVehiclePlan[].vehiclePlate/driverName`(旧 assigned 派单)渲染——所以始终显示旧车旧司机。前端应在选完后用草稿的新车/新司机覆盖 `dailyVehiclePlan` 各天的回显(或重新拉取草稿态的逐日方案接口,而非 assigned 事实)。
|
||
|
||
### 2. 改派提交(选择真正生效)
|
||
|
||
```
|
||
POST https://api.test.1814.love:9443/admin/fleet/assignments/{assignmentId}/change
|
||
```
|
||
|
||
路径参数:`assignmentId`(当前派单 id,如 2086276434870853634)
|
||
|
||
请求体(示例):
|
||
```json
|
||
{
|
||
"newVehicleId": "蒙A-T7777对应vehicleId",
|
||
"newDriverId": "宝音德力格尔对应driverId",
|
||
"effectiveDate": "2026-08-23",
|
||
"holdMode": 1,
|
||
"reason": "改派",
|
||
"requestId": "front-change-<ts>"
|
||
}
|
||
```
|
||
|
||
响应:`code=200` 成功,旧行取消、新行生效。**此接口实测正常**(改派提交后车辆/司机正确变更)——所以是纯前端回显问题。
|
||
|
||
## 期望
|
||
|
||
改派「完成选择」后(草稿态、未提交前),以下两处立即回显新选的车辆+司机(与底部草稿一致):
|
||
1. 槽位表格顶部「当前车辆」「当前司机」列;
|
||
2. 按天改派表格每个服务日的「当前车辆」「当前司机」列。
|
||
|
||
即:选完后前端用草稿的 `newVehicleId/newDriverId`(解析出车牌/司机名)覆盖这两处的展示,让用户明确看到改派结果。
|
||
|
||
## 复现路径
|
||
|
||
派单看板 → 已派车订单(如 26-6436)→ 改派 → 下一步 → 选择改派 → 清除车辆/司机 → 选择车辆/司机 → 弹窗选车+选司机 → 完成选择 → 观察槽位顶部列与按天改派表格的「当前车辆/当前司机」列。
|
||
|
||
## 备注
|
||
|
||
- 初次派单(AssignModal)选完应用后槽位列正常回显 ✅;问题仅在**改派(重新派单)流程**的「完成选择」回显环节。
|
||
- 后端改派提交(POST /{id}/change)正常,选择已正确传入并生效——纯前端回显问题。
|
||
|
||
## 前端实证确认(2026-08-09 mmg,hl-admin@cb763a74 → 82f5b771)
|
||
|
||
已修复,整段与按天改派两处列选完后立即回显新选择:
|
||
|
||
- **根因**:改派清除车/司机后点「完成选择」,`selVehicle/selDriver` 草稿已写入但 `changeDraftCleared` 不复位(`applyResourceSelectionAndClose` 走 `day` scope 仅关抽屉即返回);槽位列空态判定 `isChangeRowClearedPending = isChangeRowSelected && changeDraftCleared`(`AssignModal.vue`)仍命中 → 停在「待重新选择」,与底部改派草稿不一致。
|
||
- **修复(cb763a74)**:新增 `resolveChangeRowDraftDisplay`,改派选中行已选出新选择(`selVehicleObj/selDriverObj`,与底部草稿同源)时解析出行内展示对象;整段与按天改派的「当前车辆/当前司机」列在已选新选择时立即回显新选择,未选时仍显示「待重新选择」空态,未清除时读原快照。
|
||
- **残留补修(82f5b771,对应本单 §1b 按天表格主问题)**:cb763a74 的按天分支只在「按天模式命中被点选那一天」时回显,**整段改派**(`selectedChangeDayDate` 为空)下按天表格所有服务日行仍走 else 读旧 assigned 快照 → 始终显示旧派单(即后端实测「按天表格始终显示蒙A-E2E01」)。放宽 `isChangeDayRowClearedPending`:按天改派仍只命中该天,整段改派选中槽位即命中其全部服务日行,由 `resolveChangeRowDraftDisplay` 回显新选择。
|
||
- 验证:assign-modal 相关 3 spec 10/10 通过;checkpoint(含生产构建)全绿。
|