docs(house): 勘误-终止订单仅禁用最终确认/清空配房,标记完成保留(#4307 异常收尾出口)
所有检测均成功
changelog-filename-gate / validate (push) Successful in 3s

这个提交包含在:
API Changelog Bot 2026-08-20 08:15:47 +00:00
父节点 0c62e86ced
当前提交 42d0d0eec0

查看文件

@ -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详情页「最终确认」「清空配房」禁用/置灰
- [ ] 终止行程订单「标记完成」**仍可点**(异常收尾出口)
- [ ] 正常进行中订单三按钮显隐不变
- [ ] 鼠标悬停禁用按钮有「订单已终止行程」类提示(可选)