From 8b0476cb0cbd4baa4ab1214f4f9481bafe0a7db6 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 21 十月 2026 17:35:07 +0800
Subject: [PATCH] feat(erp): 付款单合计付款支持手动修改

---
 src/views/erp/finance/payment/data.ts               |    3 ++-
 src/views/erp/finance/payment/modules/form.vue      |    9 +++++++++
 src/views/erp/finance/payment/modules/item-form.vue |    9 +++++++++
 3 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/src/views/erp/finance/payment/data.ts b/src/views/erp/finance/payment/data.ts
index 835f1dc..eab3d11 100644
--- a/src/views/erp/finance/payment/data.ts
+++ b/src/views/erp/finance/payment/data.ts
@@ -168,7 +168,8 @@
         placeholder: '鍚堣浠樻',
         precision: 2,
         formatter: erpPriceInputFormatter,
-        disabled: true,
+        // 鐢变粯娆炬槑缁嗚嚜鍔ㄨ绠楋紝涔熷厑璁哥敤鎴锋寜瀹為檯鎯呭喌鎵嬪姩淇敼
+        disabled: formType === 'detail',
       },
     },
     {
diff --git a/src/views/erp/finance/payment/modules/form.vue b/src/views/erp/finance/payment/modules/form.vue
index a37cb41..ea9c530 100644
--- a/src/views/erp/finance/payment/modules/form.vue
+++ b/src/views/erp/finance/payment/modules/form.vue
@@ -73,6 +73,15 @@
         formData.value.invoiceId = values.invoiceId;
         handleInvoiceChange(values.invoiceId);
       }
+      // 鍚堣浠樻鐢辨槑缁嗚嚜鍔ㄨ绠楋紝涔熷厑璁哥敤鎴锋墜鍔ㄤ慨鏀癸紱淇敼鍚庨噸鏂拌绠楀疄闄呬粯娆�
+      if (changedFields.includes('totalPrice')) {
+        formData.value.totalPrice = values.totalPrice ?? 0;
+        formData.value.paymentPrice =
+          formData.value.totalPrice - (values.discountPrice || 0);
+        formApi.setValues({
+          paymentPrice: formData.value.paymentPrice,
+        });
+      }
       // 鐩殑锛氬悓姝ュ埌 item-form 缁勪欢锛岃Е鍙戞暣浣撶殑浠锋牸璁$畻
       if (changedFields.includes('discountPrice')) {
         formData.value.discountPrice = values.discountPrice;
diff --git a/src/views/erp/finance/payment/modules/item-form.vue b/src/views/erp/finance/payment/modules/item-form.vue
index c582780..590c656 100644
--- a/src/views/erp/finance/payment/modules/item-form.vue
+++ b/src/views/erp/finance/payment/modules/item-form.vue
@@ -51,6 +51,9 @@
 
 const tableData = ref<ErpFinancePaymentApi.FinancePaymentItem[]>([]); // 琛ㄦ牸鏁版嵁
 
+/** 鍥炴樉鐖剁粍浠朵紶鍏ョ殑鏄庣粏鏃惰烦杩囨�婚閲嶇畻锛岄伩鍏嶈鐩栫敤鎴锋墜鍔ㄤ慨鏀圭殑鍚堣浠樻 */
+const skipTotalCalc = ref(false);
+
 /** 宸叉牴鎹鏉ョエ鐢熸垚鐨勬槑缁嗭紝閬垮厤閲嶅鐢熸垚 */
 const generatedInvoiceId = ref<number | undefined>();
 
@@ -100,11 +103,14 @@
     if (!items) {
       return;
     }
+    // 鐖剁粍浠跺洖鏄炬槑缁嗘椂鍙埛鏂拌〃鏍硷紝涓嶉噸绠楁�婚锛堝悎璁′粯娆惧厑璁告墜鍔ㄤ慨鏀癸級
+    skipTotalCalc.value = true;
     tableData.value = [...items];
     // 缂栬緫鍥炴樉鏃讹紝鏍囪宸叉牴鎹綋鍓嶆潵绁ㄧ敓鎴愯繃锛岄伩鍏嶉噸澶嶇敓鎴�
     generatedInvoiceId.value = props.invoice?.id;
     await nextTick(); // 鐗规畩锛氫繚璇� gridApi 宸茬粡鍒濆鍖�
     await gridApi.grid.reloadData(tableData.value);
+    skipTotalCalc.value = false;
   },
   {
     immediate: true,
@@ -146,6 +152,9 @@
 watch(
   () => [tableData.value, props.discountPrice],
   () => {
+    if (skipTotalCalc.value) {
+      return;
+    }
     if (!tableData.value || tableData.value.length === 0) {
       return;
     }

--
Gitblit v1.9.3