From b401f28ff6adc15cfe733fabc4629a144cfb3548 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 22 八月 2026 19:16:40 +0800
Subject: [PATCH] fix: 发货数量精度计算修复
---
src/views/salesManagement/salesLedger/index.vue | 63 +++++++++++++++++++++----------
1 files changed, 42 insertions(+), 21 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 693c97b..c7e9df7 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -24,6 +24,18 @@
prefix-icon="Search"
@change="handleQuery" />
</el-form-item>
+ <el-form-item label="鍙戣揣鐘舵�侊細">
+ <el-select v-model="searchForm.shippingStatus"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 160px"
+ @change="handleQuery">
+ <el-option label="鏈彂璐�"
+ value="鏈彂璐�" />
+ <el-option label="宸插彂璐�"
+ value="宸插彂璐�" />
+ </el-select>
+ </el-form-item>
<el-form-item label="褰曞叆鏃ユ湡锛�">
<el-date-picker v-model="searchForm.entryDate"
value-format="YYYY-MM-DD"
@@ -940,6 +952,8 @@
value="蹇��" />
<el-option label="璐ц溅"
value="璐ц溅" />
+ <el-option label="鑷彁"
+ value="鑷彁" />
</el-select>
</el-form-item>
</el-col>
@@ -972,7 +986,8 @@
</el-row>
<el-row :gutter="30"
>
- <el-col :span="24">
+ <el-col :span="24"
+ v-if="deliveryForm.type !== '鑷彁'">
<el-form-item label="蹇�掑崟鍙凤細"
prop="expressNumber">
<el-input v-model="deliveryForm.expressNumber"
@@ -1031,8 +1046,6 @@
<el-input-number v-model="scope.row.deliveryQuantity"
:min="0"
:max="getDeliveryBatchDeliveryMax(scope.row)"
- :precision="2"
- :step="0.01"
controls-position="right"
@change="handleDeliveryBatchQuantityChange(scope.row)"
style="width: 100%;" />
@@ -1089,6 +1102,7 @@
tableAmountFormatter,
formatDecimal,
buildAmountSummaryFormat,
+ roundAmount,
} from "@/utils/numberFormat";
import ImageUpload from "@/components/AttachmentUpload/image/index.vue";
import { getCurrentDate } from "@/utils/index.js";
@@ -1127,6 +1141,8 @@
searchForm: {
customerName: "", // 瀹㈡埛鍚嶇О
salesContractNo: "", // 閿�鍞悎鍚岀紪鍙�
+ projectName: "", // 椤圭洰鍚嶇О
+ shippingStatus: "", // 鍙戣揣鐘舵�侊紙鏈彂璐�/宸插彂璐э級
entryDate: null, // 褰曞叆鏃ユ湡
entryDateStart: undefined,
entryDateEnd: undefined,
@@ -1229,10 +1245,10 @@
item?.qualifiedUnLockedQuantity ??
item?.qualifiedQuantity ??
item?.stockQuantity;
- return quantity ?? 0;
+ return roundAmount(quantity ?? 0);
};
const formatDeliveryBatchSalesOrderNo = item =>
- item?.salesContractNo || item?.sourceOrderNo || item?.salesOrderNo || "--";
+ item?.salesContractNo || "--";
const currentStock = ref(null);
const fetchCurrentStock = async (productModelId) => {
if (!productModelId) {
@@ -1240,7 +1256,7 @@
return;
}
try {
- const res = await getStockInventoryByModelId(productModelId);
+ const res = await getStockInventoryByModelId(productModelId, currentId.value);
const rawList = Array.isArray(res?.data)
? res.data
: res?.data?.records || res?.data?.rows || [];
@@ -1248,14 +1264,14 @@
rawList.forEach(item => {
total += Number(getDeliveryBatchQuantity(item) || 0);
});
- currentStock.value = total;
+ currentStock.value = roundAmount(total);
} catch (e) {
console.error(e);
currentStock.value = 0;
}
};
const getCurrentDeliveryRowQuantity = () => {
- return Number(currentDeliveryRow.value?.noQuantity || 0);
+ return roundAmount(Number(currentDeliveryRow.value?.noQuantity || 0));
};
const getDeliveryBatchDeliveryMax = row => {
const productQuantity = getCurrentDeliveryRowQuantity();
@@ -1267,9 +1283,8 @@
},
0
);
- const remainingProductQuantity = Math.max(
- 0,
- productQuantity - otherBatchTotal
+ const remainingProductQuantity = roundAmount(
+ Math.max(0, productQuantity - otherBatchTotal)
);
return Math.max(0, Math.min(batchQuantity, remainingProductQuantity));
};
@@ -1283,9 +1298,8 @@
},
0
);
- const remainingProductQuantity = Math.max(
- 0,
- productQuantity - otherBatchTotal
+ const remainingProductQuantity = roundAmount(
+ Math.max(0, productQuantity - otherBatchTotal)
);
const currentValue = Number(row?.deliveryQuantity || 0);
@@ -1302,9 +1316,9 @@
item => Number(item?.deliveryQuantity || 0) > 0
);
};
- const getDeliveryBatchNoList = async productModelId => {
+ const getDeliveryBatchNoList = async (productModelId, salesLedgerId) => {
if (!productModelId) return [];
- const res = await getStockInventoryByModelId(productModelId);
+ const res = await getStockInventoryByModelId(productModelId, salesLedgerId);
const rawList = Array.isArray(res?.data)
? res.data
: res?.data?.records || res?.data?.rows || [];
@@ -2483,7 +2497,8 @@
currentDeliveryRow.value = row;
const batchNoList = await getDeliveryBatchNoList(
- row.productModelId || row.modelId
+ row.productModelId || row.modelId,
+ row.salesLedgerId
);
deliveryForm.value = {
shippingCarNumber: "",
@@ -2506,16 +2521,18 @@
proxy.$modal.msgWarning("璇疯嚦灏戝~鍐欎竴涓壒鍙风殑鍙戣揣鏁伴噺");
return;
}
- const totalDeliveryQuantity = selectedBatchRows.reduce(
- (sum, item) => sum + Number(item.deliveryQuantity || 0),
- 0
+ const totalDeliveryQuantity = roundAmount(
+ selectedBatchRows.reduce(
+ (sum, item) => sum + Number(item.deliveryQuantity || 0),
+ 0
+ )
);
const currentRowNoQuantity = Number(
currentDeliveryRow.value?.noQuantity || 0
);
if (
currentRowNoQuantity > 0 &&
- totalDeliveryQuantity > currentRowNoQuantity
+ totalDeliveryQuantity > roundAmount(currentRowNoQuantity)
) {
proxy.$modal.msgWarning("鎵瑰彿鍙戣揣鎬绘暟涓嶈兘瓒呰繃寰呭彂璐ф暟閲�");
return;
@@ -2590,6 +2607,10 @@
if (val === "璐ц溅") {
deliveryForm.value.expressCompany = "";
deliveryForm.value.expressNumber = "";
+ } else if (val === "鑷彁") {
+ deliveryForm.value.shippingCarNumber = "";
+ deliveryForm.value.expressCompany = "";
+ deliveryForm.value.expressNumber = "";
} else {
deliveryForm.value.shippingCarNumber = "";
}
--
Gitblit v1.9.3