From 21cfbb93148e961d774f34c72011226d0f669374 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 1 Mar 2026 13:16:39 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(mes):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E6=94=B6=E8=B4=A7=E5=8D=95=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E6=A0=A1=E9=AA=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增校验产品收货单明细数量的接口,确保每行明细数量之和与行收货数量一致。此功能提升了数据的准确性和完整性,避免了潜在的入库错误。 - 添加 checkProductRecptQuantity 方法 - 更新相关接口以支持数量校验 --- src/api/mes/wm/productrecpt/detail/index.ts | 53 +++++++++++++ src/api/mes/wm/productrecpt/index.ts | 77 +++++++++++++++++++ src/api/mes/wm/productrecpt/line/index.ts | 45 +++++++++++ src/views/mes/utils/constants.ts | 9 +++ .../mes/wm/productrecpt/ProductRecptForm.vue | 28 +++---- .../wm/productrecpt/ProductRecptLineList.vue | 18 ++--- src/views/mes/wm/productrecpt/index.vue | 49 ++++-------- 7 files changed, 219 insertions(+), 60 deletions(-) create mode 100644 src/api/mes/wm/productrecpt/detail/index.ts create mode 100644 src/api/mes/wm/productrecpt/index.ts create mode 100644 src/api/mes/wm/productrecpt/line/index.ts diff --git a/src/api/mes/wm/productrecpt/detail/index.ts b/src/api/mes/wm/productrecpt/detail/index.ts new file mode 100644 index 000000000..9521c22f4 --- /dev/null +++ b/src/api/mes/wm/productrecpt/detail/index.ts @@ -0,0 +1,53 @@ +import request from '@/config/axios' + +// MES 产品入库单明细 VO +export interface WmProductRecptDetailVO { + id: number + lineId: number + recptId: number + itemId: number + itemCode: string + quantity: number + batchId: number + warehouseId: number + warehouseName: string + locationId: number + locationName: string + areaId: number + areaName: string + remark: string + createTime: string +} + +// MES 产品入库单明细 API +export const WmProductRecptDetailApi = { + // 查询产品入库单明细列表 + getProductRecptDetailList: async (params: any) => { + return await request.get({ url: '/mes/wm/product-recpt-detail/list', params }) + }, + + // 根据行项目ID查询产品入库单明细列表 + getProductRecptDetailListByLineId: async (lineId: number) => { + return await request.get({ url: '/mes/wm/product-recpt-detail/list-by-line', params: { lineId } }) + }, + + // 查询产品入库单明细详情 + getProductRecptDetail: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt-detail/get?id=' + id }) + }, + + // 新增产品入库单明细 + createProductRecptDetail: async (data: WmProductRecptDetailVO) => { + return await request.post({ url: '/mes/wm/product-recpt-detail/create', data }) + }, + + // 修改产品入库单明细 + updateProductRecptDetail: async (data: WmProductRecptDetailVO) => { + return await request.put({ url: '/mes/wm/product-recpt-detail/update', data }) + }, + + // 删除产品入库单明细 + deleteProductRecptDetail: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt-detail/delete?id=' + id }) + } +} diff --git a/src/api/mes/wm/productrecpt/index.ts b/src/api/mes/wm/productrecpt/index.ts new file mode 100644 index 000000000..330f46681 --- /dev/null +++ b/src/api/mes/wm/productrecpt/index.ts @@ -0,0 +1,77 @@ +import request from '@/config/axios' + +// MES 产品入库单 VO +export interface WmProductRecptVO { + id: number + code: string + name: string + workOrderId: number + workOrderCode: string + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + receiptDate: string + status: number + remark: string + createTime: string +} + +// MES 产品入库单 API +export const WmProductRecptApi = { + // 查询产品入库单分页 + getProductRecptPage: async (params: any) => { + return await request.get({ url: '/mes/wm/product-recpt/page', params }) + }, + + // 查询产品入库单详情 + getProductRecpt: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt/get?id=' + id }) + }, + + // 新增产品入库单 + createProductRecpt: async (data: WmProductRecptVO) => { + return await request.post({ url: '/mes/wm/product-recpt/create', data }) + }, + + // 修改产品入库单 + updateProductRecpt: async (data: WmProductRecptVO) => { + return await request.put({ url: '/mes/wm/product-recpt/update', data }) + }, + + // 删除产品入库单 + deleteProductRecpt: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt/delete?id=' + id }) + }, + + // 提交产品入库单 + submitProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/submit?id=' + id }) + }, + + // 执行上架 + stockProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/stock?id=' + id }) + }, + + // 执行入库 + executeProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/execute?id=' + id }) + }, + + // 取消产品入库单 + cancelProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/cancel?id=' + id }) + }, + + // 校验产品入库单明细数量 + checkProductRecptQuantity: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt/check-quantity?id=' + id }) + }, + + // 导出产品入库单 Excel + exportProductRecpt: async (params: any) => { + return await request.download({ url: '/mes/wm/product-recpt/export-excel', params }) + } +} diff --git a/src/api/mes/wm/productrecpt/line/index.ts b/src/api/mes/wm/productrecpt/line/index.ts new file mode 100644 index 000000000..0a0cde541 --- /dev/null +++ b/src/api/mes/wm/productrecpt/line/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +// MES 产品入库单行 VO +export interface WmProductRecptLineVO { + id: number + recptId: number + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + quantity: number + batchId: number + batchCode: string + remark: string + createTime: string +} + +// MES 产品入库单行 API +export const WmProductRecptLineApi = { + // 查询产品入库单行分页 + getProductRecptLinePage: async (params: any) => { + return await request.get({ url: '/mes/wm/product-recpt-line/page', params }) + }, + + // 查询产品入库单行详情 + getProductRecptLine: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt-line/get?id=' + id }) + }, + + // 新增产品入库单行 + createProductRecptLine: async (data: WmProductRecptLineVO) => { + return await request.post({ url: '/mes/wm/product-recpt-line/create', data }) + }, + + // 修改产品入库单行 + updateProductRecptLine: async (data: WmProductRecptLineVO) => { + return await request.put({ url: '/mes/wm/product-recpt-line/update', data }) + }, + + // 删除产品入库单行 + deleteProductRecptLine: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt-line/delete?id=' + id }) + } +} diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts index 21377606a..1e5671fe4 100644 --- a/src/views/mes/utils/constants.ts +++ b/src/views/mes/utils/constants.ts @@ -244,6 +244,15 @@ export const MesWmProductProduceStatusEnum = { CANCELED: MesOrderStatusConstants.CANCELLED } +/** MES 产品入库单状态枚举 */ +export const MesWmProductRecptStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, + APPROVING: MesOrderStatusConstants.APPROVING, + APPROVED: MesOrderStatusConstants.APPROVED, + FINISHED: MesOrderStatusConstants.FINISHED, + CANCELED: MesOrderStatusConstants.CANCELLED +} + /** 获取物料/产品标识的标签 */ export const getItemOrProductLabel = (value: string): string => { for (const item of Object.values(MesItemOrProductEnum)) { diff --git a/src/views/mes/wm/productrecpt/ProductRecptForm.vue b/src/views/mes/wm/productrecpt/ProductRecptForm.vue index 30beeb6c6..bca1433fd 100644 --- a/src/views/mes/wm/productrecpt/ProductRecptForm.vue +++ b/src/views/mes/wm/productrecpt/ProductRecptForm.vue @@ -48,13 +48,10 @@ - - - - - - - + @@ -91,7 +88,6 @@