|
1 |
| -const { t } = useI18n() |
| 1 | +import { useI18n } from '@/hooks/web/useI18n' |
| 2 | +import { FormItemRule } from 'element-plus' |
2 | 3 |
|
3 |
| -type Callback = (error?: string | Error | undefined) => void |
| 4 | +const { t } = useI18n() |
4 | 5 |
|
5 | 6 | interface LengthRange {
|
6 | 7 | min: number
|
7 | 8 | max: number
|
8 |
| - message: string |
| 9 | + message?: string |
9 | 10 | }
|
10 | 11 |
|
11 | 12 | export const useValidator = () => {
|
12 |
| - const required = (message?: string) => { |
| 13 | + const required = (message?: string): FormItemRule => { |
13 | 14 | return {
|
14 | 15 | required: true,
|
15 | 16 | message: message || t('common.required')
|
16 | 17 | }
|
17 | 18 | }
|
18 | 19 |
|
19 |
| - const lengthRange = (val: any, callback: Callback, options: LengthRange) => { |
| 20 | + const lengthRange = (options: LengthRange): FormItemRule => { |
20 | 21 | const { min, max, message } = options
|
21 |
| - if (val.length < min || val.length > max) { |
22 |
| - callback(new Error(message)) |
23 |
| - } else { |
24 |
| - callback() |
25 |
| - } |
26 |
| - } |
27 | 22 |
|
28 |
| - const notSpace = (val: any, callback: Callback, message: string) => { |
29 |
| - // 用户名不能有空格 |
30 |
| - if (val.indexOf(' ') !== -1) { |
31 |
| - callback(new Error(message)) |
32 |
| - } else { |
33 |
| - callback() |
| 23 | + return { |
| 24 | + min, |
| 25 | + max, |
| 26 | + message: message || t('common.lengthRange', { min, max }) |
34 | 27 | }
|
35 | 28 | }
|
36 | 29 |
|
37 |
| - const notSpecialCharacters = (val: any, callback: Callback, message: string) => { |
38 |
| - // 密码不能是特殊字符 |
39 |
| - if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { |
40 |
| - callback(new Error(message)) |
41 |
| - } else { |
42 |
| - callback() |
| 30 | + const notSpace = (message?: string): FormItemRule => { |
| 31 | + return { |
| 32 | + validator: (_, val, callback) => { |
| 33 | + if (val?.indexOf(' ') !== -1) { |
| 34 | + callback(new Error(message || t('common.notSpace'))) |
| 35 | + } else { |
| 36 | + callback() |
| 37 | + } |
| 38 | + } |
43 | 39 | }
|
44 | 40 | }
|
45 | 41 |
|
46 |
| - // 两个字符串是否想等 |
47 |
| - const isEqual = (val1: string, val2: string, callback: Callback, message: string) => { |
48 |
| - if (val1 === val2) { |
49 |
| - callback() |
50 |
| - } else { |
51 |
| - callback(new Error(message)) |
| 42 | + const notSpecialCharacters = (message?: string): FormItemRule => { |
| 43 | + return { |
| 44 | + validator: (_, val, callback) => { |
| 45 | + if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { |
| 46 | + callback(new Error(message || t('common.notSpecialCharacters'))) |
| 47 | + } else { |
| 48 | + callback() |
| 49 | + } |
| 50 | + } |
52 | 51 | }
|
53 | 52 | }
|
54 | 53 |
|
55 | 54 | return {
|
56 | 55 | required,
|
57 | 56 | lengthRange,
|
58 | 57 | notSpace,
|
59 |
| - notSpecialCharacters, |
60 |
| - isEqual |
| 58 | + notSpecialCharacters |
61 | 59 | }
|
62 | 60 | }
|
0 commit comments