5.8 KiB
作废房务需求只读与历史详情(修改接口)
目标前端
- 端类型:管理后台(Web)
- 目标仓库:
mmg/hl-ui - 仓库地址:
https://git.1814.love:8443/mmg/hl-ui.git - 联调/验收环境:
http://192.168.100.160:9527 - 小程序:无需处理
业务硬规则
作废房务需求只能查看。页面不得提供联系房务、联系定制师、转单、配房、询房、替换、移除、改价、清空配房、驳回、最终确认等任何业务操作。
问题与原因
同一订单调整后会保留旧的失活需求并生成新的生效需求。此前列表虽返回 voided=true,但前端未标红、未展示原因;点击旧行又只按 orderId 请求详情,导致打开当前生效需求,出现旧记录与当前配房串版。
接口变更
1. 我的房务订单列表
GET /v3/admin/order/grab-pool/my-claims/hotel
作废行新增/明确字段:
{
"id": "2078779808241668097",
"orderId": "2078739922130243586",
"requirementVersion": 2,
"voided": true,
"voidReason": "订单调整生成新版本,原需求已作废",
"voidedAt": "2026-07-20T16:52:29",
"primaryAction": {
"type": "VIEW",
"url": "/admin/order/2078739922130243586/arrange?requirementId=2078779808241668097"
}
}
注意:列表字段 id 就是本行的房型需求 ID,打开详情时必须连同该 ID 传给详情接口,不能只传 orderId。
2. 房务详情支持指定历史需求
GET /admin/house/orders/{orderId}?requirementId={requirementId}
该接口使用既有房务详情命名空间 /admin/house,请求时必须沿用 API 模块的绝对路径配置,不得自行添加 /v3。错误请求 /v3/admin/house/orders/{orderId} 会返回“接口不存在”。
2026-07-20 本地测试环境 Network 复核
http://192.168.100.160:9527 点击作废行“查看”时实际发出:
错误:GET /v3/admin/house/orders/2078739922130243586?requirementId=2078779808241668097
正确:GET /admin/house/orders/2078739922130243586?requirementId=2078779808241668097
同一弹窗的需求历史请求已经使用正确命名空间:
GET /admin/house/orders/2078739922130243586/requirement-history
因此请检查详情 API 方法是否误传 baseURL: '/v3'、V3 request config 或再次拼接 /v3。只修改详情请求,operation-log 仍按它自己的既有 /v3/admin/house/... 契约处理,不得全局替换。
- 不传
requirementId:保持原行为,返回当前生效需求。 - 传
requirementId:精确返回该订单的指定历史需求;ID 不属于该订单时返回业务错误。 - 作废历史需求不会混入当前需求的配房数据。
详情新增顶层字段:
{
"viewedRequirementId": "2078779808241668097",
"historicalRequirement": true,
"voided": true,
"voidReason": "订单调整生成新版本,原需求已作废",
"voidedAt": "2026-07-20T16:52:29"
}
requirement.history[] 同步增加 requirementId、voided、voidReason、voidedAt。
历史作废详情中:
actions下全部动作的enabled=false;permissions.canEdit=false;permissions.canSendMessage=false;requirement.actions.canSendMessage=false,其他写动作同样为false;permissions.canViewMessage=true只代表允许查看既有留言,不代表可回复。
管理后台处理要求
voided=true的列表行和详情必须使用明确的红色作废样式,并展示“已作废”、voidReason和作废时间。- 作废列表行只能显示“查看”;不得显示“更多”菜单或任何联系、流转、配房按钮。
- 点击作废行必须携带本行
id作为requirementId请求详情,不得复用当前有效需求详情。 - 详情只要
voided=true或historicalRequirement=true,前端必须再次强制只读并隐藏全部业务操作,不能只依赖某一个按钮字段。 - 人数调整提醒直接展示后端
changeItems;按通知 70,人数仅显示“总人数 4 → 3”,不显示成人/儿童等具体人员类型变化。
当前订单详情增加“作废记录”入口
在当前有效订单的房务详情中增加按钮:作废记录(N),让房务不必返回列表寻找红色卡片。
N为该订单历史需求中voided=true的数量;没有作废记录时可隐藏按钮或显示禁用的作废记录(0)。- 按钮建议放在详情标题区或需求信息区,与普通业务写操作分开,避免误认为可以恢复作废需求。
- 点击后打开只读抽屉/弹窗,列出该订单全部作废需求,至少展示:需求版本、提交/作废时间、作废原因、原状态。
- 列表数据可使用详情响应的
requirement.history[],按voided=true过滤;每项必须使用自身requirementId。 - 点击某条“查看详情”时调用:
GET /admin/house/orders/{orderId}?requirementId={该条requirementId}
- 历史详情继续执行严格只读规则,只能关闭/返回,不能联系、转单、配房、清空、驳回、最终确认或执行其他业务操作。
- 作废记录列表按
voidedAt DESC展示,最新作废记录在前;本入口不改变“我的订单”主列表中作废卡片统一置底的规则。
验收
- 同一订单的作废旧行与当前有效行能明确区分,旧行标红并显示原因。
- 旧行仅有“查看”,不存在任何写操作或联系操作。
- 打开旧行后
viewedRequirementId等于该行id,内容为旧需求快照,不出现当前配房。 - 作废详情仅可阅读,所有动作均隐藏或禁用。
- 删除一名出行人后,调整提醒显示“总人数 4 → 3”。
- 当前有效订单详情显示“作废记录(1)”;点击可看到该订单的作废需求列表,并能打开对应只读历史详情。
后端关联:wx/HL#5092。