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