所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
①确认执行页逐日车费多车折叠:frontend_ref=0538f4b4。 ②调整订单脱敏值误回传:frontend_ref=d4d25a1c。 均翻 implemented + 补前端修复说明。hl-admin v2.1 已 push。
6.2 KiB
6.2 KiB
schema, ticket, title, consumer, change_type, author, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
| schema | ticket | title | consumer | change_type | author | backend_status | gateway_status | frontend_status | frontend_owner | frontend_ref | target_release | verified_at | status_note | updated_at | base |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | frontend | 确认执行页「逐日车费」多车只显示一行:按 serviceDate 去重把同日多台车折叠成单行 | admin | 前端缺陷 | wx(GIT) | not_required | not_required | implemented | mmg | 0538f4b4 | 2026-08-12 | 后端零改动。已用测试服真实 API 核实(订单 26-0821,看板 GET /admin/fleet/board/orders/2086270141158346754):activeAssignments 返回 4 段完整执行段(蒙A-K1999 考斯特 08-18~08-20 三天+08-21 一天 ×¥1500,蒙A-T1557 普拉多 08-18~08-20 三天+08-21 一天 ×¥1000),每段 dailyVehicleFees 逐日价齐全,根级 vehicleFeeTotal="10000.00"、vehicleFeeSummaries=[考斯特¥6000, 普拉多¥4000]。根因在前端:AssignModal.vue step4 逐日车费走 mergeContinuityDailyVehicleFees(vehicleFeeAmount.js),该函数按 serviceDate 去重、同日多台车只保留第一台的价——它本是为「同一台车跨段接续」设计的合并,被错用到「多台车并行」场景,把「逐日×逐车」折叠成「逐日单行」,总价也错。修法:确认页逐日车费按「车+服务日」逐行铺开(读 activeAssignments[].dailyVehicleFees,同日多车保留多行并带车牌/车型区分),总价直接用根级 vehicleFeeTotal,不要用按日期去重的聚合。前端 2026-08-12 已修复并交付:vehicleFeeAmount 新增 groupDailyVehicleFeesByVehicle 以车辆身份分组(vehicleId 优先/车牌兜底/皆无入匿名组保持旧语义),同车跨段仍按日合并、多车同日保留多行带车牌·车型小标题(Step4Confirm 多组渲染独立 DailyVehicleFeeList);sumContinuityVehicleFeeTotal 逐日回退改按车分组防同日多车漏算;confirmationVehicleFeeTotal 多段优先 resolveBoardOrderVehicleFeeTotal(props.order) 取根级 vehicleFeeTotal(特意用 props.order 非 assignmentOrder——confirmHold 下后者已被代表段单段总价覆盖)。fleet/board 35 文件 430 用例全绿,checkpoint 全过。 | 2026-08-12 | dev-v3 |
确认执行页「逐日车费」多车只显示一行(前端)
页面:车务管理 → 派单看板 → 订单派车弹窗 → Step4「确认执行」→「逐日车费」卡片 +「最终总车费(只读合计)」 后端:本条零改动。下面结论来自测试服真实 API(订单 26-0821)。
一、现象
多车订单(同一服务日 ≥2 台车)走到确认执行页时:
- 「逐日车费」只显示 1 行(如
8月18日 收费 ¥1000.00),其余车/其余天全部丢失; - 「最终总车费(只读合计)」也错(截图显示 ¥1000,应为 ¥10000)。
用户原话:「这个逐日车费就显示一个车一天的???」
二、后端已排除(数据完整)
GET /admin/fleet/board/orders/2086270141158346754 返回:
activeAssignments= 4 段(同一台车接续服务被拆成两段,属正常):- 蒙A-K1999 丰田考斯特:
08-18~08-20(3 天 ×¥1500)+08-21(1 天 ×¥1500) - 蒙A-T1557 丰田普拉多:
08-18~08-20(3 天 ×¥1000)+08-21(1 天 ×¥1000)
- 蒙A-K1999 丰田考斯特:
- 每段
dailyVehicleFees[]内逐日价齐全(chargeable/calendarPrice/assignmentPrice/source)。 - 根级
vehicleFeeTotal = "10000.00"、vehicleFeeSummaries = [{蒙A-K1999 考斯特 ¥6000},{蒙A-T1557 普拉多 ¥4000}]。
正确展示应为 8 行(4 天 × 2 车),总价 ¥10000。
三、根因(前端)
AssignModal.vue:
// ~1471 确认态执行段来源(这里本身是对的,= 全部 activeAssignments)
const confirmationAssignments = computed(() =>
activeAssignments.value.length ? activeAssignments.value : [currentAssignment...])
// ~1746 step4 多段时逐日车费走连续性聚合
const confirmationDailyVehicleFees = computed(() => {
const segments = confirmationAssignments.value
if (!(step.value === 4 && segments.length > 1)) return dailyVehicleFees.value
return mergeContinuityDailyVehicleFees(segments) // ← 问题在这
})
utils/vehicleFeeAmount.js:106:
export function mergeContinuityDailyVehicleFees(segments = []) {
const byDate = new Map()
for (const segment of rows) {
for (const fee of segment?.dailyVehicleFees ?? []) {
const date = String(fee?.serviceDate || '').trim()
if (date && !byDate.has(date)) byDate.set(date, fee) // ← 按日期去重:同日多台车只保留第一台
}
}
...
}
mergeContinuityDailyVehicleFees 按 serviceDate 去重,同一天多台车只保留第一台的价,把「逐日 × 逐车」折叠成「逐日单行」。总价 sumContinuityVehicleFeeTotal 同受此口径影响。这套合并是为「同一台车跨段接续、同日不重叠」设计的,被错误套用到「多台车并行」场景。
四、修复建议
确认执行页(Step4)的「逐日车费」不要用 mergeContinuityDailyVehicleFees 这套按日期去重的单段连续性聚合:
- 逐日车费列表:直接遍历
activeAssignments[],把每段的dailyVehicleFees[]按「车 + 服务日」逐行铺开;同日多车保留多行,并带车牌/车型区分(如8月18日 · 蒙A-K1999 考斯特 ¥1500、8月18日 · 蒙A-T1557 普拉多 ¥1000)。 - 最终总车费:直接用根级
order.vehicleFeeTotal(后端已按结算口径算好,本例 ¥10000),不要前端再聚合。resolveBoardOrderVehicleFeeTotal(vehicleFeeAmount.js:139)已有「有 dailyVehiclePlan/vehicleFeeSummaries 时取根级 vehicleFeeTotal」的正确口径,可复用。
注意:
mergeContinuityDailyVehicleFees/sumContinuityVehicleFeeTotal仅在「同车跨段、同日不重叠」前提下安全;多车并行时必须按车区分,不能按日期去重。
五、验收
- 多车订单(同日 ≥2 台车)确认执行页:「逐日车费」展示 服务日数 × 车数 行,每台车每天的价都在,且能区分是哪台车
- 「最终总车费」= 后端
vehicleFeeTotal(本例 ¥10000) - 单车订单确认执行页不受影响(回归)
- 同一台车跨段接续(同日不重叠)场景仍正确合并