# 房务底部驳回需求按钮仍误展示

- 状态：front-end urgent
- 影响端：管理后台房务详情弹窗
- 关联通知：
  - `29_4777_房务清空配房信息与驳回按钮动作契约-前端待处理-管理后台.md`

## 问题

2026-07-07 复测时，房务详情弹窗底部仍显示“驳回需求”按钮。这是纯前端展示/交互问题：后端 action 和接口守卫已经正确。

当前订单示例：

- 订单：`2074303545149980674`
- 订单号：`HL20260707092437709`
- 状态：`CLAIMING / 配房中`
- 配房进度：`1/2`
- 第 1 晚：已有酒店/配房数据
- 第 2 晚：待配房

这种场景不能驳回需求。只要任意 day 还有 active 配房/询房数据，驳回按钮都不能展示为可操作入口。

## 后端当前返回

接口：

```http
GET /admin/house/orders/2074303545149980674
```

关键字段：

```json
{
  "actions": {
    "canRejectRequirement": {
      "enabled": false,
      "code": "REJECT_REQUIREMENT",
      "label": "驳回需求",
      "disabledReason": "已有配房, 不能驳回, 请先清空/删除配房",
      "endpoint": "POST /v3/admin/order/2074303545149980674/hotel-requirement/supplier-reject"
    },
    "canClearAssignments": {
      "enabled": true,
      "code": "CLEAR_ASSIGNMENTS",
      "label": "清空配房",
      "disabledReason": null,
      "endpoint": "DELETE /v3/admin/order/hotel-requirements/2074310408247623681/assignments"
    }
  },
  "requirement": {
    "actions": {
      "canRejectRequirement": false,
      "canClearAssignments": true
    }
  }
}
```

强制调用驳回接口也会被后端拒绝：

```http
POST /v3/admin/order/2074303545149980674/hotel-requirement/supplier-reject
```

返回：

```json
{
  "code": 582086,
  "success": false,
  "message": "该需求已有配房记录, 不能驳回, 请走替换/修改配房"
}
```

## 前端必须修改

1. 底部“驳回需求”按钮必须绑定 `data.actions.canRejectRequirement.enabled`。
2. `enabled=false` 时优先不展示“驳回需求”按钮。
3. 如果产品交互坚持保留按钮，则必须是真 disabled：
   - `disabled=true`
   - 不绑定提交/打开驳回弹窗的点击事件
   - 展示 `disabledReason`
4. 禁止用这些条件自行推断驳回可用性：
   - `houseStatus === CLAIMING`
   - 配房进度不是满配，例如 `1/2`
   - 当前在“配房中”流程节点
   - 第 2 晚仍待配房
5. 前端只需要做展示控制，不需要在前端判断“有没有配房数据”。是否能驳回以后端 action 为准。
6. 清空任意 day 或整体清空后，必须重新拉取详情；只有刷新后后端返回 `enabled=true` 才能展示/启用驳回入口。

## 验收

- 订单 `2074303545149980674`：第 1 晚已有酒店数据、第 2 晚待配房，底部不能出现可点击“驳回需求”。
- 只要 `actions.canRejectRequirement.enabled=false`，按钮隐藏或真实禁用。
- 点击禁用态按钮不会打开驳回原因弹窗，不会调用驳回接口。
- 清空全部配房后刷新详情，如果后端返回 `enabled=true`，才允许显示/启用驳回。
