---
schema: "hl-changelog/v2"
ticket: "frontend-fleet-continuity-notify-tabs"
title: "车辆接续场景：派车通知需按司机分多 tab（接入 render-batch）+ 按日改派槽位汇总显示接续"
consumer: "admin"
author: "wx(GIT)"
change_type: "前端缺陷"
backend_status: "not_required"
gateway_status: "not_required"
frontend_status: "implemented"
frontend_owner: "mmg"
frontend_ref: "84ed152e"
target_release: ""
verified_at: ""
status_note: "车辆接续（一槽多天不同车/司机）派车通知需按司机分 tab。mmg 已在 d7f78a17 接入 render-batch 分 tab，但实测只显示【未确认】段（改派 8/23 道尔吉时只有道尔吉 tab，已确认的王信 8/24-25 被 slotChangeRows 的『终态段不产生行』过滤掉了）。车务口径 B：接续单派车通知要展示【全部接续司机】tab（含已确认段），不只未确认段——故 reopen 待补充。"
updated_at: "2026-08-09"
base: "dev-v3"
generated: "2026-08-09T11:20:00+08:00"
---

# 车辆接续场景：派车通知按司机分多 tab + 按日改派槽位汇总显示接续

> 前端改造，**后端能力已具备、无需改后端**。待前端接入。

## 场景（车辆接续）

一个车辆槽位在多天内由**不同车辆/司机接续**服务。例：订单 26-6436（8/23~8/25 三天），按天改派后：
- 8/23：蒙A-E2E01 道尔吉
- 8/24~8/25：蒙A-E2E99 王信

即同一槽位 8/23 是道尔吉、8/24-25 是王信——**一个槽位对应多个司机/多辆车（接续）**。

## 问题 1：派车通知只显示单 tab，接续的其他司机没通知预览

**现象**：待确认页「司机待确认通知」微信消息预览**只有一个 tab（道尔吉）**，接续的王信（8/24-25）没有 tab、看不到也给不了他的派车通知。

**期望**：派车通知预览**按司机分多个 tab，一个 tab 一个司机**，每个 tab 显示该司机所负责天数/车辆的派车通知；发送时按选中司机取对应的 renderedBody。

**后端已支持——直接用 `render-batch` 批量渲染接口**：

```
POST https://api.test.1814.love:9443/admin/fleet/message-templates/{templateId}/render-batch
```

接口注释原文：**"多槽位/多司机预览按槽位逐项渲染同一模板，返回与请求 items 同序的结果列表；前端预览区按司机分 tab，发送时按选中司机取对应 renderedBody。"**

请求体（**真实调用**，订单 26-6436 orderId=2086270156475936769，模板 id=2073978002412105729「排车待确认-标准」）：
```json
{
  "items": [
    {"orderId":"2086270156475936769","vehicleId":"2085284111341023234","driverId":"2065272150012444674","serviceDates":["2026-08-23"]},
    {"orderId":"2086270156475936769","vehicleId":"2085539421276286978","driverId":"2067084362829979650","serviceDates":["2026-08-24","2026-08-25"]}
  ]
}
```
- `items[]` 每项 = 一个司机/接续段的预览入参（orderId/vehicleId/driverId/assignmentGroupId/serviceDates 等，同单渲染），1~20 项；1 项时等价单渲染（无 tab）。
- vehicleId：蒙A-E2E01=2085284111341023234 / 蒙A-E2E99=2085539421276286978；driverId：道尔吉=2065272150012444674 / 王信=2067084362829979650。

响应（**真实返回**，code=200）：
```json
{"code":200,"message":"成功","data":{"items":[
  {"success":true,"renderedBody":"呼伦旅行—订车单\n...\n道尔吉，您好，请确认以下订车信息：\n团号：26-6436\n日期：2026-08-23 至 2026-08-25\n人数：2人（成人2）\n车辆：蒙A-E2E01 丰田普拉多（7座）\n..."},
  {"success":true,"renderedBody":"呼伦旅行—订车单\n...\n王信，您好，请确认以下订车信息：\n团号：26-6436\n日期：2026-08-23 至 2026-08-25\n人数：2人（成人2）\n车辆：蒙A-E2E99 丰田普拉多（7座）\n...行程详情：https://web.test.1814.love:9443/s/tlMa2xQ..."}
]}}
```
- `items[]` 与请求同序，每项独立 success + renderedBody；单项失败不阻断其他项。

**⚠️ 实测发现的后端问题（另见后端工单）**：两个司机渲染的「日期」都是「2026-08-23 至 2026-08-25」（订单全程），**没按各自 serviceDates 分段**——道尔吉只负责 8/23（serviceDates=[8/23]）却显示全程，王信负责 8/24-25 也显示全程。司机会搞不清自己负责哪几天。需后端 render-batch 渲染的日期按 serviceDates 分段。

**前端现状**：`src/api/fleet/message-template.js` **只封装了单渲染 `POST /render`，没有 render-batch**；待确认页预览仍调单渲染，只渲染第一个司机。

**前端要改**：
1. `message-template.js` 增加 `renderBatch(templateId, items)` 封装（POST `/fleet/message-templates/{templateId}/render-batch`）。
2. 待确认页派车通知预览：从 `board/orders/{orderId}` 的 `dailyVehiclePlan` 按 `assignmentId`/司机分组得到各接续段（每段的 vehicleId/driverId/serviceDates），调 render-batch 传入多 item；预览区按司机分 tab 展示各 item 的 renderedBody；发送时按选中司机取对应 renderedBody。

## 问题 2：按日改派顶部槽位汇总只显示第一天，未反映接续

**现象**：按日改派表格里每天已正确显示各车各司机（8/23 道尔吉、8/24-25 王信），但**顶部槽位表格「当前车辆/当前司机」只显示第一天的**（蒙A-E2E01 道尔吉），看不出这是接续单。

**期望**：接续槽位的顶部「当前车辆/当前司机」汇总应体现接续（如显示「多车接续」/分段列出各段车与司机，或标注「接续：道尔吉(8/23)+王信(8/24-25)」），让车务一眼看出该槽位是多车多司机接续。

**数据源**：`board/orders/{orderId}` 的 `dailyVehiclePlan`（按 serviceDate 各天 vehiclePlate/driverName/assignmentId）——前端按 assignmentId 分组即可识别接续并分段展示。

## 复现路径

派单看板 → 已派车订单（如 26-6436）→ 改派 → 下一步 → 按天改派 → 选中 8/23 改派给另一车/司机（形成接续）→ 待确认页看派车通知预览（只有单 tab）；排车页看顶部槽位汇总（只显示第一天）。

## 补充 2（2026-08-09，新建派车 batchMode 槽位内接续也丢司机 tab）

**现象**：新建派车（多槽位，非改派）场景，一个槽位内有接续（多天不同司机）时，派车通知只按「槽位」分 tab，**槽位内接续的司机没有单独 tab**。实测 26-3559 吴国强：槽位1 蒙A-E5555（阿木古愣 8/24-25 + 道尔吉 8/26 接续）、槽位2 蒙A-G8888（满都拉全程），共 **3 个司机**，但派车通知只 **2 个 tab（阿木古愣、满都拉）**——道尔吉（槽位1 的 8/26 接续）没 tab，且阿木古愣 tab 的日期含不属于他的 8/26。

**根因**：`AssignModal.messagePreviewSlots` 的 batchMode 分支（3131-3153）按 `selectedSlots.map`（每槽位 1 项），`driverName = slot.driver?.name || cells.find(driverName)`（取槽位第一个司机）、`serviceDates = 全部 used 天`——**没拆槽位内接续司机**。

**期望**：batchMode 也按「槽位×司机段」分 tab——同一槽位内有接续（多天不同司机）时，拆成多个司机 tab（如槽位1 拆成 阿木古愣 8/24-25 + 道尔吉 8/26 两个 tab），每个 tab 的 serviceDates 只含该司机负责的天。与改派分支的口径一致（按司机分段）。

## 备注

- 后端 `change` 接口的 `serviceDates`（按天改派限定日期集，其余天保留）已支持拆接续；`render-batch` 已支持多司机预览。**后端两处均无需改**。
- 关联：改派回显缺陷（08_frontend_改派选完车司机槽位列不回显）——都是接续/改派场景的前端展示问题，可一并处理。

## 补充（2026-08-09 车务口径 B，reopen 原因）

mmg 已在 d7f78a17 接入 render-batch 分 tab，但实测（订单 26-6436，改派 8/23 道尔吉、8/24-25 王信）**只显示道尔吉 1 个 tab**——因为 `slotChangeRows`（AssignModal.vue:1306）的过滤规则是「**终态段不产生行**」，已确认的王信 8/24-25 段被过滤，只有未确认的道尔吉段生成 tab。

**车务口径 B：接续单派车通知要展示【全部接续司机】tab（含已确认段），不只未确认段。**

- **期望**：改派/接续场景待确认页，派车通知按该槽位【全部接续司机】分 tab（如道尔吉 8/23 + 王信 8/24-25 两个 tab），含已确认段；车务可复制任意 tab 话术分别发给对应司机（已确认段是否重发由车务决定，但预览要能看到全部）。
- **需调整**：`slotChangeRows`（或派车通知预览专用的段数据源）不要过滤已确认终态段，把该槽位全部接续执行段都喂给 render-batch 分 tab。
- **接口**：仍用 `POST /admin/fleet/message-templates/{templateId}/render-batch`，items 传全部接续段（每段 vehicleId/driverId/serviceDates），后端渲染无问题（已实证能渲染任意段）。
