# 条码组合 / 服务端成图 / 扫码解析 - 前端联调方案 ## 涉及页面 - 条码配置管理页(`contentFormat` 编辑) - 标签打印 / 条码展示页(服务端成图预览) - 扫码(PDA / 手机扫码枪)触发业务解析入口 ## 业务流程与数据带入 1. 条码配置 -> 内容生成:配置 `contentFormat` 支持组合占位符 `{BUSINESSCODE}`(业务编码)、`{BUSINESSNAME}`(业务名称)。前端传 `bizType`、`bizCode`、`bizName` 调生成接口,后端按配置模板替换占位符、清空未知占位符,返回最终条码内容。 2. 服务端成图:前端把条码内容 + 格式(1 QRCode / 2 EAN-13 / 3 Code39 / 4 UPC-A / 默认 Code128)+ 宽高传给 `POST /render`,后端用 zxing 生成图片,返回 Base64 data-URL 供 `` 直接预览(不持久化落库)。 3. 扫码解析:前端把扫到的内容传给 `POST /parse`,后端先精确匹配条码表,再按启用配置的 `contentFormat` 反向正则匹配,返回命中的 `bizType` / `bizCode` / `bizName`,前端据此跳转对应业务单据。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | /mes/wm/barcode/generate-content?bizType=&bizCode=&bizName= | 按配置生成条码内容 | | POST | /mes/wm/barcode/render | 服务端成图(返回 Base64 图片) | | POST | /mes/wm/barcode/parse | 扫码解析(返回业务字段) | **请求参数(render):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | content | String | 是 | 条码内容(可由 generate-content 返回) | | format | Integer | 否 | 条码格式:1 QRCode / 2 EAN-13 / 3 Code39 / 4 UPC-A / 默认 Code128 | | width | Integer | 否 | 图片宽度(默认 200) | | height | Integer | 否 | 图片高度(默认 200) | **响应(render):** `{ "code": 200, "data": "data:image/png;base64,..." }` **请求参数(parse):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | content | String | 是 | 扫描得到的条码内容 | **响应字段(parse):** | 字段 | 类型 | 说明 | |------|------|------| | bizType | Integer | 命中的业务类型 | | bizCode | String | 命中的业务编码 | | bizName | String | 命中的业务名称 | ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | contentFormat | 条码配置编辑页 | 支持 `{BUSINESSCODE}`、`{BUSINESSNAME}` 组合 | | 条码图片 | 标签 / 列表 | `render` 返回 Base64 直接 `` | | 解析结果 | 扫码结果页 | 命中后展示业务编码并跳转 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 生成内容 | 仅替换配置中存在的占位符;未配置的未知占位符会被清空 | | 服务端成图 | 只做即时预览,不落库;正式附件仍走 system 存储附件机制 | | 解析 | 优先精确匹配条码表;未命中再按启用配置 `contentFormat` 反向匹配;均未命中返回空 | | 格式支持 | 二维码与一维码(EAN-13 / Code39 / UPC-A / Code128) | ## 注意事项 - 条码图片为 Base64 data-URL,适合即时预览;如需持久存储按「文件上传规则」走 `/system/storage-*`。 - `generate-content` 需要存在对应的启用条码配置,否则返回原样或空。