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/procurementLedger/index.vue |  100 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 67 insertions(+), 33 deletions(-)

diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 4515a24..575b6e7 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -99,15 +99,19 @@
         <el-table-column
           label="閿�鍞悎鍚屽彿"
           prop="salesContractNo"
-          width="200"
           show-overflow-tooltip
         />
         <el-table-column
           label="渚涘簲鍟嗗悕绉�"
-          width="240"
           prop="supplierName"
           show-overflow-tooltip
         />
+				<el-table-column
+					label="绛捐鏃ユ湡"
+					prop="executionDate"
+					width="100"
+					show-overflow-tooltip
+				/>
         <el-table-column
           label="浠樻鏂瑰紡"
           width="100"
@@ -124,7 +128,7 @@
         <el-table-column
           label="褰曞叆浜�"
           prop="recorderName"
-           width="100"
+           width="120"
           show-overflow-tooltip
         />
         <el-table-column
@@ -136,7 +140,7 @@
         <el-table-column
           fixed="right"
           label="鎿嶄綔"
-          min-width="150"
+          width="180"
           align="center"
         >
           <template #default="scope">
@@ -154,6 +158,13 @@
               @click="showQRCode(scope.row)"
               >鐢熸垚浜岀淮鐮�</el-button
             >
+            <el-button
+              link
+              type="primary"
+              size="small"
+              @click="downLoadFile(scope.row)"
+              >闄勪欢</el-button
+            >
 
           </template>
         </el-table-column>
@@ -169,6 +180,7 @@
     </div>
     <el-dialog
       v-model="dialogFormVisible"
+			draggable
       :title="operationType === 'add' ? '鏂板閲囪喘鍙拌处椤甸潰' : '缂栬緫閲囪喘鍙拌处椤甸潰'"
       width="70%"
       @close="closeDia"
@@ -195,8 +207,8 @@
               <el-select
                 v-model="form.salesLedgerId"
                 placeholder="璇烽�夋嫨"
+								filterable
                 clearable
-                @change="salesLedgerChange"
               >
                 <el-option
                   v-for="item in salesContractList"
@@ -214,6 +226,7 @@
               <el-select
                 v-model="form.supplierId"
                 placeholder="璇烽�夋嫨"
+								filterable
                 clearable
               >
                 <el-option
@@ -398,6 +411,7 @@
     </el-dialog>
     <el-dialog
       v-model="productFormVisible"
+			draggable
       :title="productOperationType === 'add' ? '鏂板浜у搧' : '缂栬緫浜у搧'"
       width="40%"
       @close="closeProductDia"
@@ -463,7 +477,9 @@
 								@change="mathNum"
 							>
 								<el-option label="1" value="1" />
+								<el-option label="3" value="3" />
 								<el-option label="6" value="6" />
+								<el-option label="9" value="9" />
 								<el-option label="13" value="13" />
 							</el-select>
 						</el-form-item>
@@ -474,7 +490,7 @@
             <el-form-item label="鍚◣鍗曚环(鍏�)锛�" prop="taxInclusiveUnitPrice">
               <el-input-number
                 v-model="productForm.taxInclusiveUnitPrice"
-                :precision="2"
+                :precision="3"
                 :step="0.1"
                 clearable
                 style="width: 100%"
@@ -487,7 +503,7 @@
 							<el-input-number
 								:step="0.1"
 								clearable
-								:precision="2"
+								:precision="3"
 								style="width: 100%"
 								v-model="productForm.quantity"
 								placeholder="璇疯緭鍏�"
@@ -501,7 +517,7 @@
             <el-form-item label="鍚◣鎬讳环(鍏�)锛�" prop="taxInclusiveTotalPrice">
               <el-input-number
                 v-model="productForm.taxInclusiveTotalPrice"
-                :precision="2"
+                :precision="3"
                 :step="0.1"
                 clearable
                 style="width: 100%"
@@ -538,7 +554,7 @@
 						<el-form-item label="搴撳瓨棰勮鏁伴噺锛�" prop="warnNum">
 							<el-input-number
 								v-model="productForm.warnNum"
-								:precision="2"
+								:precision="3"
 								:step="0.1"
 								clearable
 								style="width: 100%"
@@ -622,7 +638,7 @@
             <el-form-item label="鍚堝悓閲戦(鍏�)锛�" prop="contractAmount">
               <el-input-number
                 v-model="scanAddForm.contractAmount"
-                :precision="2"
+                :precision="3"
                 :step="0.1"
                 clearable
                 style="width: 100%"
@@ -755,6 +771,7 @@
         </div>
       </template>
     </el-dialog>
+		<FileList ref="fileListRef" />
   </div>
 </template>
 
@@ -765,6 +782,7 @@
 import { Search } from "@element-plus/icons-vue";
 import { ElMessageBox } from "element-plus";
 import { userListNoPage } from "@/api/system/user.js";
+import FileList from "./fileList.vue";
 import {
   getSalesLedgerWithProducts,
   addOrUpdateSalesLedgerProduct,
@@ -804,6 +822,7 @@
 import useUserStore from "@/store/modules/user";
 import { modelList, productTreeList } from "@/api/basicData/product.js";
 import dayjs from "dayjs";
+import { getCurrentDate, truncate } from "@/utils/index.js";
 
 const userStore = useUserStore();
 
@@ -911,7 +930,7 @@
 };
 
 const formattedNumber = (row, column, cellValue) => {
-  return parseFloat(cellValue).toFixed(2);
+  return truncate(parseFloat(cellValue), 3);
 };
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -1021,6 +1040,11 @@
   });
   form.value.recorderId = userStore.id;
   form.value.entryDate = getCurrentDate();
+  if (type === "add") {
+    // 鏂板鏃惰缃粯璁ゅ��
+    form.value.paymentMethod = "鐢垫眹"; // 浠樻鏂瑰紡榛樿涓虹數姹�
+    form.value.executionDate = getCurrentDate(); // 绛捐鏃ユ湡榛樿涓哄綋澶�
+  }
   if (type === "edit") {
     currentId.value = row.id;
     getPurchaseById({ id: row.id, type: 2 }).then((res) => {
@@ -1092,6 +1116,12 @@
       }
       form.value.tempFileIds = tempFileIds;
       form.value.type = 2;
+      
+      // 濡傛灉salesLedgerId涓虹┖锛屽垯涓嶄紶閫抯alesContractNo
+      if (!form.value.salesLedgerId) {
+        form.value.salesContractNo = ''
+      }
+      
       addOrEditPurchase(form.value).then((res) => {
         proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
         closeDia();
@@ -1113,12 +1143,17 @@
   proxy.resetForm("productFormRef");
   if (type === "edit") {
     productForm.value = { ...row };
+  } else {
+    // 鏂板浜у搧鏃惰缃粯璁ゅ��
+    productForm.value.taxRate = "13"; // 绋庣巼榛樿涓�13%
+    productForm.value.invoiceType = "澧炰笓绁�"; // 鍙戠エ绫诲瀷榛樿涓哄涓撶エ
+    productForm.value.warnNum = 500; // 棰勮閲忛粯璁や负500
   }
   productFormVisible.value = true;
   getProductOptions();
 };
 const getProductOptions = () => {
-  productTreeList().then((res) => {
+  productTreeList({productName: '閲囪喘'}).then((res) => {
     productOptions.value = convertIdToValue(res);
   });
 };
@@ -1292,14 +1327,6 @@
       proxy.$modal.msg("宸插彇娑�");
     });
 };
-// 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD
-function getCurrentDate() {
-  const today = new Date();
-  const year = today.getFullYear();
-  const month = String(today.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮�
-  const day = String(today.getDate()).padStart(2, "0");
-  return `${year}-${month}-${day}`;
-}
 const mathNum = () => {
 	if (!productForm.value.taxRate) {
 		proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
@@ -1313,16 +1340,18 @@
   }
   // 鍚◣鎬讳环璁$畻
   productForm.value.taxInclusiveTotalPrice =
-    proxy.calculateTaxIncludeTotalPrice(
-      productForm.value.taxInclusiveUnitPrice,
-      productForm.value.quantity
+    truncate(
+      Number(productForm.value.taxInclusiveUnitPrice) * Number(productForm.value.quantity),
+      3
     );
   if (productForm.value.taxRate) {
     // 涓嶅惈绋庢�讳环璁$畻
+    const taxRate = Number(productForm.value.taxRate);
+    const taxRateDecimal = taxRate / 100;
     productForm.value.taxExclusiveTotalPrice =
-      proxy.calculateTaxExclusiveTotalPrice(
-        productForm.value.taxInclusiveTotalPrice,
-        productForm.value.taxRate
+      truncate(
+        Number(productForm.value.taxInclusiveTotalPrice) / (1 + taxRateDecimal),
+        3
       );
   }
 };
@@ -1337,29 +1366,29 @@
     // 宸茬煡鍚◣鎬讳环鍜屾暟閲忥紝鍙嶇畻鍚◣鍗曚环
     if (productForm.value.quantity) {
       productForm.value.taxInclusiveUnitPrice = 
-        (Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.quantity)).toFixed(2);
+        truncate(Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.quantity), 3);
     }
     // 宸茬煡鍚◣鎬讳环鍜屽惈绋庡崟浠凤紝鍙嶇畻鏁伴噺
     else if (productForm.value.taxInclusiveUnitPrice) {
       productForm.value.quantity = 
-        (Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.taxInclusiveUnitPrice)).toFixed(2);
+        truncate(Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.taxInclusiveUnitPrice), 3);
     }
     // 鍙嶇畻涓嶅惈绋庢�讳环
     productForm.value.taxExclusiveTotalPrice = 
-      (Number(productForm.value.taxInclusiveTotalPrice) / (1 + taxRate / 100)).toFixed(2);
+      truncate(Number(productForm.value.taxInclusiveTotalPrice) / (1 + taxRate / 100), 3);
   } else if (field === 'taxExclusiveTotalPrice') {
     // 鍙嶇畻鍚◣鎬讳环
     productForm.value.taxInclusiveTotalPrice = 
-      (Number(productForm.value.taxExclusiveTotalPrice) * (1 + taxRate / 100)).toFixed(2);
+      truncate(Number(productForm.value.taxExclusiveTotalPrice) * (1 + taxRate / 100), 3);
     // 宸茬煡鏁伴噺锛屽弽绠楀惈绋庡崟浠�
     if (productForm.value.quantity) {
       productForm.value.taxInclusiveUnitPrice = 
-        (Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.quantity)).toFixed(2);
+        truncate(Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.quantity), 3);
     }
     // 宸茬煡鍚◣鍗曚环锛屽弽绠楁暟閲�
     else if (productForm.value.taxInclusiveUnitPrice) {
       productForm.value.quantity = 
-        (Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.taxInclusiveUnitPrice)).toFixed(2);
+        truncate(Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.taxInclusiveUnitPrice), 3);
     }
   }
 };
@@ -1381,6 +1410,11 @@
     productData.value = data;
   }
 };
+
+const fileListRef = ref(null)
+const downLoadFile = (row) => {
+	fileListRef.value.open(row.salesLedgerFiles)
+}
 
 // 鏄剧ず浜岀淮鐮�
 const showQRCode = async (row) => {
@@ -1568,4 +1602,4 @@
 });
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss"></style>
\ No newline at end of file

--
Gitblit v1.9.3