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