# 条码组合 / 服务端成图 / 扫码解析 - 前端联调方案
## 涉及页面
- 条码配置管理页(`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` 需要存在对应的启用条码配置,否则返回原样或空。