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 @@
+
+
+
+
+
+
+ 添加物料
+
+
+
+
+
+
+
+
+
+
+ {{ getItemOrProductLabel(scope.row.itemOrProduct) }}
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+ 完成
+
+
+ 取消
+
+
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
+
+