fix:注册界面格式校验修复
This commit is contained in:
@@ -71,15 +71,38 @@ const securityModel = reactive<SecurityFormModel>({
|
||||
// 第一步表单验证规则
|
||||
const basicRules = computed<Record<string, Rule | Rule[]>>(() => {
|
||||
const validateUsername = async (_rule: Rule, value: string) => {
|
||||
if (value && (value.length < 4 || value.length > 20)) {
|
||||
// 空值检查
|
||||
if (!value) {
|
||||
return Promise.reject(t('page.login.register.usernameRequired'));
|
||||
}
|
||||
|
||||
// 长度检查 (3-20字符)
|
||||
if (value.length < 3 || value.length > 20) {
|
||||
return Promise.reject(t('page.login.register.usernameLengthLimit'));
|
||||
}
|
||||
if (value) {
|
||||
|
||||
// 格式检查 (只允许字母、数字、下划线)
|
||||
const usernamePattern = /^[a-zA-Z0-9_]+$/;
|
||||
if (!usernamePattern.test(value)) {
|
||||
return Promise.reject(t('page.login.register.usernameFormatError'));
|
||||
}
|
||||
|
||||
// 首字符必须是字母
|
||||
if (!/^[a-zA-Z]/.test(value)) {
|
||||
return Promise.reject(t('page.login.register.usernameStartWithLetter'));
|
||||
}
|
||||
|
||||
// 重复性检查
|
||||
try {
|
||||
const { exists } = await authStore.checkUserRepeat({ username: value, authType: 'u' });
|
||||
if (exists) {
|
||||
return Promise.reject(t('page.login.register.usernameExists'));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Username validation error:', error);
|
||||
return Promise.reject(t('page.login.register.validationError'));
|
||||
}
|
||||
|
||||
return Promise.resolve();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user