From cd8b52bdf89a4d1101f72e0ece9f4df22a3d3f7a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 15 十月 2026 16:03:32 +0800
Subject: [PATCH] feat(mdm): 物料列表隐藏辅单位与销售价列

---
 src/views/erp/purchase/request/index.vue |   50 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/src/views/erp/purchase/request/index.vue b/src/views/erp/purchase/request/index.vue
index 27336e9..a0a8a00 100644
--- a/src/views/erp/purchase/request/index.vue
+++ b/src/views/erp/purchase/request/index.vue
@@ -1,4 +1,5 @@
 <script lang="ts" setup>
+import { automaticApproval } from '#/store/audit-policy';
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { ErpPurchaseRequestApi } from '#/api/erp/purchase/request';
 
@@ -17,11 +18,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 +35,11 @@
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
+  destroyOnClose: true,
+});
+
+const [ImportModal, importModalApi] = useVbenModal({
+  connectedComponent: ImportForm,
   destroyOnClose: true,
 });
 
@@ -54,6 +62,11 @@
 async function handleExport() {
   const data = await exportPurchaseRequest(await gridApi.formApi.getValues());
   downloadFileFromBlobPart({ fileName: '閲囪喘鐢宠.xls', source: data });
+}
+
+/** 瀵煎叆閲囪喘鐢宠 */
+function handleImport() {
+  importModalApi.open();
 }
 
 /** 鏂板閲囪喘鐢宠 */
@@ -84,10 +97,17 @@
 /** 鎻愪氦瀹℃壒 - 鍏堣幏鍙栨祦绋嬪垪琛� */
 async function handleSubmit(row: ErpPurchaseRequestApi.PurchaseRequest) {
   const hideLoading = message.loading({
-    content: '鑾峰彇瀹℃壒娴佺▼...',
+    content: automaticApproval.value ? '姝e湪鎻愪氦鐢熸晥...' : '鑾峰彇瀹℃壒娴佺▼...',
     duration: 0,
   });
   try {
+    if (automaticApproval.value) {
+      await submitPurchaseRequest(row.id!, 'purchase_request_approve');
+      hideLoading();
+      message.success('宸叉彁浜ょ敓鏁�');
+      handleRefresh();
+      return;
+    }
     const processList = await getApproveProcessList(row.id!);
     hideLoading();
     if (!processList || processList.length === 0) {
@@ -95,6 +115,7 @@
       return;
     }
     // 鎵撳紑娴佺▼閫夋嫨寮圭獥
+
     processModalApi.setData({ id: row.id, processList }).open();
   } catch {
     hideLoading();
@@ -122,6 +143,10 @@
 
 /** 鏌ョ湅瀹℃壒璇︽儏 */
 function handleViewProcess(row: ErpPurchaseRequestApi.PurchaseRequest) {
+  if (!row.processInstanceId) {
+    message.warning('璇ョ敵璇峰皻鏈彁浜ゅ鎵�');
+    return;
+  }
   router.push({ name: 'BpmProcessInstanceDetail', query: { id: row.processInstanceId } });
 }
 
@@ -141,11 +166,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;
         },
       },
     },
@@ -168,6 +200,7 @@
 <template>
   <Page auto-content-height>
     <FormModal @success="handleRefresh" />
+    <ImportModal @success="handleRefresh" />
     <OrderFormModal @success="handleRefresh" />
     <ProcessModal @success="handleRefresh" />
     <Grid table-title="閲囪喘鐢宠鍒楄〃">
@@ -189,6 +222,13 @@
               onClick: handleExport,
             },
             {
+              label: '瀵煎叆',
+              type: 'primary',
+              icon: ACTION_ICON.UPLOAD,
+              auth: ['erp:purchase-request:import'],
+              onClick: handleImport,
+            },
+            {
               label: '鎵归噺鍒犻櫎',
               type: 'primary',
               danger: true,
@@ -206,8 +246,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 }">
@@ -230,7 +270,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