diff --git a/src/views/contract/components/paymentRegistration.vue b/src/views/contract/components/paymentRegistration.vue index 5c0ae1e..cf2143f 100644 --- a/src/views/contract/components/paymentRegistration.vue +++ b/src/views/contract/components/paymentRegistration.vue @@ -1656,13 +1656,38 @@ export default { } // 进位后同步更新input显示 - if (wanInput) wanInput.value = wanTotal === 0 ? '0' : wanTotal; - if (qianInput) qianInput.value = qianTotal === 0 ? '0' : qianTotal; - if (baiInput) baiInput.value = baiTotal === 0 ? '0' : baiTotal; - if (shiInput) shiInput.value = shiTotal === 0 ? '0' : shiTotal; - if (yuanInput) yuanInput.value = yuanTotal === 0 ? '0' : yuanTotal; - if (jiaoInput) jiaoInput.value = jiaoTotal === 0 ? '0' : jiaoTotal; - if (fenInput) fenInput.value = fenTotal === 0 ? '0' : fenTotal; + // 通用解决方案:根据实际数值决定是否显示前导零 + const totalAmount = wanTotal * 10000 + qianTotal * 1000 + baiTotal * 100 + shiTotal * 10 + yuanTotal + jiaoTotal * 0.1 + fenTotal * 0.01; + + // 进位后同步更新input显示 + if (wanInput) { + // 如果总金额小于10000,不显示万位 + wanInput.value = totalAmount >= 10000 ? (wanTotal === 0 ? '0' : wanTotal) : ''; + } + if (qianInput) { + // 如果总金额小于1000,不显示千位 + qianInput.value = totalAmount >= 1000 ? (qianTotal === 0 ? '0' : qianTotal) : ''; + } + if (baiInput) { + // 如果总金额小于100,不显示百位 + baiInput.value = totalAmount >= 100 ? (baiTotal === 0 ? '0' : baiTotal) : ''; + } + if (shiInput) { + // 如果总金额小于10,不显示十位 + shiInput.value = totalAmount >= 10 ? (shiTotal === 0 ? '0' : shiTotal) : ''; + } + if (yuanInput) { + // 如果总金额小于1,不显示元位 + yuanInput.value = totalAmount >= 1 ? (yuanTotal === 0 ? '0' : yuanTotal) : ''; + } + if (jiaoInput) { + // 如果总金额小于0.1,不显示角位 + jiaoInput.value = totalAmount >= 0.1 ? (jiaoTotal === 0 ? '0' : jiaoTotal) : ''; + } + if (fenInput) { + // 如果总金额小于0.01,不显示分位 + fenInput.value = totalAmount >= 0.01 ? (fenTotal === 0 ? '0' : fenTotal) : ''; + } this.otherTotal = wanTotal * 10000 + qianTotal * 1000 + baiTotal * 100 + shiTotal * 10 + yuanTotal + jiaoTotal * 0.1 + fenTotal * 0.01 this.otherTotal = this.otherTotal.toFixed(2) diff --git a/src/views/contract/components/printPaymentForm.vue b/src/views/contract/components/printPaymentForm.vue index d694635..535427d 100644 --- a/src/views/contract/components/printPaymentForm.vue +++ b/src/views/contract/components/printPaymentForm.vue @@ -487,13 +487,37 @@ export default { } // 进位后同步更新input显示 - if (wanInput) wanInput.value = wanTotal === 0 ? '0' : wanTotal; - if (qianInput) qianInput.value = qianTotal === 0 ? '0' : qianTotal; - if (baiInput) baiInput.value = baiTotal === 0 ? '0' : baiTotal; - if (shiInput) shiInput.value = shiTotal === 0 ? '0' : shiTotal; - if (yuanInput) yuanInput.value = yuanTotal === 0 ? '0' : yuanTotal; - if (jiaoInput) jiaoInput.value = jiaoTotal === 0 ? '0' : jiaoTotal; - if (fenInput) fenInput.value = fenTotal === 0 ? '0' : fenTotal; + // 通用解决方案:根据实际数值决定是否显示前导零 + const totalAmount = wanTotal * 10000 + qianTotal * 1000 + baiTotal * 100 + shiTotal * 10 + yuanTotal + jiaoTotal * 0.1 + fenTotal * 0.01; + + if (wanInput) { + // 如果总金额小于10000,不显示万位 + wanInput.value = totalAmount >= 10000 ? (wanTotal === 0 ? '0' : wanTotal) : ''; + } + if (qianInput) { + // 如果总金额小于1000,不显示千位 + qianInput.value = totalAmount >= 1000 ? (qianTotal === 0 ? '0' : qianTotal) : ''; + } + if (baiInput) { + // 如果总金额小于100,不显示百位 + baiInput.value = totalAmount >= 100 ? (baiTotal === 0 ? '0' : baiTotal) : ''; + } + if (shiInput) { + // 如果总金额小于10,不显示十位 + shiInput.value = totalAmount >= 10 ? (shiTotal === 0 ? '0' : shiTotal) : ''; + } + if (yuanInput) { + // 如果总金额小于1,不显示元位 + yuanInput.value = totalAmount >= 1 ? (yuanTotal === 0 ? '0' : yuanTotal) : ''; + } + if (jiaoInput) { + // 如果总金额小于0.1,不显示角位 + jiaoInput.value = totalAmount >= 0.1 ? (jiaoTotal === 0 ? '0' : jiaoTotal) : ''; + } + if (fenInput) { + // 如果总金额小于0.01,不显示分位 + fenInput.value = totalAmount >= 0.01 ? (fenTotal === 0 ? '0' : fenTotal) : ''; + } let otherTotal = wanTotal * 10000 + qianTotal * 1000 + baiTotal * 100 + shiTotal * 10 + yuanTotal + jiaoTotal * 0.1 + fenTotal * 0.01 @@ -590,7 +614,7 @@ export default { span.style[key] = style[key] }) // 确保width和height与Input控件保持一致 - span.style.width = '100%' + span.style.width = style.width//'100%' span.style.height = style.height span.style.whiteSpace = 'normal' span.style.wordBreak = 'break-all' @@ -659,7 +683,7 @@ export default { span.style[key] = style[key] }) // 确保width和height与textarea控件保持一致 - span.style.width = style.width + span.style.width = style.width span.style.height = style.height span.style.display = 'block' span.style.textAlign = 'center' @@ -769,16 +793,25 @@ export default { const orientation = this.printOrientation || 'portrait'; const margin = orientation === 'portrait' - ? '10mm 10mm 10mm 2mm' - : '10mm 10mm 10mm 10mm'; + ? '5mm 5mm 10mm 2mm' // 减少左右边距 + : '5mm 5mm 10mm 5mm'; // 减少左右边距 const win = window.open('', '_blank') - // 动态计算宽高、缩放和平移 - const isPortrait = orientation === 'portrait'; - const pageWidth = isPortrait ? 280 : 297; - const scale = 0.9; - const offset = 7; - const translateX = ((pageWidth - pageWidth * scale) / 2+offset).toFixed(2) + 'mm'; - + // 动态计算宽高、缩放和平移 + const isPortrait = orientation === 'portrait'; + const pageWidth = isPortrait ? 290 : 297; + + // 根据内容动态调整缩放和偏移 + const hasTravelExpense = this.getForms && this.getForms.includes('差旅报销单'); + const hasUtilityBill = this.getForms && this.getForms.includes('水电费结算单'); + const hasReimbursementForm2 = this.getForms && this.getForms.includes('报销贴单2'); + const scale = hasTravelExpense ? 0.66 : 0.9; + const offset = hasTravelExpense ? 62 : 5; + const translateX = ((pageWidth - pageWidth * scale) / 2 + offset).toFixed(2) + 'mm'; + + // 居中打印. + // table { width: 100%; border-collapse: collapse;table-layout: fixed; text-align: center; margin: 0 auto; } + // td { border: 1px solid #000; padding: 8px; min-width: 100px; word-break: break-all; text-align: center; vertical-align: middle; } + // th { text-align: center; vertical-align: middle; } win.document.write(` @@ -786,7 +819,7 @@ export default { + + + + +