docs(house): notify reject button visibility fix
这个提交包含在:
父节点
cbc05a9650
当前提交
92549d7697
@ -0,0 +1,97 @@
|
|||||||
|
# 房务底部驳回需求按钮仍误展示
|
||||||
|
|
||||||
|
- 状态: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`,才允许显示/启用驳回。
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户