From 1c1af9b0fc10778ae5ac13cc68fd4030affbcfe1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 09 九月 2026 10:59:53 +0800
Subject: [PATCH] feat(wm): 新增SN码管理和设备入库功能

---
 src/views/wls/returnvendor/index.vue |   64 ++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/src/views/wls/returnvendor/index.vue b/src/views/wls/returnvendor/index.vue
index 895e494..62d5716 100644
--- a/src/views/wls/returnvendor/index.vue
+++ b/src/views/wls/returnvendor/index.vue
@@ -2,6 +2,8 @@
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { MesWmReturnVendorApi } from '#/api/mes/wm/returnvendor';
 
+import { useRouter } from 'vue-router';
+
 import { Page, useVbenModal } from '@vben/common-ui';
 import { MesWmReturnVendorStatusEnum } from '@vben/constants';
 import { downloadFileFromBlobPart } from '@vben/utils';
@@ -13,15 +15,25 @@
   cancelReturnVendor,
   deleteReturnVendor,
   exportReturnVendor,
+  getReturnVendorApproveProcessList,
   getReturnVendorPage,
+  submitReturnVendorApproval,
 } from '#/api/mes/wm/returnvendor';
 import { $t } from '#/locales';
 
+import ProcessSelectModal from '#/views/wls/components/process-select-modal.vue';
 import { useGridColumns, useGridFormSchema } from './data';
 import Form from './modules/form.vue';
 
+const router = useRouter();
+
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
+  destroyOnClose: true,
+});
+
+const [ProcessModal, processModalApi] = useVbenModal({
+  connectedComponent: ProcessSelectModal,
   destroyOnClose: true,
 });
 
@@ -48,6 +60,43 @@
 /** 鎵ц鎷h揣 */
 function handleStock(row: MesWmReturnVendorApi.ReturnVendor) {
   formModalApi.setData({ formType: 'stock', id: row.id }).open();
+}
+
+/** 鎻愪氦瀹℃壒 - 鍏堣幏鍙栨祦绋嬪垪琛� */
+async function handleSubmitApproval(row: MesWmReturnVendorApi.ReturnVendor) {
+  const hideLoading = message.loading({
+    content: '鑾峰彇瀹℃壒娴佺▼...',
+    duration: 0,
+  });
+  try {
+    const processList = await getReturnVendorApproveProcessList();
+    hideLoading();
+    if (!processList || processList.length === 0) {
+      message.warning('鏆傛棤鍙敤瀹℃壒娴佺▼锛岃鍏堥厤缃� BPM 娴佺▼');
+      return;
+    }
+    processModalApi
+      .setData({
+        id: row.id,
+        processList,
+        submitFn: submitReturnVendorApproval,
+      })
+      .open();
+  } catch {
+    hideLoading();
+  }
+}
+
+/** 鏌ョ湅瀹℃壒璇︽儏 */
+function handleProcessDetail(row: MesWmReturnVendorApi.ReturnVendor) {
+  if (!row.processInstanceId) {
+    message.warning('璇ュ崟鎹皻鏈彁浜ゅ鎵�');
+    return;
+  }
+  router.push({
+    name: 'BpmProcessInstanceDetail',
+    query: { id: row.processInstanceId },
+  });
 }
 
 /** 瀹屾垚閫�璐� */
@@ -116,6 +165,7 @@
 
 <template>
   <Page auto-content-height><FormModal @success="handleRefresh" />
+    <ProcessModal @success="handleRefresh" />
 
     <Grid table-title="渚涘簲鍟嗛��璐у崟鍒楄〃">
       <template #toolbar-tools>
@@ -147,6 +197,13 @@
         <TableAction
           :actions="[
             {
+              label: '鎻愪氦瀹℃壒',
+              type: 'link',
+              auth: ['mes:wm-return-vendor:update'],
+              ifShow: row.status === MesWmReturnVendorStatusEnum.PREPARE,
+              onClick: handleSubmitApproval.bind(null, row),
+            },
+            {
               label: $t('common.edit'),
               type: 'link',
               icon: ACTION_ICON.EDIT,
@@ -167,6 +224,13 @@
               },
             },
             {
+              label: '鏌ョ湅瀹℃壒',
+              type: 'link',
+              auth: ['mes:wm-return-vendor:query'],
+              ifShow: row.status === MesWmReturnVendorStatusEnum.APPROVING,
+              onClick: handleProcessDetail.bind(null, row),
+            },
+            {
               label: '鎵ц鎷h揣',
               type: 'link',
               auth: ['mes:wm-return-vendor:update'],

--
Gitblit v1.9.3