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/modules/form.vue |   50 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/src/views/wls/salesnotice/modules/form.vue b/src/views/wls/salesnotice/modules/form.vue
index bf6d825..044cb38 100644
--- a/src/views/wls/salesnotice/modules/form.vue
+++ b/src/views/wls/salesnotice/modules/form.vue
@@ -1,6 +1,7 @@
 <script lang="ts" setup>
 import type { FormType } from '../data';
 
+import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
 import type { MesWmSalesNoticeApi } from '#/api/mes/wm/salesnotice';
 
 import { computed, ref } from 'vue';
@@ -17,6 +18,8 @@
   submitSalesNotice,
   updateSalesNotice,
 } from '#/api/mes/wm/salesnotice';
+import { createSalesNoticeLine } from '#/api/mes/wm/salesnotice/line';
+import { getSaleOrderItemListByOrderId } from '#/api/erp/sale/order';
 import { $t } from '#/locales';
 
 import { useFormSchema } from '../data';
@@ -100,17 +103,44 @@
       if (formData.value?.id) {
         await updateSalesNotice({ ...formData.value, ...data });
         formData.value = { ...formData.value, ...data };
-      } else {
-        const id = await createSalesNotice(data);
-        formData.value = {
-          ...data,
-          id,
-          status: MesWmSalesNoticeStatusEnum.PREPARE,
-        };
-        await formApi.setFieldValue('id', id);
-        await formApi.setFieldValue('status', formData.value.status);
-        formType.value = 'update';
+        emit('success');
+        message.success($t('ui.actionMessage.operationSuccess'));
+        await modalApi.close();
+        return;
       }
+      // 鏂板锛氫繚鎸佸脊绐楁墦寮�锛屽垏鎹㈠埌缂栬緫妯″紡
+      const id = await createSalesNotice(data);
+      // 閫夋嫨浜嗛攢鍞鍗曟椂锛岃嚜鍔ㄥ甫鍏ヨ鍗曚骇鍝佹槑缁�
+      if (data.saleOrderId) {
+        try {
+          const items = await getSaleOrderItemListByOrderId(data.saleOrderId);
+          if (items?.length) {
+            await Promise.all(items.map((item: ErpSaleOrderApi.SaleOrderItem) =>
+              createSalesNoticeLine({
+                noticeId: id,
+                saleOrderItemId: item.id,
+                itemId: item.productId,
+                itemCode: item.productBarCode,
+                itemName: item.productName,
+                unitMeasureName: item.productUnitName,
+                quantity: item.count,
+                batchCode: item.batchCode,
+                oqcCheckFlag: false,
+              }),
+            ));
+          }
+        } catch {
+          // 鑾峰彇璁㈠崟鏄庣粏澶辫触涓嶅奖鍝嶄富娴佺▼
+        }
+      }
+      formData.value = {
+        ...data,
+        id,
+        status: MesWmSalesNoticeStatusEnum.PREPARE,
+      };
+      await formApi.setFieldValue('id', id);
+      await formApi.setFieldValue('status', formData.value.status);
+      formType.value = 'update';
       originalSnapshot.value = JSON.stringify(await formApi.getValues());
       emit('success');
       message.success($t('ui.actionMessage.operationSuccess'));

--
Gitblit v1.9.3