From 5dbc69b4e792dcce998038822b92402366bec47f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 18 八月 2026 10:45:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/fix/hsy/20260812' into dev_pro2.0

---
 src/views/wls/arrivalnotice/index.vue |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/src/views/wls/arrivalnotice/index.vue b/src/views/wls/arrivalnotice/index.vue
index df90182..5cfe5b4 100644
--- a/src/views/wls/arrivalnotice/index.vue
+++ b/src/views/wls/arrivalnotice/index.vue
@@ -2,9 +2,9 @@
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { MesWmArrivalNoticeApi } from '#/api/mes/wm/arrivalnotice';
 
-import { Page, useVbenModal } from '../../../packages/effects/common-ui/src';
-import { MesWmArrivalNoticeStatusEnum } from '../../../packages/constants/src';
-import { downloadFileFromBlobPart } from '../../../packages/utils/src';
+import { Page, useVbenModal } from '@vben/common-ui';
+import { MesWmArrivalNoticeStatusEnum } from '@vben/constants';
+import { downloadFileFromBlobPart } from '@vben/utils';
 
 import { Button, message } from 'ant-design-vue';
 
@@ -12,15 +12,23 @@
 import {
   deleteArrivalNotice,
   exportArrivalNotice,
+  generateArrivalNoticeFromPurchaseOrder,
   getArrivalNoticePage,
 } from '#/api/mes/wm/arrivalnotice';
+import { generateItemReceiptFromArrivalNotice } from '#/api/mes/wm/itemreceipt';
 import { $t } from '#/locales';
 
 import { useGridColumns, useGridFormSchema } from './data';
 import Form from './modules/form.vue';
+import PoSelectDialog from './modules/po-select-dialog.vue';
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
+  destroyOnClose: true,
+});
+
+const [PoSelectModal, poSelectModalApi] = useVbenModal({
+  connectedComponent: PoSelectDialog,
   destroyOnClose: true,
 });
 
@@ -61,12 +69,44 @@
 
 /** 鎻愮ず鍓嶅線璐ㄦ妯″潡 */
 function handleQc() {
-  message.info('璇峰墠寰�銆愯川閲忕鐞� - 寰呮浠诲姟銆戜腑杩涜鏉ユ枡妫�楠屾搷浣�');
+  message.info('璇峰墠寰�銆愯川閲忕鐞� - IQC妫�楠屻�戜腑杩涜鏉ユ枡妫�楠屾搷浣�');
 }
 
-/** 鎻愮ず鍓嶅線閲囪喘鍏ュ簱妯″潡 */
-function handleReceipt() {
-  message.info('璇峰墠寰�銆愪粨搴撶鐞� - 閲囪喘鍏ュ簱銆戜腑杩涜鍏ュ簱鎿嶄綔');
+/** 鎵ц鍏ュ簱锛氭牴鎹埌璐ч�氱煡鍗曠敓鎴愰噰璐叆搴撳崟 */
+async function handleReceipt(row: MesWmArrivalNoticeApi.ArrivalNotice) {
+  const hideLoading = message.loading({
+    content: '姝e湪鐢熸垚閲囪喘鍏ュ簱鍗�...',
+    duration: 0,
+  });
+  try {
+    await generateItemReceiptFromArrivalNotice(row.id!);
+    message.success('鍏ュ簱鎴愬姛');
+    handleRefresh();
+  } finally {
+    hideLoading();
+  }
+}
+
+/** 浠庨噰璐鍗曠敓鎴愬埌璐ч�氱煡鍗� */
+async function handleGenerateFromPO() {
+  poSelectModalApi.open();
+}
+
+/** 閲囪喘璁㈠崟閫夋嫨鍥炶皟 */
+async function handlePurchaseOrderSelected(purchaseOrderId: number) {
+  const hideLoading = message.loading({
+    content: '姝e湪鐢熸垚鍒拌揣閫氱煡鍗�...',
+    duration: 0,
+  });
+  try {
+    const id = await generateArrivalNoticeFromPurchaseOrder(purchaseOrderId);
+    message.success('鍒拌揣閫氱煡鍗曠敓鎴愭垚鍔�');
+    // 璺宠浆鍒扮紪杈戦〉
+    formModalApi.setData({ formType: 'update', id }).open();
+    handleRefresh();
+  } finally {
+    hideLoading();
+  }
 }
 
 /** 瀵煎嚭琛ㄦ牸 */
@@ -107,7 +147,9 @@
 </script>
 
 <template>
-  <Page auto-content-height><FormModal @success="handleRefresh" />
+  <Page auto-content-height>
+    <FormModal @success="handleRefresh" />
+    <PoSelectModal @selected="handlePurchaseOrderSelected" />
 
     <Grid table-title="鍒拌揣閫氱煡鍗曞垪琛�">
       <template #toolbar-tools>
@@ -119,6 +161,13 @@
               icon: ACTION_ICON.ADD,
               auth: ['mes:wm-arrival-notice:create'],
               onClick: handleCreate,
+            },
+            {
+              label: '浠庨噰璐鍗曠敓鎴�',
+              type: 'primary',
+              icon: ACTION_ICON.ADD,
+              auth: ['mes:wm-arrival-notice:create'],
+              onClick: handleGenerateFromPO,
             },
             {
               label: $t('ui.actionTitle.export'),
@@ -167,9 +216,13 @@
             {
               label: '鎵ц鍏ュ簱',
               type: 'link',
+              auth: ['mes:wm-item-receipt:create'],
               ifShow:
                 row.status === MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT,
-              onClick: handleReceipt,
+              popConfirm: {
+                title: `纭鏍规嵁鍒拌揣閫氱煡鍗� ${row.code} 鐢熸垚閲囪喘鍏ュ簱鍗曪紵`,
+                confirm: handleReceipt.bind(null, row),
+              },
             },
           ]"
         />

--
Gitblit v1.9.3