From f9e6eb6fc2c2e0c2a2b17238b817fcbfcb6bab56 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 16:38:45 +0800
Subject: [PATCH] feat(erp): 添加采购来票管理和付款关联功能

---
 src/views/erp/finance/payment/data.ts |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/src/views/erp/finance/payment/data.ts b/src/views/erp/finance/payment/data.ts
index 22aa220..85cf9ad 100644
--- a/src/views/erp/finance/payment/data.ts
+++ b/src/views/erp/finance/payment/data.ts
@@ -6,6 +6,7 @@
 import { erpPriceInputFormatter } from '@vben/utils';
 
 import { getAccountSimpleList } from '#/api/erp/finance/account';
+import { getPurchaseInvoiceSimpleList } from '#/api/erp/purchase/invoice';
 import { getSupplierSimpleList } from '#/api/srm/supplier';
 import { getSimpleUserList } from '#/api/system/user';
 import { getRangePickerDefaultProps } from '#/utils';
@@ -50,7 +51,7 @@
       fieldName: 'supplierId',
       label: '渚涘簲鍟�',
       component: 'ApiSelect',
-      componentProps: {
+      componentProps: (_values, form) => ({
         disabled: formType === 'detail',
         placeholder: '璇烽�夋嫨渚涘簲鍟�',
         allowClear: true,
@@ -58,8 +59,54 @@
         api: getSupplierSimpleList,
         labelField: 'name',
         valueField: 'id',
-      },
+        onChange: () => {
+          // 渚涘簲鍟嗗彉鍖栧悗锛屾竻绌哄凡閫夌殑鍏宠仈鏉ョエ
+          form.setFieldValue('invoiceId', undefined);
+        },
+      }),
       rules: 'required',
+    },
+    {
+      fieldName: 'invoiceId',
+      label: '鍏宠仈鏉ョエ',
+      component: formType === 'detail' ? 'Input' : 'Select',
+      componentProps:
+        formType === 'detail'
+          ? {
+              disabled: true,
+              placeholder: '--',
+            }
+          : undefined,
+      rules: 'required',
+      dependencies: {
+        // 渚濊禆 invoiceId 鑷韩锛岀‘淇濈紪杈戝洖鏄炬椂閲嶆柊鍔犺浇閫夐」浠ュ尮閰嶅凡閫夋潵绁�
+        triggerFields: ['supplierId', 'invoiceId'],
+        disabled: (values) => formType === 'detail' || !values.supplierId,
+        async componentProps(values) {
+          if (formType === 'detail') {
+            return {};
+          }
+          if (!values.supplierId) {
+            return {
+              options: [],
+              placeholder: '璇峰厛閫夋嫨渚涘簲鍟�',
+            };
+          }
+          const invoices = await getPurchaseInvoiceSimpleList(
+            values.supplierId,
+          );
+          return {
+            options: invoices.map((item) => {
+              const remain = item.remainingInvoicePrice ?? item.price ?? 0;
+              return {
+                label: `${item.no} / ${item.invoiceNo ?? '-'} / 楼${item.price ?? 0} / 鍓╀綑鍙粯 楼${remain.toFixed(2)}`,
+                value: item.id,
+              };
+            }),
+            placeholder: '璇烽�夋嫨鍏宠仈鏉ョエ',
+          } as any;
+        },
+      },
     },
     {
       fieldName: 'financeUserId',
@@ -335,6 +382,12 @@
       minWidth: 120,
     },
     {
+      field: 'invoice',
+      title: '鍏宠仈鏉ョエ',
+      minWidth: 200,
+      slots: { default: 'invoice' },
+    },
+    {
       field: 'paymentTime',
       title: '浠樻鏃堕棿',
       width: 160,

--
Gitblit v1.9.3