---
schema: "hl-changelog/v2"
ticket: "6111"
title: "终止行程（异常）订单配房组「最终确认/清空配房」禁用（标记完成保留）——纯前端渲染逻辑告知"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "verified"
frontend_owner: "mmg"
frontend_ref: "a586343b"
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）详情页「最终确认」「清空配房」禁用/置灰
- [ ] 终止行程订单「标记完成」**仍可点**（异常收尾出口）
- [ ] 正常进行中订单三按钮显隐不变
