diff --git a/changelogs-v2/2026-08/20_6111_终止行程订单配房三按钮禁用-修改接口-管理后台.md b/changelogs-v2/2026-08/20_6111_终止行程订单配房三按钮禁用-修改接口-管理后台.md index 9d72b8b..b29948b 100644 --- a/changelogs-v2/2026-08/20_6111_终止行程订单配房三按钮禁用-修改接口-管理后台.md +++ b/changelogs-v2/2026-08/20_6111_终止行程订单配房三按钮禁用-修改接口-管理后台.md @@ -1,7 +1,7 @@ --- schema: "hl-changelog/v2" ticket: "6111" -title: "终止行程(异常)订单配房组「标记完成/最终确认/清空配房」三按钮禁用(纯前端渲染逻辑告知)" +title: "终止行程(异常)订单配房组「最终确认/清空配房」禁用(标记完成保留)——纯前端渲染逻辑告知" consumer: "admin" author: "wx" change_type: "修改接口" @@ -12,61 +12,55 @@ frontend_owner: "mmg" frontend_ref: "" target_release: "" verified_at: "2026-08-20" -status_note: "订单终止行程后,配房组 houseStatus 已返回 EXCEPTION(异常)。本文告知前端:此类订单不得再展示/可用「标记完成」「最终确认」「清空配房」三按钮(或展示但禁用),避免对异常单误操作。后端契约字段早已返回,本次无后端代码变更,纯前端渲染/禁用逻辑。" +status_note: "订单终止行程后配房组 houseStatus=EXCEPTION。本文告知前端:此类订单禁用「最终确认」「清空配房」两按钮;但「标记完成」**保留可点**——它是 #4307 专门设计的异常单收尾出口(仅 EXCEPTION 时显示,点它把异常单收尾进「已完成」),禁了会失去异常收尾能力。后端契约字段早已返回,本次无后端代码变更,纯前端渲染/禁用逻辑。本文为上版(误含标记完成)的勘误版。" updated_at: "2026-08-20" base: "dev-v3" generated: "2026-08-20T00:00:00+08:00" --- -# 终止行程(异常)订单配房三按钮禁用(#6111 子项) +# 终止行程(异常)订单配房按钮处理(#6111 子项 · 勘误版) + +> ⚠️ **勘误**:上一版本要求对异常订单禁用「标记完成」——**错误**。前端反馈并经后端核实:「标记完成」是工单 **#4307** 专门设计的**异常单收尾出口**,`仅当前 houseStatus=EXCEPTION 时可标记完成`(否则 808022),点它把异常单收尾推进到「已完成」。** EXCEPTION 时恰恰要保留它可点**,禁了就没有异常收尾出口了。本版更正。 ## 背景 -订单**中止行程**后,房务侧会把该订单的配房组翻为异常(`houseStatus=EXCEPTION`),并产生退订待办。此时该订单的配房已处于「异常/待处理退订」状态,**不应再走正常配房流程的操作**。 +订单**中止行程**后,房务侧把配房组翻为异常(`houseStatus=EXCEPTION`),产生退订待办。此时该订单配房处于「异常/待处理退订」状态,**正常配房流程的动作**(最终确认、清空配房)对异常单无意义、易致状态错乱,应禁用。 -但当前订单详情页对这类异常订单,仍然展示并可点「**标记完成**」「**最终确认**」「**清空配房**」三个按钮——这些动作对异常单无业务意义,且可能引发状态错乱。 - -**本文告知前端:依据已有契约字段 `houseStatus` 判断,对异常订单禁用(或不展示)这三按钮。后端无新增字段。** +但「**标记完成**」是异常桶的**处置完成出口**——房务把退订等异常处置完后,点它把异常单关掉(EXCEPTION → CONFIRMED/已完成)。**这个必须保留**。 ## 变更接口 | 接口 | 变更 | | --- | --- | -| `GET /v3/admin/order/{orderId}/detail`(订单详情) | **无契约变更**。`itinerary[].hotelGroup.houseStatus` / `houseStatusLabel` 字段早已返回,本次仅告知前端据此做禁用渲染 | +| `GET /v3/admin/order/{orderId}/detail`(订单详情) | **无契约变更**。`itinerary[].hotelGroup.houseStatus` / `actions` 字段早已返回,本文仅告知前端禁用逻辑 | ## 一、判断依据(契约字段,已返回) -订单详情 `itinerary[].hotelGroup` 节点: +订单详情 `itinerary[].hotelGroup`: | 字段 | 类型 | 说明 | | --- | --- | --- | -| `houseStatus` | string | 房务状态机值。**终止行程后 = `EXCEPTION`(异常)**。其它值:`CLAIMING` 抢单中 / `PENDING_FINALIZE` 待最终确认 / `CONFIRMED` 已确认 等 | -| `houseStatusLabel` | string | 对应中文标签,`EXCEPTION` → 「异常」 | -| `finalized` | boolean | 是否已最终确认(仅 `houseStatus=CONFIRMED` 时为 true) | +| `houseStatus` | string | 房务状态机值。**终止行程后 = `EXCEPTION`(异常)** | -## 二、前端渲染要求 +## 二、前端渲染要求(`houseStatus === "EXCEPTION"` 时) -当 `itinerary[].hotelGroup.houseStatus === "EXCEPTION"` 时: - -| 按钮 | 处理 | -| --- | --- | -| **标记完成** | 禁用(或不展示) | -| **最终确认** | 禁用(或不展示) | -| **清空配房** | 禁用(或不展示) | - -> 建议:禁用优于隐藏——保留按钮但置灰 + tooltip「订单已终止行程,配房异常待处理」,让用户知道为何不能点。 +| 按钮 | 处理 | 说明 | +| --- | --- | --- | +| **最终确认** | **禁用** | 异常单不再走正常最终确认流程。建议置灰 + tooltip「订单已终止行程,配房异常待处理」 | +| **清空配房** | **禁用** | 异常单的退订/释放走行级释放(#6111 另一子项)或异常处置,不再整体清空 | +| **标记完成** | **保留可点** | ⚠️ #4307 异常收尾出口,**禁用即丢失异常收尾能力**。维持现状 `v-if="isException && canMutateRequirement"` 可点 | ## 三、正常订单不受影响 -`houseStatus` 非 `EXCEPTION` 的订单(抢单中/待最终确认/已确认等),三按钮显隐逻辑维持现状不变。 +`houseStatus` 非 `EXCEPTION` 的订单,三按钮显隐维持现状。 ## 四、配套说明 -- 「**未用房晚标记 + 行级资源释放按钮**」与「**异常原因显示(客户中止)**」是 #6111 的另外两个子项,**需后端补字段**,已在 #6111 工单跟进,不在本文范围。 -- 本文只覆盖「**异常订单禁用三按钮**」这一项——纯前端逻辑,字段已具备,可直接实现。 +- 「**未用房晚标记 + 行级资源释放按钮**」与「**异常原因显示(客户中止)**」是 #6111 的另外两个子项,**需后端补字段**,在 #6111 工单跟进,不在本文范围。 +- 本文只覆盖按钮禁用/保留逻辑,纯前端,字段已具备。 ## 验证 -- [ ] 终止行程的订单(如 26-9250)详情页配房组三按钮禁用/不展示 +- [ ] 终止行程订单(如 26-9250)详情页「最终确认」「清空配房」禁用/置灰 +- [ ] 终止行程订单「标记完成」**仍可点**(异常收尾出口) - [ ] 正常进行中订单三按钮显隐不变 -- [ ] 鼠标悬停禁用按钮有「订单已终止行程」类提示(可选)