前端对接仓库配货 / 打包
打包页待补 / 早班 / 设箱
货架待补状态徽标、早班红底、设箱不符角标的渲染配色与三 tab 筛选映射,含早班跨午夜判断函数
Markdown 原文(给 AI 用):https://doc.xfun.fun/shelf-restock-api.md
供应商端 · 打包师傅页面
POST/package/shelf/page货架打包状态分页
状态:已上测试环境(supplier/test)。改动仅新增字段与筛选,原有字段与行为不变。
三种视觉状态一览
同一张货架卡片可叠加多种状态。下面是实际配色的样例,颜色/透明度已按需求锁定,前端直接取用。
| 状态 | 驱动字段 | 视觉 |
|---|---|---|
| 普通货架 | restockStatus 为 0 / 2 | 默认卡片 |
| 待补 | restockStatus === 1 | 卡片正上方居中「待补」橙色徽标 |
| 早班 | earlyShiftFlag === true(交货时间 ≥22:00 或 ≤01:00) | 整卡红底 |
| 设箱不符 | boxMismatchFlag === 1 | 右上角「不符」红徽标 |
| 叠加 | 以上任意组合 | 早班红底 + 待补徽标 + 不符徽标可同时出现 |
颜色值(需求锁定,请勿改)
待补徽标:底色 #FF6A00,字体 #FFFFFF,位于卡片正上方居中。
早班背景:整卡背景 #FF000F 透明度 70%(即 rgba(255,0,15,.7))。
设箱不符:沿用现有「不符」红徽标(右上角),由 boxMismatchFlag 驱动,本次未改。
响应新增字段(ShelfPackageStatusVo)
| 字段 | 类型 | 说明 |
|---|---|---|
restockStatus 新增 | int | 待补状态。0 无待补 · 1 存在待补货(→ 展示「待补」徽标)· 2 补货已完成。徽标只在 === 1 时显示。 |
earlyShiftFlag 新增 | boolean | 是否早班。后端已按口径算好(deliveryTime >= 22:00 或 <= 01:00),true 直接给整卡染红,前端无需自行判断时间,见「早班口径」。 |
deliveryTime | string HH:mm:ss | 交货时间(HH:mm:ss,已含提前 30 分钟)。仅展示用,早班判断请直接取 earlyShiftFlag。 |
boxMismatchFlag | int | 货位下是否存在设箱不符包裹。0 否 · 1 是(→「不符」徽标)。既有字段。 |
shelfSn / zoneShelf | int / string | 货架号 / 区-货架,卡片主标题。既有字段。 |
selfPickup | int | 是否自提 1/ 0。自提货架单独 tab。既有字段。 |
preparedInfo | object | 配货进度 { total, prepared, progress }。既有字段。 |
请求新增筛选参数(ShelfPackageStatusPageQo)
| 参数 | 类型 | 说明 |
|---|---|---|
restockFilter 新增 | int | 只看待补。null/ 0 不限 · 1 只看待补(后端等价 restockStatus = 1)。 |
onlyEarlyShift 新增 | boolean | 只看早班。true 只看早班(deliveryTime >= 22:00 或 <= 01:00);null/ false 不限。 |
boxMatchFilter | int | 设箱筛选。null/ 0 全部 · 1 设箱合规 · 2 设箱不符。既有参数。 |
date 必填 | string | 场次日期,如 2026-08-14。必填。 |
status 必填 | int | tab 状态:0 可打包/未打包 · 1 打包完成 · 2 出库完成 · 3 自提。必填。 |
userId / userName 必填 | long / string | 操作人。current / size 分页。必填。 |
早班口径 —— 后端已算好
前端直接用 earlyShiftFlag,不用自己算时间
后端口径:**deliveryTime >= 22:00 或 deliveryTime <= 01:00(跨零点,含边界)**即早班,已在服务端算入 earlyShiftFlag,前端 直接取布尔值染红即可。与配货页 /zone/info/new 的 earlyShiftFlag 是同一口径。
「只看早班」 onlyEarlyShift 用的也是同一口径,与卡片染红天然一致;前端不要再按 deliveryTime 自行判断,避免阈值分叉。
// 渲染时:
// 早班背景 -> row.earlyShiftFlag === true 背景 rgba(255,0,15,.7)
// 待补徽标 -> row.restockStatus === 1 底 #FF6A00 / 字 #FFFFFF
// 不符徽标 -> row.boxMismatchFlag === 1三个 Tab 的筛选项映射(需求第 4 点)
| Tab | status | 只看待补 | 只看早班 | 设箱合规/不符 |
|---|---|---|---|---|
| 可打包 | 0 | restockFilter=1 | onlyEarlyShift | 无 |
| 打包完成 | 1 | restockFilter=1 | onlyEarlyShift | boxMatchFilter=1/2 |
| 自提货架 | 3 | restockFilter=1 | 无 | boxMatchFilter=1/2 |
各筛选项可自由组合,后端按 AND 叠加。「只看待补」在所有 tab 都有;「只看早班」仅可打包 / 打包完成两个 tab;「设箱」仅打包完成 / 自提两个 tab(沿用既有 boxMatchFilter)。
关于「退货已补货显示绿色」(需求第 1 点)
需求第 1 点(标记退货的已补货花材显示为绿色)属于 质检配货页面的花材级展示,不在本打包货架接口范围内,其所需字段由该页面自身接口返回,本次 不涉及。本页只覆盖打包页面的第 2、3、4 点。
接口 POST /package/shelf/page · 供应商端 · 测试分支 supplier/test。字段口径以后端返回为准;earlyShiftFlag/ restockStatus 均已由服务端算好,前端直接取用。