diff --git a/src/components/Template/DecimalInput.vue b/src/components/Template/DecimalInput.vue index 4c17c67..fd5077b 100644 --- a/src/components/Template/DecimalInput.vue +++ b/src/components/Template/DecimalInput.vue @@ -135,8 +135,10 @@ export default { } } else { // 处理数字和小数点输入 + // 当 decimalDigits 为 0 时,不允许输入小数点 + const allowedPattern = this.decimalDigits === 0 ? /[^\d-]/g : /[^\d.-]/g; cleaned = val - .replace(/[^\d.-]/g, '') + .replace(allowedPattern, '') .replace(/^(-)\1+/, '$1'); // 确保只有一个小数点 @@ -148,18 +150,21 @@ export default { } // 处理小数点位数限制 - if (this.decimalDigits > 0 && cleaned.includes('.')) { + if (this.decimalDigits == 0) { + // 当 decimalDigits 为 0 时,直接移除所有小数点 + cleaned = cleaned.replace(/\./g, ''); + } else if (this.decimalDigits > 0 && cleaned.includes('.')) { const [intPart, decPart = ''] = cleaned.split('.'); cleaned = intPart + '.' + decPart.slice(0, this.decimalDigits); - } else if (this.decimalDigits === 0) { - cleaned = cleaned.split('.')[0]; } - // 处理以小数点开头的情况 - if (cleaned === '.') cleaned = '0.'; - else if (cleaned === '-.') cleaned = '-0.'; - else if (cleaned.startsWith('.')) cleaned = '0' + cleaned; - else if (cleaned.startsWith('-.')) cleaned = '-0.' + cleaned.slice(2); + // 处理以小数点开头的情况(仅当允许小数时) + if (this.decimalDigits > 0) { + if (cleaned === '.') cleaned = '0.'; + else if (cleaned === '-.') cleaned = '-0.'; + else if (cleaned.startsWith('.')) cleaned = '0' + cleaned; + else if (cleaned.startsWith('-.')) cleaned = '-0.' + cleaned.slice(2); + } // 处理整数部分的前导零 if (cleaned.includes('.')) { diff --git a/src/components/Template/StepComponents/ZLSubPackage.vue b/src/components/Template/StepComponents/ZLSubPackage.vue index 224bf68..bdd69ef 100644 --- a/src/components/Template/StepComponents/ZLSubPackage.vue +++ b/src/components/Template/StepComponents/ZLSubPackage.vue @@ -10,20 +10,27 @@ :type="item.type" @blur = "(e)=>onCommonBlur(e,item.key)" v-model="formData[item.key]" /> - - + +