Commit 28590676214b1c5fdbf6878e40da45a7bc0c5874
1 parent
b6d5e5c9
feat(from): add required in schema
Showing
3 changed files
with
13 additions
and
5 deletions
src/components/Form/src/FormItem.tsx
... | ... | @@ -102,13 +102,19 @@ export default defineComponent({ |
102 | 102 | rulesMessageJoinLabel, |
103 | 103 | label, |
104 | 104 | dynamicRules, |
105 | + required, | |
105 | 106 | } = props.schema; |
106 | 107 | |
107 | 108 | if (isFunction(dynamicRules)) { |
108 | 109 | return dynamicRules(unref(getValuesRef)); |
109 | 110 | } |
110 | 111 | |
111 | - const rules: ValidationRule[] = cloneDeep(defRules); | |
112 | + let rules: ValidationRule[] = cloneDeep(defRules); | |
113 | + | |
114 | + if ((!rules || rules.length === 0) && required) { | |
115 | + rules = [{ required }]; | |
116 | + } | |
117 | + | |
112 | 118 | const requiredRuleIndex: number = rules.findIndex( |
113 | 119 | (rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator') |
114 | 120 | ); | ... | ... |
src/components/Form/src/types/form.ts
src/views/demo/form/RuleForm.vue
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | colProps: { |
25 | 25 | span: 8, |
26 | 26 | }, |
27 | - rules: [{ required: true }], | |
27 | + required: true, | |
28 | 28 | }, |
29 | 29 | { |
30 | 30 | field: 'field2', |
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 | colProps: { |
34 | 34 | span: 8, |
35 | 35 | }, |
36 | - rules: [{ required: true }], | |
36 | + required: true, | |
37 | 37 | }, |
38 | 38 | { |
39 | 39 | field: 'field3', |
... | ... | @@ -42,7 +42,7 @@ |
42 | 42 | colProps: { |
43 | 43 | span: 8, |
44 | 44 | }, |
45 | - rules: [{ required: true }], | |
45 | + required: true, | |
46 | 46 | }, |
47 | 47 | { |
48 | 48 | field: 'field4', |
... | ... | @@ -65,7 +65,7 @@ |
65 | 65 | }, |
66 | 66 | ], |
67 | 67 | }, |
68 | - rules: [{ required: true }], | |
68 | + rules: [{ required: true, message: '请输入aa' }], | |
69 | 69 | }, |
70 | 70 | { |
71 | 71 | field: 'field5', | ... | ... |