ruoyi-plus-soybean/src/hooks/common/form.ts

78 lines
1.9 KiB
TypeScript
Raw Normal View History

2023-11-17 08:45:00 +08:00
import { ref } from 'vue';
import type { FormInst } from 'naive-ui';
2023-12-14 21:45:29 +08:00
import { REG_CODE_SIX, REG_EMAIL, REG_PHONE, REG_PWD, REG_USER_NAME } from '@/constants/reg';
2023-11-17 08:45:00 +08:00
import { $t } from '@/locales';
export function useFormRules() {
2024-01-28 16:24:43 +08:00
const patternRules = {
userName: {
pattern: REG_USER_NAME,
message: $t('form.userName.invalid'),
trigger: 'change'
},
phone: {
pattern: REG_PHONE,
message: $t('form.phone.invalid'),
trigger: 'change'
},
pwd: {
pattern: REG_PWD,
message: $t('form.pwd.invalid'),
trigger: 'change'
},
code: {
pattern: REG_CODE_SIX,
message: $t('form.code.invalid'),
trigger: 'change'
},
email: {
pattern: REG_EMAIL,
message: $t('form.email.invalid'),
trigger: 'change'
}
} satisfies Record<string, App.Global.FormRule>;
const formRules = {
userName: [createRequiredRule($t('form.userName.required')), patternRules.userName],
phone: [createRequiredRule($t('form.phone.required')), patternRules.phone],
pwd: [createRequiredRule($t('form.pwd.required')), patternRules.pwd],
code: [createRequiredRule($t('form.code.required')), patternRules.code],
email: [createRequiredRule($t('form.email.required')), patternRules.email]
2023-11-17 08:45:00 +08:00
} satisfies Record<string, App.Global.FormRule[]>;
2024-01-28 00:44:21 +08:00
/** the default required rule */
const defaultRequiredRule = createRequiredRule($t('form.required'));
function createRequiredRule(message: string): App.Global.FormRule {
2023-11-17 08:45:00 +08:00
return {
required: true,
message
};
}
return {
2024-01-28 16:24:43 +08:00
patternRules,
formRules,
2024-01-28 00:44:21 +08:00
defaultRequiredRule,
2023-11-17 08:45:00 +08:00
createRequiredRule
};
}
export function useNaiveForm() {
const formRef = ref<FormInst | null>(null);
async function validate() {
await formRef.value?.validate();
}
async function restoreValidation() {
formRef.value?.restoreValidation();
}
2023-11-17 08:45:00 +08:00
return {
formRef,
validate,
restoreValidation
2023-11-17 08:45:00 +08:00
};
}