文件
hl-api-changelog/changelogs-v2/2026-08/22_frontend_行级释放占用已取消全程槽行解析服务日失败误拦截-前端缺陷-管理后台.md
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

3.7 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base generated
hl-changelog/v2 frontend-fleet-clear-cancelled-occupancy-row 行级「释放占用」对已取消全程槽行误报「缺少该派单的服务日期」 admin kimi(wx) 前端缺陷 not_required not_required verified mmg 9871cbb1 2026-08-22 前端缺陷:已取消的全程槽派单行(整单取消场景)行级「释放占用」解析服务日失败被误拦截,报「缺少该派单的服务日期,请刷新详情后重试」且刷新无效。建议解析为空时降级整单级释放(后端向后兼容)或该行隐藏行级按钮。根治在 #6152(后端详情将给已取消行补返起止日期)。临时绕路:用卡片顶「释放车辆/司机占用」整单级入口,功能正常。 2026-08-22 dev-v3 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): 已派车后取消进异常桶对标房务)验收项包含「已取消行补返起止日期字段」,落地后行级释放可恢复逐天精确语义;本前端降级修复与其不冲突(解析得到日期时仍走行级)。