From d1cf2e1b5d3f56d14e5d75024ce2d054f9142b2e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 06 八月 2026 17:54:54 +0800
Subject: [PATCH] refactor(components): 重构多个组件以提升代码质量和可维护性

---
 src/views/wls/salesnotice/index.vue |   49 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/src/views/wls/salesnotice/index.vue b/src/views/wls/salesnotice/index.vue
index e2958c8..a4c4590 100644
--- a/src/views/wls/salesnotice/index.vue
+++ b/src/views/wls/salesnotice/index.vue
@@ -2,16 +2,19 @@
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { MesWmSalesNoticeApi } from '#/api/mes/wm/salesnotice';
 
-import { Page, useVbenModal } from '../../../packages/effects/common-ui/src';
-import { MesWmSalesNoticeStatusEnum } from '../../../packages/constants/src';
-import { downloadFileFromBlobPart } from '../../../packages/utils/src';
+import { Page, useVbenModal } from '@vben/common-ui';
+import { MesWmSalesNoticeOutStatusEnum, MesWmSalesNoticeStatusEnum } from '@vben/constants';
+import { downloadFileFromBlobPart } from '@vben/utils';
 
-import { Button, message } from 'ant-design-vue';
+import { Button, message, Tag } from 'ant-design-vue';
+
+import { useRouter } from 'vue-router';
 
 import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
 import {
   deleteSalesNotice,
   exportSalesNotice,
+  generateProductSales,
   getSalesNoticePage,
 } from '#/api/mes/wm/salesnotice';
 import { $t } from '#/locales';
@@ -23,6 +26,19 @@
   connectedComponent: Form,
   destroyOnClose: true,
 });
+
+const router = useRouter();
+
+const outStatusLabelMap: Record<number, string> = {
+  [MesWmSalesNoticeOutStatusEnum.NONE]: '鏈嚭搴�',
+  [MesWmSalesNoticeOutStatusEnum.PARTIAL]: '閮ㄥ垎鍑哄簱',
+  [MesWmSalesNoticeOutStatusEnum.ALL]: '鍏ㄩ儴鍑哄簱',
+};
+const outStatusColorMap: Record<number, string> = {
+  [MesWmSalesNoticeOutStatusEnum.NONE]: 'default',
+  [MesWmSalesNoticeOutStatusEnum.PARTIAL]: 'warning',
+  [MesWmSalesNoticeOutStatusEnum.ALL]: 'success',
+};
 
 /** 鍒锋柊琛ㄦ牸 */
 function handleRefresh() {
@@ -44,9 +60,18 @@
   formModalApi.setData({ formType: 'update', id: row.id }).open();
 }
 
-/** 鎵ц鍑哄簱 */
-function handleFinish(row: MesWmSalesNoticeApi.SalesNotice) {
-  formModalApi.setData({ formType: 'finish', id: row.id }).open();
+/** 鐢熸垚閿�鍞嚭搴撳崟 */
+async function handleGenerateProductSales(row: MesWmSalesNoticeApi.SalesNotice) {
+  try {
+    const productSalesId = await generateProductSales(row.id!);
+    message.success('鐢熸垚閿�鍞嚭搴撳崟鎴愬姛');
+    router.push({
+      name: 'MesWmProductSales',
+      query: { id: String(productSalesId) },
+    });
+  } catch (e) {
+    console.error(e);
+  }
 }
 
 /** 鍒犻櫎鍙戣揣閫氱煡鍗� */
@@ -130,6 +155,9 @@
           {{ row.code }}
         </Button>
       </template>
+      <template #outStatus="{ row }">
+        <Tag :color="outStatusColorMap[row.outStatus ?? 0]">{{ outStatusLabelMap[row.outStatus ?? 0] }}</Tag>
+      </template>
       <template #actions="{ row }">
         <TableAction
           :actions="[
@@ -154,11 +182,12 @@
               },
             },
             {
-              label: '鎵ц鍑哄簱',
+              label: '鐢熸垚鍑哄簱鍗�',
               type: 'link',
-              auth: ['mes:wm-sales-notice:update'],
+              icon: 'ant-design:file-protect-outlined',
+              auth: ['mes:wm-product-sales:create'],
               ifShow: row.status === MesWmSalesNoticeStatusEnum.APPROVED,
-              onClick: handleFinish.bind(null, row),
+              onClick: handleGenerateProductSales.bind(null, row),
             },
           ]"
         />

--
Gitblit v1.9.3