文件
hl-api-changelog/changelogs-v2/2026-08/22_frontend_行级释放占用已取消全程槽行解析服务日失败误拦截-前端缺陷-管理后台.md
T
Mimingguang ca44f7dbc2
changelog-filename-gate / validate (push) Failing after 1s
docs(changelog): #6152 前端 verified(mmg, ref 9871cbb1)
2026-08-22 11:17:55 +08:00

57 行
3.7 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
---
schema: "hl-changelog/v2"
ticket: "frontend-fleet-clear-cancelled-occupancy-row"
title: "行级「释放占用」对已取消全程槽行误报「缺少该派单的服务日期」"
consumer: "admin"
author: "kimi(wx)"
change_type: "前端缺陷"
backend_status: "not_required"
gateway_status: "not_required"
frontend_status: "verified"
frontend_owner: "mmg"
frontend_ref: "9871cbb1"
target_release: ""
verified_at: "2026-08-22"
status_note: "前端缺陷:已取消的全程槽派单行(整单取消场景)行级「释放占用」解析服务日失败被误拦截,报「缺少该派单的服务日期,请刷新详情后重试」且刷新无效。建议解析为空时降级整单级释放(后端向后兼容)或该行隐藏行级按钮。根治在 #6152(后端详情将给已取消行补返起止日期)。临时绕路:用卡片顶「释放车辆/司机占用」整单级入口,功能正常。"
updated_at: "2026-08-22"
base: "dev-v3"
generated: "2026-08-22T18:30:00+08:00"
---
# 行级「释放占用」对已取消全程槽行误报「缺少该派单的服务日期」
> 前端缺陷,待前端修复。后端无问题(整单级释放入口功能正常,接口本身向后兼容)。
## 现象(TEST 实测,订单 26-9250)
订单行程中中止(整单取消),派单看板 → 订单详情 → 车辆执行段 → 已取消行内点「**释放占用**」(行级,#6114):
- 报错「缺少该派单的服务日期,请刷新详情后重试」,刷新详情后重试仍报同样错误(用户连点 4 次均失败)。
- 卡片顶部「**释放车辆/司机占用**」(整单级,#6107)**功能正常**,可作为临时绕路。
## 根因(前端)
`src/views/fleet/board/index.vue` `onClearCancelledOccupancyRow`:行级释放必须先解析该行的服务日期数组(先取 `assignment.serviceDate`,否则走 `resolveVehicleFeeServiceDates` 的 7 种来源:dailyVehiclePlan / dailyVehicleFees / chargeable+freeServiceDates / serviceDates / serviceDateSegments / itinerary.days / startDate~endDate),解析为空则拦截不发请求。
本条已取消派单是**全程槽行**(`service_date` 为 NULL),且已取消行按 #5828 读侧精简(身份字段置空、仅回显 `cancelled*` 快照,快照不含日期)——7 种日期来源在该行全部为空,于是误拦截。
#6114 实现时只覆盖了「终止勾选未用天」场景(行上带 serviceDates),未覆盖「整单取消的全程槽行」场景。
## 后端事实(无需改动)
`POST /admin/fleet/assignments/clear-cancelled-occupancy`:
- 不传 `serviceDates`(或传空数组)= 整单级释放该订单全部已取消派单占用,**向后兼容且幂等**(`intentsWritten=0` 视为成功)。
- 传 `serviceDates` 时后端对全程行按 startDate~endDate 自动展开为天(`coveredServiceDates`),即后端本身能处理全程槽行——缺的只是前端解析不出日期。
## 修复建议(前端二选一)
1. **降级整单级**:行级解析服务日为空时,确认弹窗文案改为整单级口径(「将释放该订单下已取消派单占用的车辆/司机」),请求不带 `serviceDates` 直接发——后端即整单级释放。
2. **隐藏行级按钮**:`canClearCancelledOccupancyRow` 增加「能解析出服务日」前置条件,解析不出的行不显示行级「释放占用」,保留卡片顶整单级入口。
推荐方案 1(操作路径不变,用户无感)。
## 根治跟踪
后端工单 **#6152**(feat(fleet): 已派车后取消进异常桶对标房务)验收项包含「已取消行补返起止日期字段」,落地后行级释放可恢复逐天精确语义;本前端降级修复与其不冲突(解析得到日期时仍走行级)。