From d3230d4bb80fbc7c2adb63c588c580ab94234ee8 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 26 八月 2026 10:12:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0

---
 src/views/erp/purchase/invoice/modules/form.vue |   47 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/src/views/erp/purchase/invoice/modules/form.vue b/src/views/erp/purchase/invoice/modules/form.vue
index 3450581..85374fb 100644
--- a/src/views/erp/purchase/invoice/modules/form.vue
+++ b/src/views/erp/purchase/invoice/modules/form.vue
@@ -2,12 +2,13 @@
 import type { FormType } from '../data';
 
 import type { ErpPurchaseInvoiceApi } from '#/api/erp/purchase/invoice';
+import type { ErpPurchaseInvoiceAiApi } from '#/api/erp/purchase/invoice/ai';
 
 import { computed, ref } from 'vue';
 
 import { useVbenModal } from '@vben/common-ui';
 
-import { message } from 'ant-design-vue';
+import { Alert, message } from 'ant-design-vue';
 
 import { useVbenForm } from '#/adapter/form';
 import {
@@ -22,6 +23,8 @@
 const emit = defineEmits(['success']);
 const formData = ref<ErpPurchaseInvoiceApi.PurchaseInvoice>();
 const formType = ref<FormType>('create');
+const ocrSupplierName = ref('');
+const orderTotalTaxPrice = ref<number>(); // 鎵�閫夐噰璐鍗曞悎璁$◣棰濓紙鏈紑绁ㄩ噾棰濓紝鐢ㄤ簬鎻愮ず涓庢牎楠岋級
 
 const getTitle = computed(() => {
   if (formType.value === 'create') {
@@ -42,7 +45,7 @@
   },
   wrapperClass: 'grid-cols-2',
   layout: 'horizontal',
-  schema: useFormSchema(),
+  schema: useFormSchema(orderTotalTaxPrice),
   showDefaultActions: false,
 });
 
@@ -71,13 +74,31 @@
   async onOpenChange(isOpen: boolean) {
     if (!isOpen) {
       formData.value = undefined;
+      ocrSupplierName.value = '';
+      orderTotalTaxPrice.value = undefined;
       return;
     }
-    const data = modalApi.getData<{ formType: FormType; id?: number }>();
+    const data = modalApi.getData<{
+      formType: FormType;
+      id?: number;
+      ocrData?: ErpPurchaseInvoiceAiApi.OcrResultVO;
+    }>();
     formType.value = data.formType;
     formApi.setDisabled(formType.value === 'detail');
-    formApi.updateSchema(useFormSchema());
+    formApi.updateSchema(useFormSchema(orderTotalTaxPrice));
     await formApi.resetForm();
+    // OCR 璇嗗埆鏁版嵁棰勫~锛堟柊寤哄満鏅紝缂栬緫/璇︽儏涓嶅鐞嗭級
+    const ocr = data?.ocrData;
+    ocrSupplierName.value = ocr?.supplierName || '';
+    if (ocr) {
+      await formApi.setValues({
+        invoiceNo: ocr.invoiceNo,
+        invoiceTitle: ocr.invoiceTitle,
+        price: ocr.price,
+        invoiceTime: ocr.invoiceTime,
+        remark: ocr.remark,
+      });
+    }
     if (!data || !data.id) {
       return;
     }
@@ -85,9 +106,15 @@
     try {
       formData.value = await getPurchaseInvoice(data.id);
       if (formData.value?.attachmentList?.length) {
-        // 鐢� attachmentList 浠f浛 blobIds锛岃涓婁紶缁勪欢鑳藉睍绀烘枃浠跺悕鍜岄瑙堥摼鎺�
+        // 杞负涓婁紶缁勪欢鐨勬枃浠跺璞★紱鎻愪氦鏃� formApi 浼氭寜 valueKey 鎻愬彇闄勪欢 ID
         (formData.value as Record<string, unknown>).blobIds =
-          formData.value.attachmentList;
+          formData.value.attachmentList.map((item) => ({
+            uid: String(item.id),
+            name: item.name || '',
+            url: item.url || '',
+            status: 'done',
+            id: item.id,
+          }));
       }
       await formApi.setValues(formData.value as any);
     } finally {
@@ -99,6 +126,14 @@
 
 <template>
   <Modal :title="getTitle" class="w-3/5">
+    <Alert
+      v-if="ocrSupplierName"
+      type="info"
+      show-icon
+      class="mx-4 mb-4"
+      message="璇嗗埆鍒伴攢鍞柟鍚嶇О锛岃閫夋嫨閲囪喘璁㈠崟骞舵牳瀵硅鍗曚緵搴斿晢鏄惁涓�鑷�"
+      :description="`璇嗗埆缁撴灉锛�${ocrSupplierName}`"
+    />
     <Form class="mx-4" />
   </Modal>
 </template>

--
Gitblit v1.9.3