From 54cdbd70fb672fd3ef4622fda1ce8179f8ac0798 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 23 九月 2026 18:08:04 +0800
Subject: [PATCH] fix: 供应商往来金额计算修改

---
 src/views/procurementManagement/paymentLedger/index.vue |   64 ++++++++++++-------------------
 1 files changed, 25 insertions(+), 39 deletions(-)

diff --git a/src/views/procurementManagement/paymentLedger/index.vue b/src/views/procurementManagement/paymentLedger/index.vue
index 19816a4..c6df372 100644
--- a/src/views/procurementManagement/paymentLedger/index.vue
+++ b/src/views/procurementManagement/paymentLedger/index.vue
@@ -79,7 +79,7 @@
                     @pagination="sonPaginationSearch">
             <template #payableAmountSlot="{ row }">
               <el-text type="danger">
-                {{ formatDecimal(row.unshippedAmount) }}
+                {{ formatAmount(row.unshippedAmount) }}
               </el-text>
             </template>
           </PIMTable>
@@ -97,7 +97,12 @@
     paymentRecordList,
   } from "@/api/procurementManagement/paymentLedger.js";
   import Pagination from "../../../components/PIMTable/Pagination.vue";
-  import { tableAmountFormatter, formatDecimal, buildAmountSummaryFormat } from "@/utils/numberFormat";
+
+  const AMOUNT_SCALE = 2;
+  const formatAmount = value => {
+    const num = Number(value);
+    return Number.isNaN(num) ? "0.00" : num.toFixed(AMOUNT_SCALE);
+  };
 
   const tableData = ref([]);
   const tableLoading = ref(false);
@@ -141,13 +146,13 @@
       label: "鍚堝悓閲戦(鍏�)",
       prop: "contractAmount",
       width: 200,
-      formatData: params => formatDecimal(params),
+      formatData: params => formatAmount(params),
     },
     {
       label: "宸插叆搴撻噾棰�(鍏�)",
       prop: "shippedAmount",
       width: 200,
-      formatData: params => formatDecimal(params),
+      formatData: params => formatAmount(params),
     },
     {
       label: "鏈叆搴撻噾棰�(鍏�)",
@@ -163,34 +168,23 @@
   const isShowSummarySon = ref(true);
   const { proxy } = getCurrentInstance();
 
+  // 鍚堣琛屾寜涓や綅灏忔暟鍥哄畾灞曠ず
+  const summarizeAmounts = (param, amountProps) => {
+    const sums = proxy.summarizeTable(param, amountProps);
+    param.columns.forEach((column, index) => {
+      if (amountProps.includes(column.property) && sums[index] !== "") {
+        sums[index] = formatAmount(sums[index]);
+      }
+    });
+    return sums;
+  };
   // 涓昏〃鍚堣鏂规硶
   const summarizeMainTable = param => {
-    return proxy.summarizeTable(
-      param,
-      ["contractAmounts", "shippedAmount", "unshippedAmount"],
-      buildAmountSummaryFormat(
-        ["contractAmounts", "shippedAmount", "unshippedAmount"],
-        {
-          ticketsNum: { noDecimal: true },
-          futureTickets: { noDecimal: true },
-        }
-      )
-    );
+    return summarizeAmounts(param, ["contractAmounts", "shippedAmount", "unshippedAmount"]);
   };
   // 瀛愯〃鍚堣鏂规硶
   const summarizeMainTable1 = param => {
-    let summarizeTable = proxy.summarizeTable(
-      param,
-      ["contractAmount", "shippedAmount", "unshippedAmount"],
-      buildAmountSummaryFormat(
-        ["contractAmount", "shippedAmount", "unshippedAmount"],
-        {
-          ticketsNum: { noDecimal: true },
-          futureTickets: { noDecimal: true },
-        }
-      )
-    );
-    return summarizeTable;
+    return summarizeAmounts(param, ["contractAmount", "shippedAmount", "unshippedAmount"]);
   };
   /** 鎼滅储鎸夐挳鎿嶄綔 */
   const handleQuery = () => {
@@ -202,14 +196,6 @@
     page.size = obj.limit;
     getList();
   };
-  // 灏嗘湭鍏ュ簱閲戦骞跺叆宸插叆搴撻噾棰濓紝鏈叆搴撻噾棰濈疆0
-  const mergeUnshippedAmount = row => {
-    if (row && row.unshippedAmount) {
-      row.shippedAmount = (Number(row.shippedAmount) || 0) + (Number(row.unshippedAmount) || 0);
-      row.unshippedAmount = 0;
-    }
-    return row;
-  };
   const getList = () => {
     tableLoading.value = true;
     paymentLedgerList({
@@ -218,7 +204,7 @@
     }).then(res => {
       let result = res.data;
       tableLoading.value = false;
-      tableData.value = (result.records || []).map(mergeUnshippedAmount);
+      tableData.value = result.records || [];
       total.value = result.total || 0;
       if (tableData.value.length > 0) {
         currentSupplierId.value = tableData.value[0].supplierId;
@@ -239,11 +225,11 @@
         tableLoadingSon.value = false;
         let result = res.data;
         if (Array.isArray(result)) {
-          tableDataSon.value = result.map(mergeUnshippedAmount);
+          tableDataSon.value = result;
           sonPage.total = result.length;
           handlePagination({ page: sonPage.current, limit: sonPage.size });
         } else {
-          originalTableDataSon.value = (result.records || []).map(mergeUnshippedAmount);
+          originalTableDataSon.value = result.records || [];
           sonPage.total = result.total || 0;
         }
       })
@@ -268,7 +254,7 @@
     sonPage.size = pagination.limit;
     getPaymenRecordtList(currentSupplierId.value);
   };
-  const formattedNumber = tableAmountFormatter;
+  const formattedNumber = (row, column, cellValue) => formatAmount(cellValue);
   getList();
 </script>
 

--
Gitblit v1.9.3