From e105919dab3c545b4b71c4a7c1a9ba3ff7bcc9dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E9=94=A6=E6=B6=9B?= <26050301730@qq.com> Date: Tue, 18 Nov 2025 11:15:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E8=AF=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basicmanage/InvoiceManagement/index.vue | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/openhis-ui-vue3/src/views/basicmanage/InvoiceManagement/index.vue b/openhis-ui-vue3/src/views/basicmanage/InvoiceManagement/index.vue index 2f385305..061553d2 100644 --- a/openhis-ui-vue3/src/views/basicmanage/InvoiceManagement/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/InvoiceManagement/index.vue @@ -1035,31 +1035,30 @@ export default { // 1. 测试起始和终止号码前缀一致性:例如"AB123"和"AB456"通过,"AB123"和"AC456"失败 // 2. 测试当前号码与起始号码前缀一致性:例如"AB123"作为起始,"AB125"作为当前号码通过,"AC125"失败 // 3. 测试无字母情况:纯数字"123456"作为起始、终止和当前号码都通过验证 - validateRecord(record) { + validateRecord(record, rowIndex) { const errors = []; - // 使用keyId标识记录,避免使用可能不存在的id - const recordIdentifier = record.keyId || record.id || '(新记录)'; + const rowInfo = rowIndex ? `第${rowIndex}行` : ''; // 验证操作员不为空 if (!record.operator || !record.employeeId) { - errors.push(`记录[${recordIdentifier}]: 未设置票据号码的员工`); + errors.push(`${rowInfo}: 未设置票据号码的员工`); } // 验证起始号码 const startNumValidation = this.validateInvoiceNumber(record.startNum); if (!startNumValidation.valid) { - errors.push(`记录[${recordIdentifier}]: 起始号码 ${startNumValidation.message}`); + errors.push(`${rowInfo}: 起始号码 ${startNumValidation.message}`); } // 验证终止号码 const endNumValidation = this.validateInvoiceNumber(record.endNum); if (!endNumValidation.valid) { - errors.push(`记录[${recordIdentifier}]: 终止号码 ${endNumValidation.message}`); + errors.push(`${rowInfo}: 终止号码 ${endNumValidation.message}`); } // 验证起始和终止号码长度一致 if (record.startNum && record.endNum && !this.validateNumberLengths(record.startNum, record.endNum)) { - errors.push(`记录[${recordIdentifier}]: 起始发票号码与终止发票号码长度必须完全一致`); + errors.push(`${rowInfo}: 起始发票号码与终止发票号码长度必须完全一致`); } // 验证起始和终止号码前缀一致性 @@ -1068,7 +1067,7 @@ export default { const endPrefix = this.extractPrefixFromEnd(record.endNum); if (startPrefix !== endPrefix) { - errors.push(`记录[${recordIdentifier}]: 起始和终止号码前缀必须一致(前缀定义:从号码最末位开始往前推直到出现字母为止的前面字符)`); + errors.push(`${rowInfo}: 起始和终止号码前缀必须一致(前缀定义:从号码最末位开始往前推直到出现字母为止的前面字符)`); } } @@ -1078,27 +1077,27 @@ export default { const startPrefix = this.extractPrefixFromEnd(record.startNum); if (currentPrefix !== startPrefix) { - errors.push(`记录[${recordIdentifier}]: 当前使用号码前缀与起始号码前缀必须一致(前缀定义:从号码最末位开始往前推直到出现字母为止的前面字符)`); + errors.push(`${rowInfo}: 当前使用号码前缀与起始号码前缀必须一致(前缀定义:从号码最末位开始往前推直到出现字母为止的前面字符)`); } } // 验证当前号码在范围内 if (record.currentNum && record.startNum && record.endNum && !this.validateCurrentNumberInRange(record.currentNum, record.startNum, record.endNum)) { - errors.push(`记录[${recordIdentifier}]: 当前使用号码不在有效范围内`); + errors.push(`${rowInfo}: 当前使用号码不在有效范围内`); } // 验证号码唯一性 const uniquenessCheck = this.checkNumberUniqueness(record); if (!uniquenessCheck.valid) { - errors.push(`记录[${recordIdentifier}]: ${uniquenessCheck.message}`); + errors.push(`${rowInfo}: ${uniquenessCheck.message}`); } // 检查号码范围是否与其他记录重叠 if (record.startNum && record.endNum) { const overlapCheck = this.checkRangeOverlap(record); if (!overlapCheck.valid) { - errors.push(`记录[${recordIdentifier}]: ${overlapCheck.message}`); + errors.push(`${rowInfo}: ${overlapCheck.message}`); } } @@ -1109,9 +1108,9 @@ export default { runAllValidations() { this.validationErrors = []; - // 验证每个记录 - this.invoiceData.forEach(record => { - const recordErrors = this.validateRecord(record); + // 验证每个记录,添加行号信息 + this.invoiceData.forEach((record, index) => { + const recordErrors = this.validateRecord(record, index + 1); // 行号从1开始 if (recordErrors.length > 0) { this.validationErrors.push(...recordErrors); }