编辑 | blame | 历史 | 原始文档

生产线扫码入库:支持袋码/托盘码/批次码 + 去掉设备编码 - 前端联调方案

涉及页面

  • 生产线扫码入库(src/views/mes/pro/scan-in/index.vue

业务变更

  1. 去掉设备编码:扫码入库不再录入/展示设备编码,接口 deviceCode 改为非必填,前端不再传。
  2. 产线、库区、库位改为下拉选择:数据源为现有精简列表接口,不再手填编号。
  3. 等待扫码区增加"扫码类型"选择:袋码 / 托盘码 / 批次码三选一,扫码框随类型提交对应码值。

API

主接口:追溯码扫码入库

方法 路径 说明
POST /mes/pro/scan-in/inbound 追溯码扫码入库(袋码/托盘码/批次码)

请求参数(本次变更):

参数 类型 必填 变更 说明
scanType String 新增 扫码类型:BAG 袋码 / PALLET 托盘码 / BATCH 批次码,不传默认 BAG
deviceCode String 改为非必填 设备编码,前端不再传
bagCode String 语义扩展 扫码内容:袋码/托盘码/批次码的码值(含临时码)

| eventId | String | 是 | - | 事件号(建议用 {scanType}-{时间戳} 保证唯一) |
| quantity | Number | 是 | - | 袋码场景传 1;托盘/批次场景后端忽略该值,按已装袋数/批次袋数计算 |
| lineCode | String | 否 | - | 产线编码(前端下拉选择) |
| locationId | Long | 是 | - | WIP 暂存库区编号(前端下拉选择) |
| areaId | Long | 是 | - | WIP 暂存库位编号(前端下拉选择) |

响应新增字段:

字段 类型 说明
scanType String 本次扫码类型(BAG/PALLET/BATCH)

入库数量口径:

scanType 数量 说明
BAG 前端传 1 单袋入库
PALLET 托盘已装袋数 bag_count 整托一次性入暂存库
BATCH 批次袋数 bag_quantity 整批一次性入暂存库

入库去重: 袋码、托盘码、批次码均以各自 inbound_event_id 判断是否已入库,重复扫码返回对应"已入库"错误码,不会重复写入库存事务。

下拉数据源(复用现有接口,无新增)

用途 方法 路径 说明
产线 GET /mes/pro/line/simple-list 返回启用产线 {id, code, name}
库区 GET /mes/wm/warehouse-location/simple-list 返回库区 {id, code, name};选库区后联动加载其下库位
库位 GET /mes/wm/warehouse-area/simple-list?locationId= 返回库位 {id, code, name}

数据带入说明

  • 产线/库区/库位:下拉选择,页面 onMounted 一次性加载产线、库区;选择库区后按 locationId 联动加载库位。
  • 扫码提交:locationIdareaIdscanTypebagCode 一并带入入库接口;产线 lineCode 有值才传。
  • 事件列表/看板:以 scanType 区分追溯码类型展示(历史无类型的数据默认显示"袋码")。

字段展示规则

字段 展示位置 说明
扫码类型 等待扫码区下拉 三选一:袋码/托盘码/批次码
生产产线 扫码卡配置区 + 状态卡 下拉选择,可清空
WIP 暂存库区/库位 扫码卡配置区 + 状态卡 下拉选择,库位随库区联动禁用/启用
最近入库追溯码 统计卡 展示最新一条扫码内容
追溯码/类型/产线 最近扫码事件表 表格新增"类型"列,原"设备/产线"列改为"产线"
最近扫码类型 状态卡 展示最新事件扫码类型

注意事项

  1. 后端需**执行 SQL 脚本** sql/mysql/mes_pro_scan_event_scan_type.sqlmes_pro_scan_event 增加 scan_type 列,mes_pro_pallet 增加 inbound_event_id/inbound_time 列),再**重新编译并重启**。
  2. 重启前旧接口会忽略 scanType(按袋码处理),托盘/批次码扫码会返回"袋码不存在";前端类型下拉照常可选,功能降级为仅袋码。
  3. 产线/库区/库位下拉若接口 404(后端未重启),下拉为空,需先保障后端可用。
  4. 托盘、批次整托/整批入库会同步把其下未入库袋码标记为已入库,避免后续单袋扫码重复入库。