供应商端 · 打包小程序 + 运营后台

推荐箱型与设箱校验 — 前端对接文档

包裹单生成时后端会写入系统推荐箱型。打包小程序需要新增三处交互:设箱不符时的确认弹窗、打包完成货架列表的合规筛选与角标、包裹详情的"设箱不符"标识;运营后台需要在打包配置页维护"预估可装花材重量"。本页覆盖全部接口变更与字段口径。

服务:supplier-api(小程序) / bulky-admin(运营后台) 全部 POST · JSON Body 更新:2026-08-07

核心概念:boxMatchStatus

所有包裹对象新增的匹配状态字段,前端展示只认它

每个包裹可能带有推荐箱型(suggestPackId / suggestPackInfo)。打包员设箱后,实际箱型与推荐箱型的比对结果由后端算好放在 boxMatchStatus,前端不要自行比对 id

0 无推荐
什么都不展示
历史包裹、中通普通包裹、未设箱的包裹都是 0。界面与现状完全一致。注意:特殊花材附加面单推荐(蝴蝶兰/红掌/大花蕙兰→蝴蝶兰箱,蓝色妖姬→蓝妖箱),仅当配置里没有对应箱型时才为 0。
1 设箱合规
正常态,无强调
实际箱型 = 推荐箱型。筛选 chips 里的"设箱合规"对应此态。
2 设箱不符
红色标识
实际箱型 ≠ 推荐箱型(小程序为确认强制使用;PDA 扫码不拦截直接落库)。详情打红标,货架卡片打"不符"角标。

设箱确认弹窗流程

打包完成 / 改箱时,箱型与推荐不符会被后端拦下,需要二次确认

正常调用打包完成接口

扫箱型码后按现有逻辑调 /package/pack/finish(或 scan / change),参数不变,forceFlag 不传或传 0。

后端返回 code = 6001 时弹确认框

新错误码 6001(箱型与推荐不符)。用 code 判断,不要匹配 msg 文案。msg 已带推荐箱型名,可直接作为弹窗正文。其余错误码照旧当普通失败 toast。

弹窗正文直接渲染后端 msg

按用户选择分支处理

点「否」关闭弹窗即可,不发任何请求,箱型不变更,包裹仍是待打包状态。
点「确认使用」完全相同的原参数重调同一接口,仅追加 forceFlag: 1。成功后按现有成功逻辑走,后端自动记录强制使用留痕。
注意:中通冷链禁用大箱的报错仍是普通错误码 1(msg「中通冷链不允许50*50以上的箱子」),不能通过 forceFlag 绕过,不要对它弹确认框。

接口变更:打包完成 ×3

三个接口入参与错误码变更完全一致

POST/package/pack/finish 打包师傅 · 拍照设箱

同规则适用:/package/pack/finish/change(打包完成后改箱)。扫码枪 /package/pack/finish/scan(PDA)除外:PDA 无弹窗交互,设箱不符不拦截、不返回 6001,直接完成并由后端留痕,PDA 前端无需任何改造。

入参新增 NEW

字段类型必填说明
forceFlagint默认 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 筛选与卡片角标

POST/package/shelf/page 打包师傅 · 货架分页

入参新增 NEW

字段类型必填说明
boxMatchFilterint不传 / 0 = 全部;1 = 仅设箱合规;2 = 仅设箱不符。chips 仅在 status=1(打包完成)tab 下展示,切 tab 或取消选中时不传

出参 records[] 新增 NEW

字段类型说明
boxMismatchFlagint0 / 1。为 1 时货架卡片右上角展示红色「不符」角标。该货架下任一包裹设箱不符即为 1
筛选「仅设箱不符」且当日没有任何不符货架时,接口正常返回空列表(total=0),按空态展示即可。

接口变更:详情与列表的包裹字段

包裹对象(WmsExpressPackageInfoVo)统一新增三个字段

POST/package/shelf/detail 货架打包详情

同字段出现于:/package/info(扫码包裹信息)、/package/page/package/list(已废弃)。凡返回包裹对象的地方都带。

包裹对象新增字段 NEW

字段类型说明
suggestPackIdint推荐箱型配置 id,0 = 无推荐
suggestPackInfostring推荐箱型名称,如 110*60*60箱;无推荐时为空串
boxMatchStatusint0 无推荐 / 1 设箱合规 / 2 设箱不符,见核心概念

响应片段示例

{
  "id": 88231,
  "packageId": 14,
  "packageInfo": "110*50*50箱",
  "suggestPackId": 17,
  "suggestPackInfo": "110*60*60箱",
  "boxMatchStatus": 2,  // 展示红色「设箱不符」标签
  "expressStatus": 10
}

接口变更:运营后台(bulky-admin)

打包配置维护预估花材容量 + 发货单列表展示推荐箱型

POST/system/add/packConfig 仓库管理 · 打包配置 · 新增/编辑

入参新增 NEW

字段类型必填说明
flowerWeightdecimal预估可装花材重量(kg),范围 0~1000,最多 2 位小数。0 表示不参与推荐箱型(专用箱如蝴蝶兰箱、蓝妖箱就配 0)。不传后端报「预估可装花材重量不能为空」
必须与后端同步上线:字段为必填,旧版配置页不传该字段时,新增/编辑都会保存失败。
POST/system/packConfigList 仓库管理 · 打包配置 · 列表

出参新增 NEW

字段类型说明
flowerWeightdecimal预估可装花材重量(kg)。上线时存量配置会统一清零,由运营逐个补录

配置页展示建议

  • 列表增加「预估可装花材重量」列;值为 0 的箱型标注「未配置,不参与推荐」,提示运营补全。
  • 多个箱型容量相同时推荐取排序更靠前的那个,建议保存时对重复容量给个提醒(不阻断)。
POST/order/wmsExpressPackage/list 打单页 · 物流面单列表

出参 records[] 新增 NEW

字段类型说明
suggestPackIdint推荐箱型配置 id,0 = 无推荐
suggestPackInfostring推荐箱型名称
suggestPackFlowerWeightdecimal推荐箱型的预估可装花材重量(kg);无推荐或该箱型未配置容量时为 null

/order/wmsExpressPackage/listByIds 同样返回这三个字段。实际箱型仍看 packageId / packageInfo(设箱后才有值)。

POST/order/sendOrder/list 发货单 · 分页列表/导出

出参 records[] 新增 NEW

字段类型说明
suggestPackListarray按序对应每个普通面单的推荐箱型,元素为 {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" }
  ]
}
expressPackageNum 口径变化:普通物流现在等于推荐箱型个数(不再固定按 60kg 拆);中通仍按 45kg 拆、航邦 50kg 特殊拆分已取消;所有箱型都未配置容量时回退 60kg 拆分。特殊花材的附加面单不在 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,为空串就不展示。