From 61d710bc8eff2b5395b14c60ef2c0b9d435ae6d3 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 8 Mar 2026 11:06:22 +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/packages/index.ts | 81 ++++++++ src/api/mes/wm/packages/line/index.ts | 79 ++++++++ src/api/mes/wm/wmpackage/index.ts | 174 ------------------ .../{wmpackage => packages}/PackageForm.vue | 50 +++-- .../PackageLineList.vue | 29 +-- .../SubPackageList.vue | 40 ++-- .../components/WmPackageSelect.vue | 30 +-- .../mes/wm/{wmpackage => packages}/index.vue | 81 ++------ 8 files changed, 231 insertions(+), 333 deletions(-) create mode 100644 src/api/mes/wm/packages/index.ts create mode 100644 src/api/mes/wm/packages/line/index.ts delete mode 100644 src/api/mes/wm/wmpackage/index.ts rename src/views/mes/wm/{wmpackage => packages}/PackageForm.vue (90%) rename src/views/mes/wm/{wmpackage => packages}/PackageLineList.vue (92%) rename src/views/mes/wm/{wmpackage => packages}/SubPackageList.vue (83%) rename src/views/mes/wm/{wmpackage => packages}/components/WmPackageSelect.vue (77%) rename src/views/mes/wm/{wmpackage => packages}/index.vue (73%) diff --git a/src/api/mes/wm/packages/index.ts b/src/api/mes/wm/packages/index.ts new file mode 100644 index 000000000..549744b17 --- /dev/null +++ b/src/api/mes/wm/packages/index.ts @@ -0,0 +1,81 @@ +import request from '@/config/axios' + +// 装箱单响应 VO +// TODO @AI:VO 改成 WmPackageVO +export interface WmPackageRespVO { + id: number + code: string + parentId?: number + packageDate: number + salesOrderCode?: 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 + createTime: string +} + +// 装箱单 API +export const WmPackageApi = { + // 创建装箱单 + createPackage: async (data: WmPackageRespVO) => { + return await request.post({ url: '/mes/wm/package/create', data }) + }, + + // 修改装箱单 + updatePackage: async (data: WmPackageRespVO) => { + 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 }) + }, + + // 完成装箱单 + finishPackage: async (id: number) => { + return await request.put({ url: '/mes/wm/package/finish?id=' + id }) + }, + + // 添加子箱 + // TODO @AI:addChildPackage,且接口地址改成 /mes/wm/package/add-child-package + addSubPackage: async (parentId: number, childId: number) => { + return await request.put({ url: '/mes/wm/package/add-sub-package', params: { parentId, childId } }) + }, + + // 移除子箱 + // TODO @AI:removeChildPackage,且接口地址改成 /mes/wm/package/remove-child-package + removeSubPackage: async (childId: number) => { + return await request.put({ url: '/mes/wm/package/remove-sub-package?childId=' + childId }) + }, + + // 获取装箱单精简列表(无父箱 + 已完成状态,用于选择父箱) + // TODO @AI:改成 getChildablePackageSimpleList,且接口地址改成 /mes/wm/package/childable-simple-list;注释改成 可添加为子箱的装箱单精简列表(无父箱 + 已完成状态,用于选择父箱) + getPackageSimpleList: async () => { + return await request.get({ url: '/mes/wm/package/simple-list' }) + } +} diff --git a/src/api/mes/wm/packages/line/index.ts b/src/api/mes/wm/packages/line/index.ts new file mode 100644 index 000000000..f620be900 --- /dev/null +++ b/src/api/mes/wm/packages/line/index.ts @@ -0,0 +1,79 @@ +import request from '@/config/axios' + +// ==================== 装箱明细 ==================== + +// 装箱明细保存请求 VO +// TODO @AI:不要 save,直接用 WmPackageLineRespVO +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 +// TODO @AI:VO 改成 WmPackageLineVO +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 获取明细列表 + // TODO @AI:这个接口不需要;是不是前后端都删除掉 + getPackageLineListByPackageId: async (packageId: number) => { + return await request.get({ url: '/mes/wm/package-line/list-by-package-id', params: { packageId } }) + } +} diff --git a/src/api/mes/wm/wmpackage/index.ts b/src/api/mes/wm/wmpackage/index.ts deleted file mode 100644 index 7814112c7..000000000 --- a/src/api/mes/wm/wmpackage/index.ts +++ /dev/null @@ -1,174 +0,0 @@ -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/views/mes/wm/wmpackage/PackageForm.vue b/src/views/mes/wm/packages/PackageForm.vue similarity index 90% rename from src/views/mes/wm/wmpackage/PackageForm.vue rename to src/views/mes/wm/packages/PackageForm.vue index 63ec2e3ca..d62a09455 100644 --- a/src/views/mes/wm/wmpackage/PackageForm.vue +++ b/src/views/mes/wm/packages/PackageForm.vue @@ -1,6 +1,5 @@