核心概念:boxMatchStatus
所有包裹对象新增的匹配状态字段,前端展示只认它
每个包裹可能带有推荐箱型(suggestPackId / suggestPackInfo)。打包员设箱后,实际箱型与推荐箱型的比对结果由后端算好放在 boxMatchStatus,前端不要自行比对 id:
设箱确认弹窗流程
打包完成 / 改箱时,箱型与推荐不符会被后端拦下,需要二次确认
正常调用打包完成接口
扫箱型码后按现有逻辑调 /package/pack/finish(或 scan / change),参数不变,forceFlag 不传或传 0。
后端返回 code = 6001 时弹确认框
新错误码 6001(箱型与推荐不符)。用 code 判断,不要匹配 msg 文案。msg 已带推荐箱型名,可直接作为弹窗正文。其余错误码照旧当普通失败 toast。
弹窗正文直接渲染后端 msg
按用户选择分支处理
forceFlag: 1。成功后按现有成功逻辑走,后端自动记录强制使用留痕。1(msg「中通冷链不允许50*50以上的箱子」),不能通过 forceFlag 绕过,不要对它弹确认框。接口变更:打包完成 ×3
三个接口入参与错误码变更完全一致
同规则适用:/package/pack/finish/change(打包完成后改箱)。扫码枪 /package/pack/finish/scan(PDA)除外:PDA 无弹窗交互,设箱不符不拦截、不返回 6001,直接完成并由后端留痕,PDA 前端无需任何改造。
入参新增 NEW
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| forceFlag | int | 否 | 默认 0。用户在确认弹窗点「确认使用」后重调时传 1,其余参数保持与首次调用一致 |
新增错误码 6001
失败响应示例(触发确认弹窗)
{
"code": 6001,
"msg": "该箱型与系统推荐箱型(110*60*60)不符,请确认合理性并强制使用",
"data": null
}
确认后重调请求示例(仅多一个 forceFlag)
{
"codeContent": "88231",
"packId": 14,
"packName": "110*50*50箱",
"url": "https://…/finish.jpg",
"shelfPackage": 1,
"forceFlag": 1
}
接口变更:货架列表筛选
打包师傅首页「打包完成」tab 的 chips 筛选与卡片角标
入参新增 NEW
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| boxMatchFilter | int | 否 | 不传 / 0 = 全部;1 = 仅设箱合规;2 = 仅设箱不符。chips 仅在 status=1(打包完成)tab 下展示,切 tab 或取消选中时不传 |
出参 records[] 新增 NEW
| 字段 | 类型 | 说明 |
|---|---|---|
| boxMismatchFlag | int | 0 / 1。为 1 时货架卡片右上角展示红色「不符」角标。该货架下任一包裹设箱不符即为 1 |
接口变更:详情与列表的包裹字段
包裹对象(WmsExpressPackageInfoVo)统一新增三个字段
同字段出现于:/package/info(扫码包裹信息)、/package/page、/package/list(已废弃)。凡返回包裹对象的地方都带。
包裹对象新增字段 NEW
| 字段 | 类型 | 说明 |
|---|---|---|
| suggestPackId | int | 推荐箱型配置 id,0 = 无推荐 |
| suggestPackInfo | string | 推荐箱型名称,如 110*60*60箱;无推荐时为空串 |
| boxMatchStatus | int | 0 无推荐 / 1 设箱合规 / 2 设箱不符,见核心概念 |
响应片段示例
{
"id": 88231,
"packageId": 14,
"packageInfo": "110*50*50箱",
"suggestPackId": 17,
"suggestPackInfo": "110*60*60箱",
"boxMatchStatus": 2, // 展示红色「设箱不符」标签
"expressStatus": 10
}
接口变更:运营后台(bulky-admin)
打包配置维护预估花材容量 + 发货单列表展示推荐箱型
入参新增 NEW
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| flowerWeight | decimal | 是 | 预估可装花材重量(kg),范围 0~1000,最多 2 位小数。0 表示不参与推荐箱型(专用箱如蝴蝶兰箱、蓝妖箱就配 0)。不传后端报「预估可装花材重量不能为空」 |
出参新增 NEW
| 字段 | 类型 | 说明 |
|---|---|---|
| flowerWeight | decimal | 预估可装花材重量(kg)。上线时存量配置会统一清零,由运营逐个补录 |
配置页展示建议
- 列表增加「预估可装花材重量」列;值为 0 的箱型标注「未配置,不参与推荐」,提示运营补全。
- 多个箱型容量相同时推荐取排序更靠前的那个,建议保存时对重复容量给个提醒(不阻断)。
出参 records[] 新增 NEW
| 字段 | 类型 | 说明 |
|---|---|---|
| suggestPackId | int | 推荐箱型配置 id,0 = 无推荐 |
| suggestPackInfo | string | 推荐箱型名称 |
| suggestPackFlowerWeight | decimal | 推荐箱型的预估可装花材重量(kg);无推荐或该箱型未配置容量时为 null |
/order/wmsExpressPackage/listByIds 同样返回这三个字段。实际箱型仍看 packageId / packageInfo(设箱后才有值)。
出参 records[] 新增 NEW
| 字段 | 类型 | 说明 |
|---|---|---|
| suggestPackList | array | 按序对应每个普通面单的推荐箱型,元素为 {packId, packName}。中通或未配置箱型容量时为空数组 |
响应片段示例
{
"sendNo": "SD20260807001",
"allTotalWeight": 180.00,
"expressPackageNum": 3,
"suggestPackList": [
{ "packId": 17, "packName": "110*60*60箱" },
{ "packId": 17, "packName": "110*60*60箱" },
{ "packId": 3, "packName": "小件90*20" }
]
}
suggestPackList 里,件数口径不变。UI 落点
对照产品图的三个展示位
① 货架列表 · 筛选 chips
设箱合规设箱不符
仅「打包完成」tab 下展示,单选可取消。选中「设箱不符」传 boxMatchFilter=2,合规传 1,取消不传。
② 货架卡片 · 角标
12-197 卡片右上角 不符
boxMismatchFlag=1 时展示红色角标,任意 tab 下有数据就展示,不依赖筛选是否开启。
③ 打包详情 · 包裹标签
包裹类型:110*50*50箱 设箱不符
boxMatchStatus=2 时在「包裹类型」旁展示红标;为 1 时不额外展示;为 0 时保持现状。
联调注意
容易踩的坑集中在这里
- 错误码判断只认 code=6001,msg 文案(含推荐箱型名)可能调整,别做字符串匹配。
- forceFlag=1 重调必须复用首次请求的全部原参数(codeContent、packId、packName、url 等),只追加 forceFlag,否则会以错误的箱型落库。
suggestPackId=0的包裹(历史数据、中通普通面单)永远不会返回 6001,也不展示任何标识——测试时别拿存量包裹验证弹窗,需用新生成的包裹。- 特殊花材附加面单同样有推荐箱型(蝴蝶兰箱 / 蓝妖箱),设箱不符也会返回 6001、展示不符标识;前提是打包配置里存在同名箱型,测试前先确认配置。
- 弹窗「否」纯前端行为,不发请求;不要把「否」实现成带 forceFlag=0 的重调。
- 扫码枪接口
/pack/finish/scan(PDA)不返回 6001:设箱不符直接打包成功,后端自动留痕,包裹仍会显示"设箱不符"标识;确认弹窗只需小程序端实现。 - 防重锁与校验顺序已调整:6001 被拦时不占用10 秒扫码频控,确认后立即重调不会报「扫码频繁」。
- 推荐箱型展示(如设箱前提示「推荐:110*60*60箱」)可直接用
/package/info返回的suggestPackInfo,为空串就不展示。