Files
my-mom-system/prd/mom系统生产领料单-页面开发说明文档.md
panchengyong c28ada5050 commit content
2026-03-06 02:02:59 +08:00

53 KiB
Raw Blame History

生产领料单 - 页面设计开发说明文档

版本: 1.0.0
创建日期: 2026-02-13
更新日期: 2026-02-13
所属模块: 仓储管理 > 生产领料
前端路由: /mes/wm/issueMOM 端);/warehouse/issueERP 前端)
关联文档: erp与mom数据库表映射对照表MOM系统数据升级方案-销售采购生产计划生产计划.mdmom系统生产订单-页面开发说明文档


目录

  1. 业务流程总览
  2. 页面概述
  3. 页面结构
  4. 列表页设计
  5. 新增/编辑页设计
  6. 数据字段定义
  7. 按钮操作说明
  8. 页面交互规则
  9. 接口调用说明
  10. 状态流转
  11. 业务规则
  12. 前端组件设计
  13. 数据模型

0. 业务流程总览

0.1 生产领料单在 MOM/ERP 中的定位

生产领料单是 生产工单 → 生产执行(物料出库) 链条中的关键节点。当生产工单确认后,车间需要根据工单 BOM 物料组成从仓库领取原材料、零部件等生产所需物料。领料单管理从仓库到产线的物料流转,是库存管理与生产执行的衔接点。

┌──────────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  生产计划单   │────►│ BOM运算/下发  │────►│ 生产工单     │────►│ BOM物料组成  │
│  (计划审核)   │     │ (物料清单)   │     │ (工单确认)   │     │ (需求物料)   │
└──────────────┘     └──────────────┘     └──────────────┘     └──────┬───────┘
                                                                      │
                                                                      │ 领料
                                                                      ▼
┌──────────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ 库存扣减     │◄────│ 执行出库     │◄────│ 领料明细     │◄────│ ★ 领料单    │
│ (库存事务)   │     │ (库存核心)   │     │ (拣货确认)   │     │ (当前页面)   │
└──────────────┘     └──────────────┘     └──────────────┘     └──────────────┘

0.2 端到端业务流程图

 生产工单确认
       │
       ▼
 ┌─────────────────┐     BOM物料需求      ┌─────────────────┐
 │   生产工单       │ ──────────────────── │ pro_workorder_bom│
 │  - 产品信息      │                     │ (BOM物料组成)     │
 │  - 生产数量      │                     │ - 物料编码/名称   │
 └────────┬────────┘                     │ - 预计使用量      │
          │                              └─────────────────┘
          │ 创建领料单
          ▼
 ┌─────────────────┐     添加领料行      ┌─────────────────┐
 │ ★ 生产领料单     │ ──────────────── ► │ 领料单行         │
 │  - 领料单头信息   │                    │ (wm_issue_line) │
 │  - 工单/任务关联  │                    │ - 物料信息       │
 │  - 工作站信息     │                    │ - 领料数量       │
 └────────┬────────┘                    │ - 批次号         │
          │                              └────────┬────────┘
          │ 拣货(添加明细)                          │
          ▼                                        ▼
 ┌─────────────────┐     执行出库        ┌─────────────────┐
 │   领料明细       │ ──────────────── ► │ 库存事务         │
 │ (wm_issue_detail)│                   │ - 仓库/库区/库位  │
 │ - 仓库/库区/库位  │                   │ - 出库数量       │
 │ - 实际出库数量    │                   │ - 库存扣减       │
 └─────────────────┘                    └─────────────────┘

0.3 生产领料单内部业务流程

阶段 操作 触发条件 结果
1. 新建 点击「新增」 始终可用 打开新增页,领料单编号手动输入或自动生成,状态=草稿(PREPARE)
2. 填写表头 填写领料单名称、选择工单/任务/工作站 新增/编辑状态 关联生产工单和生产任务
3. 添加领料行 添加物料行,指定物料和领料数量 新增/编辑状态 领料单行数据填充
4. 保存 点击「保存」 表单校验通过 数据持久化
5. 拣货(添加明细) 为每个领料行添加出库明细 已保存 指定仓库、库区、库位、实际出库数量
6. 校验数量 系统校验领料行数量与明细数量匹配 执行出库前 确认数量无误
7. 执行出库 点击「执行出库」 已保存,有有效明细数据 调用库存核心扣减库存,状态→已完成(FINISHED)
8. 删除 点击「删除」 仅草稿(PREPARE)状态 级联删除领料行,逻辑删除

0.4 上下游单据关系

上游单据 关联字段 说明
生产工单(pro_workorder) workorder_id, workorder_code 领料单关联的生产工单
生产任务(pro_task) task_id, task_code 领料单关联的生产任务(可选)
工作站 workstation_id, workstation_code 领料对应的工作站
下游单据 关联字段 说明
库存事务 issue_id 执行出库后生成的库存事务记录
库存明细 - 库存扣减(仓库/库区/库位维度)

0.5 三层数据结构

生产领料单采用 头 → 行 → 明细 三层结构:

层级 表名 说明 关系
头(Header) wm_issue_header 领料单头信息:单号、关联工单/任务、客户、状态 1
行(Line) wm_issue_line 领料物料行:物料编码、领料数量、批次号 1:N
明细(Detail) wm_issue_detail 出库明细:仓库/库区/库位、实际出库数量 行 1:N
wm_issue_header (领料单头)
    │
    ├── wm_issue_line (领料行1: 物料A, 领料数量=100)
    │       ├── wm_issue_detail (明细1: 仓库A-库区1-库位01, 数量=60)
    │       └── wm_issue_detail (明细2: 仓库A-库区1-库位02, 数量=40)
    │
    └── wm_issue_line (领料行2: 物料B, 领料数量=50)
            └── wm_issue_detail (明细1: 仓库B-库区2-库位03, 数量=50)

0.6 典型操作路径(用户故事)

场景 路径
按工单领料 列表 → 新增 → 选择生产工单 → 添加BOM物料行 → 保存 → 添加出库明细(拣货) → 执行出库
按任务领料 列表 → 新增 → 选择生产任务 → 自动关联工单 → 添加物料行 → 保存 → 拣货 → 出库
查看领料记录 列表 → 按工单编码/领料单号搜索 → 查看详情
删除草稿领料单 列表 → 勾选草稿状态记录 → 删除

1. 页面概述

1.1 功能说明

生产领料单页面用于管理生产过程中的物料领用。当生产工单确认后车间或仓库人员创建领料单从仓库中领取生产所需的原材料、零部件等物料。领料单支持按工单领料关联工单BOM物料或自主添加物料行领料完成后执行出库操作自动扣减库存。

1.2 业务场景

  • 按工单领料: 选择已确认的生产工单,根据工单 BOM 物料组成添加领料行
  • 按任务领料: 选择具体的生产任务,按任务需求物料进行领料
  • 工作站领料: 指定工作站,物料领出到具体工作站
  • 分批领料: 同一工单可创建多张领料单,分批次领取物料
  • 拣货确认: 每个领料行需添加出库明细(仓库/库区/库位/数量),支持分库位拣货
  • 执行出库: 领料明细确认后执行出库,系统自动扣减库存

1.3 页面截图参考

截图文件 说明
screenshot/生产领料单-列表页.png 列表页 - 领料单列表,含搜索区、工具栏、数据表格
screenshot/生产领料单-新增页.png 新增页 - 表头表单 + 领料行子表
screenshot/生产领料单-查看页.png 查看页 - 只读模式,含领料明细

2. 页面结构

2.1 整体布局

┌─────────────────────────────────────────────────────────────────┐
│                     顶部导航栏 (64px)                            │
├────────┬────────────────────────────────────────────────────────┤
│ 左侧   │  面包屑: 首页 / 仓储管理 / 生产领料                      │
│ 菜单   │  ┌────────────────────────────────────────────────┐    │
│ (200px │  │ Tab标签: ● 生产领料                            │    │
│  /64px)│  ├────────────────────────────────────────────────┤    │
│        │  │ 查询区域 (搜索条件)                              │    │
│ 仓储管 │  ├────────────────────────────────────────────────┤    │
│ 理     │  │ 工具栏 (操作按钮)                                │    │
│ ├生产  │  ├────────────────────────────────────────────────┤    │
│  领料★ │  │ 数据表格                                        │    │
│ ├采购  │  │                                                │    │
│  入库  │  ├────────────────────────────────────────────────┤    │
│ ├产品  │  │ 分页组件                                        │    │
│  出库  │  └────────────────────────────────────────────────┘    │
├────────┴────────────────────────────────────────────────────────┤

2.2 页面模式

模式 说明 入口
列表页 默认视图,展示领料单列表 菜单点击「生产领料」
新增页 新建生产领料单,填写表头+添加领料物料行 列表页点击「新增」按钮
编辑页 修改已有领料单(仅草稿状态) 列表页操作列点击「编辑」
查看页 只读查看领料单详情,含领料行和出库明细 列表页操作列点击「查看」

3. 列表页设计

3.1 搜索条件区域

序号 字段名 标签 组件类型 宽度 说明
1 issueCode 领料单编号 el-input 160px 模糊搜索
2 issueName 领料单名称 el-input 160px 模糊搜索
3 workorderCode 工单编码 el-input 140px 模糊搜索关联工单
4 workstationName 工作站 el-input 140px 模糊搜索
5 status 单据状态 el-select 120px 下拉选择
6 beginDate 开始日期 el-date-picker 140px 领料日期范围起
7 endDate 结束日期 el-date-picker 140px 领料日期范围止
8 - 搜索 el-button (primary) - 执行搜索
9 - 重置 el-button (default) - 清空搜索条件

单据状态选项:

标签 标签颜色
PREPARE 草稿 info (灰色)
CONFIRMED 已确认 primary (蓝色)
APPROVED 已审核 success (绿色)
FINISHED 已完成 success (绿色)

3.2 工具栏按钮

序号 按钮名称 图标 类型 权限标识 说明
1 新增 el-icon-plus success mes:wm:issueheader:add 打开新增生产领料单页面
2 修改 el-icon-edit primary mes:wm:issueheader:edit 修改选中领料单(需勾选)
3 删除 el-icon-delete danger mes:wm:issueheader:remove 批量删除选中领料单(需勾选)
4 导出 el-icon-download warning mes:wm:issueheader:export 导出领料单列表到Excel

3.3 数据表格列定义

序号 列标题 字段名 宽度 对齐 说明
0 (复选框) - 55px center 多选列,用于批量操作
1 领料单编号 issueCode 150px left 蓝色链接可点击打开详情
2 领料单名称 issueName 200px left 领料单描述
3 工单编码 workorderCode 140px left 关联生产工单编码
4 任务编码 taskCode 140px left 关联生产任务编码(可为空)
5 工作站 workstationName 120px left 工作站名称
6 客户名称 clientName 150px left 客户名称(可为空)
7 领料日期 issueDate 120px center 领料日期
8 需求时间 requiredTime 150px center 需求时间
9 状态 status 80px center 状态标签(颜色区分)
10 操作 - 200px center 操作按钮组

3.4 操作列按钮

操作列按钮根据领料单状态动态显隐:

status = PREPARE草稿:

按钮 颜色 权限 说明
查看 success (绿色文字) mes:wm:issueheader:query 打开查看页(只读)
编辑 primary (蓝色文字) mes:wm:issueheader:edit 打开编辑页
删除 danger (红色文字) mes:wm:issueheader:remove 确认后删除
执行出库 warning (橙色文字) mes:wm:issueheader:edit 校验数量后执行出库

status = FINISHED已完成:

按钮 颜色 权限 说明
查看 success (绿色文字) mes:wm:issueheader:query 打开查看页(只读)

3.5 分页组件

属性 说明
默认每页条数 10 可选: 10, 20, 50, 100
布局 total, sizes, prev, pager, next, jumper 完整分页
总条数显示 共 {total} 条 右侧显示

4. 新增/编辑页设计

4.1 页面布局

新增/编辑页面为独立的全屏页面,包含表头表单区、领料行表格区和出库明细区三个部分。

┌──────────────────────────────────────────────────────────────┐
│ 生产领料单                           [保存][取消][执行出库][收起] │
├──────────────────────────────────────────────────────────────┤
│ 表头表单区 (4列布局可折叠)                                    │
│ ┌──────────┬──────────┬──────────┬──────────┐                │
│ │ 领料单编号│ 领料单名称│ 工单编码  │ 任务编码  │                │
│ │ 工作站编号│ 工作站名称│ 客户名称  │ 领料日期  │                │
│ │ 需求时间  │ 状态      │ 备注      │          │                │
│ └──────────┴──────────┴──────────┴──────────┘                │
├──────────────────────────────────────────────────────────────┤
│ 领料物料行                                    [添加行]         │
│ ┌──┬──────┬────┬────┬──┬──────┬──────┬──┐                    │
│ │序│物料编│物料│规格│单│领料数│批次号│操│                    │
│ │号│码    │名称│型号│位│量    │      │作│                    │
│ └──┴──────┴────┴────┴──┴──────┴──────┴──┘                    │
├──────────────────────────────────────────────────────────────┤
│ 出库明细(选中某行后展示)                      [添加明细]       │
│ ┌──┬──────┬────┬────┬────┬────┬──────┬──┐                    │
│ │序│物料编│仓库│库区│库位│批次│出库数│操│                    │
│ │号│码    │    │    │    │号  │量    │作│                    │
│ └──┴──────┴────┴────┴────┴────┴──────┴──┘                    │
└──────────────────────────────────────────────────────────────┘

4.2 表头表单字段

表头采用 4 列栅格布局el-col :span="6"),每行 4 个字段。

序号 字段名 标签 组件类型 必填 默认值 可编辑 说明
1 issueCode 领料单编号 el-input - 唯一编码,不可重复
2 issueName 领料单名称 el-input - 领料单描述
3 workorderId 生产工单 el-select / 选择 - 选择关联的生产工单
4 workorderCode 工单编码 el-input - - 否(只读) 选择工单后自动带入
5 taskId 生产任务 el-select / 选择 - 选择关联的生产任务
6 taskCode 任务编码 el-input - - 否(只读) 选择任务后自动带入
7 workstationId 工作站 el-select / 选择 - 选择领料工作站
8 workstationCode 工作站编号 el-input - - 否(只读) 选择工作站后自动带入
9 workstationName 工作站名称 el-input - - 否(只读) 选择工作站后自动带入
10 clientId 客户 el-select / 选择 - 选择客户
11 clientCode 客户编码 el-input - - 否(只读) 选择客户后带入
12 clientName 客户名称 el-input - - 否(只读) 选择客户后带入
13 issueDate 领料日期 el-date-picker 当天 领料日期
14 requiredTime 需求时间 el-date-picker - 需求交付时间
15 status 单据状态 el-tag - PREPARE 否(只读) 标签显示
16 remark 备注 el-input(textarea) - 多行文本

4.3 领料行子表wm_issue_line

领料行子表位于表头下方,标题为「领料物料行」。通过「添加行」按钮手动添加物料行或从工单 BOM 物料引入。

序号 列标题 字段名 宽度 组件类型 必填 说明
1 序号 - 60px 自动编号 - 行序号,自动递增
2 物料编码 itemCode 150px el-input + 选择按钮 可点击「选择」弹窗选择物料
3 物料名称 itemName 200px el-input - 只读,选择物料后自动带入
4 规格型号 specification 150px el-input 只读,选择物料后自动带入
5 单位 unitOfMeasure 80px el-input - 只读
6 领料数量 quantityIssued 120px el-input-number 计划领料数量,必须>0
7 批次号 batchCode 120px el-input 物料批次号
8 备注 remark 150px el-input 行级备注
9 操作 - 120px el-button - 编辑明细、删除按钮

注意: 每个领料行可以包含多条出库明细wm_issue_detail即从不同仓库/库位拣货。

4.4 出库明细子表wm_issue_detail

选中领料行后显示该行的出库明细,用于拣货确认。

序号 列标题 字段名 宽度 组件类型 必填 说明
1 序号 - 60px 自动编号 - 行序号
2 物料编码 itemCode 140px el-input - 只读,从领料行带入
3 物料名称 itemName 180px el-input - 只读
4 规格型号 specification 120px el-input - 只读
5 单位 unitOfMeasure 60px el-input - 只读
6 仓库 warehouseName 120px el-select 选择出库仓库
7 库区 locationName 120px el-select 选择出库库区
8 库位 areaName 120px el-select 选择出库库位
9 批次号 batchCode 100px el-input 出库批次
10 出库数量 quantity 100px el-input-number 实际出库数量
11 备注 remark 120px el-input 备注
12 操作 - 80px el-button - 删除按钮

校验规则: 每个领料行的所有出库明细数量之和应等于领料数量quantityIssued

4.5 选择生产工单弹窗

点击工单旁的「选择」按钮,打开生产工单选择弹窗。

属性
弹窗标题 选择生产工单
弹窗宽度 900px
选择模式 单选

弹窗搜索区:

组件 说明
工单编码 模糊搜索
工单名称 模糊搜索
产品名称 模糊搜索
搜索按钮 执行搜索
重置按钮 清空条件

弹窗列表结构:

字段 说明
(单选) - 单选列
工单编码 workorderCode 工单编码
工单名称 workorderName 工单名称
产品编号 productCode 产品编号
产品名称 productName 产品名称
生产数量 quantity 生产数量
状态 status 工单状态

选择交互:

  • 单选一条工单记录,点击「确定」按钮
  • 选择后自动填充表头工单ID、工单编码
  • 可选:自动根据工单 BOM 物料添加领料行

4.6 选择物料弹窗

点击物料编码旁的「选择」按钮,打开物料选择弹窗。

属性
弹窗标题 选择物料
弹窗宽度 800px
选择模式 单选或多选

弹窗列表结构:

字段 说明
物料编码 itemCode 物料编码
物料名称 itemName 物料名称
规格型号 specification 规格型号
单位 unitOfMeasure 计量单位
物料分类 itemTypeName 分类名称
当前库存 stockQuantity 当前可用库存数量

4.7 表头折叠

点击「收起」按钮,表头表单区域收起,仅显示领料行子表和出库明细区;点击「展开」恢复。


5. 数据字段定义

5.1 领料单头表字段wm_issue_header

字段名 数据库字段 类型 长度 必填 默认值 说明
领料单ID issue_id bigint - AUTO 主键,自增
领料单编号 issue_code varchar 64 - 唯一编码
领料单名称 issue_name varchar 255 - 领料单描述
工作站ID workstation_id bigint - - 外键
工作站编号 workstation_code varchar 64 - 冗余
工作站名称 workstation_name varchar 255 - 冗余
生产工单ID workorder_id bigint - - 外键 → pro_workorder
工单编码 workorder_code varchar 64 - 冗余
生产任务ID task_id bigint - - 外键 → pro_task
任务编码 task_code varchar 64 - 冗余
客户ID client_id bigint - -
客户编码 client_code varchar 64 -
客户名称 client_name varchar 255 -
客户简称 client_nick varchar 128 -
需求时间 required_time datetime - - 需求交付时间
领料日期 issue_date datetime - 当天 领料日期
单据状态 status varchar 64 PREPARE 草稿/已确认/已完成
备注 remark varchar 500 -
创建者 create_by varchar 64 -
创建时间 create_time datetime - -
更新者 update_by varchar 64 -
更新时间 update_time datetime - -

5.2 领料行表字段wm_issue_line

字段名 数据库字段 类型 长度 必填 说明
行ID line_id bigint - 主键,自增
领料单ID issue_id bigint - 外键 → wm_issue_header
库存ID material_stock_id bigint - 库存记录关联
物料ID item_id bigint - 外键 → md_item
物料编码 item_code varchar 64 冗余
物料名称 item_name varchar 255 冗余
规格型号 specification varchar 500
单位 unit_of_measure varchar 64
单位名称 unit_name varchar 128
领料数量 quantity_issued double(12,2) - 计划领料数量
已拣货数量 quantity double(12,2) - 实际拣货数量(明细汇总)
批次ID batch_id bigint -
批次号 batch_code varchar 255
备注 remark varchar 500
创建者 create_by varchar 64
创建时间 create_time datetime -
更新者 update_by varchar 64
更新时间 update_time datetime -

5.3 领料明细表字段wm_issue_detail

字段名 数据库字段 类型 长度 必填 说明
明细行ID detail_id bigint - 主键,自增
领料单ID issue_id bigint - 外键 → wm_issue_header
行ID line_id bigint - 外键 → wm_issue_line
库存ID material_stock_id varchar 64 库存记录关联
物料ID item_id bigint - 外键 → md_item
物料编码 item_code varchar 64 冗余
物料名称 item_name varchar 255 冗余
规格型号 specification varchar 500
单位 unit_of_measure varchar 64
单位名称 unit_name varchar 128
出库数量 quantity decimal(12,2) - 实际出库数量
批次ID batch_id bigint -
批次号 batch_code varchar 255
仓库ID warehouse_id bigint -
仓库编码 warehouse_code varchar 64
仓库名称 warehouse_name varchar 255
库区ID location_id bigint -
库区编码 location_code varchar 64
库区名称 location_name varchar 255
库位ID area_id bigint -
库位编码 area_code varchar 64
库位名称 area_name varchar 255
备注 remark varchar 500
创建者 create_by varchar 64
创建时间 create_time datetime -
更新者 update_by varchar 64
更新时间 update_time datetime -

6. 按钮操作说明

6.1 列表页工具栏按钮

6.1.1 新增按钮

项目 说明
触发条件 始终可用
操作 路由跳转到新增生产领料单页面
权限 mes:wm:issueheader:add
路由 /warehouse/issue/new

6.1.2 修改按钮

项目 说明
触发条件 勾选一条记录
前置校验 仅草稿(PREPARE)状态允许修改
操作 路由跳转到编辑页面
权限 mes:wm:issueheader:edit

6.1.3 删除按钮(批量)

项目 说明
触发条件 勾选一条或多条记录
前置校验 仅草稿(PREPARE)状态允许删除;非草稿状态回滚并提示
操作 弹出确认框,确认后调用删除接口
权限 mes:wm:issueheader:remove
级联 同时删除关联的领料行(wm_issue_line)

6.1.4 导出按钮

项目 说明
触发条件 始终可用
操作 按当前搜索条件导出领料单列表到Excel
权限 mes:wm:issueheader:export

6.2 操作列按钮

6.2.1 查看按钮

项目 说明
显示条件 所有状态均显示
操作 路由跳转到查看页面(只读模式)
权限 mes:wm:issueheader:query

6.2.2 编辑按钮

项目 说明
显示条件 仅 status = PREPARE草稿
操作 路由跳转到编辑页面
权限 mes:wm:issueheader:edit

6.2.3 删除按钮(行操作)

项目 说明
显示条件 仅 status = PREPARE草稿
操作 弹出确认框,确认后删除,级联删除关联领料行
权限 mes:wm:issueheader:remove

6.2.4 执行出库按钮

项目 说明
显示条件 status = PREPARE草稿且已有领料行和出库明细
前置校验 至少有一条领料行;每行明细数量不能为空;校验明细数量与领料数量匹配
操作 调用执行出库接口,库存核心扣减库存
权限 mes:wm:issueheader:edit
结果 status → FINISHED

6.3 新增/编辑页按钮

6.3.1 保存按钮

项目 说明
位置 页面右上角
颜色 primary (蓝色)
触发条件 表单校验通过
操作 保存领料单头数据
成功提示 "保存成功"

6.3.2 取消按钮

项目 说明
位置 保存按钮右侧
颜色 default (灰色)
操作 返回列表页

6.3.3 执行出库按钮

项目 说明
位置 取消按钮右侧
颜色 warning (橙色)
显示条件 编辑模式,已保存
前置条件 有有效的领料明细数据
操作 调用执行出库接口

6.3.4 收起/展开按钮

项目 说明
位置 页面右上角最右侧
操作 折叠/展开表头表单区域

6.3.5 添加行按钮(领料行区)

项目 说明
位置 领料物料行区域右上角
颜色 primary (蓝色)
操作 在领料行子表末尾添加一空行,可手动选择物料并填写领料数量
显示条件 仅编辑/新增状态显示

6.3.6 删除行按钮(领料行操作列)

项目 说明
位置 每行操作列
颜色 danger (红色文字)
操作 删除当前领料行及其关联的所有出库明细
显示条件 仅编辑状态显示

6.3.7 添加明细按钮(出库明细区)

项目 说明
位置 出库明细区域右上角
颜色 primary (蓝色)
操作 为当前选中的领料行添加一条出库明细,需选择仓库/库区/库位和出库数量
显示条件 仅编辑/新增状态显示,需先选中领料行

7. 页面交互规则

7.1 列表页交互

序号 交互场景 交互规则
1 页面首次加载 默认加载第1页数据按创建时间降序排列
2 搜索操作 点击搜索按钮,重置 pageNum=1
3 领料单编号点击 点击编号列蓝色链接,路由跳转到查看页面
4 状态标签 el-tag 组件:草稿=info(灰), 已确认=primary(蓝), 已完成=success(绿)
5 批量操作 勾选多条记录后,批量操作按钮启用
6 删除校验 仅草稿状态允许删除,非草稿状态提示"只能删除草稿状态的单据!"
7 执行出库校验 需有有效领料明细,明细数量不能为空

7.2 新增/编辑页交互

序号 交互场景 交互规则
1 页面加载(新增) 空白表单,领料日期默认当天,状态=草稿
2 页面加载(编辑) 调用详情接口加载领料单头、领料行和出库明细
3 选择工单 点击「选择」→ 打开工单选择弹窗 → 选中工单 → 确定 → 自动填充工单信息
4 选择任务 点击「选择」→ 打开任务选择弹窗 → 选中任务 → 确定 → 自动填充任务信息和关联工单
5 选择工作站 点击「选择」→ 打开工作站选择弹窗 → 选中工作站 → 确定
6 添加物料行 点击「添加行」→ 新增空行 → 选择物料 → 填写领料数量
7 选择物料 物料编码旁「选择」→ 打开物料弹窗 → 选中后自动填充物料信息
8 添加出库明细 选中领料行 → 点击「添加明细」→ 选择仓库/库区/库位/填写数量
9 仓库联动 选择仓库后,库区下拉框刷新为该仓库下的库区;选择库区后,库位刷新为该库区下的库位
10 保存操作 前端表单校验 → 调用保存接口 → 成功提示
11 执行出库 校验领料行和明细数量 → 调用执行出库接口 → 库存扣减 → 状态变为已完成
12 领料单编号唯一 保存时后端校验编号唯一性,重复则提示"领料单编号已存在"
13 表头折叠 点击「收起」→ 表头折叠;点击「展开」→ 恢复

7.3 表单校验规则

表头校验

字段 规则 提示信息
issueCode 必填,唯一 领料单编号不能为空 / 编号已存在
issueName 必填 领料单名称不能为空

领料行校验

字段 规则 提示信息
itemId 必填 请选择物料
quantityIssued 必填min=0.01 领料数量必须大于0

出库明细校验

字段 规则 提示信息
warehouseId 必填 请选择仓库
quantity 必填min=0.01 出库数量必须大于0

业务校验

规则 说明
至少一行领料行 执行出库时至少要有一条领料行
明细数量校验 每个领料行的出库明细数量之和应等于领料数量
明细数量不为空 出库明细中数量(transactionQuantity)不能为空
有效明细数据 执行出库前需有有效的明细数据

8. 接口调用说明

8.1 接口总览

序号 功能 方法 路径 说明
1 查询领料单列表 GET /mes/wm/issueheader/list 分页查询领料单列表
2 获取领料单详情 GET /mes/wm/issueheader/{issueId} 获取单条领料单详情
3 新增领料单 POST /mes/wm/issueheader 创建新领料单头
4 修改领料单 PUT /mes/wm/issueheader 更新领料单头
5 删除领料单 DELETE /mes/wm/issueheader/{issueIds} 批量删除领料单,级联删除领料行
6 执行出库 PUT /mes/wm/issueheader/{issueId} 执行出库,扣减库存
7 导出领料单 POST /mes/wm/issueheader/export 导出领料单列表到Excel
8 校验数量 GET /mes/wm/issueheader/checkQuantity/{issueId} 校验领料行数量与明细数量匹配
9 查询领料行 GET /mes/wm/issueline/list 分页查询领料行
10 新增领料行 POST /mes/wm/issueline 添加领料行
11 修改领料行 PUT /mes/wm/issueline 更新领料行
12 删除领料行 DELETE /mes/wm/issueline/{lineIds} 删除领料行
13 查询出库明细 GET /mes/wm/issuedetail/list 查询出库明细
14 新增出库明细 POST /mes/wm/issuedetail 添加出库明细
15 修改出库明细 PUT /mes/wm/issuedetail 更新出库明细
16 删除出库明细 DELETE /mes/wm/issuedetail/{detailIds} 删除出库明细
17 选择生产工单 GET /mes/pro/workorder/list 工单选择弹窗数据
18 选择物料 GET /mes/md/mditem/list 物料选择弹窗数据
19 选择仓库 GET /mes/wm/warehouse/list 仓库选择数据
20 选择库区 GET /mes/wm/location/list 库区选择数据
21 选择库位 GET /mes/wm/area/list 库位选择数据

8.2 接口详细说明

8.2.1 查询领料单列表

GET /mes/wm/issueheader/list

请求参数:

参数名 类型 必填 说明
pageNum integer 页码默认1
pageSize integer 每页数默认10
issueCode string 领料单编号(模糊)
issueName string 领料单名称(模糊)
workorderCode string 工单编码(模糊)
workstationName string 工作站名称(模糊)
status string 单据状态
beginIssueDate string 领料日期起 (yyyy-MM-dd)
endIssueDate string 领料日期止 (yyyy-MM-dd)

响应示例:

{
  "total": 15,
  "rows": [
    {
      "issueId": 1,
      "issueCode": "ISSUE20260213001",
      "issueName": "组装电脑5400领料",
      "workorderId": 10,
      "workorderCode": "WO20260213001",
      "taskId": null,
      "taskCode": null,
      "workstationId": 5,
      "workstationCode": "WS005",
      "workstationName": "组装线A",
      "clientName": "客户A",
      "issueDate": "2026-02-13 10:00:00",
      "requiredTime": "2026-02-15 08:00:00",
      "status": "PREPARE"
    }
  ],
  "code": 200,
  "msg": "查询成功"
}

8.2.2 获取领料单详情

GET /mes/wm/issueheader/{issueId}

路径参数:

参数名 类型 必填 说明
issueId integer 领料单ID

响应: 返回领料单头详情对象。领料行和出库明细需分别通过 /mes/wm/issueline/list/mes/wm/issuedetail/list 查询。

8.2.3 新增领料单

POST /mes/wm/issueheader

请求体:

{
  "issueCode": "ISSUE20260213001",
  "issueName": "组装电脑5400领料",
  "workorderId": 10,
  "workorderCode": "WO20260213001",
  "workstationId": 5,
  "workstationCode": "WS005",
  "workstationName": "组装线A",
  "clientId": 1,
  "clientCode": "KH001",
  "clientName": "客户A",
  "issueDate": "2026-02-13",
  "requiredTime": "2026-02-15",
  "remark": ""
}

说明: 校验领料单编号唯一性。

8.2.4 修改领料单

PUT /mes/wm/issueheader

请求体: 同新增,但包含 issueId

8.2.5 删除领料单

DELETE /mes/wm/issueheader/{issueIds}

路径参数:

参数名 类型 必填 说明
issueIds string 领料单ID多个用逗号分隔

业务规则: 仅允许删除草稿(PREPARE)状态;级联删除关联的 wm_issue_line 行。事务操作,非草稿状态回滚。

8.2.6 执行出库

PUT /mes/wm/issueheader/{issueId}

路径参数:

参数名 类型 必填 说明
issueId integer 领料单ID

业务规则:

  1. 校验领料单下有领料行
  2. 获取所有出库明细事务数据IssueTxBean
  3. 验证明细数据非空
  4. 验证每条明细的事务数量不为空
  5. 调用库存核心执行出库storageCoreService.processIssue
  6. 更新领料单状态为 FINISHED

8.2.7 校验数量

GET /mes/wm/issueheader/checkQuantity/{issueId}

说明: 校验领料单下每个领料行的领料数量与其出库明细数量之和是否匹配。返回 true(匹配)或 false(不匹配)。

8.2.8 领料行 CRUD

GET    /mes/wm/issueline/list         # 查询领料行列表
POST   /mes/wm/issueline              # 新增领料行
PUT    /mes/wm/issueline              # 修改领料行
DELETE /mes/wm/issueline/{lineIds}    # 删除领料行

8.2.9 出库明细 CRUD

GET    /mes/wm/issuedetail/list          # 查询出库明细列表
POST   /mes/wm/issuedetail              # 新增出库明细
PUT    /mes/wm/issuedetail              # 修改出库明细
DELETE /mes/wm/issuedetail/{detailIds}  # 删除出库明细

9. 状态流转

9.1 领料单状态流转图

                    ┌──────────────┐
                    │              │
                    │  草稿        │
                    │  (PREPARE)   │
                    │              │
                    └──────┬───────┘
                           │
                           │ [执行出库]
                           │ (校验通过,库存扣减)
                           │
                           ▼
                    ┌──────────────┐
                    │              │
                    │  已完成      │
                    │  (FINISHED)  │
                    │              │
                    └──────────────┘

9.2 状态说明

状态 编码 可执行操作 说明
草稿 PREPARE 编辑、保存、删除、添加领料行、添加出库明细、执行出库 初始状态,可自由编辑
已完成 FINISHED 查看 已执行出库,库存已扣减,不可修改

注意: 领料单状态流转较简单,草稿状态直接通过「执行出库」变为已完成。如业务需要可扩展为:草稿 → 已确认 → 已完成 的三段式流程。


10. 业务规则

10.1 编码规则

规则 说明
格式 用户手动输入或按规则自动生成
唯一性 领料单编号全局唯一,后端校验

10.2 领料规则

规则 说明
关联工单 领料单可关联生产工单,从工单 BOM 物料中选择需要领出的物料
分批领料 同一工单可创建多张领料单,分批次领取
物料来源 可从工单 BOM 引入,也可手动添加物料行

10.3 出库规则

规则 说明
三层结构 领料单头 → 领料行(物料) → 出库明细(仓库/库位)
拣货确认 每个领料行需添加出库明细,指定从哪个仓库/库区/库位领出多少数量
数量匹配 每个领料行的出库明细数量之和应等于领料数量
库存扣减 执行出库时,系统按明细中的仓库/库区/库位扣减对应库存
不可逆 执行出库后状态为已完成,不可回退(如需退回需创建退料单)

10.4 删除规则

规则 说明
前置条件 仅草稿(PREPARE)状态允许删除
级联删除 删除领料单头时级联删除所有领料行(wm_issue_line)
事务保证 删除操作在事务中执行,任何一条非草稿状态都会回滚

11. 前端组件设计

11.1 文件结构

src/
├── api/
│   └── warehouse/
│       ├── issue.ts                      # 领料单头API
│       ├── issueLine.ts                  # 领料行API
│       └── issueDetail.ts               # 出库明细API
├── views/
│   └── Warehouse/
│       └── Issue/
│           ├── index.vue                  # 领料单列表页
│           ├── form.vue                   # 领料单新增/编辑/查看页
│           └── components/
│               ├── IssueHeaderForm.vue    # 表头表单组件
│               ├── IssueLineTable.vue     # 领料行子表组件
│               ├── IssueDetailTable.vue   # 出库明细子表组件
│               ├── WorkorderSelectDialog.vue  # 选择工单弹窗
│               ├── ItemSelectDialog.vue   # 选择物料弹窗
│               └── WarehouseSelector.vue  # 仓库/库区/库位级联选择器

11.2 路由配置

// src/router/index.ts
{
  path: '/warehouse',
  component: Layout,
  meta: { title: '仓储管理', icon: 'el-icon-house' },
  children: [
    {
      path: 'issue',
      name: 'IssueList',
      component: () => import('@/views/Warehouse/Issue/index.vue'),
      meta: { title: '生产领料', icon: 'el-icon-box' }
    },
    {
      path: 'issue/new',
      name: 'IssueNew',
      component: () => import('@/views/Warehouse/Issue/form.vue'),
      meta: { title: '新增领料单', activeMenu: '/warehouse/issue' },
      hidden: true
    },
    {
      path: 'issue/edit/:id',
      name: 'IssueEdit',
      component: () => import('@/views/Warehouse/Issue/form.vue'),
      meta: { title: '编辑领料单', activeMenu: '/warehouse/issue' },
      hidden: true
    },
    {
      path: 'issue/view/:id',
      name: 'IssueView',
      component: () => import('@/views/Warehouse/Issue/form.vue'),
      meta: { title: '查看领料单', activeMenu: '/warehouse/issue' },
      hidden: true
    }
  ]
}

12. 数据模型

12.1 表关系图

┌──────────────────────────┐     ┌──────────────────────────┐
│     pro_workorder        │     │     pro_task             │
│   (生产工单)              │     │   (生产任务)              │
│ workorder_id (PK)        │     │ task_id (PK)             │
│ workorder_code           │     │ task_code                │
└──────────┬───────────────┘     └──────────┬───────────────┘
           │                                │
           │ workorder_id (FK)              │ task_id (FK)
           ▼                                ▼
┌──────────────────────────────────────────────────────────┐
│                    wm_issue_header                        │
│                  (生产领料单头)                             │
│                                                          │
│ issue_id (PK)                                            │
│ issue_code, issue_name                                   │
│ workorder_id, workorder_code                             │
│ task_id, task_code                                       │
│ workstation_id, workstation_code, workstation_name        │
│ client_id, client_code, client_name                      │
│ issue_date, required_time, status                        │
└──────────────────────┬───────────────────────────────────┘
                       │ 1:N
                       ▼
┌──────────────────────────────────────────────────────────┐
│                    wm_issue_line                          │
│                  (领料行)                                  │
│                                                          │
│ line_id (PK)                                             │
│ issue_id (FK)                                            │
│ item_id, item_code, item_name                            │
│ specification, unit_of_measure                           │
│ quantity_issued (领料数量)                                 │
│ batch_code                                               │
└──────────────────────┬───────────────────────────────────┘
                       │ 1:N
                       ▼
┌──────────────────────────────────────────────────────────┐
│                    wm_issue_detail                        │
│                  (出库明细)                                │
│                                                          │
│ detail_id (PK)                                           │
│ issue_id (FK), line_id (FK)                              │
│ item_id, item_code, item_name                            │
│ warehouse_id, warehouse_code, warehouse_name             │
│ location_id, location_code, location_name                │
│ area_id, area_code, area_name                            │
│ quantity (出库数量)                                        │
│ batch_code                                               │
└──────────────────────────────────────────────────────────┘

12.2 数据同步方向

MOM (wm_issue_header / line / detail) ──同步──► ERP
  • 同步方向: MOM → ERP反向同步领料数据回传
  • 同步触发: 执行出库后同步领料数据

附录A: 状态标签颜色映射

// 状态标签类型映射
const statusTagMap = {
  'PREPARE': 'info',       // 灰色 - 草稿
  'CONFIRMED': 'primary',  // 蓝色 - 已确认
  'APPROVED': 'success',   // 绿色 - 已审核
  'FINISHED': 'success'    // 绿色 - 已完成
}

// 状态标签文字映射
const statusLabelMap = {
  'PREPARE': '草稿',
  'CONFIRMED': '已确认',
  'APPROVED': '已审核',
  'FINISHED': '已完成'
}

附录B: 权限标识汇总

权限标识 说明 对应操作
mes:wm:issueheader:list 列表查询 查看领料单列表
mes:wm:issueheader:query 详情查询 查看领料单详情
mes:wm:issueheader:add 新增 新增领料单
mes:wm:issueheader:edit 编辑 修改领料单、执行出库
mes:wm:issueheader:remove 删除 删除领料单
mes:wm:issueheader:export 导出 导出领料单列表

附录C: 库存出库事务说明

执行出库时,系统根据出库明细(wm_issue_detail)生成库存事务(IssueTxBean),调用库存核心服务(storageCoreService.processIssue)执行以下操作:

  1. 校验库存: 检查指定仓库/库区/库位的物料库存是否充足
  2. 扣减库存: 按明细中的数量从对应库位扣减库存
  3. 记录事务: 生成库存出库事务记录
  4. 更新状态: 领料单状态变为 FINISHED
wm_issue_detail (出库明细)
    │
    ▼ 生成事务
IssueTxBean
    │
    ▼ 调用库存核心
storageCoreService.processIssue()
    │
    ├── 校验库存充足
    ├── 扣减仓库/库区/库位库存
    ├── 生成库存事务记录
    └── 返回执行结果

修订历史

版本 日期 修订内容 修订人
1.0.0 2026-02-13 初始版本,基于后端 WmIssueHeader/WmIssueLine/WmIssueDetail 实体类、WmIssueHeaderController 控制器及 wm_issue_header/line/detail 表结构编写完整页面开发说明 System