diff --git a/src/views/construction-person/entry-and-exit-manage/person-entry/add-or-edit-form.vue b/src/views/construction-person/entry-and-exit-manage/person-entry/add-or-edit-form.vue index 35567b3..7415fba 100644 --- a/src/views/construction-person/entry-and-exit-manage/person-entry/add-or-edit-form.vue +++ b/src/views/construction-person/entry-and-exit-manage/person-entry/add-or-edit-form.vue @@ -1836,7 +1836,12 @@ export default { this.Base64Photo = '' }, - // 初始化工资核定标准正则表达式 + /** + * 初始化工资核定标准正则表达式 + * 业务背景:用于验证工资核定标准输入,确保输入值大于等于最低工资标准且小于等于999999 + * 设计决策:支持最多2位小数的数字,保持原有整数验证逻辑,在整数部分基础上添加可选小数部分 + * @param {Number} num - 最低工资标准(整数) + */ initSalaryRegexp(num) { // 确保num是1-999999之间的整数 const n = Math.min(Math.max(Number(num) || 1, 1), 999999) @@ -1850,7 +1855,8 @@ export default { // 例如:num是3位数(123),则4-6位数均合法(1000-999999) for (let i = len + 1; i <= maxLen; i++) { // 第一位1-9,后面i-1位0-9(无前置零) - regexParts.push(`[1-9]\\d{${i - 1}}`) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`[1-9]\\d{${i - 1}}(\\.\\d{1,2})?`) } } @@ -1861,19 +1867,29 @@ export default { if (str === maxSameLen) { // 若num等于同位数最大值(如999),则同位数只有它本身合法 - regexParts.push(str) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`${str}(\\.\\d{1,2})?`) } else { // 分三部分处理同位数: // a. 第一位大于num的第一位:后面任意(如num=345,第一位4-9,后两位任意) if (firstDigit < 9) { - regexParts.push(`[${firstDigit + 1}-9]\\d{${len - 1}}`) + // 整数部分大于num,小数部分可选 + regexParts.push( + `[${firstDigit + 1}-9]\\d{${len - 1}}(\\.\\d{1,2})?`, + ) } // b. 第一位等于num的第一位,后面部分大于等于num的后几位 // 生成后几位的正则(如num=345,第一位3,后两位需≥45) const restRegex = this.getRestRegex(rest) if (restRegex) { - regexParts.push(`${firstDigit}${restRegex}`) + // 整数部分大于num的情况:小数部分可选 + regexParts.push(`${firstDigit}${restRegex}(\\.\\d{1,2})?`) + // 整数部分等于num的情况:小数部分可选(因为整体 = num 也合法) + regexParts.push(`${firstDigit}${rest}(\\.\\d{1,2})?`) + } else { + // 如果没有后几位(1位数情况),且等于num,小数部分可选 + regexParts.push(`${firstDigit}(\\.\\d{1,2})?`) } } @@ -1919,10 +1935,14 @@ export default { return result }, - // 初始化工资核定标准提示信息 + /** + * 初始化工资核定标准提示信息 + * 业务背景:提示用户输入符合要求的工资核定标准 + * 设计决策:更新提示信息以反映支持最多2位小数的数字 + * @param {Number} num - 最低工资标准 + */ initSalaryMessage(num) { - // return `请输入${num}-999999之间的正整数` - this.contractInfoFormRules.wageCriterion[1].message = `请输入${num}-999999之间的正整数` + this.contractInfoFormRules.wageCriterion[1].message = `请输入${num}-999999之间的数字(最多2位小数)` }, }, diff --git a/src/views/construction-person/entry-and-exit-manage/person-entry/shanghai-pro-setting.vue b/src/views/construction-person/entry-and-exit-manage/person-entry/shanghai-pro-setting.vue index 43d7e68..8cc6b72 100644 --- a/src/views/construction-person/entry-and-exit-manage/person-entry/shanghai-pro-setting.vue +++ b/src/views/construction-person/entry-and-exit-manage/person-entry/shanghai-pro-setting.vue @@ -968,7 +968,8 @@ export default { // 例如:num是3位数(123),则4-6位数均合法(1000-999999) for (let i = len + 1; i <= maxLen; i++) { // 第一位1-9,后面i-1位0-9(无前置零) - regexParts.push(`[1-9]\\d{${i - 1}}`) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`[1-9]\\d{${i - 1}}(\\.\\d{1,2})?`) } } @@ -979,19 +980,29 @@ export default { if (str === maxSameLen) { // 若num等于同位数最大值(如999),则同位数只有它本身合法 - regexParts.push(str) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`${str}(\\.\\d{1,2})?`) } else { // 分三部分处理同位数: // a. 第一位大于num的第一位:后面任意(如num=345,第一位4-9,后两位任意) if (firstDigit < 9) { - regexParts.push(`[${firstDigit + 1}-9]\\d{${len - 1}}`) + // 整数部分大于num,小数部分可选 + regexParts.push( + `[${firstDigit + 1}-9]\\d{${len - 1}}(\\.\\d{1,2})?`, + ) } // b. 第一位等于num的第一位,后面部分大于等于num的后几位 // 生成后几位的正则(如num=345,第一位3,后两位需≥45) const restRegex = this.getRestRegex(rest) if (restRegex) { - regexParts.push(`${firstDigit}${restRegex}`) + // 整数部分大于num的情况:小数部分可选 + regexParts.push(`${firstDigit}${restRegex}(\\.\\d{1,2})?`) + // 整数部分等于num的情况:小数部分可选(因为整体 = num 也合法) + regexParts.push(`${firstDigit}${rest}(\\.\\d{1,2})?`) + } else { + // 如果没有后几位(1位数情况),且等于num,小数部分可选 + regexParts.push(`${firstDigit}(\\.\\d{1,2})?`) } } @@ -1040,7 +1051,7 @@ export default { // 初始化工资核定标准提示信息 initSalaryMessage(num) { // return `请输入${num}-999999之间的正整数` - this.addEntryProjectFormRules.wageCriterion[1].message = `请输入${num}-999999之间的正整数` + this.addEntryProjectFormRules.wageCriterion[1].message = `请输入${num}-999999之间的数字(最多2位小数)` }, }, diff --git a/src/views/construction-person/red-green-light-mange/contract-witness/contract-witness-upload.vue b/src/views/construction-person/red-green-light-mange/contract-witness/contract-witness-upload.vue index 72f369d..cf3e5ff 100644 --- a/src/views/construction-person/red-green-light-mange/contract-witness/contract-witness-upload.vue +++ b/src/views/construction-person/red-green-light-mange/contract-witness/contract-witness-upload.vue @@ -475,7 +475,8 @@ export default { // 例如:num是3位数(123),则4-6位数均合法(1000-999999) for (let i = len + 1; i <= maxLen; i++) { // 第一位1-9,后面i-1位0-9(无前置零) - regexParts.push(`[1-9]\\d{${i - 1}}`) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`[1-9]\\d{${i - 1}}(\\.\\d{1,2})?`) } } @@ -486,19 +487,29 @@ export default { if (str === maxSameLen) { // 若num等于同位数最大值(如999),则同位数只有它本身合法 - regexParts.push(str) + // 添加可选的小数部分(最多2位小数) + regexParts.push(`${str}(\\.\\d{1,2})?`) } else { // 分三部分处理同位数: // a. 第一位大于num的第一位:后面任意(如num=345,第一位4-9,后两位任意) if (firstDigit < 9) { - regexParts.push(`[${firstDigit + 1}-9]\\d{${len - 1}}`) + // 整数部分大于num,小数部分可选 + regexParts.push( + `[${firstDigit + 1}-9]\\d{${len - 1}}(\\.\\d{1,2})?`, + ) } // b. 第一位等于num的第一位,后面部分大于等于num的后几位 // 生成后几位的正则(如num=345,第一位3,后两位需≥45) const restRegex = this.getRestRegex(rest) if (restRegex) { - regexParts.push(`${firstDigit}${restRegex}`) + // 整数部分大于num的情况:小数部分可选 + regexParts.push(`${firstDigit}${restRegex}(\\.\\d{1,2})?`) + // 整数部分等于num的情况:小数部分可选(因为整体 = num 也合法) + regexParts.push(`${firstDigit}${rest}(\\.\\d{1,2})?`) + } else { + // 如果没有后几位(1位数情况),且等于num,小数部分可选 + regexParts.push(`${firstDigit}(\\.\\d{1,2})?`) } } @@ -547,7 +558,7 @@ export default { // 初始化工资核定标准提示信息 initSalaryMessage(num) { // return `请输入${num}-999999之间的正整数` - this.contractInfoFormRules.wageCriterion[1].message = `请输入${num}-999999之间的正整数` + this.contractInfoFormRules.wageCriterion[1].message = `请输入${num}-999999之间的数字(最多2位小数)` }, }, }