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; } },