From d5303a1e7d5f3cd59c4ac2e85100f983a106ab44 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 17 Feb 2026 15:37:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(mes-pro):=20=E6=96=B0=E5=A2=9E=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=B7=A5=E5=8D=95=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增工单列表页,支持编码/名称/类型/状态/来源/需求日期筛选 - 新增工单表单弹窗(新增/编辑/详情),产品选择自动填充单位 - 新增工单 BOM 子组件,内嵌分页表格 + 增删改弹窗 - 新增工单和 BOM 的 API 文件 - dict.ts 增加 3 个字典类型,constants.ts 增加工单状态枚举 --- src/api/mes/pro/workorder/bom/index.ts | 44 +++ src/api/mes/pro/workorder/index.ts | 76 ++++ src/views/mes/pro/workorder/WorkorderBom.vue | 233 ++++++++++++ src/views/mes/pro/workorder/WorkorderForm.vue | 347 ++++++++++++++++++ src/views/mes/pro/workorder/index.vue | 314 ++++++++++++++++ 5 files changed, 1014 insertions(+) create mode 100644 src/api/mes/pro/workorder/bom/index.ts create mode 100644 src/api/mes/pro/workorder/index.ts create mode 100644 src/views/mes/pro/workorder/WorkorderBom.vue create mode 100644 src/views/mes/pro/workorder/WorkorderForm.vue create mode 100644 src/views/mes/pro/workorder/index.vue diff --git a/src/api/mes/pro/workorder/bom/index.ts b/src/api/mes/pro/workorder/bom/index.ts new file mode 100644 index 000000000..6d76153c8 --- /dev/null +++ b/src/api/mes/pro/workorder/bom/index.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +// MES 生产工单 BOM VO +export interface ProWorkorderBomVO { + id: number // 编号 + workorderId: number // 生产工单编号 + itemId: number // BOM 物料编号 + itemName: string // 物料名称 + itemCode: string // 物料编码 + itemSpec: string // 规格型号 + unitMeasureId: number // 单位编号 + unitMeasureName: string // 单位名称 + itemOrProduct: string // 物料产品标识 + quantity: number // 预计使用量 + remark: string // 备注 +} + +// MES 生产工单 BOM API +export const ProWorkorderBomApi = { + // 查询工单 BOM 分页 + getWorkorderBomPage: async (params: any) => { + return await request.get({ url: `/mes/pro/workorder-bom/page`, params }) + }, + + // 查询工单 BOM 详情 + getWorkorderBom: async (id: number) => { + return await request.get({ url: `/mes/pro/workorder-bom/get?id=` + id }) + }, + + // 新增工单 BOM + createWorkorderBom: async (data: ProWorkorderBomVO) => { + return await request.post({ url: `/mes/pro/workorder-bom/create`, data }) + }, + + // 修改工单 BOM + updateWorkorderBom: async (data: ProWorkorderBomVO) => { + return await request.put({ url: `/mes/pro/workorder-bom/update`, data }) + }, + + // 删除工单 BOM + deleteWorkorderBom: async (id: number) => { + return await request.delete({ url: `/mes/pro/workorder-bom/delete?id=` + id }) + } +} diff --git a/src/api/mes/pro/workorder/index.ts b/src/api/mes/pro/workorder/index.ts new file mode 100644 index 000000000..b7f197017 --- /dev/null +++ b/src/api/mes/pro/workorder/index.ts @@ -0,0 +1,76 @@ +import request from '@/config/axios' + +// MES 生产工单 VO +export interface ProWorkorderVO { + id: number // 编号 + code: string // 工单编码 + name: string // 工单名称 + type: number // 工单类型 + orderSourceType: number // 来源类型 + orderSourceCode: string // 来源单据编号 + productId: number // 产品编号 + productName: string // 产品名称 + productCode: string // 产品编码 + productSpec: string // 规格型号 + unitMeasureId: number // 单位编号 + unitMeasureName: string // 单位名称 + quantity: number // 生产数量 + quantityProduced: number // 已生产数量 + quantityChanged: number // 调整数量 + quantityScheduled: number // 已排产数量 + clientId: number // 客户编号 + clientName: string // 客户名称 + vendorId: number // 供应商编号 + vendorName: string // 供应商名称 + batchCode: string // 批次号 + requestDate: Date // 需求日期 + parentId: number // 父工单编号 + ancestors: string // 所有父节点编号 + finishDate: Date // 完成时间 + cancelDate: Date // 取消时间 + status: number // 工单状态 + remark: string // 备注 +} + +// MES 生产工单 API +export const ProWorkorderApi = { + // 查询生产工单分页 + getWorkorderPage: async (params: any) => { + return await request.get({ url: `/mes/pro/workorder/page`, params }) + }, + + // 查询生产工单详情 + getWorkorder: async (id: number) => { + return await request.get({ url: `/mes/pro/workorder/get?id=` + id }) + }, + + // 新增生产工单 + createWorkorder: async (data: ProWorkorderVO) => { + return await request.post({ url: `/mes/pro/workorder/create`, data }) + }, + + // 修改生产工单 + updateWorkorder: async (data: ProWorkorderVO) => { + return await request.put({ url: `/mes/pro/workorder/update`, data }) + }, + + // 删除生产工单 + deleteWorkorder: async (id: number) => { + return await request.delete({ url: `/mes/pro/workorder/delete?id=` + id }) + }, + + // 导出生产工单 Excel + exportWorkorder: async (params: any) => { + return await request.download({ url: `/mes/pro/workorder/export-excel`, params }) + }, + + // 完成工单 + finishWorkorder: async (id: number) => { + return await request.put({ url: `/mes/pro/workorder/finish?id=` + id }) + }, + + // 取消工单 + cancelWorkorder: async (id: number) => { + return await request.put({ url: `/mes/pro/workorder/cancel?id=` + id }) + } +} diff --git a/src/views/mes/pro/workorder/WorkorderBom.vue b/src/views/mes/pro/workorder/WorkorderBom.vue new file mode 100644 index 000000000..8683ad246 --- /dev/null +++ b/src/views/mes/pro/workorder/WorkorderBom.vue @@ -0,0 +1,233 @@ + + + + diff --git a/src/views/mes/pro/workorder/WorkorderForm.vue b/src/views/mes/pro/workorder/WorkorderForm.vue new file mode 100644 index 000000000..1cd8af261 --- /dev/null +++ b/src/views/mes/pro/workorder/WorkorderForm.vue @@ -0,0 +1,347 @@ + + + + diff --git a/src/views/mes/pro/workorder/index.vue b/src/views/mes/pro/workorder/index.vue new file mode 100644 index 000000000..ecc28de19 --- /dev/null +++ b/src/views/mes/pro/workorder/index.vue @@ -0,0 +1,314 @@ + + + +