From 5755a954a84fddddd79a997317db4ba6adedc974 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 11 Aug 2026 09:24:57 +0800 Subject: [PATCH] =?UTF-8?q?changelog(frontend):=20=E6=B4=BE=E5=8D=95=20Ste?= =?UTF-8?q?p2=20=E7=BB=9F=E4=B8=80=E9=80=89=E8=BD=A6=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E7=A9=BA=E7=99=BD+=E5=BB=BA=E8=AE=AE=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=82=AC=E5=8A=9E+=E9=9C=80=E6=B1=82=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...展示区与统一选车弹窗空白-前端缺陷-管理后台.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 changelogs-v2/2026-08/11_frontend_派单Step2需求展示区与统一选车弹窗空白-前端缺陷-管理后台.md diff --git a/changelogs-v2/2026-08/11_frontend_派单Step2需求展示区与统一选车弹窗空白-前端缺陷-管理后台.md b/changelogs-v2/2026-08/11_frontend_派单Step2需求展示区与统一选车弹窗空白-前端缺陷-管理后台.md new file mode 100644 index 0000000..12a4041 --- /dev/null +++ b/changelogs-v2/2026-08/11_frontend_派单Step2需求展示区与统一选车弹窗空白-前端缺陷-管理后台.md @@ -0,0 +1,121 @@ +--- +schema: "hl-changelog/v2" +ticket: "frontend" +title: "派单 Step2:统一选车弹窗空白(后端有数据)+ 建议标签仍未删 + 需补用车需求展示区" +consumer: "admin" +change_type: "前端缺陷" +author: "wx(GIT)" +backend_status: "not_required" +gateway_status: "not_required" +frontend_status: "pending" +frontend_owner: "mmg" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "" +updated_at: "2026-08-11" +base: "dev-v3" +--- + +# 派单弹窗 Step2「排车」三项前端待办(2026-08-11 wx 实操反馈) + +> **页面**:车务管理 → 派单看板 → 订单派车弹窗 → Step2 排车 +> **实测订单**:26-9313(orderId `2086270153414103041`,孙晓东,08/22→08/24,成人10) +> **后端**:本条**无后端改动**,三项全部是前端渲染/布局问题。相关字段在测试环境均已可实测。 + +--- + +## 1. 🔴 缺陷:「统一选择车辆/司机」弹窗一片空白(后端数据正常) + +### 现象 + +槽位卡点「统一选择车辆/司机」→ 弹窗打开后,只渲染出顶部提示条「确认后统一写入该槽位全部可编辑用车日期;每天仍可单独调整」和右上「应用到槽位全部日期」按钮,**下方车辆列表 / 司机列表区域整片空白**。Network 面板中 `candidates` 请求返回 200。 + +### 后端实测(2026-08-11 网关 9443,车务管理员 token) + +用该槽位的真实上下文调 `POST /admin/fleet/assignments/candidates`: + +```json +{ + "orderId": 2086270153414103041, + "requirementId": 2086700635972915201, + "fleetItemIndex": 1, + "startDate": "2026-08-22", + "endDate": "2026-08-22", + "headcount": 10, + "excludeAssignmentId": 2086700639370301441 +} +``` + +返回 `code=200`,**数据是齐的**: + +| 字段 | 实测值 | +|------|--------| +| `vehicles.total` / 本页 | **21** / 20 条(蒙A-E2E01 丰田普拉多、蒙A-E2E99、蒙A-E5555 丰田埃尔法 …) | +| `drivers.total` / 本页 | **25** / 20 条(宝音德力格尔 15年、道尔吉 11年、巴雅尔 8年 …) | +| `vehicleTypeFacets` | 4 类(SUV系列 9 / 商务车 9 / 大巴系列 2 / …) | +| `fleetTeamFacets` | 4 组(北疆协作车队、合作车队A 4辆、合作车队B 2辆 …) | +| `canonicalSnapshot` | `planGeneration` / `snapshotVersion=6` / `retainedSlotIds` 均非空 | + +### 结论与排查方向 + +**接口有数据,是前端拿到响应后没有把列表渲染出来。** 请重点看: + +1. 响应取数路径:车辆/司机是 `data.vehicles.records` / `data.drivers.records`(分页对象,不是裸数组),`total` 在 `data.vehicles.total`。是否误按裸数组解构导致渲染空列表? +2. 该弹窗(「统一选择」入口)与单日「选择车辆/司机」入口是否复用同一个列表组件——单日入口此前是能出数据的,对比两条入口的 props/数据源差异。 +3. 弹窗内是否有基于槽位状态/日期区间的前置过滤(例如按 `startDate===endDate` 或「可编辑用车日期」集合过滤),把 20 条全过滤掉了。 +4. Network 里 `candidates` 调了两次(截图可见),确认是否第二次请求的响应覆盖了第一次、而第二次带了更严格的筛选参数。 + +--- + +## 2. ⚠️ 催办:槽位头「建议 SUV」「建议 车型未标注」标签仍未删除 + +`changelogs-v2/2026-08/11_5810_换版槽位人工制-需求语句与派车日期门禁-修改接口-管理后台.md` **§3 已明确要求删除**,当前线上(测试环境)仍在渲染,wx 2026-08-11 再次点名。 + +- 槽位头的「建议 {车型}」标签 → **全部去掉**(含车型缺失时的「建议 车型未标注」兜底文案) +- 字段层面 `vehicleSlots[].requiredVehicleType` / `requiredVehicleTypeLabel` / `requiredSeats` **后端仍返回真实值、契约保留**(其它场景可能用),只是**不要再渲染成槽位头的"建议 xx"标签** +- 原因重申:槽位人工制下车务爱派什么车派什么车,后端不按车型校验(车型/数量/人数不符**不拦截**),"建议"标签会让车务误以为必须匹配。车型诉求统一由下面第 3 条的需求语句表达一次 + +--- + +## 3. 📐 新增布局:Step2 排车页需要一块「用车需求」展示区 + +### 位置(wx 截图指定) + +派单弹窗 Step2「排车」页,**槽位表格下方的空白区域**(截图中红框位置:最后一个槽位的日期表格结束之后、弹窗底部之前)。当前这块是纯空白,浪费了整屏空间,而车务在这一步恰恰最需要对照需求。 + +### 展示内容 + +数据源:`GET /admin/fleet/board/orders/{orderId}` **根级** `requirementFleetText`(字段已存在,测试环境可实测)。 + +- 26-9313 实测当前值:`商务车×1(7座)、SUV×1(5座)` +- ⚠️ 后端正在把格式统一为 **`商务车7座×1 + SUV5座×1`**(座位数内联到车型后、多项用加号连接,wx 2026-08-11 定稿)。格式变更单独发 changelog,**对前端接入方式无影响**—— +- 🔴 **前端只管原样展示这个字符串,不要解析、不要自己按 `vehicleSlots` 或需求明细拼**(拼法口径归后端一处收口,否则日后改口径要改两边) +- `null` 时(需求不可达)整块不渲染,不要出现「当前需求:」空冒号或「当前需求:null」 + +### 建议形态 + +一行常驻文本即可,例如: + +``` +当前需求:商务车7座×1 + SUV5座×1 +``` + +不做"变更态横幅"——常驻展示的好处是任何时候车务都能对照,不依赖任何"需求是否改过"的状态判断(`requirementChangePendingCount` 现已恒 0,不能再作为触发条件,见 #5810 §2)。 + +可一并放进这块区域的既有字段(同一接口根级,均已可实测,按需取用): + +| 字段 | 26-9313 实测值 | 说明 | +|------|---------------|------| +| `requirementFleetText` | `商务车×1(7座)、SUV×1(5座)`(即将改为新格式) | **必展示** | +| `headcount` | `10` | 乘车人数 | +| `suggestedVehicleCount` | `2` | 需求车辆数 | +| `specialTags` | `["儿童安全座椅","大行李空间","中文司机","老司机(5年以上)"]` | 特殊诉求,标签形态 | +| `requirementRemark` | `孙晓东10人mpvx1 suv*1` | 定制师需求备注 | + +--- + +## 验证证据 + +- 第 1 条:2026-08-11 网关 `https://api.test.1814.love:9443` 车务管理员 token 实测 `POST /admin/fleet/assignments/candidates`,返回 `code=200`、`vehicles.total=21`、`drivers.total=25`、facets 非空(详见上表)。 +- 第 2、3 条:同订单 `GET /admin/fleet/board/orders/2086270153414103041` 实测 `requirementFleetText="商务车×1(7座)、SUV×1(5座)"`、`headcount=10`、`suggestedVehicleCount=2`、`specialTags` 4 项、`requirementRemark` 非空;`vehicleSlots` 返回 3 个槽位且 `superseded` 全 false(#5810 后无旧数据行,符合预期)。