From 1f442fb7fd53c3a3d54ac434087004305010bca7 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 2 Mar 2026 12:07:02 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(mes):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=91=E8=B4=A7=E9=80=9A=E7=9F=A5=E5=8D=95=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=A1=8C=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/salesnotice/index.ts | 55 ++++ src/api/mes/wm/salesnotice/line/index.ts | 46 +++ src/utils/dict.ts | 1 + src/views/mes/utils/constants.ts | 6 + .../mes/wm/salesnotice/SalesNoticeForm.vue | 194 +++++++++++++ .../wm/salesnotice/SalesNoticeLineList.vue | 214 ++++++++++++++ src/views/mes/wm/salesnotice/index.vue | 272 ++++++++++++++++++ 7 files changed, 788 insertions(+) create mode 100644 src/api/mes/wm/salesnotice/index.ts create mode 100644 src/api/mes/wm/salesnotice/line/index.ts create mode 100644 src/views/mes/wm/salesnotice/SalesNoticeForm.vue create mode 100644 src/views/mes/wm/salesnotice/SalesNoticeLineList.vue create mode 100644 src/views/mes/wm/salesnotice/index.vue diff --git a/src/api/mes/wm/salesnotice/index.ts b/src/api/mes/wm/salesnotice/index.ts new file mode 100644 index 000000000..01ff36ceb --- /dev/null +++ b/src/api/mes/wm/salesnotice/index.ts @@ -0,0 +1,55 @@ +import request from '@/config/axios' + +// MES 发货通知单 VO +export interface WmSalesNoticeVO { + id: number + noticeCode: string + noticeName: string + salesOrderCode: string + clientId: number + salesDate: string + recipientName: string + recipientTelephone: string + recipientAddress: string + status: number + remark: string + createTime: string +} + +// MES 发货通知单 API +export const WmSalesNoticeApi = { + // 查询发货通知单分页 + getSalesNoticePage: async (params: any) => { + return await request.get({ url: '/mes/wm/sales-notice/page', params }) + }, + + // 查询发货通知单详情 + getSalesNotice: async (id: number) => { + return await request.get({ url: '/mes/wm/sales-notice/get?id=' + id }) + }, + + // 新增发货通知单 + createSalesNotice: async (data: WmSalesNoticeVO) => { + return await request.post({ url: '/mes/wm/sales-notice/create', data }) + }, + + // 修改发货通知单 + updateSalesNotice: async (data: WmSalesNoticeVO) => { + return await request.put({ url: '/mes/wm/sales-notice/update', data }) + }, + + // 删除发货通知单 + deleteSalesNotice: async (id: number) => { + return await request.delete({ url: '/mes/wm/sales-notice/delete?id=' + id }) + }, + + // 提交发货通知单 + submitSalesNotice: async (id: number) => { + return await request.put({ url: '/mes/wm/sales-notice/submit?id=' + id }) + }, + + // 导出发货通知单 Excel + exportSalesNotice: async (params: any) => { + return await request.download({ url: '/mes/wm/sales-notice/export-excel', params }) + } +} diff --git a/src/api/mes/wm/salesnotice/line/index.ts b/src/api/mes/wm/salesnotice/line/index.ts new file mode 100644 index 000000000..19596bb01 --- /dev/null +++ b/src/api/mes/wm/salesnotice/line/index.ts @@ -0,0 +1,46 @@ +import request from '@/config/axios' + +// MES 发货通知单行 VO +export interface WmSalesNoticeLineVO { + id: number + noticeId: number + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + batchId: number + batchCode: string + quantity: number + oqcCheck: boolean + remark: string + createTime: string +} + +// MES 发货通知单行 API +export const WmSalesNoticeLineApi = { + // 查询发货通知单行分页 + getSalesNoticeLinePage: async (params: any) => { + return await request.get({ url: '/mes/wm/sales-notice-line/page', params }) + }, + + // 查询发货通知单行详情 + getSalesNoticeLine: async (id: number) => { + return await request.get({ url: '/mes/wm/sales-notice-line/get?id=' + id }) + }, + + // 新增发货通知单行 + createSalesNoticeLine: async (data: WmSalesNoticeLineVO) => { + return await request.post({ url: '/mes/wm/sales-notice-line/create', data }) + }, + + // 修改发货通知单行 + updateSalesNoticeLine: async (data: WmSalesNoticeLineVO) => { + return await request.put({ url: '/mes/wm/sales-notice-line/update', data }) + }, + + // 删除发货通知单行 + deleteSalesNoticeLine: async (id: number) => { + return await request.delete({ url: '/mes/wm/sales-notice-line/delete?id=' + id }) + } +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 4f7b9ad4b..5a0dbe3ab 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -303,4 +303,5 @@ export enum DICT_TYPE { MES_WM_PRODUCT_RECPT_STATUS = 'mes_wm_product_receipt_status', // MES 成品入库单状态 MES_WM_RETURN_SALES_STATUS = 'mes_wm_return_sales_status', // MES 销售退货单状态 MES_WM_PRODUCT_SALES_STATUS = 'mes_wm_product_sales_status', // MES 销售出库单状态 + MES_SALES_NOTICE_STATUS = 'mes_sales_notice_status', // MES 发货通知单状态 } diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts index 0709d65ef..7a329a6bd 100644 --- a/src/views/mes/utils/constants.ts +++ b/src/views/mes/utils/constants.ts @@ -271,6 +271,12 @@ export const MesWmProductSalesStatusEnum = { CANCELED: MesOrderStatusConstants.CANCELLED } +/** MES 发货通知单状态枚举 */ +export const MesWmSalesNoticeStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, + APPROVED: MesOrderStatusConstants.CONFIRMED +} + /** 获取物料/产品标识的标签 */ export const getItemOrProductLabel = (value: string): string => { for (const item of Object.values(MesItemOrProductEnum)) { diff --git a/src/views/mes/wm/salesnotice/SalesNoticeForm.vue b/src/views/mes/wm/salesnotice/SalesNoticeForm.vue new file mode 100644 index 000000000..ad351289a --- /dev/null +++ b/src/views/mes/wm/salesnotice/SalesNoticeForm.vue @@ -0,0 +1,194 @@ + + + diff --git a/src/views/mes/wm/salesnotice/SalesNoticeLineList.vue b/src/views/mes/wm/salesnotice/SalesNoticeLineList.vue new file mode 100644 index 000000000..ddb96213e --- /dev/null +++ b/src/views/mes/wm/salesnotice/SalesNoticeLineList.vue @@ -0,0 +1,214 @@ + + + + diff --git a/src/views/mes/wm/salesnotice/index.vue b/src/views/mes/wm/salesnotice/index.vue new file mode 100644 index 000000000..959dc09ec --- /dev/null +++ b/src/views/mes/wm/salesnotice/index.vue @@ -0,0 +1,272 @@ + + +