修改发票管理页面
This commit is contained in:
@@ -442,26 +442,6 @@ export default {
|
|||||||
return user ? user.name : '';
|
return user ? user.name : '';
|
||||||
},
|
},
|
||||||
|
|
||||||
// 检查是否有权限修改指定记录
|
|
||||||
canModifyRecord(record) {
|
|
||||||
// 管理员可以修改所有记录,普通用户只能修改自己的
|
|
||||||
return this.isAdmin || record.employeeId === this.currentUser.employeeId;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 检查权限并执行操作
|
|
||||||
checkPermissionAndExecute(record, operation) {
|
|
||||||
if (this.canModifyRecord(record)) {
|
|
||||||
operation();
|
|
||||||
} else {
|
|
||||||
alert('您没有权限修改此记录!');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 更新员工ID
|
|
||||||
updateEmployeeId(item, employeeId) {
|
|
||||||
item.employeeId = employeeId;
|
|
||||||
},
|
|
||||||
|
|
||||||
addNewRow() {
|
addNewRow() {
|
||||||
// 新增行时自动填充当前用户信息
|
// 新增行时自动填充当前用户信息
|
||||||
// 使用负数作为临时ID,避免与后端数据库ID冲突
|
// 使用负数作为临时ID,避免与后端数据库ID冲突
|
||||||
@@ -937,6 +917,21 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 检查号码范围是否与其他记录重叠
|
// 检查号码范围是否与其他记录重叠
|
||||||
|
// 提取数字部分进行比较的辅助方法
|
||||||
|
extractNumber(str) {
|
||||||
|
if (!str) return 0;
|
||||||
|
const match = str.match(/\d+$/);
|
||||||
|
return match ? parseInt(match[0], 10) : 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 提取完整前缀的辅助方法(包括字母和数字)
|
||||||
|
extractPrefix(str) {
|
||||||
|
if (!str) return '';
|
||||||
|
// 匹配开头的所有非数字字符(字母等)和随后的数字部分,直到遇到第一个非数字字符为止
|
||||||
|
const match = str.match(/^[A-Za-z0-9]+/);
|
||||||
|
return match ? match[0] : '';
|
||||||
|
},
|
||||||
|
|
||||||
checkRangeOverlap(record) {
|
checkRangeOverlap(record) {
|
||||||
// 确保当前记录有必要的数据
|
// 确保当前记录有必要的数据
|
||||||
if (!record || !record.startNum || !record.endNum) {
|
if (!record || !record.startNum || !record.endNum) {
|
||||||
@@ -947,25 +942,10 @@ export default {
|
|||||||
// 使用keyId作为比较依据,因为它是前端唯一标识符
|
// 使用keyId作为比较依据,因为它是前端唯一标识符
|
||||||
const otherRecords = this.invoiceData.filter(item => item.keyId !== record.keyId);
|
const otherRecords = this.invoiceData.filter(item => item.keyId !== record.keyId);
|
||||||
|
|
||||||
// 提取数字部分进行比较的辅助函数
|
|
||||||
const extractNumber = function(str) {
|
|
||||||
if (!str) return 0;
|
|
||||||
const match = str.match(/\d+$/);
|
|
||||||
return match ? parseInt(match[0], 10) : 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 提取完整前缀的辅助函数(包括字母和数字)
|
|
||||||
const extractPrefix = function(str) {
|
|
||||||
if (!str) return '';
|
|
||||||
// 匹配开头的所有非数字字符(字母等)和随后的数字部分,直到遇到第一个非数字字符为止
|
|
||||||
const match = str.match(/^[A-Za-z0-9]+/);
|
|
||||||
return match ? match[0] : '';
|
|
||||||
};
|
|
||||||
|
|
||||||
// 提取当前记录的前缀和数字范围
|
// 提取当前记录的前缀和数字范围
|
||||||
const currentPrefix = extractPrefix(record.startNum);
|
const currentPrefix = this.extractPrefix(record.startNum);
|
||||||
const currentStartNum = extractNumber(record.startNum);
|
const currentStartNum = this.extractNumber(record.startNum);
|
||||||
const currentEndNum = extractNumber(record.endNum);
|
const currentEndNum = this.extractNumber(record.endNum);
|
||||||
|
|
||||||
// 确保当前记录的起始号码小于等于终止号码
|
// 确保当前记录的起始号码小于等于终止号码
|
||||||
if (currentStartNum > currentEndNum) {
|
if (currentStartNum > currentEndNum) {
|
||||||
@@ -976,14 +956,14 @@ export default {
|
|||||||
if (!item.startNum || !item.endNum) continue;
|
if (!item.startNum || !item.endNum) continue;
|
||||||
|
|
||||||
// 提取其他记录的前缀
|
// 提取其他记录的前缀
|
||||||
const otherPrefix = extractPrefix(item.startNum);
|
const otherPrefix = this.extractPrefix(item.startNum);
|
||||||
|
|
||||||
// 检查前缀是否匹配(实现数字对应数字,字母对应字母的匹配规则)
|
// 检查前缀是否匹配(实现数字对应数字,字母对应字母的匹配规则)
|
||||||
if (currentPrefix !== otherPrefix) continue;
|
if (currentPrefix !== otherPrefix) continue;
|
||||||
|
|
||||||
// 提取其他记录的数字范围
|
// 提取其他记录的数字范围
|
||||||
const otherStartNum = extractNumber(item.startNum);
|
const otherStartNum = this.extractNumber(item.startNum);
|
||||||
const otherEndNum = extractNumber(item.endNum);
|
const otherEndNum = this.extractNumber(item.endNum);
|
||||||
|
|
||||||
// 全面检查范围重叠
|
// 全面检查范围重叠
|
||||||
const hasOverlap =
|
const hasOverlap =
|
||||||
@@ -1009,12 +989,6 @@ export default {
|
|||||||
// 如果当前号码为空,允许保存
|
// 如果当前号码为空,允许保存
|
||||||
if (!currentNum) return true;
|
if (!currentNum) return true;
|
||||||
|
|
||||||
// 数字部分比较(纯数字或字母前缀+数字)
|
|
||||||
const extractNumber = (str) => {
|
|
||||||
const match = str.match(/\d+$/);
|
|
||||||
return match ? parseInt(match[0], 10) : 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
// 检查两个字符串的每一位是否类型匹配(数字对应数字,字母对应字母)
|
// 检查两个字符串的每一位是否类型匹配(数字对应数字,字母对应字母)
|
||||||
const checkCharacterTypesMatch = (str1, str2) => {
|
const checkCharacterTypesMatch = (str1, str2) => {
|
||||||
const maxLength = Math.max(str1.length, str2.length);
|
const maxLength = Math.max(str1.length, str2.length);
|
||||||
@@ -1036,9 +1010,9 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const currentNumValue = extractNumber(currentNum);
|
const currentNumValue = this.extractNumber(currentNum);
|
||||||
const startNumValue = extractNumber(startNum);
|
const startNumValue = this.extractNumber(startNum);
|
||||||
const endNumValue = extractNumber(endNum);
|
const endNumValue = this.extractNumber(endNum);
|
||||||
|
|
||||||
return currentNumValue >= startNumValue && currentNumValue <= endNumValue;
|
return currentNumValue >= startNumValue && currentNumValue <= endNumValue;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user