本文档描述工单排产模块中的两个明细管理功能:
/workorder-material)| 字段 | 说明 | 格式 |
|---|---|---|
| WorkOrd | 工单编号 | 文本 |
| Line | 行号 | 文本 |
| ItemNum | 物料编码 | 文本 |
| Descr | 物料名称 | 文本 |
| OpDescr | 工序 | 文本 |
| Location | 库位 | 文本 |
| LotSerial | 生产批号 | 文本 |
| QtyRequired | 需求数量 | 千分位数字 |
| IsActive | 状态 | 标签(激活/已删除) |
新增物料明细时:
编辑物料明细时:
/workorder-process)| 字段 | 说明 | 格式 |
|---|---|---|
| WorkOrd | 生产指令 | 文本 |
| LotSerial | 生产批次 | 文本 |
| eff | 下达日期 | YYYY-MM-DD |
| ItemNum | 物料编号 | 文本 |
| ItenName | 物料名称 | 文本 |
| OP | 工序 | 文本 |
| OpName | 工序名称 | 文本 |
| MilestoneOp | 关键工序 | 文本 |
| QtyComplete | 完成数量 | 千分位数字 |
| QtyOrded | 订单数量 | 千分位数字 |
| ProcessOut | 工序委外 | 文本 |
| MachineName | 设备名称 | 文本 |
| StandardStaffCount | 标准人数 | 文本 |
| Site | 班组 | 文本 |
| Rate | 产能(小时) | 文本 |
| CreateTime | 工单创建时间 | YYYY-MM-DD |
| UpdateTime | 工单更新时间 | YYYY-MM-DD |
基本信息
生产配置
工序属性
设备与人员
产能与工序类型
活动时间
保存工序明细时:
src/
├── api/
│ └── production.js # 更新:新增明细相关API ✨
├── views/
│ ├── components/
│ │ ├── WorkOrderMaterialForm.vue # 新增:物料明细表单 ✨
│ │ └── WorkOrderProcessForm.vue # 新增:工序明细表单 ✨
│ ├── WorkOrderMaterial.vue # 新增:物料明细列表 ✨
│ └── WorkOrderProcess.vue # 新增:工序明细列表 ✨
├── layouts/
│ └── MainLayout.vue # 更新:添加菜单项 ✨
└── router/
└── index.js # 更新:添加路由 ✨
GET /api/production/material/list
参数: {
WorkOrd: string, // 工单编号(模糊)
ItemNum: string, // 物料编号(模糊)
Location: string, // 库位(模糊)
page: number,
pageSize: number
}
POST /api/production/material
参数: {
WorkOrd: string,
ItemNum: string,
Op: string,
QtyRequired: number,
Location: string,
LotSerial: string
}
PUT /api/production/material/{id}
参数: 同添加
DELETE /api/production/material/{id}
说明: 软删除,将IsActive设为0
GET /api/production/material/check-exists
参数: { ItemNum: string }
返回: { exists: boolean }
GET /api/production/material/check-workorder-exists
参数: { WorkOrd: string, ItemNum: string, Op: string }
返回: { exists: boolean }
GET /api/production/process/list
参数: {
WorkOrd: string, // 生产指令(模糊)
LotSerial: string, // 生产批次(模糊)
ItemNum: string, // 物料编号(模糊)
Site: string, // 班组(模糊)
CreateTime: string, // 工单创建时间(>=)
UpdateTime: string, // 工单更新时间(>=)
page: number,
pageSize: number
}
POST /api/production/process
参数: {
WorkOrd: string,
ItemNum: string,
OP: string,
Descr: string,
WorkCtr: string,
ProdLine: string,
StdSetupTime: number,
QtyOrded: number,
MilestoneOp: boolean,
ProcessOut: number,
ProcessOutSupp: string,
ProcessOutDay: number,
Machine: string,
ToolCode: string,
RunCrew: number,
Engineer: string,
MachBdnRate: number,
WorkCode: string,
Setup: number,
MachinesperOp: number,
Labor: number,
ChargeCode: string
}
PUT /api/production/process/{id}
参数: 同添加
DELETE /api/production/process/{id}
GET /api/production/process/check-exists
参数: { WorkOrd: string, OP: string, RecID: string }
返回: { exists: boolean }
GET /api/production/process/check-complete-qty
参数: { WorkOrd: string, OP: string }
返回: { hasCompleteQty: boolean }
GET /api/production/workorder/list
返回: [{ workord: string }]
GET /api/production/workcenter/list
返回: [{ WorkCtr: string, Descr: string }]
GET /api/production/line/list
返回: [{ Line: string, Describe: string }]
GET /api/production/supplier/list
返回: [{ Supp: string, SuppName: string }]
主要字段:
- RecID -- 主键
- Domain -- 组织
- WorkOrd -- 工单编号
- Line -- 行号
- ItemNum -- 物料编码
- Op -- 工序
- QtyRequired -- 需求数量
- Location -- 库位
- LotSerial -- 生产批号
- IsActive -- 状态 (1-激活, 0-已删除)
- FrozenBOMQty -- 冻结BOM数量
- WorkOrdMasterRecID -- 工单主表关联ID
主要字段:
- RecID -- 主键
- WorkOrd -- 工单编号
- ItemNum -- 物料编号
- OP -- 工序
- Descr -- 工序名称
- WorkCtr -- 工作中心
- ProdLine -- 生产线
- StdSetupTime -- 准备时间
- QtyOrded -- 需求数量
- QtyComplete -- 完成数量
- MilestoneOp -- 关键工序
- ProcessOut -- 工序委外
- ProcessOutSupp -- 供应商
- ProcessOutDay -- 委外提前期
- Machine -- 设备类型编码
- ToolCode -- 模具类型编码
- RunCrew -- 标准人数
- Engineer -- 人员技能编码
- MachBdnRate -- 单位标准产能
- WorkCode -- 工序类型
- Setup -- 活动一准备时间
- MachinesperOp -- 活动二机器时间
- Labor -- 活动三人工时间
- ChargeCode -- 作业编码
- Status -- 状态
- IsActive -- 是否激活
主要字段:
- RecID -- 主键
- WorkOrd -- 工单编号
- ItemNum -- 物料编码
- QtyRec -- 领料数量
- Type -- 类型 (SM-生产领料)
- Domain -- 组织
- IsActive -- 是否激活
物料交货计划管理系统
├── 订单管理
│ ├── 订单评审
│ ├── 订单交付
│ ├── 出货计划
│ └── 订单发货
├── 工单管理
│ └── 工单池下达
├── 工单排产
│ ├── 工单工序排产
│ ├── 工单物料明细 ✨ (新增)
│ └── 工单工序明细 ✨ (新增)
└── 采购管理
└── 物料交货计划
npm run dev
浏览器打开 http://localhost:5173,点击左侧菜单:
即使没有后端,你也可以测试:
def save_work_order_material(data):
# 新增时
if not data.get('RecID'):
# 1. 检查物料是否存在
if not check_material_exists(data['ItemNum']):
raise Exception("物料不存在")
# 2. 检查工单中是否已有此物料
if check_workorder_material_exists(data['WorkOrd'], data['ItemNum'], data['Op']):
raise Exception("工单中已存在该物料")
# 3. 保存工单物料明细
save_workord_detail(data)
# 4. 根据工单状态决定是否新增领料单
work_order = get_work_order(data['WorkOrd'])
if work_order['Status'] != 'P':
save_nbr_detail(data)
# 编辑时
else:
# 1. 保存工单物料明细
update_workord_detail(data)
# 2. 根据工单状态决定是否修改领料单
work_order = get_work_order(data['WorkOrd'])
if work_order['Status'] != 'P':
update_nbr_detail(data)
def save_work_order_process(data):
# 1. 检查工单中是否已有相同工序编号
if check_process_exists(data['WorkOrd'], data['OP'], data.get('RecID')):
raise Exception("该工单中已存在相同工序编号")
# 2. 检查后序是否已有完成数量
if check_process_has_complete_qty(data['WorkOrd'], data['OP']):
raise Exception("该工单后序已有完成数量,无法保存")
# 3. 保存工序明细
if not data.get('RecID'):
save_workord_routing(data)
else:
update_workord_routing(data)
IsActive 字段为 0workOrd 参数/workorder-material?workOrd=WO2025001// 在 WorkOrderMaterial.vue 中
const getRowStyle = ({ row }) => {
if (row.IsActive === 0) {
return {
'background-color': '#ffe6e6' // 可自定义颜色
}
}
return {}
}
A: 在 ProductionSchedule.vue 的更多菜单中,使用以下代码:
// 跳转到工单物料明细
router.push({
path: '/workorder-material',
query: { workOrd: row.WorkOrd }
})
// 跳转到工单工序明细
router.push({
path: '/workorder-process',
query: { workOrd: row.WorkOrd }
})
A: 在后端实现时,根据工单状态判断:
A: 这可能是需求文档中的错误。实际应该是下拉选择或文本输入。可以修改 WorkOrderProcessForm.vue 中的组件类型。
如遇问题:
创建日期: 2025-11-03
版本: v1.0.0
状态: 核心功能已完成,等待后端API对接