From 9fa62c5434cb8ab554a0590eaa693cbefd15e00f Mon Sep 17 00:00:00 2001
From: fengyuan_yang <1976974459@qq.com>
Date: Mon, 15 Jun 2026 15:15:23 +0800
Subject: [PATCH] =?UTF-8?q?2026-06-15=20=E6=A0=87=E7=AD=BE=E6=8B=86?=
=?UTF-8?q?=E5=88=86=E6=B5=AE=E7=82=B9=E7=B2=BE=E5=BA=A6=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../label-split-merge/labelSplitMerge.vue | 45 ++++++++++++-------
1 file changed, 29 insertions(+), 16 deletions(-)
diff --git a/src/views/modules/label-split-merge/labelSplitMerge.vue b/src/views/modules/label-split-merge/labelSplitMerge.vue
index 1442943..ec2c56a 100644
--- a/src/views/modules/label-split-merge/labelSplitMerge.vue
+++ b/src/views/modules/label-split-merge/labelSplitMerge.vue
@@ -89,7 +89,7 @@
- 拆分后:原标签剩余 {{ calculateRemainingQty }} 个,新增 {{ splitCount }} 张标签,每张 {{ splitQuantity }} 个
+ 拆分后:原标签剩余 {{ calculateRemainingQty }} 个,新增 {{ splitCount }} 张标签,每张 {{ formatDisplayQty(splitQuantity) }} 个
@@ -215,10 +215,7 @@ export default {
confirmSplit() {
if (this.isSplitting) return;
- const splitCnt = parseInt(this.splitCount);
- const splitQty = parseFloat(this.splitQuantity);
- const currentQty = parseFloat(this.currentLabel.qtyOnHand);
- const totalSplitQty = splitCnt * splitQty;
+ const { splitCnt, splitQty, currentQty, remainingQty } = this.getSplitCalculation();
if (!splitCnt || splitCnt <= 0) {
this.$message.warning('请输入有效的拆分张数');
@@ -228,7 +225,7 @@ export default {
this.$message.warning('请输入有效的每张数量');
return;
}
- if (totalSplitQty >= currentQty) {
+ if (remainingQty <= 0) {
this.$message.warning('拆分总数量必须小于当前数量');
return;
}
@@ -505,25 +502,41 @@ export default {
// 执行打印
LODOP.PRINT();
}
+ },
+ formatDisplayQty(value) {
+ const num = Number(value);
+ if (!Number.isFinite(num)) {
+ return '0';
+ }
+ // 保留最多6位小数并去除末尾0,避免展示浮点尾差
+ return Number(num.toFixed(6)).toString();
+ },
+ getSplitCalculation() {
+ const splitCnt = parseInt(this.splitCount, 10) || 0;
+ const splitQty = parseFloat(this.splitQuantity) || 0;
+ const currentQty = parseFloat(this.currentLabel.qtyOnHand) || 0;
+ const totalSplitQty = this.decimalUtil.mul(splitCnt, splitQty);
+ const remainingQty = this.decimalUtil.sub(currentQty, totalSplitQty);
+ return {
+ splitCnt,
+ splitQty,
+ currentQty,
+ totalSplitQty,
+ remainingQty
+ };
}
},
computed: {
// 计算拆分后剩余数量
calculateRemainingQty() {
- const currentQty = parseFloat(this.currentLabel.qtyOnHand) || 0;
- const splitCnt = parseInt(this.splitCount) || 0;
- const splitQty = parseFloat(this.splitQuantity) || 0;
- const totalSplitQty = splitCnt * splitQty;
- return currentQty - totalSplitQty;
+ const { remainingQty } = this.getSplitCalculation();
+ return this.formatDisplayQty(remainingQty);
},
// 判断是否可以拆分
canSplit() {
- const splitCnt = parseInt(this.splitCount) || 0;
- const splitQty = parseFloat(this.splitQuantity) || 0;
- const currentQty = parseFloat(this.currentLabel.qtyOnHand) || 0;
- const totalSplitQty = splitCnt * splitQty;
- return splitCnt > 0 && splitQty > 0 && totalSplitQty < currentQty;
+ const { splitCnt, splitQty, remainingQty } = this.getSplitCalculation();
+ return splitCnt > 0 && splitQty > 0 && remainingQty > 0;
}
},