From e58ffbb681bcf3f1067c60ebd602f51a2dba4289 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 8 Mar 2026 09:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(mes):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=A3=85=E7=AE=B1=E5=8D=95=E5=8F=8A=E8=A3=85=E7=AE=B1=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增装箱单和装箱明细的请求和响应对象,完善装箱单的创建、更新、删除及查询功能。 同时,增加装箱单状态的枚举和相关逻辑,提升系统的可用性和扩展性。 --- src/api/mes/wm/wmpackage/index.ts | 174 +++++++++ src/utils/dict.ts | 1 + src/views/mes/utils/constants.ts | 6 + src/views/mes/wm/wmpackage/PackageForm.vue | 292 +++++++++++++++ .../mes/wm/wmpackage/PackageLineList.vue | 343 ++++++++++++++++++ src/views/mes/wm/wmpackage/SubPackageList.vue | 171 +++++++++ .../wmpackage/components/WmPackageSelect.vue | 126 +++++++ src/views/mes/wm/wmpackage/index.vue | 265 ++++++++++++++ 8 files changed, 1378 insertions(+) create mode 100644 src/api/mes/wm/wmpackage/index.ts create mode 100644 src/views/mes/wm/wmpackage/PackageForm.vue create mode 100644 src/views/mes/wm/wmpackage/PackageLineList.vue create mode 100644 src/views/mes/wm/wmpackage/SubPackageList.vue create mode 100644 src/views/mes/wm/wmpackage/components/WmPackageSelect.vue create mode 100644 src/views/mes/wm/wmpackage/index.vue diff --git a/src/api/mes/wm/wmpackage/index.ts b/src/api/mes/wm/wmpackage/index.ts new file mode 100644 index 000000000..7814112c7 --- /dev/null +++ b/src/api/mes/wm/wmpackage/index.ts @@ -0,0 +1,174 @@ +import request from '@/config/axios' +// TODO @AI:拆成两个,一个 index.ts,一个 linde/index.ts 两个; + +// ==================== 装箱单主表 ==================== + +// 装箱单保存请求 VO +// TODO @AI:不需要独立的 SaveReqVO;直接用 WmPackageRespVO +export interface WmPackageSaveReqVO { + id?: number + code: string + parentId?: number + packageDate: number + soCode?: string + invoiceCode?: string + clientId?: number + length?: number + width?: number + height?: number + sizeUnitId?: number + netWeight?: number + grossWeight?: number + weightUnitId?: number + inspectorUserId?: number + status?: number + remark?: string +} + +// 装箱单响应 VO +export interface WmPackageRespVO { + id: number + code: string + parentId?: number + packageDate: number + soCode?: string + invoiceCode?: string + clientId?: number + clientCode?: string + clientName?: string + clientNickname?: string + length?: number + width?: number + height?: number + sizeUnitId?: number + sizeUnitName?: string + netWeight?: number + grossWeight?: number + weightUnitId?: number + weightUnitName?: string + inspectorUserId?: number + inspectorName?: string + status: number + remark?: string + // TODO @AI:后端不用返回 children;前端根据 parentId 直接 handleTree 就好了 + children?: WmPackageRespVO[] + createTime: string +} + +// 装箱单 API +export const WmPackageApi = { + // 创建装箱单 + createPackage: async (data: WmPackageSaveReqVO) => { + return await request.post({ url: '/mes/wm/package/create', data }) + }, + + // 修改装箱单 + updatePackage: async (data: WmPackageSaveReqVO) => { + return await request.put({ url: '/mes/wm/package/update', data }) + }, + + // 删除装箱单 + deletePackage: async (id: number) => { + return await request.delete({ url: '/mes/wm/package/delete?id=' + id }) + }, + + // 获取装箱单详情 + getPackage: async (id: number) => { + return await request.get({ url: '/mes/wm/package/get?id=' + id }) + }, + + // 分页查询装箱单 + getPackagePage: async (params: any) => { + return await request.get({ url: '/mes/wm/package/page', params }) + }, + + // 导出装箱单 Excel + exportPackage: async (params: any) => { + return await request.download({ url: '/mes/wm/package/export-excel', params }) + }, + + // 完成装箱单 + finishPackage: async (id: number) => { + return await request.put({ url: '/mes/wm/package/finish?id=' + id }) + }, + + // 获取装箱单树形结构 + getPackageTree: async (params?: any) => { + return await request.get({ url: '/mes/wm/package/tree', params }) + } +} + +// ==================== 装箱明细 ==================== + +// 装箱明细保存请求 VO +export interface WmPackageLineSaveReqVO { + id?: number + packageId: number + materialStockId?: number + itemId: number + quantity: number + workOrderId?: number + warehouseId?: number + locationId?: number + areaId?: number + expireDate?: number + remark?: string +} + +// 装箱明细响应 VO +export interface WmPackageLineRespVO { + id: number + packageId: number + materialStockId?: number + itemId: number + itemCode?: string + itemName?: string + specification?: string + unitMeasureName?: string + quantity: number + workOrderId?: number + workOrderCode?: string + batchCode?: string + warehouseId?: number + warehouseName?: string + locationId?: number + locationName?: string + areaId?: number + areaName?: string + expireDate?: number + remark?: string + createTime: string +} + +// 装箱明细 API +export const WmPackageLineApi = { + // 创建装箱明细 + createPackageLine: async (data: WmPackageLineSaveReqVO) => { + return await request.post({ url: '/mes/wm/package-line/create', data }) + }, + + // 修改装箱明细 + updatePackageLine: async (data: WmPackageLineSaveReqVO) => { + return await request.put({ url: '/mes/wm/package-line/update', data }) + }, + + // 删除装箱明细 + deletePackageLine: async (id: number) => { + return await request.delete({ url: '/mes/wm/package-line/delete?id=' + id }) + }, + + // 获取装箱明细详情 + getPackageLine: async (id: number) => { + return await request.get({ url: '/mes/wm/package-line/get?id=' + id }) + }, + + // 分页查询装箱明细 + getPackageLinePage: async (params: any) => { + return await request.get({ url: '/mes/wm/package-line/page', params }) + }, + + // 根据装箱单 ID 获取明细列表 + getPackageLineListByPackageId: async (packageId: number) => { + return await request.get({ url: '/mes/wm/package-line/list-by-package-id', params: { packageId } }) + } +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts index bcbf6346c..eeb9769ff 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -314,4 +314,5 @@ export enum DICT_TYPE { MES_MD_AUTO_CODE_CYCLE_METHOD = 'mes_md_auto_code_cycle_method', // MES 编码规则循环方式 MES_WM_BARCODE_FORMAT = 'mes_wm_barcode_format', // MES 条码格式 MES_WM_BARCODE_BIZ_TYPE = 'mes_wm_barcode_biz_type', // MES 条码业务类型 + MES_WM_PACKAGE_STATUS = 'mes_wm_package_status', // MES 装箱单状态 } diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts index 201802264..21e8157cb 100644 --- a/src/views/mes/utils/constants.ts +++ b/src/views/mes/utils/constants.ts @@ -305,6 +305,12 @@ export const MesWmSalesNoticeStatusEnum = { FINISHED: MesOrderStatusConstants.FINISHED } +/** MES 装箱单状态枚举 */ +export const MesWmPackageStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, + FINISHED: MesOrderStatusConstants.FINISHED +} + /** MES 杂项出库单状态枚举 */ export const MesWmMiscIssueStatusEnum = { PREPARE: MesOrderStatusConstants.DRAFT, diff --git a/src/views/mes/wm/wmpackage/PackageForm.vue b/src/views/mes/wm/wmpackage/PackageForm.vue new file mode 100644 index 000000000..63ec2e3ca --- /dev/null +++ b/src/views/mes/wm/wmpackage/PackageForm.vue @@ -0,0 +1,292 @@ + + + diff --git a/src/views/mes/wm/wmpackage/PackageLineList.vue b/src/views/mes/wm/wmpackage/PackageLineList.vue new file mode 100644 index 000000000..b10d695f3 --- /dev/null +++ b/src/views/mes/wm/wmpackage/PackageLineList.vue @@ -0,0 +1,343 @@ + + + + diff --git a/src/views/mes/wm/wmpackage/SubPackageList.vue b/src/views/mes/wm/wmpackage/SubPackageList.vue new file mode 100644 index 000000000..261ce5bc7 --- /dev/null +++ b/src/views/mes/wm/wmpackage/SubPackageList.vue @@ -0,0 +1,171 @@ + + + + diff --git a/src/views/mes/wm/wmpackage/components/WmPackageSelect.vue b/src/views/mes/wm/wmpackage/components/WmPackageSelect.vue new file mode 100644 index 000000000..edeae8071 --- /dev/null +++ b/src/views/mes/wm/wmpackage/components/WmPackageSelect.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/mes/wm/wmpackage/index.vue b/src/views/mes/wm/wmpackage/index.vue new file mode 100644 index 000000000..a1af9da50 --- /dev/null +++ b/src/views/mes/wm/wmpackage/index.vue @@ -0,0 +1,265 @@ + + +