From 67e50e3d1eed4915831e7a18227212893a6143f3 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 6 Jul 2026 14:15:30 +0800 Subject: [PATCH] =?UTF-8?q?docs(house):=20=E8=A1=A5=E5=85=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=9C=80=E6=B1=82=E5=90=8E=E6=88=BF=E5=8A=A1=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8C=89=E9=92=AE=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...务弹窗缺少替换和最终确认按钮-前端待处理-管理后台.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 changelogs-v2/2026-07/27_已配房修改需求后房务弹窗缺少替换和最终确认按钮-前端待处理-管理后台.md diff --git a/changelogs-v2/2026-07/27_已配房修改需求后房务弹窗缺少替换和最终确认按钮-前端待处理-管理后台.md b/changelogs-v2/2026-07/27_已配房修改需求后房务弹窗缺少替换和最终确认按钮-前端待处理-管理后台.md new file mode 100644 index 0000000..14d9c2a --- /dev/null +++ b/changelogs-v2/2026-07/27_已配房修改需求后房务弹窗缺少替换和最终确认按钮-前端待处理-管理后台.md @@ -0,0 +1,133 @@ +# 已配房修改需求后房务弹窗缺少替换和最终确认按钮(前端待处理) + +- 日期:2026-07-06 +- 端:管理后台 +- 页面:房务订单详情弹窗 / 订单详情进入的房务查看弹窗 +- 示例订单:`HL20260703140009570` +- 订单 ID:`2072923330129653762` +- 当前结论:不是后端状态没改全。后端已返回待最终确认、可编辑、可最终确认;前端弹窗没有显示“配房/替换”和“最终确认”按钮,需要检查只读入口或动作渲染门控。 + +## 复现场景 + +完成配房的订单再次修改住宿需求后: + +- 订单详情住宿安排已显示“房控处理中”。 +- 房务详情弹窗顶部流程显示“待最终确认”。 +- 但配房行右侧没有“配房/替换”入口。 +- 底部没有“最终确认”按钮。 + +业务期望: + +- 修改需求后,历史配房不自动消失,保留给房务人工核对。 +- 房务可以在当前配房基础上重新进入“配房”弹窗替换酒店/房型。 +- 房务核对完成后可以点“最终确认”回传定制师。 + +## 后端接口核对 + +### 订单行程接口 + +```http +GET /v3/admin/order/2072923330129653762/itinerary +``` + +关键返回: + +| 字段 | 值 | +|------|----| +| `hotelGroup.requirement.requirementId` | `2074011712880607234` | +| `hotelGroup.requirement.status` | `PROCESSING` | +| `hotelGroup.houseStatus` | `PENDING_FINALIZE` | +| `hotelGroup.houseStatusLabel` | `待最终确认` | +| `hotelGroup.finalized` | `false` | +| `hotelGroup.returnStatusLabel` | `待最终确认` | +| `hotelGroup.assignments.length` | `2` | + +### 房务详情接口 + +```http +GET /admin/house/orders/2072923330129653762 +``` + +关键返回: + +| 字段 | 值 | +|------|----| +| `requirement.current.requirementId` | `2074011712880607234` | +| `requirement.current.version` | `2` | +| `requirement.current.isActive` | `true` | +| `requirement.current.status` | `PROCESSING` | +| `progress.houseStatus` | `PENDING_FINALIZE` | +| `progress.houseStatusLabel` | `待最终确认` | +| `progress.arrangedCount / totalCount` | `2 / 2` | +| `claim.isMine` | `true` | +| `permissions.canEdit` | `true` | +| `actions.canFinalize.enabled` | `true` | +| `actions.canFinalize.endpoint` | `POST /admin/house/assignments/requirements/2074011712880607234/finalize` | + +按天数据也正常带当前需求 ID: + +| day | `itinerary[].requirementId` | `arrange` | `assignments.length` | +|-----|-----------------------------|-----------|----------------------| +| 1 | `2074011712880607234` | `confirmed` | `1` | +| 2 | `2074011712880607234` | `confirmed` | `1` | + +结论:后端已把新版本住宿需求设为 active,房务状态已回到 `PENDING_FINALIZE`,并且返回了可编辑与可最终确认动作。不是状态没改全。 + +## 前端排查方向 + +本地 `v2.1` 前端代码中,房务详情弹窗会通过 `isReadonly` 隐藏所有写操作: + +```js +const isReadonly = computed( + () => isLead.value || props.readonly || (!isPool.value && detail.value?.claim?.isMine === false), +) +``` + +配房/替换入口: + +```vue + + 配房 + +``` + +最终确认入口: + +```vue + + 最终确认 + +``` + +如果截图入口来自订单详情查看、房务日历、组长视角、非本人订单,前端现有逻辑会按只读处理,按钮被隐藏。 + +如果入口来自房务“我的订单/待办”,当前接口已经返回: + +- `claim.isMine=true` +- `permissions.canEdit=true` +- `actions.canFinalize.enabled=true` +- `progress.houseStatus=PENDING_FINALIZE` + +这种情况下仍不显示按钮,则属于前端只读门控或动作渲染没有跟接口状态对齐。 + +## 前端处理要求 + +1. 在房务“我的订单/待办”等可处理入口中,`PENDING_FINALIZE` 且 `claim.isMine=true` / `permissions.canEdit=true` 时,应显示按天“配房”按钮,用于替换当前酒店/房型。 +2. 同一状态下应显示“最终确认”按钮;可优先使用 `actions.canFinalize.enabled` 和 `actions.canFinalize.endpoint`,避免前端自行推导错。 +3. 如果从订单详情或日历进入确实只读,需要在 UI 上明确区分“只读查看”和“房务处理入口”,避免测试误以为状态不可操作。 +4. 不要要求后端删除旧配房;历史配房应作为当前待核对数据保留,房务通过配房弹窗提交替换。 + +## 相关接口 + +替换/重新提交某天配房: + +```http +POST /v3/admin/order/hotel-requirements/{requirementId}/assignments +``` + +最终确认: + +```http +POST /admin/house/assignments/requirements/{requirementId}/finalize +``` +