From 7b307741022678632e06bbed3c996a8ddd013759 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 25 八月 2026 14:46:33 +0800
Subject: [PATCH] fix: MOM 1.采购来票登记时选好采购订单后提示可来票金额

---
 src/views/erp/finance/payment/modules/form.vue |   57 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/src/views/erp/finance/payment/modules/form.vue b/src/views/erp/finance/payment/modules/form.vue
index aae7d36..3a29e85 100644
--- a/src/views/erp/finance/payment/modules/form.vue
+++ b/src/views/erp/finance/payment/modules/form.vue
@@ -5,8 +5,8 @@
 
 import { computed, ref } from 'vue';
 
-import { useVbenModal } from '..\..\..\..\..\packages\effects\common-ui\src';
-import { $t } from '..\..\..\..\..\packages\locales\src';
+import { useVbenModal } from '@vben/common-ui';
+import { $t } from '@vben/locales';
 
 import { message } from 'ant-design-vue';
 
@@ -17,24 +17,22 @@
   getFinancePayment,
   updateFinancePayment,
 } from '#/api/erp/finance/payment';
+import { getPurchaseInvoiceSimpleList } from '#/api/erp/purchase/invoice';
 
 import { useFormSchema } from '../data';
 import ItemForm from './item-form.vue';
 
 const emit = defineEmits(['success']);
 const formData = ref<
-  ErpFinancePaymentApi.FinancePayment & {
-    fileUrl?: string;
-  }
+  ErpFinancePaymentApi.FinancePayment
 >({
   id: undefined,
   no: '',
   supplierId: undefined,
-  accountId: undefined,
+  accountName: undefined,
   financeUserId: undefined,
   paymentTime: undefined,
   remark: '',
-  fileUrl: undefined,
   totalPrice: 0,
   discountPrice: 0,
   paymentPrice: 0,
@@ -71,6 +69,11 @@
       if (changedFields.includes('supplierId')) {
         formData.value.supplierId = values.supplierId;
       }
+      // 鍏宠仈鏉ョエ鍙樺寲鏃讹紝鍔犺浇鏉ョエ淇℃伅渚涙槑缁嗚嚜鍔ㄧ敓鎴�
+      if (changedFields.includes('invoiceId')) {
+        formData.value.invoiceId = values.invoiceId;
+        handleInvoiceChange(values.invoiceId);
+      }
       // 鐩殑锛氬悓姝ュ埌 item-form 缁勪欢锛岃Е鍙戞暣浣撶殑浠锋牸璁$畻
       if (changedFields.includes('discountPrice')) {
         formData.value.discountPrice = values.discountPrice;
@@ -83,6 +86,27 @@
     }
   },
 });
+
+/** 鍏宠仈鏉ョエ鍙樺寲鏃讹紝鍔犺浇鏉ョエ淇℃伅锛屼緵浠樻鏄庣粏鑷姩鐢熸垚 */
+async function handleInvoiceChange(invoiceId: number | undefined) {
+  if (formType.value === 'detail' || !invoiceId) {
+    if (!invoiceId) {
+      formData.value.invoice = undefined;
+    }
+    return;
+  }
+  const supplierId = formData.value.supplierId;
+  if (!supplierId) {
+    return;
+  }
+  const invoices = await getPurchaseInvoiceSimpleList(supplierId);
+  // 璇锋眰鏈熼棿鏉ョエ宸插啀娆″垏鎹㈡椂锛屼涪寮冭繃鏈熺粨鏋滐紝閬垮厤鍥炴樉閿欎贡
+  if (formData.value.invoiceId !== invoiceId) {
+    return;
+  }
+  const invoice = invoices.find((item) => item.id === invoiceId);
+  formData.value.invoice = invoice;
+}
 
 /** 鏇存柊浠樻椤� */
 function handleUpdateItems(items: ErpFinancePaymentApi.FinancePaymentItem[]) {
@@ -152,11 +176,11 @@
     formApi.setDisabled(formType.value === 'detail');
     formApi.updateSchema(useFormSchema(formType.value));
     if (!data || !data.id) {
-      // 鏂板鏃讹紝榛樿閫変腑璐︽埛
+      // 鏂板鏃讹紝榛樿濉叆榛樿缁撶畻璐︽埛鍚嶇О
       const accountList = await getAccountSimpleList();
       const defaultAccount = accountList.find((item) => item.defaultStatus);
       if (defaultAccount) {
-        await formApi.setValues({ accountId: defaultAccount.id });
+        await formApi.setValues({ accountName: defaultAccount.name });
       }
       return;
     }
@@ -165,6 +189,20 @@
       formData.value = await getFinancePayment(data.id);
       // 璁剧疆鍒� values
       await formApi.setValues(formData.value, false);
+      // 璇︽儏妯″紡涓嬶紝鍏宠仈鏉ョエ瀛楁鐢� Input 灞曠ず鏉ョエ缂栧彿
+      if (formType.value === 'detail' && formData.value?.invoice) {
+        await formApi.setFieldValue('invoiceId', formData.value.invoice.no);
+      }
+      if (formData.value?.attachmentList?.length) {
+        const blobIds = formData.value.attachmentList.map((item) => ({
+          uid: String(item.id),
+          name: item.name || '',
+          url: item.url || '',
+          status: 'done',
+          id: item.id,
+        }));
+        await formApi.setFieldValue('blobIds', blobIds);
+      }
     } finally {
       modalApi.unlock();
     }
@@ -187,6 +225,7 @@
           :supplier-id="formData?.supplierId"
           :disabled="formType === 'detail'"
           :discount-price="formData?.discountPrice ?? 0"
+          :invoice="formData?.invoice"
           @update:items="handleUpdateItems"
           @update:total-price="handleUpdateTotalPrice"
           @update:payment-price="handleUpdatePaymentPrice"

--
Gitblit v1.9.3