lis8.0-vue3/src/utils/getNextNumber.ts

57 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-10-16 11:20:50 +08:00
// 获取下一个编号
export function getNextNumber(oldNumber: string): string | null {
// 检查是否为空
if (!oldNumber) return null;
// 分离前缀和数字部分
const prefixMatch = oldNumber.match(/^[A-Za-z]*/);
const prefix = prefixMatch ? prefixMatch[0] : '';
const numberPart = oldNumber.slice(prefix.length);
// 检查数字部分是否有效
if (!/^\d+$/.test(numberPart)) {
return null; // 无效的数字部分
}
// 将数字部分转为整数并加1
const number = parseInt(numberPart, 10) + 1;
// 保持原有的数字位数,用0填充(next保持补0逻辑不变)
const nextNumberPart = number.toString().padStart(numberPart.length, '0');
// 拼接前缀和新的数字部分
return prefix + nextNumberPart;
}
// 获取上一个编号,处理边界情况
export function getPreviousNumber(oldNumber: string): string | null {
// 检查是否为空
if (!oldNumber) return null;
// 分离前缀和数字部分
const prefixMatch = oldNumber.match(/^[A-Za-z]*/);
const prefix = prefixMatch ? prefixMatch[0] : '';
const numberPart = oldNumber.slice(prefix.length);
// 检查数字部分是否有效
if (!/^\d+$/.test(numberPart)) {
return null; // 无效的数字部分
}
// 将数字部分转为整数
const number = parseInt(numberPart, 10);
// 处理边界情况:如果已经是1,则保持不变
if (number <= 1) {
return oldNumber;
}
// 数字减1
const previousNumber = number - 1;
const previousNumberPart = previousNumber.toString();
// 拼接前缀和新的数字部分
return prefix + previousNumberPart;
}