123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import { useI18n } from '@/hooks/web/useI18n'
- import { FormItemRule } from 'element-plus'
- const { t } = useI18n()
- interface LengthRange {
- min: number
- max: number
- message?: string
- }
- export const useValidator = () => {
- const required = (message?: string): FormItemRule => {
- return {
- required: true,
- message: message || t('common.required')
- }
- }
- const lengthRange = (options: LengthRange): FormItemRule => {
- const { min, max, message } = options
- return {
- min,
- max,
- message: message || t('common.lengthRange', { min, max })
- }
- }
- const notSpace = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (val?.indexOf(' ') !== -1) {
- callback(new Error(message || t('common.notSpace')))
- } else {
- callback()
- }
- }
- }
- }
- const notSpecialCharacters = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) {
- callback(new Error(message || t('common.notSpecialCharacters')))
- } else {
- callback()
- }
- }
- }
- }
- const phone = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (!val) return callback()
- if (!/^1[3456789]\d{9}$/.test(val)) {
- callback(new Error(message || '请输入正确的手机号码'))
- } else {
- callback()
- }
- }
- }
- }
- const email = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (!val) return callback()
- if (!/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(val)) {
- callback(new Error(message || '请输入正确的邮箱'))
- } else {
- callback()
- }
- }
- }
- }
- const maxlength = (max: number): FormItemRule => {
- return {
- max,
- message: '长度不能超过' + max + '个字符'
- }
- }
- const check = (message?: string): FormItemRule => {
- return {
- validator: (_, val, callback) => {
- if (!val) {
- callback(new Error(message || t('common.required')))
- } else {
- callback()
- }
- }
- }
- }
- return {
- required,
- lengthRange,
- notSpace,
- notSpecialCharacters,
- phone,
- email,
- maxlength,
- check
- }
- }
|