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,13 +102,19 @@ export default defineComponent({ | ||
102 | rulesMessageJoinLabel, | 102 | rulesMessageJoinLabel, |
103 | label, | 103 | label, |
104 | dynamicRules, | 104 | dynamicRules, |
105 | + required, | ||
105 | } = props.schema; | 106 | } = props.schema; |
106 | 107 | ||
107 | if (isFunction(dynamicRules)) { | 108 | if (isFunction(dynamicRules)) { |
108 | return dynamicRules(unref(getValuesRef)); | 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 | const requiredRuleIndex: number = rules.findIndex( | 118 | const requiredRuleIndex: number = rules.findIndex( |
113 | (rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator') | 119 | (rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator') |
114 | ); | 120 | ); |
src/components/Form/src/types/form.ts
@@ -112,6 +112,8 @@ export interface FormSchema { | @@ -112,6 +112,8 @@ export interface FormSchema { | ||
112 | component: ComponentType; | 112 | component: ComponentType; |
113 | // 组件参数 | 113 | // 组件参数 |
114 | componentProps?: any; | 114 | componentProps?: any; |
115 | + // 必填 | ||
116 | + required?: boolean; | ||
115 | 117 | ||
116 | // 校验规则 | 118 | // 校验规则 |
117 | rules?: RuleObject[]; | 119 | rules?: RuleObject[]; |
src/views/demo/form/RuleForm.vue
@@ -24,7 +24,7 @@ | @@ -24,7 +24,7 @@ | ||
24 | colProps: { | 24 | colProps: { |
25 | span: 8, | 25 | span: 8, |
26 | }, | 26 | }, |
27 | - rules: [{ required: true }], | 27 | + required: true, |
28 | }, | 28 | }, |
29 | { | 29 | { |
30 | field: 'field2', | 30 | field: 'field2', |
@@ -33,7 +33,7 @@ | @@ -33,7 +33,7 @@ | ||
33 | colProps: { | 33 | colProps: { |
34 | span: 8, | 34 | span: 8, |
35 | }, | 35 | }, |
36 | - rules: [{ required: true }], | 36 | + required: true, |
37 | }, | 37 | }, |
38 | { | 38 | { |
39 | field: 'field3', | 39 | field: 'field3', |
@@ -42,7 +42,7 @@ | @@ -42,7 +42,7 @@ | ||
42 | colProps: { | 42 | colProps: { |
43 | span: 8, | 43 | span: 8, |
44 | }, | 44 | }, |
45 | - rules: [{ required: true }], | 45 | + required: true, |
46 | }, | 46 | }, |
47 | { | 47 | { |
48 | field: 'field4', | 48 | field: 'field4', |
@@ -65,7 +65,7 @@ | @@ -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 | field: 'field5', | 71 | field: 'field5', |