From f630e7e4d50ba22da8f42336196a02dbae850ced Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 17:54:32 +0800
Subject: [PATCH] refactor(erp): 优化采购发票和财务付款审核流程

---
 src/views/erp/purchase/invoice/index.vue |   55 +++++++++++++++++++++++--------------------------------
 1 files changed, 23 insertions(+), 32 deletions(-)

diff --git a/src/views/erp/purchase/invoice/index.vue b/src/views/erp/purchase/invoice/index.vue
index 6c1dd21..c0cbd7b 100644
--- a/src/views/erp/purchase/invoice/index.vue
+++ b/src/views/erp/purchase/invoice/index.vue
@@ -2,8 +2,6 @@
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
 import type { ErpPurchaseInvoiceApi } from '#/api/erp/purchase/invoice';
 
-import { useRouter } from 'vue-router';
-
 import { Page, useVbenModal } from '@vben/common-ui';
 import { downloadFileFromBlobPart } from '@vben/utils';
 
@@ -14,7 +12,7 @@
   deletePurchaseInvoice,
   exportPurchaseInvoice,
   getPurchaseInvoicePage,
-  submitPurchaseInvoice,
+  updatePurchaseInvoiceStatus,
 } from '#/api/erp/purchase/invoice';
 import { $t } from '#/locales';
 
@@ -22,8 +20,6 @@
 import Form from './modules/form.vue';
 
 defineOptions({ name: 'ErpPurchaseInvoice' });
-
-const { push } = useRouter();
 
 const [FormModal, formModalApi] = useVbenModal({
   connectedComponent: Form,
@@ -72,27 +68,22 @@
   }
 }
 
-/** 鎻愪氦瀹℃牳 */
-async function handleSubmit(row: ErpPurchaseInvoiceApi.PurchaseInvoice) {
+/** 鏇存柊鏉ョエ鐘舵�侊紙瀹℃牳/鍙嶅鏍革級 */
+async function handleUpdateStatus(
+  row: ErpPurchaseInvoiceApi.PurchaseInvoice,
+  status: number,
+) {
   const hideLoading = message.loading({
-    content: '鎻愪氦瀹℃牳涓�...',
+    content: '鏇存柊鐘舵�佷腑...',
     duration: 0,
   });
   try {
-    await submitPurchaseInvoice(row.id!);
-    message.success('鎻愪氦瀹℃牳鎴愬姛');
+    await updatePurchaseInvoiceStatus(row.id!, status);
+    message.success('鏇存柊鐘舵�佹垚鍔�');
     handleRefresh();
   } finally {
     hideLoading();
   }
-}
-
-/** 鏌ョ湅瀹℃壒璇︽儏 */
-function handleProcessDetail(row: ErpPurchaseInvoiceApi.PurchaseInvoice) {
-  push({
-    name: 'BpmProcessInstanceDetail',
-    query: { id: row.processInstanceId },
-  });
 }
 
 const [Grid, gridApi] = useVbenVxeGrid({
@@ -163,11 +154,9 @@
         <Tag v-else color="success">宸蹭笂浼�</Tag>
       </template>
       <template #auditStatus="{ row }">
-        <Tag v-if="row.auditStatus === 0" color="default">鏈彁浜�</Tag>
-        <Tag v-else-if="row.auditStatus === 10" color="warning">瀹℃壒涓�</Tag>
-        <Tag v-else-if="row.auditStatus === 20" color="success">瀹℃牳閫氳繃</Tag>
-        <Tag v-else-if="row.auditStatus === 30" color="error">瀹℃牳涓嶉�氳繃</Tag>
-        <Tag v-else-if="row.auditStatus === 40" color="default">宸蹭綔搴�</Tag>
+        <Tag v-if="row.auditStatus === 10" color="warning">鏈鏍�</Tag>
+        <Tag v-else-if="row.auditStatus === 20" color="success">宸插鏍�</Tag>
+        <Tag v-else color="default">--</Tag>
       </template>
       <template #actions="{ row }">
         <TableAction
@@ -184,22 +173,24 @@
               type: 'link',
               icon: ACTION_ICON.EDIT,
               auth: ['erp:purchase-invoice:update'],
-              ifShow: row.auditStatus === 0,
+              ifShow: row.auditStatus === 10,
               onClick: handleEdit.bind(null, row),
             },
             {
-              label: '鎻愪氦瀹℃牳',
+              label: '瀹℃牳',
               type: 'link',
-              auth: ['erp:purchase-invoice:update'],
-              onClick: handleSubmit.bind(null, row),
-              ifShow: row.auditStatus === 0,
+              icon: ACTION_ICON.AUDIT,
+              auth: ['erp:purchase-invoice:update-status'],
+              ifShow: row.auditStatus === 10,
+              onClick: handleUpdateStatus.bind(null, row, 20),
             },
             {
-              label: '鏌ョ湅瀹℃壒',
+              label: '鍙嶅鏍�',
               type: 'link',
-              auth: ['erp:purchase-invoice:query'],
-              onClick: handleProcessDetail.bind(null, row),
-              ifShow: row.auditStatus !== 0 && !!row.processInstanceId,
+              icon: ACTION_ICON.VIEW,
+              auth: ['erp:purchase-invoice:update-status'],
+              ifShow: row.auditStatus === 20,
+              onClick: handleUpdateStatus.bind(null, row, 10),
             },
             {
               label: $t('common.delete'),

--
Gitblit v1.9.3