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

57 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 获取下一个编号
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;
}