2.9 KiB
2.9 KiB
房务订单详情「配房行程」itinerary 收口为一个父数组 assignments(每项带 confirmStatus + confirmStatusLabel)
模块:管理后台 · 房务订单详情弹窗 · 配房行程 接口:
GET /admin/house/orders/{orderId}→data.itinerary[]类型:后端结构收口(破坏性变更,前端必改;已合并 dev-v3 + 部署测试服 + API 实测闭环) 日期:2026-06-30 · 关联 PR #4672
背景
原 itinerary[]. 把同一批配房按状态拆进多个并列父数组,且彼此重叠(前端没法简单回显、不知道读哪个):
currentAssignment(已废弃单数)、currentAssignments(CONFIRMED 子集)、inquiringAssignments(INQUIRING 子集)、currentSelections(INQUIRING∪CONFIRMED 全集)。
经与前端讨论拍板:同一种数据的不同状态用一个父数组、每项自带状态(以后类似接口同此约定)。
变更(前端必改)
itinerary[] 每个 Day:
❌ 删除的字段(不再返回)
currentAssignmentcurrentAssignmentsinquiringAssignmentscurrentSelections(改名为assignments)
✅ 新增/保留:唯一父数组 assignments[]
当天全部 active 配房(询房中 INQUIRING ∪ 已确认 CONFIRMED 各态混在一个数组),无配房返空数组 [](不返 null)。每项:
{
"assignmentId": "2071869830406815746",
"hotelId": "2029926129876320258",
"hotelName": "海拉尔嘉世豪酒店",
"roomTypeId": "2029944763138936834",
"roomTypeName": "豪华大床房",
"roomCategory": "DELUXE",
"confirmStatus": "INQUIRING", // INQUIRING=询房中 / CONFIRMED=已确认
"confirmStatusLabel": "询房中", // 新增:confirmStatus 的中文 label
"roomCount": 4,
"protoPrice": "420.00",
"sellPrice": "420.00"
}
前端怎么用
- 直接渲染
assignments[]这一个列表,每项按自己的confirmStatusLabel显示状态徽章(询房中/已确认)。 - 要某状态子集自行过滤:
- 询房中候选(原
inquiringAssignments,如单日确认弹窗的 keepAssignmentIds)→assignments.filter(a => a.confirmStatus === 'INQUIRING'); - 已确认(原
currentAssignments)→assignments.filter(a => a.confirmStatus === 'CONFIRMED')。
- 询房中候选(原
不变(无需改)
- Day 级整体状态徽章
arrange/arrangeLabel(待配房 pending / 询房中 waiting / 已确认 confirmed)保留不变——这是「整天」状态,与「单项」confirmStatus是两回事。 dayNumber/stayDate/cityCode/cityName/expectedRoom/candidatePoolSummary/primaryAction等其它 Day 字段不变。
约定(团队级,后续接口同此)
凡「同一种数据有多种状态」的列表,统一返一个父数组、每项带 xxxStatus + xxxStatusLabel,前端按状态字段渲染/过滤;不再按状态拆成多个并列父数组。