From 7f12ce3148e7f2a1e2cf2e238c7b4800bf38e0eb Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 二月 2026 10:17:27 +0800
Subject: [PATCH] 进销存升级app: 1.编辑来票台账时,修改来票数1为3后,未来票数由9变为6,并且还有提示请输入数据 2.供应商往来数据跟web端展示数据不符

---
 src/api/procurementManagement/paymentLedger.js                      |    5 +
 src/pages/procurementManagement/paymentEntry/index.vue              |    2 
 src/pages/procurementManagement/paymentLedger/index.vue             |    4 
 src/pages/procurementManagement/paymentLedger/detail.vue            |    2 
 src/pages/procurementManagement/procurementInvoiceLedger/detail.vue |  108 +++++++++++++++++++++++++++--------
 5 files changed, 90 insertions(+), 31 deletions(-)

diff --git a/src/api/procurementManagement/paymentLedger.js b/src/api/procurementManagement/paymentLedger.js
index 3e20b78..31aff29 100644
--- a/src/api/procurementManagement/paymentLedger.js
+++ b/src/api/procurementManagement/paymentLedger.js
@@ -4,7 +4,7 @@
 // 鍒嗛〉鏌ヨ
 export function paymentLedgerList(query) {
   return request({
-    url: "/purchase/paymentRegistration/paymentLedgerList",
+    url: "/purchase/paymentRegistration/supplierNameListPage",
     method: "get",
     params: query,
   });
@@ -13,7 +13,8 @@
 // 鍒嗛〉鏌ヨ
 export function paymentRecordList(supplierId) {
   return request({
-    url: "/purchase/paymentRegistration/getPaymentRecordList/" + supplierId,
+    url: "/purchase/paymentRegistration/supplierNameListPageDetails",
     method: "get",
+    params: supplierId,
   });
 }
diff --git a/src/pages/procurementManagement/paymentEntry/index.vue b/src/pages/procurementManagement/paymentEntry/index.vue
index 59c2df9..32bed95 100644
--- a/src/pages/procurementManagement/paymentEntry/index.vue
+++ b/src/pages/procurementManagement/paymentEntry/index.vue
@@ -162,7 +162,7 @@
   const getList = () => {
     showLoadingToast("鍔犺浇涓�...");
     tableLoading.value = true;
-    invoiceListPage({ ...searchForm.value, ...page.value })
+    invoiceListPage({ ...searchForm.value, ...page.value, approvalStatus: 3 })
       .then(res => {
         console.log(res.data);
         tableLoading.value = false;
diff --git a/src/pages/procurementManagement/paymentLedger/detail.vue b/src/pages/procurementManagement/paymentLedger/detail.vue
index 00ccf8b..33b2856 100644
--- a/src/pages/procurementManagement/paymentLedger/detail.vue
+++ b/src/pages/procurementManagement/paymentLedger/detail.vue
@@ -121,7 +121,7 @@
       return;
     }
     showLoadingToast("鍔犺浇涓�...");
-    paymentRecordList(supplierId.value)
+    paymentRecordList({supplierId: supplierId.value})
       .then(res => {
         tableData.value = res.data;
         closeToast();
diff --git a/src/pages/procurementManagement/paymentLedger/index.vue b/src/pages/procurementManagement/paymentLedger/index.vue
index f3e2771..8bd7c6e 100644
--- a/src/pages/procurementManagement/paymentLedger/index.vue
+++ b/src/pages/procurementManagement/paymentLedger/index.vue
@@ -44,12 +44,12 @@
           <up-divider></up-divider>
           <view class="item-details">
             <view class="detail-row">
-              <text class="detail-label">鍙戠エ閲戦(鍏�)</text>
+              <text class="detail-label">鍚堝悓閲戦(鍏�)</text>
               <text class="detail-value">{{ formattedNumber(item.invoiceAmount) }}</text>
             </view>
             <view class="detail-row">
               <text class="detail-label">浠樻閲戦(鍏�)</text>
-              <text class="detail-value">{{ formattedNumber(item.receiptPaymentAmount) }}</text>
+              <text class="detail-value">{{ formattedNumber(item.paymentAmount) }}</text>
             </view>
             <view class="detail-row">
               <text class="detail-label">搴斾粯閲戦(鍏�)</text>
diff --git a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
index a5c74f6..179e7e1 100644
--- a/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
+++ b/src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
@@ -55,7 +55,7 @@
                   placeholder="璇疯緭鍏�"
                   @blur="inputTicketsAmount" />
       </up-form-item>
-      <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} 鍏�</view>
+      <view class="tip-text">鏈潵绁ㄦ暟锛歿{ formatAmount(form.futureTickets) }} </view>
       <!-- 浣跨敤鍏叡搴曢儴鎸夐挳缁勪欢 -->
       <FooterButtons show
                      cancelText="鍙栨秷"
@@ -100,6 +100,7 @@
   const fileList = ref([]);
   const currentId = ref("");
   const temFutureTickets = ref(0);
+  const originalTicketsNum = ref(0); // 淇濆瓨鍘熷鏉ョエ鏁�
 
   // 琛ㄥ崟鏍¢獙瑙勫垯
   const rules = {
@@ -114,6 +115,12 @@
     uni.navigateBack();
   };
   const inputTicketsNum = () => {
+    // 澶勭悊绌哄�兼儏鍐�
+    if (!form.value.ticketsNum || form.value.ticketsNum === "") {
+      form.value.ticketsNum = 0;
+      return;
+    }
+    
     // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
     if (
       !form.value.taxInclusiveUnitPrice ||
@@ -125,23 +132,39 @@
       });
       return;
     }
-    if (Number(form.value.ticketsNum) > Number(temFutureTickets.value)) {
+    
+    const newTicketsNum = Number(form.value.ticketsNum) || 0;
+    // 璁$畻鎬诲彲鐢ㄧエ鏁帮細鍘熷鏈潵绁ㄦ暟 + 鍘熷鏉ョエ鏁�
+    const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
+    
+    // 楠岃瘉鏉ョエ鏁颁笉鑳藉ぇ浜庢�诲彲鐢ㄧエ鏁�
+    if (newTicketsNum > totalAvailableTickets) {
       uni.showToast({
-        title: "鏉ョエ鏁颁笉寰楀ぇ浜庢湭鏉ョエ鏁�",
+        title: "鏉ョエ鏁颁笉寰楀ぇ浜庢�诲彲鐢ㄧエ鏁�",
         icon: "none",
       });
-      form.value.ticketsNum = temFutureTickets.value;
+      form.value.ticketsNum = totalAvailableTickets;
+      // 閲嶆柊璁$畻鏈潵绁ㄦ暟
+      const futureTickets = totalAvailableTickets - totalAvailableTickets;
+      form.value.futureTickets = Number(futureTickets.toFixed(2));
+      form.value.ticketsAmount = Number((totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice)).toFixed(2));
+      return;
     }
 
     // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
     const ticketsAmount =
-      Number(form.value.ticketsNum) * Number(form.value.taxInclusiveUnitPrice);
-    const futureTickets =
-      Number(temFutureTickets.value) - Number(form.value.ticketsNum);
+      newTicketsNum * Number(form.value.taxInclusiveUnitPrice);
+    // 璁$畻鏈潵绁ㄦ暟锛氭�诲彲鐢ㄧエ鏁� - 鏂版潵绁ㄦ暟
+    const futureTickets = totalAvailableTickets - newTicketsNum;
     form.value.futureTickets = Number(futureTickets.toFixed(2));
     form.value.ticketsAmount = Number(ticketsAmount.toFixed(2));
   };
   const inputTicketsAmount = () => {
+    // 澶勭悊绌哄�兼儏鍐�
+    if (!form.value.ticketsAmount || form.value.ticketsAmount === "") {
+      form.value.ticketsAmount = 0;
+    }
+    
     // 纭繚鍚◣鍗曚环瀛樺湪涓斾笉涓洪浂
     if (
       !form.value.taxInclusiveUnitPrice ||
@@ -154,28 +177,34 @@
       return;
     }
 
-    if (
-      Number(form.value.ticketsAmount) >
-      Number(form.value.futureTickets * form.value.taxInclusiveUnitPrice)
-    ) {
+    const newTicketsAmount = Number(form.value.ticketsAmount) || 0;
+    // 璁$畻鎬诲彲鐢ㄩ噾棰濓細鍘熷鏈潵绁ㄦ暟 + 鍘熷鏉ョエ鏁�
+    const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
+    const totalAvailableAmount = totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice);
+
+    if (newTicketsAmount > totalAvailableAmount) {
       uni.showToast({
         title: "鏈鏉ョエ閲戦涓嶅緱澶т簬鎬婚噾棰�",
         icon: "none",
       });
-      form.value.ticketsAmount = (
-        form.value.futureTickets * form.value.taxInclusiveUnitPrice
-      ).toFixed(2);
+      form.value.ticketsAmount = totalAvailableAmount.toFixed(2);
       const ticketsNum =
         Number(form.value.ticketsAmount) /
         Number(form.value.taxInclusiveUnitPrice);
       form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+      // 鏇存柊鏈潵绁ㄦ暟
+      const futureTickets = totalAvailableTickets - form.value.ticketsNum;
+      form.value.futureTickets = Number(futureTickets.toFixed(2));
       return;
     }
 
     // 纭繚鎵�鏈夋暟鍊奸兘杞崲涓烘暟瀛楃被鍨嬭繘琛岃绠�
     const ticketsNum =
-      Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
+      newTicketsAmount / Number(form.value.taxInclusiveUnitPrice);
     form.value.ticketsNum = Number(ticketsNum.toFixed(2));
+    // 鏇存柊鏈潵绁ㄦ暟
+    const futureTickets = totalAvailableTickets - form.value.ticketsNum;
+    form.value.futureTickets = Number(futureTickets.toFixed(2));
   };
   const formatAmount = val => {
     if (val === undefined || val === null || val === "") return "0.00";
@@ -197,6 +226,7 @@
       const data = res?.data || res;
       form.value = { ...data };
       temFutureTickets.value = data.futureTickets;
+      originalTicketsNum.value = Number(data.ticketsNum) || 0; // 淇濆瓨鍘熷鏉ョエ鏁�
       fileList.value = data?.fileList || [];
       if (!form.value.invoicePerson) {
         form.value.invoicePerson = userStore.nickName;
@@ -234,17 +264,45 @@
   };
 
   // 琛ㄥ崟鎻愪氦
-  const onSubmit = () => {
-    formRef.value
-      .validate()
-      .then(() => {
-        // 琛ㄥ崟楠岃瘉閫氳繃锛屾彁浜よ〃鍗�
+  const onSubmit = async () => {
+    if (!formRef.value) {
+      console.log("琛ㄥ崟寮曠敤涓嶅瓨鍦�");
+      return;
+    }
+    
+    try {
+      // 鍏堣皟鐢� validate 鏂规硶
+      const validateResult = formRef.value.validate();
+      
+      // 濡傛灉 validate 杩斿洖 undefined 鎴� null锛岀洿鎺ユ彁浜�
+      if (validateResult === undefined || validateResult === null) {
         submitForm();
-      })
-      .catch(error => {
-        // 琛ㄥ崟楠岃瘉澶辫触
-        console.log("琛ㄥ崟楠岃瘉澶辫触", error);
-      });
+        return;
+      }
+      
+      // 濡傛灉杩斿洖 Promise锛屼娇鐢� await 鍜� catch
+      if (validateResult && typeof validateResult.then === 'function') {
+        const valid = await validateResult.catch(() => false);
+        if (valid) {
+          // 琛ㄥ崟楠岃瘉閫氳繃锛屾彁浜よ〃鍗�
+          submitForm();
+        } else {
+          // 琛ㄥ崟楠岃瘉澶辫触
+          console.log("琛ㄥ崟楠岃瘉澶辫触");
+        }
+      } else {
+        // 濡傛灉杩斿洖甯冨皵鍊硷紝鐩存帴鍒ゆ柇
+        if (validateResult) {
+          submitForm();
+        } else {
+          console.log("琛ㄥ崟楠岃瘉澶辫触");
+        }
+      }
+    } catch (error) {
+      // 濡傛灉 validate 鏂规硶涓嶅瓨鍦ㄦ垨鎶涘嚭閿欒锛岀洿鎺ユ彁浜�
+      console.log("琛ㄥ崟楠岃瘉澶辫触", error);
+      submitForm();
+    }
   };
   const purchaseLedgerId = ref("");
   const productModelId = ref({});

--
Gitblit v1.9.3