From 3ab45f295fb26c7794b4829976f3fb20c68a012e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 22 一月 2026 10:33:41 +0800
Subject: [PATCH] 新疆海川开心 1.采购模块的计算都改为保留三位小数并且不四舍五入

---
 src/views/procurementManagement/invoiceEntry/components/Modal.vue |  128 ++++++++++++++++++++++++------------------
 1 files changed, 74 insertions(+), 54 deletions(-)

diff --git a/src/views/procurementManagement/invoiceEntry/components/Modal.vue b/src/views/procurementManagement/invoiceEntry/components/Modal.vue
index 6e9346c..ba31332 100644
--- a/src/views/procurementManagement/invoiceEntry/components/Modal.vue
+++ b/src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -1,5 +1,5 @@
 <template>
-	<el-dialog :title="modalOptions.title" v-model="visible" width="70%">
+	<el-dialog :title="modalOptions.title" v-model="visible" width="70%" draggable>
 		<el-form
 			ref="formRef"
 			:model="form"
@@ -149,7 +149,7 @@
 				<el-table-column label="鏈寮�绁ㄦ暟" prop="ticketsNum" width="180">
 					<template #default="scope">
 						<el-input-number :step="0.1" :min="0" style="width: 100%"
-														 :precision="2"
+														 :precision="3"
 														 v-model="scope.row.ticketsNum"
 														 @change="invoiceNumBlur(scope.row)"
 						/>
@@ -162,7 +162,7 @@
 				>
 					<template #default="scope">
 						<el-input-number :step="0.01" :min="0" style="width: 100%"
-														 :precision="2"
+														 :precision="3"
 														 v-model="scope.row.ticketsAmount"
 														 @change="invoiceAmountBlur(scope.row)"
 						/>
@@ -214,6 +214,7 @@
 import { getToken } from "@/utils/auth";
 import useUserStore from "@/store/modules/user";
 import dayjs from "dayjs";
+import { truncate } from "@/utils/index.js";
 
 defineOptions({
 	name: "鏉ョエ鐧昏妯℃�佹",
@@ -303,7 +304,7 @@
 		prop: "taxInclusiveUnitPrice",
 		width: 150,
 		formatData: (val) => {
-			return val ? parseFloat(val).toFixed(2) : 0;
+			return val ? truncate(parseFloat(val), 3) : 0;
 		},
 	},
 	{
@@ -311,7 +312,7 @@
 		prop: "taxInclusiveTotalPrice",
 		width: 150,
 		formatData: (val) => {
-			return parseFloat(val).toFixed(2) ?? 0;
+			return val ? truncate(parseFloat(val), 3) : 0;
 		},
 	},
 	{
@@ -319,7 +320,7 @@
 		prop: "taxExclusiveTotalPrice",
 		width: 150,
 		formatData: (val) => {
-			return parseFloat(val).toFixed(2) ?? 0;
+			return val ? truncate(parseFloat(val), 3) : 0;
 		},
 	},
 	{
@@ -351,10 +352,10 @@
 ];
 const formattedNumber = (row, column, cellValue) => {
 	if (cellValue == 0) {
-		return parseFloat(cellValue).toFixed(2);
+		return truncate(parseFloat(cellValue), 3);
 	}
 	if (cellValue) {
-		return parseFloat(cellValue).toFixed(2);
+		return truncate(parseFloat(cellValue), 3);
 	} else {
 		return cellValue;
 	}
@@ -408,7 +409,6 @@
 			
 			// 璁剧疆琛ㄥ崟鏁版嵁锛堜娇鐢ㄧ涓�涓悎鍚岀殑鍩烘湰淇℃伅锛岄噰璐悎鍚屽彿鐣欑┖锛�
 			form.purchaseLedgerNo = ""; // 閲囪喘鍚堝悓鍙风暀绌猴紝鍥犱负浼氬湪浜у搧琛ㄦ牸涓垎鍒樉绀�
-			form.invoiceAmount = 0;
 			form.invoiceNumber = "";
 			form.entryDate = dayjs().format("YYYY-MM-DD");
 			form.enterDate = dayjs().format("YYYY-MM-DD");
@@ -419,7 +419,27 @@
 			form.issUerId = userStore.id;
 			form.issUer = userStore.nickName;
 			
+			// 璁剧疆浜у搧鏁版嵁锛屽苟鍒濆鍖栧紑绁ㄦ暟閲忓拰閲戦
+			allProductData.forEach(item => {
+				// 鏈寮�绁ㄦ暟榛樿涓烘�绘暟閲�
+				item.ticketsNum = Number(item.quantity || 0);
+				// 鏈寮�绁ㄩ噾棰濋粯璁や负鍚◣鎬讳环
+				item.ticketsAmount = Number(item.taxInclusiveTotalPrice || 0);
+				// 淇濆瓨鍘熷鏈潵绁ㄦ暟鍜岄噾棰濓紙鐢ㄤ簬璁$畻锛�
+				item.tempFutureTickets = Number(item.quantity || 0);
+				item.tempFutureTicketsAmount = Number(item.taxInclusiveTotalPrice || 0);
+				// 鏈潵绁ㄦ暟鍜岄噾棰濆垵濮嬩负0锛堝洜涓哄叏閮ㄥ紑绁級
+				item.futureTickets = 0;
+				item.futureTicketsAmount = 0;
+			});
+			
 			form.productData = allProductData;
+			
+			// 璁$畻鍙戠エ閲戦锛氭墍鏈変骇鍝佺殑鍚◣鎬讳环涔嬪拰
+			const totalAmount = allProductData.reduce((sum, item) => {
+				return sum + (Number(item.taxInclusiveTotalPrice) || 0);
+			}, 0);
+			form.invoiceAmount = truncate(totalAmount, 3);
 			
 			// 瀛樺偍閫変腑鐨勫悎鍚屾暟鎹�
 			selectedContracts.value = selectedRows;
@@ -461,11 +481,11 @@
 		return;
 	}
 	// 璁$畻鏈鏉ョエ閲戦
-	row.ticketsAmount = (row.ticketsNum * row.taxInclusiveUnitPrice).toFixed(2)
+	row.ticketsAmount = truncate(row.ticketsNum * row.taxInclusiveUnitPrice, 3)
 	// 璁$畻鏈潵绁ㄦ暟
-	row.futureTickets = (row.tempFutureTickets - row.ticketsNum).toFixed(2)
+	row.futureTickets = truncate(row.tempFutureTickets - row.ticketsNum, 3)
 	// 璁$畻鏈潵绁ㄩ噾棰�
-	row.futureTicketsAmount = (row.tempFutureTicketsAmount - row.ticketsAmount).toFixed(2)
+	row.futureTicketsAmount = truncate(row.tempFutureTicketsAmount - row.ticketsAmount, 3)
 	calculateinvoiceAmount();
 };
 
@@ -481,12 +501,12 @@
 	}
 	// 璁$畻鏈鏉ョエ鏁�
 	row.ticketsNum = Number(
-		(row.ticketsAmount / row.taxInclusiveUnitPrice).toFixed(2)
+		truncate(row.ticketsAmount / row.taxInclusiveUnitPrice, 3)
 	);
 	// 璁$畻鏈潵绁ㄦ暟
-	row.futureTickets = (row.tempFutureTickets - row.ticketsNum).toFixed(2)
+	row.futureTickets = truncate(row.tempFutureTickets - row.ticketsNum, 3)
 	// 璁$畻鏈潵绁ㄩ噾棰�
-	row.futureTicketsAmount = (row.tempFutureTicketsAmount - row.ticketsAmount).toFixed(2)
+	row.futureTicketsAmount = truncate(row.tempFutureTicketsAmount - row.ticketsAmount, 3)
 	calculateinvoiceAmount();
 };
 
@@ -497,7 +517,7 @@
 			invoiceAmountTotal += Number(item.ticketsAmount);
 		}
 	});
-	form.invoiceAmount = invoiceAmountTotal.toFixed(2);
+	form.invoiceAmount = truncate(invoiceAmountTotal, 3);
 };
 
 const open = async (type, selectedRows) => {
@@ -586,45 +606,45 @@
 					proxy.$modal.msgError("鎵归噺鐧昏澶辫触");
 				});
 			} else {
-				// 鍗曚釜鍚堝悓鎻愪氦閫昏緫
-				const singleContract = selectedContracts.value[0];
-				const singleForm = {
-					// 鍩虹琛ㄥ崟鏁版嵁
-					invoiceNumber: form.invoiceNumber,
-					invoiceAmount: form.invoiceAmount,
-					entryDate: form.entryDate,
-					enterDate: form.enterDate,
-					issUerId: form.issUerId, // 褰曞叆浜篿d
-					issUer: form.issUer, // 褰曞叆浜�
-					tempFileIds: form.tempFileIds,
+					// 鍗曚釜鍚堝悓鎻愪氦閫昏緫 - 浠ユ暟缁勬牸寮忎紶閫�
+					const singleContract = selectedContracts.value[0];
+					const singleFormArray = [{
+						// 鍩虹琛ㄥ崟鏁版嵁
+						invoiceNumber: form.invoiceNumber,
+						invoiceAmount: form.invoiceAmount,
+						entryDate: form.entryDate,
+						enterDate: form.enterDate,
+						issUerId: form.issUerId, // 褰曞叆浜篿d
+						issUer: form.issUer, // 褰曞叆浜�
+						tempFileIds: form.tempFileIds,
+						
+						// 鍚堝悓瀹為檯淇℃伅
+						purchaseLedgerId: singleContract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负purchaseLedgerId
+						purchaseContractNumber: singleContract.purchaseContractNumber, // 浣跨敤瀹為檯鐨勯噰璐悎鍚屽彿
+						salesContractNo: singleContract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
+						supplierName: singleContract.supplierName, // 浣跨敤瀹為檯鐨勪緵搴斿晢鍚嶇О
+						projectName: singleContract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
+						
+						// 浜у搧鏁版嵁
+						productData: proxy.HaveJson(form.productData),
+						
+						// 鎵归噺鏍囪瘑
+						isBatch: false,
+						type: 4
+					}];
 					
-					// 鍚堝悓瀹為檯淇℃伅
-					purchaseLedgerId: singleContract.id, // 浣跨敤id浣滀负瀛楁鍚嶏紝鍊间负purchaseLedgerId
-					purchaseContractNumber: singleContract.purchaseContractNumber, // 浣跨敤瀹為檯鐨勯噰璐悎鍚屽彿
-					salesContractNo: singleContract.salesContractNo, // 浣跨敤瀹為檯鐨勯攢鍞悎鍚屽彿
-					supplierName: singleContract.supplierName, // 浣跨敤瀹為檯鐨勪緵搴斿晢鍚嶇О
-					projectName: singleContract.projectName, // 浣跨敤瀹為檯鐨勯」鐩悕绉�
-					
-					// 浜у搧鏁版嵁
-					productData: proxy.HaveJson(form.productData),
-					
-					// 鎵归噺鏍囪瘑
-					isBatch: false,
-					type: 4
-				};
-				
-				modalLoading.value = true;
-				addOrUpdateRegistration(singleForm).then((res) => {
-					modalLoading.value = false;
-					if (res.code === 200) {
-						proxy.$modal.msgSuccess("鐧昏鎴愬姛");
-						closeAndRefresh();
-					}
-				}).catch(() => {
-					modalLoading.value = false;
-					proxy.$modal.msgError("鐧昏澶辫触");
-				});
-			}
+					modalLoading.value = true;
+					addOrUpdateRegistration(singleFormArray).then((res) => {
+						modalLoading.value = false;
+						if (res.code === 200) {
+							proxy.$modal.msgSuccess("鐧昏鎴愬姛");
+							closeAndRefresh();
+						}
+					}).catch(() => {
+						modalLoading.value = false;
+						proxy.$modal.msgError("鐧昏澶辫触");
+					});
+				}
 		}
 	});
 };

--
Gitblit v1.9.3