From c77086ad2d7949ab36dd0c4e0b59907e672dd64f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 18 九月 2026 15:04:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/dev_pro2.0' into dev_宁夏_九泓化工

---
 src/views/erp/purchase/request/index.vue |   35 +++++++++++++++++++++++++++++++----
 1 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/src/views/erp/purchase/request/index.vue b/src/views/erp/purchase/request/index.vue
index cd97ba8..9957565 100644
--- a/src/views/erp/purchase/request/index.vue
+++ b/src/views/erp/purchase/request/index.vue
@@ -17,11 +17,13 @@
   getApproveProcessList,
   getPurchaseRequestPage,
   submitPurchaseRequest,
+  syncPurchaseRequestStatus,
 } from '#/api/erp/purchase/request';
 import { $t } from '#/locales';
 
 import { useGridColumns, useGridFormSchema } from './data';
 import Form from './modules/form.vue';
+import ImportForm from './modules/import-form.vue';
 import OrderForm from './modules/order-form.vue';
 import ProcessSelectModal from './modules/process-select-modal.vue';
 
@@ -32,6 +34,11 @@
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
+  destroyOnClose: true,
+});
+
+const [ImportModal, importModalApi] = useVbenModal({
+  connectedComponent: ImportForm,
   destroyOnClose: true,
 });
 
@@ -54,6 +61,11 @@
 async function handleExport() {
   const data = await exportPurchaseRequest(await gridApi.formApi.getValues());
   downloadFileFromBlobPart({ fileName: '閲囪喘鐢宠.xls', source: data });
+}
+
+/** 瀵煎叆閲囪喘鐢宠 */
+function handleImport() {
+  importModalApi.open();
 }
 
 /** 鏂板閲囪喘鐢宠 */
@@ -145,11 +157,18 @@
     proxyConfig: {
       ajax: {
         query: async ({ page }, formValues) => {
-          return await getPurchaseRequestPage({
+          const result = await getPurchaseRequestPage({
             pageNo: page.currentPage,
             pageSize: page.pageSize,
             ...formValues,
           });
+          const processingItems = (result.list || []).filter(
+            (item) => item.status === 10 && item.processInstanceId,
+          );
+          if (processingItems.length > 0) {
+            await syncPurchaseRequestStatus(processingItems);
+          }
+          return result;
         },
       },
     },
@@ -172,6 +191,7 @@
 <template>
   <Page auto-content-height>
     <FormModal @success="handleRefresh" />
+    <ImportModal @success="handleRefresh" />
     <OrderFormModal @success="handleRefresh" />
     <ProcessModal @success="handleRefresh" />
     <Grid table-title="閲囪喘鐢宠鍒楄〃">
@@ -193,6 +213,13 @@
               onClick: handleExport,
             },
             {
+              label: '瀵煎叆',
+              type: 'primary',
+              icon: ACTION_ICON.UPLOAD,
+              auth: ['erp:purchase-request:import'],
+              onClick: handleImport,
+            },
+            {
               label: '鎵归噺鍒犻櫎',
               type: 'primary',
               danger: true,
@@ -210,8 +237,8 @@
       <template #status="{ row }">
         <Tag v-if="row.status === 0" color="default">鏈彁浜�</Tag>
         <Tag v-else-if="row.status === 10" color="processing">瀹℃壒涓�</Tag>
-        <Tag v-else-if="row.status === 20" color="success">瀹℃牳閫氳繃</Tag>
-        <Tag v-else-if="row.status === 30" color="error">瀹℃牳涓嶉�氳繃</Tag>
+        <Tag v-else-if="row.status === 20" color="success">瀹℃壒閫氳繃</Tag>
+        <Tag v-else-if="row.status === 30" color="error">瀹℃壒涓嶉�氳繃</Tag>
         <Tag v-else-if="row.status === 40" color="warning">宸插彇娑�</Tag>
       </template>
       <template #inStatus="{ row }">
@@ -234,7 +261,7 @@
               type: 'link',
               icon: ACTION_ICON.EDIT,
               auth: ['erp:purchase-request:update'],
-              ifShow: () => row.status === 0,
+              ifShow: () => row.status === 0 || Number(row.status) === 30,
               onClick: handleEdit.bind(null, row),
             },
             {

--
Gitblit v1.9.3