From d38c24b1d21e88a44c94162d133aec8dbbfce2a0 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 10 Aug 2026 12:12:28 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20=E5=A4=9A=E6=A7=BD=E4=BD=8D?= =?UTF-8?q?=E5=8E=9F=E5=AD=90=E6=8F=90=E4=BA=A4=E5=90=8E=E3=80=8C=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E5=8F=B8=E6=9C=BA=E5=B7=B2=E7=A1=AE=E8=AE=A4=E3=80=8D?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=81=92=E7=81=B0=EF=BC=88=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E7=BC=BA=E9=99=B7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26-9313 两槽位原子提交后弹窗保持开启停在待确认页,登记按钮 disabled。 后端已实测排除:batch 响应逐槽返回 assignment.id、看板列表行 assignmentId 非空、DB 两行 holding 身份完整。断点在前端 batch 分支不设 activeAssignmentId, 且依赖父层刷新+重开 watch 的恢复链在多槽位场景没走通。附建议修法与临时绕过。 Co-Authored-By: Claude Opus 5 (1M context) --- ...交后登记司机已确认按钮恒灰-前端缺陷-管理后台.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 changelogs-v2/2026-08/10_frontend_多槽位原子提交后登记司机已确认按钮恒灰-前端缺陷-管理后台.md diff --git a/changelogs-v2/2026-08/10_frontend_多槽位原子提交后登记司机已确认按钮恒灰-前端缺陷-管理后台.md b/changelogs-v2/2026-08/10_frontend_多槽位原子提交后登记司机已确认按钮恒灰-前端缺陷-管理后台.md new file mode 100644 index 0000000..f47eb8f --- /dev/null +++ b/changelogs-v2/2026-08/10_frontend_多槽位原子提交后登记司机已确认按钮恒灰-前端缺陷-管理后台.md @@ -0,0 +1,75 @@ +--- +schema: "hl-changelog/v2" +ticket: "frontend-fleet-batch-register-driver-confirm-disabled" +title: "多槽位原子提交后停留在「待确认」页,「登记司机已确认」按钮恒灰不可点" +consumer: "admin" +author: "wx" +change_type: "前端缺陷" +backend_status: "not_required" +gateway_status: "not_required" +frontend_status: "pending" +frontend_owner: "mmg" +frontend_ref: "" +target_release: "" +verified_at: "2026-08-10" +status_note: "后端已实测排除:batch 提交响应逐槽返回 assignment.id,看板列表行 assignmentId 非空,数据齐备;断点在前端 batch 分支不设 activeAssignmentId + 依赖父层重开 watch 恢复。" +updated_at: "2026-08-10" +base: "dev-v3" +generated: "2026-08-10T12:20:00+08:00" +--- + +# 多槽位原子提交后停留在「待确认」页,「登记司机已确认」按钮恒灰不可点 + +> 前端交互缺陷,待前端修复。是 `frontend-fleet-assign-modal-close-on-next`(4c81471c 改为不关窗)之后暴露出来的连带缺口。 + +## 现象(TEST 实测,订单 26-9313 孙晓东,2 个车辆槽位) + +派单流程勾选 2 个车辆槽位 → 点「下一步」原子提交 → toast「已原子提交 2 个车辆槽位,等待司机确认」,弹窗按 4c81471c 的新行为保持开启、停在第 3 步「待确认」页 → **右下角「登记司机已确认」按钮灰掉点不动**,流程走不下去。 + +## 后端已排查,数据齐备(非后端问题) + +| 检查项 | 实测结果 | +|---|---| +| `POST /admin/fleet/assignments/batch` 响应 | `BatchAssignmentWriteRespVO.assignments[]` 逐槽返回 `assignment`(复用单派 `AssignmentWriteRespVO`),**含 `id`** | +| `GET /admin/fleet/board/orders`(列表行) | `assignmentId = 2086270154022285313`(非空) | +| `GET /admin/fleet/board/orders/{orderId}`(详情) | 顶层无 `assignmentId` 字段(本来就不返回),派单身份走 `currentAssignment.id = 2086270154022285313`;`activeAssignments[]` 两段齐全 | +| DB `fleet_assignment` | 两行均 `assignment_status=holding`、`hold_mode=1`,身份完整 | + +## 定位(前端) + +`useAssignFlow.js` 待确认链路 batch 分支(4c81471c 后): + +```js +if (submission.type === 'batch') { + message.success(`已原子提交 ${selectedSlots.value.length} 个车辆槽位,等待司机确认`) + emit('submitted-keep-open') + return // ← 全程不设 activeAssignmentId +} +``` + +单槽路径走的是 `const assignmentId = result?.id ?? result?.assignmentId` → `activeAssignmentId.value = String(assignmentId)`,所以单槽正常。 + +而 `Step3DriverConfirm.vue` 的按钮是 `:disabled="!assignmentId || uploadingCount > 0"`,`assignment-id` 直接绑 `activeAssignmentId`。batch 路径下它为空 → 按钮恒灰。 + +原设计指望父层 `onSubmittedKeepOpen` → `refreshBoardAfterMutation` → `assignMode.value = 'confirmHold'` 触发 AssignModal 重开 watch 走 `restoreFlowState()` 恢复 `assignmentId`。实测按钮仍灰,说明这条恢复链在多槽位场景没走通(可能 mode 赋同值 watch 未触发,或恢复时机晚于渲染)——**依赖「刷新详情 + 重开 watch」这条长链恢复本身就脆**。 + +## 建议修法(最短路径) + +batch 提交成功后,直接从响应里取当前预览 tab(司机)对应槽位的 id 落到 `activeAssignmentId`,不再依赖重开 watch: + +```js +const items = result?.assignments || [] +const current = items.find((it) => it.fleetItemIndex === activeFleetItemIndex) || items[0] +const id = current?.assignment?.id +if (id) activeAssignmentId.value = String(id) +``` + +多槽位下第 3 步本身是按司机分 tab 的(截图里「阿木古愣·蒙A-E5555」「巴雅尔·蒙A-S6666」),切 tab 时同步把 `activeAssignmentId` 换成该 tab 槽位的 id,即可逐段登记司机确认。整组是否都确认了,读后端 `driverConfirmationSummary.allDriverConfirmed`(多执行段只信服务端守恒汇总,别在前端推导)。 + +## 临时绕过(给车务) + +关掉派单弹窗,回派单看板重新点开该订单进入确认流程——此时恢复态从看板**列表行**取 `assignmentId`(非空),「登记司机已确认」按钮可正常点击。 + +## 复现路径 + +派单看板 → 选一个 2 槽位需求的订单(如 26-9313)→ 排车勾 2 个槽位 → 「下一步」原子提交 → 弹窗保持开启停在「待确认」→ 观察右下角「登记司机已确认」按钮灰掉不可点。