From 0496b0e8078775203d51d62765766c5db3ebeb71 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 26 八月 2026 09:42:06 +0800
Subject: [PATCH] feat(erp): 采购来票新增发票OCR识别录入功能
---
src/views/erp/purchase/invoice/modules/form.vue | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/views/erp/purchase/invoice/modules/form.vue b/src/views/erp/purchase/invoice/modules/form.vue
index 74d0462..bf0e621 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,7 @@
const emit = defineEmits(['success']);
const formData = ref<ErpPurchaseInvoiceApi.PurchaseInvoice>();
const formType = ref<FormType>('create');
+const ocrSupplierName = ref('');
const getTitle = computed(() => {
if (formType.value === 'create') {
@@ -71,13 +73,30 @@
async onOpenChange(isOpen: boolean) {
if (!isOpen) {
formData.value = undefined;
+ ocrSupplierName.value = '';
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());
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;
}
@@ -105,6 +124,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