From 9f3bc47b98cbc51df7cfcea94d4aa0c35f40cbc5 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 13 十月 2026 14:09:06 +0800
Subject: [PATCH] feat: 添加数字格式化工具,支持去掉小数末尾多余的 0 和四舍五入功能

---
 src/views/salesManagement/receiptPaymentLedger/index.vue |   36 ++++++++++++++++++++++++------------
 1 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue
index 1278d72..2270a24 100644
--- a/src/views/salesManagement/receiptPaymentLedger/index.vue
+++ b/src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -50,9 +50,9 @@
                              prop="receiptableAmount"
                              show-overflow-tooltip
                              width="200">
-              <template #default="{ row, column }">
+              <template #default="{ row }">
                 <el-text type="danger">
-                  {{ formattedNumber(row, column, row.receiptableAmount) }}
+                  {{ formatReceivable(row.receiptableAmount) }}
                 </el-text>
               </template>
             </el-table-column>
@@ -100,9 +100,9 @@
                              prop="receiptableAmount"
                              show-overflow-tooltip
                              width="200">
-              <template #default="{ row, column }">
+              <template #default="{ row }">
                 <el-text type="danger">
-                  {{ formattedNumber(row, column, row.receiptableAmount) }}
+                  {{ formatReceivable(row.receiptableAmount) }}
                 </el-text>
               </template>
             </el-table-column>
@@ -156,6 +156,7 @@
     saveReceiptPayment,
   } from "@/api/salesManagement/indicatorStats.js";
   import Pagination from "../../../components/PIMTable/Pagination.vue";
+  import { trimZeros } from "@/utils/formatNumber.js";
   const { proxy } = getCurrentInstance();
   const tableData = ref([]);
   const receiptRecord = ref([]);
@@ -184,7 +185,7 @@
   const currentRow = ref({});
   const receiptFormRef = ref(null);
   const receiptForm = reactive({ paymentDate:"", paymentAmount:undefined, paymentMethod:"", remark:"" });
-  const validatePaymentAmount = (_,v,cb) => { if(!v) return cb(new Error("璇疯緭鍏ュ洖娆鹃噾棰�")); const m=Math.max(0,(Number(currentRow.value.receiptableAmount)||0)-(Number(currentRow.value.receiptPaymentAmount)||0)); if(v>m) return cb(new Error(`鍥炴閲戦涓嶈兘瓒呰繃鍙洖娆句綑棰� ${m.toFixed(6)} 鍏僠)); cb(); };
+  const validatePaymentAmount = (_,v,cb) => { if(!v) return cb(new Error("璇疯緭鍏ュ洖娆鹃噾棰�")); const m=Math.max(0,(Number(currentRow.value.receiptableAmount)||0)-(Number(currentRow.value.receiptPaymentAmount)||0)); if(v>m) return cb(new Error(`鍥炴閲戦涓嶈兘瓒呰繃鍙洖娆句綑棰� ${trimZeros(m, 6)} 鍏僠)); cb(); };
   const receiptRules = { paymentDate:[{required:true,message:"璇烽�夋嫨鍥炴鏃ユ湡",trigger:"change"}], paymentAmount:[{required:true,validator:validatePaymentAmount,trigger:"blur"}], paymentMethod:[{required:true,message:"璇烽�夋嫨鍥炴鏂瑰紡",trigger:"change"}] };
   const openReceiptDialog = r => { currentRow.value=r; receiptForm.paymentDate=""; receiptForm.paymentAmount=undefined; receiptForm.paymentMethod=""; receiptForm.remark=""; receiptDialogVisible.value=true; };
   const closeReceiptDialog = () => { receiptFormRef.value?.resetFields(); receiptDialogVisible.value=false; };
@@ -214,7 +215,18 @@
     });
   };
   const formattedNumber = (row, column, cellValue) => {
-    return cellValue ? parseFloat(cellValue).toFixed(6) : "0.000000";
+    return trimZeros(cellValue, 6);
+  };
+  // 搴旀敹閲戦 = 宸插嚭搴撻噾棰� 鈭� 宸查��璐ф 鈭� 宸插洖娆鹃噾棰濄��
+  // 鍑哄簱閲戦鐢� 6 浣嶅皬鏁扮殑鍚◣鍗曚环绱姞鑰屾潵锛屼細娈嬬暀銆屽垎銆嶄互涓嬬殑闆跺ご锛堝 0.0045銆�0.004锛夛紝
+  // 鑰屽洖娆炬槸鎸夊垎褰曞叆鐨勬暣鏁伴噾棰濓紝鐩稿噺鍚庡氨浼氬嚭鐜拌繖浜涙棤鎰忎箟鐨勫熬宸��
+  // 搴旀敹閲戦鏈韩鍙簿纭埌鍒嗭紝鍒嗕互涓嬬殑灏惧樊涓嶈鍏ワ紝缁熶竴鎸� 0 灞曠ず锛堝悗绔� SQL 涔熷仛浜嗗悓鏍峰鐞嗭級銆�
+  const formatReceivable = value => {
+    const num = Number(value);
+    if (!Number.isFinite(num) || Math.abs(num) < 0.01) {
+      return "0";
+    }
+    return trimZeros(num, 6);
   };
   // 涓昏〃鍚堣鏂规硶
   const summarizeMainTable = param => {
@@ -222,9 +234,9 @@
       param,
       ["invoiceTotal", "receiptPaymentAmount", "unReceiptPaymentAmount"],
       {
-        invoiceTotal: { decimalPlaces: 6 },
-        receiptPaymentAmount: { decimalPlaces: 6 },
-        unReceiptPaymentAmount: { decimalPlaces: 6 },
+        invoiceTotal: { decimalPlaces: 6, trimZeros: true },
+        receiptPaymentAmount: { decimalPlaces: 6, trimZeros: true },
+        unReceiptPaymentAmount: { decimalPlaces: 6, trimZeros: true },
         ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
         futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
       }
@@ -236,9 +248,9 @@
       param,
       ["contractAmount", "receiptPaymentAmount", "receiptableAmount"],
       {
-        contractAmount: { decimalPlaces: 6 },
-        receiptPaymentAmount: { decimalPlaces: 6 },
-        receiptableAmount: { decimalPlaces: 6 },
+        contractAmount: { decimalPlaces: 6, trimZeros: true },
+        receiptPaymentAmount: { decimalPlaces: 6, trimZeros: true },
+        receiptableAmount: { formatter: formatReceivable },
         ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
         futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
       }

--
Gitblit v1.9.3