@wyfex/ivue 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +23 -6
- package/dist/index.umd.cjs +23 -6
- package/dist/ivue.css +1 -1
- package/dist/types/UseElForm/components/QueryForm.vue.d.ts +134 -0
- package/dist/types/UseElForm/components/RowForm.vue.d.ts +140 -0
- package/dist/types/UseElForm/components/controls/Cascader.vue.d.ts +14 -0
- package/dist/types/UseElForm/components/controls/DatePicker.vue.d.ts +15 -0
- package/dist/types/UseElForm/components/controls/Input.vue.d.ts +11 -0
- package/dist/types/UseElForm/components/controls/InputNumber.vue.d.ts +10 -0
- package/dist/types/UseElForm/components/controls/InputRange.vue.d.ts +11 -0
- package/dist/types/UseElForm/components/controls/Radio.vue.d.ts +11 -0
- package/dist/types/UseElForm/components/controls/Select.vue.d.ts +18 -0
- package/dist/types/UseElForm/components/controls/Switch.vue.d.ts +8 -0
- package/dist/types/UseElForm/components/controls/TimePicker.vue.d.ts +10 -0
- package/dist/types/UseElForm/components/controls/TimeSelect.vue.d.ts +10 -0
- package/dist/types/UseElForm/components/controls/TreeSelect.vue.d.ts +12 -0
- package/dist/types/UseElForm/components/useQueryColSpan.d.ts +6 -0
- package/dist/types/UseElForm/hook.d.ts +14 -0
- package/dist/types/UseElForm/index.vue.d.ts +139 -0
- package/dist/types/UseElForm/props.d.ts +60 -0
- package/dist/types/UseElForm/types.d.ts +194 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/UseElDialog/props.ts +2 -2
- package/src/components/UseElForm/props.ts +102 -0
- package/src/components/UseElForm/types.ts +371 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { ExtractPropTypes } from 'vue';
|
|
2
|
+
import { default as componentProps } from './props';
|
|
3
|
+
import { RenderConfig, UseDict } from '../../../types';
|
|
4
|
+
export type Props = ExtractPropTypes<typeof componentProps>;
|
|
5
|
+
export interface Emits {
|
|
6
|
+
(e: 'onDictKeys', value?: string[]): void;
|
|
7
|
+
(e: 'update:formModel', value: Record<string, any>): void;
|
|
8
|
+
}
|
|
9
|
+
export interface QueryConfig {
|
|
10
|
+
mode?: 'ROW' | 'INLINE';
|
|
11
|
+
colSpan?: 24 | 12 | 8 | 6 | 4 | 3 | 2 | 1 | 0;
|
|
12
|
+
formItemWidth?: string;
|
|
13
|
+
showBottomBorber?: boolean;
|
|
14
|
+
openQueryBtnLoading?: boolean;
|
|
15
|
+
onQuery?: Function;
|
|
16
|
+
}
|
|
17
|
+
export interface InputConfig {
|
|
18
|
+
useRender: boolean | RenderConfig;
|
|
19
|
+
type?: 'text' | 'textarea' | 'number' | 'password' | 'email' | 'search' | 'tel' | 'url';
|
|
20
|
+
prefixIcon?: string;
|
|
21
|
+
suffixIcon?: string;
|
|
22
|
+
clearable?: boolean;
|
|
23
|
+
maxlength?: string;
|
|
24
|
+
formatter?: string;
|
|
25
|
+
parser?: string;
|
|
26
|
+
autosize?: boolean | {
|
|
27
|
+
minRows?: number;
|
|
28
|
+
maxRows?: number;
|
|
29
|
+
};
|
|
30
|
+
rows?: number;
|
|
31
|
+
resize?: string;
|
|
32
|
+
showPassword?: boolean;
|
|
33
|
+
placeholder?: string;
|
|
34
|
+
width?: string;
|
|
35
|
+
autoFocus?: boolean;
|
|
36
|
+
prefixContent?: string | object;
|
|
37
|
+
suffixContent?: string | object;
|
|
38
|
+
prependContent?: string | object;
|
|
39
|
+
appendContent?: string | object;
|
|
40
|
+
unit?: string | object;
|
|
41
|
+
onClear?: (...args: any) => any;
|
|
42
|
+
inputEvent?: Function;
|
|
43
|
+
onKeyupEnter?: (...args: any) => any;
|
|
44
|
+
}
|
|
45
|
+
export interface InputNumberConfig {
|
|
46
|
+
useRender: boolean | RenderConfig;
|
|
47
|
+
min?: number;
|
|
48
|
+
max?: number;
|
|
49
|
+
step?: number;
|
|
50
|
+
precision?: number;
|
|
51
|
+
placeholder?: string;
|
|
52
|
+
disabledScientific?: boolean;
|
|
53
|
+
unit?: string | object;
|
|
54
|
+
}
|
|
55
|
+
export interface RadioConfig {
|
|
56
|
+
useRender: boolean | RenderConfig;
|
|
57
|
+
options?: Array<{
|
|
58
|
+
label: string;
|
|
59
|
+
value: string | number;
|
|
60
|
+
}>;
|
|
61
|
+
props?: {
|
|
62
|
+
value: string;
|
|
63
|
+
label?: string;
|
|
64
|
+
};
|
|
65
|
+
reverse?: boolean;
|
|
66
|
+
onChange?: (...args: any) => any;
|
|
67
|
+
}
|
|
68
|
+
export interface SelectConfig {
|
|
69
|
+
useRender: boolean | RenderConfig;
|
|
70
|
+
multiple?: boolean;
|
|
71
|
+
clearable?: boolean;
|
|
72
|
+
placeholder?: string;
|
|
73
|
+
options?: Array<{
|
|
74
|
+
label: string;
|
|
75
|
+
value: string | number;
|
|
76
|
+
}>;
|
|
77
|
+
props?: {
|
|
78
|
+
value: string;
|
|
79
|
+
label?: string;
|
|
80
|
+
};
|
|
81
|
+
useV2: boolean;
|
|
82
|
+
reverse?: boolean;
|
|
83
|
+
toJoin?: boolean;
|
|
84
|
+
width?: string;
|
|
85
|
+
onChange?: (...args: any) => any;
|
|
86
|
+
}
|
|
87
|
+
export interface CascaderConfig {
|
|
88
|
+
useRender: boolean | RenderConfig;
|
|
89
|
+
clearable?: boolean;
|
|
90
|
+
options?: Array<{
|
|
91
|
+
label: string;
|
|
92
|
+
value: string | number;
|
|
93
|
+
}>;
|
|
94
|
+
props?: {
|
|
95
|
+
value: string;
|
|
96
|
+
label?: string;
|
|
97
|
+
};
|
|
98
|
+
width?: string;
|
|
99
|
+
onChange?: (...args: any) => any;
|
|
100
|
+
}
|
|
101
|
+
export interface DatePickerConfig {
|
|
102
|
+
useRender: boolean | RenderConfig;
|
|
103
|
+
type?: 'year' | 'years' | 'month' | 'months' | 'date' | 'dates' | 'datetime' | 'week' | 'datetimerange' | 'daterange' | 'monthrange' | 'yearrange';
|
|
104
|
+
clearable?: boolean;
|
|
105
|
+
disabledDate?: Function;
|
|
106
|
+
placeholder?: string;
|
|
107
|
+
format?: string;
|
|
108
|
+
valueFormat?: string;
|
|
109
|
+
startPlaceholder?: string;
|
|
110
|
+
endPlaceholder?: string;
|
|
111
|
+
rangeSeparator?: string;
|
|
112
|
+
width?: string;
|
|
113
|
+
onCalendarChange?: Function;
|
|
114
|
+
onClear?: Function;
|
|
115
|
+
onChange?: Function;
|
|
116
|
+
}
|
|
117
|
+
export interface TimePickerConfig {
|
|
118
|
+
useRender: boolean | RenderConfig;
|
|
119
|
+
startPlaceholder?: string;
|
|
120
|
+
endPlaceholder?: string;
|
|
121
|
+
rangeSeparator?: string;
|
|
122
|
+
isRange?: boolean;
|
|
123
|
+
editable?: boolean;
|
|
124
|
+
format?: string;
|
|
125
|
+
valueFormat?: string;
|
|
126
|
+
onChange?: (...args: any) => any;
|
|
127
|
+
}
|
|
128
|
+
export interface TimeSelectConfig {
|
|
129
|
+
useRender: boolean | RenderConfig;
|
|
130
|
+
startProp: string;
|
|
131
|
+
endProp: string;
|
|
132
|
+
}
|
|
133
|
+
export interface SwitchConfig {
|
|
134
|
+
useRender: boolean | RenderConfig;
|
|
135
|
+
activeValue?: string | number | boolean;
|
|
136
|
+
inactiveValue?: string | number | boolean;
|
|
137
|
+
onChange?: (...args: any) => any;
|
|
138
|
+
}
|
|
139
|
+
export interface InputRangeConfig {
|
|
140
|
+
startProp: string;
|
|
141
|
+
endProp: string;
|
|
142
|
+
startPlaceholder?: string;
|
|
143
|
+
endPlaceholder?: string;
|
|
144
|
+
rangeSeparator?: string;
|
|
145
|
+
onClear?: (...args: any) => any;
|
|
146
|
+
}
|
|
147
|
+
export interface TreeSelectConfig {
|
|
148
|
+
useRender?: boolean | RenderConfig;
|
|
149
|
+
data: Record<string, unknown>[];
|
|
150
|
+
reverse?: boolean;
|
|
151
|
+
width?: string;
|
|
152
|
+
placeholder?: string;
|
|
153
|
+
props?: {
|
|
154
|
+
value: string;
|
|
155
|
+
label?: string;
|
|
156
|
+
};
|
|
157
|
+
checkStrictly?: boolean;
|
|
158
|
+
filterable?: boolean;
|
|
159
|
+
clearable?: boolean;
|
|
160
|
+
defaultExpandedKeys?: Array<string | number>;
|
|
161
|
+
}
|
|
162
|
+
export interface IRequired {
|
|
163
|
+
isRequired?: boolean;
|
|
164
|
+
validator: 'mobile' | 'nonNegativeDecimal';
|
|
165
|
+
parmas?: any;
|
|
166
|
+
}
|
|
167
|
+
export interface FormColumn {
|
|
168
|
+
label?: string;
|
|
169
|
+
prop: string;
|
|
170
|
+
queryProp?: string | string[];
|
|
171
|
+
required: boolean | IRequired;
|
|
172
|
+
errorMessage?: string;
|
|
173
|
+
disabled?: boolean;
|
|
174
|
+
useDict?: boolean | string | UseDict;
|
|
175
|
+
span?: number;
|
|
176
|
+
labelWidth?: string;
|
|
177
|
+
labelPosition?: 'left' | 'right' | 'top';
|
|
178
|
+
show?: boolean;
|
|
179
|
+
filter?: boolean;
|
|
180
|
+
formItemClass?: string;
|
|
181
|
+
slot?: string | boolean;
|
|
182
|
+
renderConfig?: RenderConfig;
|
|
183
|
+
inputConfig?: InputConfig;
|
|
184
|
+
inputNumberConfig?: InputNumberConfig;
|
|
185
|
+
selectConfig?: SelectConfig;
|
|
186
|
+
treeSelectConfig?: TreeSelectConfig;
|
|
187
|
+
cascaderConfig?: CascaderConfig;
|
|
188
|
+
datePickerConfig?: DatePickerConfig;
|
|
189
|
+
timePickerConfig?: TimePickerConfig;
|
|
190
|
+
timeSelectConfig?: TimeSelectConfig;
|
|
191
|
+
radioConfig?: RadioConfig;
|
|
192
|
+
switchConfig?: SwitchConfig;
|
|
193
|
+
inputRangeConfig?: InputRangeConfig;
|
|
194
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { default as UseElDatePicker } from './UseElDatePicker/index.vue';
|
|
|
4
4
|
export { default as UseElDescriptions } from './UseElDescriptions/index.vue';
|
|
5
5
|
export { default as UseElDialog } from './UseElDialog/index.vue';
|
|
6
6
|
export { default as UseElDrawer } from './UseElDrawer/index.vue';
|
|
7
|
+
export { default as UseElForm } from './UseElForm/index.vue';
|
|
7
8
|
export { default as UseElInput } from './UseElInput/index.vue';
|
|
8
9
|
export { default as UseElSelect } from './UseElSelect/index.vue';
|
|
9
10
|
export { default as UseElSwitch } from './UseElSwitch/index.vue';
|
package/package.json
CHANGED
|
@@ -73,11 +73,11 @@ export default {
|
|
|
73
73
|
default: false
|
|
74
74
|
},
|
|
75
75
|
/**
|
|
76
|
-
* 底部定位 默认
|
|
76
|
+
* 底部定位 默认left
|
|
77
77
|
*/
|
|
78
78
|
footerPosition: {
|
|
79
79
|
type: String,
|
|
80
|
-
default: '
|
|
80
|
+
default: 'left',
|
|
81
81
|
validator: (val: string) => ['left', 'center', 'right'].includes(val)
|
|
82
82
|
},
|
|
83
83
|
/**
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { PropType } from 'vue'
|
|
2
|
+
import type { FormColumn, QueryConfig } from './types'
|
|
3
|
+
import type { DictMap, DictProps, RenderConfig } from '@/types'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 组件props
|
|
7
|
+
*/
|
|
8
|
+
export default {
|
|
9
|
+
/**
|
|
10
|
+
* 表单列 必传
|
|
11
|
+
*/
|
|
12
|
+
formColumns: {
|
|
13
|
+
type: Array as PropType<FormColumn[]>,
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
16
|
+
/**
|
|
17
|
+
* 表单模型 必传
|
|
18
|
+
*/
|
|
19
|
+
formModel: {
|
|
20
|
+
type: Object as PropType<Record<string, any>>,
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
/**
|
|
24
|
+
* 是否使用渲染器 默认否
|
|
25
|
+
*/
|
|
26
|
+
useRender: {
|
|
27
|
+
type: [Boolean, Object] as PropType<boolean | RenderConfig>,
|
|
28
|
+
default: false
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* 字典映射 数据结构为{ formColumns[][label | useDict | useDict.data]: Array<{ label: string, value: any }> }
|
|
32
|
+
*/
|
|
33
|
+
dictMap: {
|
|
34
|
+
type: Object as PropType<DictMap>,
|
|
35
|
+
default: () => ({})
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* 字典属性 默认为{ value: 'value', label: 'label', children: 'children' },可通过全局配置进行设置,为适配全局配置此处不再设置默认值
|
|
39
|
+
*/
|
|
40
|
+
dictProps: {
|
|
41
|
+
type: Object as PropType<DictProps>,
|
|
42
|
+
default: () => ({})
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* el-form-item宽度值
|
|
46
|
+
*/
|
|
47
|
+
formItemWidth: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: '100%'
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* label后缀
|
|
53
|
+
*/
|
|
54
|
+
labelSuffix: {
|
|
55
|
+
type: String,
|
|
56
|
+
default: ''
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* label宽度
|
|
60
|
+
*/
|
|
61
|
+
labelWidth: {
|
|
62
|
+
type: String,
|
|
63
|
+
default: 'auto'
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* label定位
|
|
67
|
+
*/
|
|
68
|
+
labelPosition: {
|
|
69
|
+
type: String,
|
|
70
|
+
default: 'right',
|
|
71
|
+
validator: (val: string) => ['left', 'right', 'top'].includes(val)
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* el-row的gutter值
|
|
75
|
+
*/
|
|
76
|
+
rowGutter: {
|
|
77
|
+
type: Number,
|
|
78
|
+
default: 20
|
|
79
|
+
},
|
|
80
|
+
/**
|
|
81
|
+
* el-col的span值
|
|
82
|
+
*/
|
|
83
|
+
colSpan: {
|
|
84
|
+
type: Number,
|
|
85
|
+
default: 12,
|
|
86
|
+
validator: (val: number) => [24, 12, 8, 6, 4, 3, 2, 1, 0].includes(val)
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* 是否禁用
|
|
90
|
+
*/
|
|
91
|
+
disabled: {
|
|
92
|
+
type: Boolean,
|
|
93
|
+
default: false
|
|
94
|
+
},
|
|
95
|
+
/**
|
|
96
|
+
* 查询配置
|
|
97
|
+
*/
|
|
98
|
+
queryConfig: {
|
|
99
|
+
type: Object as PropType<QueryConfig>,
|
|
100
|
+
default: () => ({})
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import type { ExtractPropTypes } from 'vue'
|
|
2
|
+
import componentProps from './props'
|
|
3
|
+
import type { RenderConfig, UseDict } from '@/types'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* props类型
|
|
7
|
+
*/
|
|
8
|
+
export type Props = ExtractPropTypes<typeof componentProps>
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* emits接口
|
|
12
|
+
*/
|
|
13
|
+
export interface Emits {
|
|
14
|
+
// dictKeys事件
|
|
15
|
+
(e: 'onDictKeys', value?: string[]): void
|
|
16
|
+
// 更新formModel 仅formMode为inlineForm时支持
|
|
17
|
+
(e: 'update:formModel', value: Record<string, any>): void
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* queryConfig接口
|
|
22
|
+
*/
|
|
23
|
+
export interface QueryConfig {
|
|
24
|
+
/**
|
|
25
|
+
* 查询表单模式 支持ROW和INLINE
|
|
26
|
+
* 不显式指定则默认为ROW(queryConfig为非空对象方可生效)
|
|
27
|
+
*/
|
|
28
|
+
mode?: 'ROW' | 'INLINE'
|
|
29
|
+
/**
|
|
30
|
+
* 查询表单mode为ROW的el-col的span
|
|
31
|
+
* 不显式设置则使用内部默认响应式
|
|
32
|
+
*/
|
|
33
|
+
colSpan?: 24 | 12 | 8 | 6 | 4 | 3 | 2 | 1 | 0
|
|
34
|
+
/**
|
|
35
|
+
* el-form-item宽度值
|
|
36
|
+
* 查询表单mode为ROW时formItemWidth默认为100%;查询表单mode为INLINE时formItemWidth默认为180px
|
|
37
|
+
*/
|
|
38
|
+
formItemWidth?: string
|
|
39
|
+
/**
|
|
40
|
+
* 是否显示底部border 默认显示
|
|
41
|
+
*/
|
|
42
|
+
showBottomBorber?: boolean
|
|
43
|
+
/**
|
|
44
|
+
* 开启查询按钮loading
|
|
45
|
+
* 注意:开启此配置项需回调onQuery事件第二个参数done,否则查询按钮loading无法关闭
|
|
46
|
+
*/
|
|
47
|
+
openQueryBtnLoading?: boolean
|
|
48
|
+
/**
|
|
49
|
+
* 查询表单事件
|
|
50
|
+
*/
|
|
51
|
+
onQuery?: Function
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* inputConfig接口
|
|
56
|
+
*/
|
|
57
|
+
export interface InputConfig {
|
|
58
|
+
useRender: boolean | RenderConfig
|
|
59
|
+
type?:
|
|
60
|
+
| 'text'
|
|
61
|
+
| 'textarea'
|
|
62
|
+
| 'number'
|
|
63
|
+
| 'password'
|
|
64
|
+
| 'email'
|
|
65
|
+
| 'search'
|
|
66
|
+
| 'tel'
|
|
67
|
+
| 'url'
|
|
68
|
+
prefixIcon?: string
|
|
69
|
+
suffixIcon?: string
|
|
70
|
+
clearable?: boolean
|
|
71
|
+
maxlength?: string
|
|
72
|
+
formatter?: string
|
|
73
|
+
parser?: string
|
|
74
|
+
autosize?: boolean | { minRows?: number; maxRows?: number }
|
|
75
|
+
rows?: number
|
|
76
|
+
resize?: string
|
|
77
|
+
showPassword?: boolean
|
|
78
|
+
placeholder?: string
|
|
79
|
+
width?: string // 默认el-input的width为100% 可设置width为''或具体宽度值,为''则使用默认的el-input宽度
|
|
80
|
+
autoFocus?: boolean // 为true则对el-input使用v-focus聚焦指令
|
|
81
|
+
prefixContent?: string | object // el-input头部插槽内容
|
|
82
|
+
suffixContent?: string | object // el-input尾部插槽内容
|
|
83
|
+
prependContent?: string | object // el-input前置插槽内容
|
|
84
|
+
appendContent?: string | object // el-input后置插槽内容
|
|
85
|
+
unit?: string | object // 在el-input右外部显示单位
|
|
86
|
+
onClear?: (...args: any) => any // el-input的clear事件
|
|
87
|
+
inputEvent?: Function // el-input的input事件
|
|
88
|
+
onKeyupEnter?: (...args: any) => any // el-input的keyup.enter事件
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* inputNumberConfig接口
|
|
93
|
+
*/
|
|
94
|
+
export interface InputNumberConfig {
|
|
95
|
+
useRender: boolean | RenderConfig
|
|
96
|
+
min?: number
|
|
97
|
+
max?: number
|
|
98
|
+
step?: number
|
|
99
|
+
precision?: number
|
|
100
|
+
placeholder?: string
|
|
101
|
+
disabledScientific?: boolean
|
|
102
|
+
unit?: string | object // 在el-input-number右外部显示单位
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* radioConfig接口
|
|
107
|
+
*/
|
|
108
|
+
export interface RadioConfig {
|
|
109
|
+
useRender: boolean | RenderConfig
|
|
110
|
+
options?: Array<{ label: string; value: string | number }> // el-radio的选项集
|
|
111
|
+
props?: { value: string; label?: string } // el-radio的props配置项
|
|
112
|
+
reverse?: boolean // 是否反转单选框和标签的位置
|
|
113
|
+
onChange?: (...args: any) => any // el-radio的change事件
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* selectConfig接口
|
|
118
|
+
*/
|
|
119
|
+
export interface SelectConfig {
|
|
120
|
+
useRender: boolean | RenderConfig
|
|
121
|
+
multiple?: boolean
|
|
122
|
+
clearable?: boolean
|
|
123
|
+
placeholder?: string
|
|
124
|
+
options?: Array<{ label: string; value: string | number }>
|
|
125
|
+
props?: { value: string; label?: string }
|
|
126
|
+
useV2: boolean //是否使用v2版本
|
|
127
|
+
reverse?: boolean // 是否反转
|
|
128
|
+
toJoin?: boolean // 是否将值为数组转为以逗号分隔的字符串
|
|
129
|
+
width?: string // 默认el-select的width为100% 可设置width为''或具体宽度值,为''则使用默认的el-select宽度
|
|
130
|
+
onChange?: (...args: any) => any // el-select的change事件
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* cascaderConfig接口
|
|
135
|
+
*/
|
|
136
|
+
export interface CascaderConfig {
|
|
137
|
+
useRender: boolean | RenderConfig
|
|
138
|
+
clearable?: boolean
|
|
139
|
+
options?: Array<{ label: string; value: string | number }> //el-cascader的选项集
|
|
140
|
+
props?: { value: string; label?: string } //el-cascader的props配置项
|
|
141
|
+
width?: string //默认el-cascader的width为100% 可设置width为''或具体宽度值,为''则使用默认的el-cascader宽度
|
|
142
|
+
onChange?: (...args: any) => any //el-select的change事件
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* datePickerConfig接口
|
|
147
|
+
*/
|
|
148
|
+
export interface DatePickerConfig {
|
|
149
|
+
useRender: boolean | RenderConfig
|
|
150
|
+
type?:
|
|
151
|
+
| 'year'
|
|
152
|
+
| 'years'
|
|
153
|
+
| 'month'
|
|
154
|
+
| 'months'
|
|
155
|
+
| 'date'
|
|
156
|
+
| 'dates'
|
|
157
|
+
| 'datetime'
|
|
158
|
+
| 'week'
|
|
159
|
+
| 'datetimerange'
|
|
160
|
+
| 'daterange'
|
|
161
|
+
| 'monthrange'
|
|
162
|
+
| 'yearrange'
|
|
163
|
+
clearable?: boolean
|
|
164
|
+
disabledDate?: Function
|
|
165
|
+
placeholder?: string
|
|
166
|
+
format?: string
|
|
167
|
+
valueFormat?: string
|
|
168
|
+
startPlaceholder?: string
|
|
169
|
+
endPlaceholder?: string
|
|
170
|
+
rangeSeparator?: string
|
|
171
|
+
width?: string // 默认el-date-picker的width为100% 可设置width为''或具体宽度值,为''则使用默认的el-date-picker宽度
|
|
172
|
+
onCalendarChange?: Function // el-date-picker的calendar-change事件
|
|
173
|
+
onClear?: Function // el-date-picker的clear事件
|
|
174
|
+
onChange?: Function // el-date-picker的change事件
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* timePickerConfig接口
|
|
179
|
+
*/
|
|
180
|
+
export interface TimePickerConfig {
|
|
181
|
+
useRender: boolean | RenderConfig
|
|
182
|
+
startPlaceholder?: string
|
|
183
|
+
endPlaceholder?: string
|
|
184
|
+
rangeSeparator?: string
|
|
185
|
+
isRange?: boolean
|
|
186
|
+
editable?: boolean
|
|
187
|
+
format?: string
|
|
188
|
+
valueFormat?: string
|
|
189
|
+
onChange?: (...args: any) => any //el-date-picker的change事件
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* timeSelectConfig接口
|
|
194
|
+
*/
|
|
195
|
+
export interface TimeSelectConfig {
|
|
196
|
+
useRender: boolean | RenderConfig
|
|
197
|
+
startProp: string // 时间选择范围开始时间在formModel中的属性名
|
|
198
|
+
endProp: string // 时间选择范围结束时间在formModel中的属性名
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* switchConfig接口
|
|
203
|
+
*/
|
|
204
|
+
export interface SwitchConfig {
|
|
205
|
+
useRender: boolean | RenderConfig
|
|
206
|
+
activeValue?: string | number | boolean
|
|
207
|
+
inactiveValue?: string | number | boolean
|
|
208
|
+
onChange?: (...args: any) => any // el-switch的change事件
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* inputRangeConfig接口
|
|
213
|
+
*/
|
|
214
|
+
export interface InputRangeConfig {
|
|
215
|
+
startProp: string // 输入范围开始值在formModel中的属性名
|
|
216
|
+
endProp: string // 输入范围结束值在formModel中的属性名
|
|
217
|
+
startPlaceholder?: string
|
|
218
|
+
endPlaceholder?: string
|
|
219
|
+
rangeSeparator?: string
|
|
220
|
+
onClear?: (...args: any) => any
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* treeSelectConfig接口
|
|
225
|
+
*/
|
|
226
|
+
export interface TreeSelectConfig {
|
|
227
|
+
useRender?: boolean | RenderConfig
|
|
228
|
+
data: Record<string, unknown>[]
|
|
229
|
+
reverse?: boolean // 是否反转
|
|
230
|
+
width?: string
|
|
231
|
+
placeholder?: string
|
|
232
|
+
props?: { value: string; label?: string }
|
|
233
|
+
checkStrictly?: boolean
|
|
234
|
+
filterable?: boolean
|
|
235
|
+
clearable?: boolean
|
|
236
|
+
defaultExpandedKeys?: Array<string | number>
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export interface IRequired {
|
|
240
|
+
// 是否必填
|
|
241
|
+
isRequired?: boolean
|
|
242
|
+
// 内置校验器
|
|
243
|
+
validator: 'mobile' | 'nonNegativeDecimal'
|
|
244
|
+
// 参数
|
|
245
|
+
parmas?: any
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* formColumn接口
|
|
250
|
+
*/
|
|
251
|
+
export interface FormColumn {
|
|
252
|
+
/**
|
|
253
|
+
* el-form-item的label
|
|
254
|
+
* 可不传,不传则不显示label且不占用label空间,同时不会显示必填项星号,但需要手动指定errorMessage以显示必填项错误提示信息
|
|
255
|
+
* 如果useDict为true则必须传入label以获取dictMap中的数据,否则无法使用字典功能
|
|
256
|
+
*/
|
|
257
|
+
label?: string
|
|
258
|
+
/**
|
|
259
|
+
* el-form-item的prop
|
|
260
|
+
* 可传以逗号分隔的字符串,组件内部自动拆解,如'startDate,endDate' => { startDate: xxx, endDate: yyy }
|
|
261
|
+
*/
|
|
262
|
+
prop: string
|
|
263
|
+
/**
|
|
264
|
+
* 查询prop
|
|
265
|
+
* 当查询表单(如起止时间字段拆分)和列表prop字段不一致时传入该配置项
|
|
266
|
+
* 可传以逗号分隔的字符串,组件内部自动拆解,亦可传入字符串数组
|
|
267
|
+
*/
|
|
268
|
+
queryProp?: string | string[]
|
|
269
|
+
/**
|
|
270
|
+
* 是否为必填项
|
|
271
|
+
* 如为boolean则使用基础必填校验
|
|
272
|
+
* 如为IRequired则使用内置必填校验
|
|
273
|
+
* 可传对象数组进行自定义校验
|
|
274
|
+
*/
|
|
275
|
+
required: boolean | IRequired
|
|
276
|
+
/**
|
|
277
|
+
* 必填项错误消息
|
|
278
|
+
* 如不指定则默认为“请输入xxx”或“请选择xxx”
|
|
279
|
+
*/
|
|
280
|
+
errorMessage?: string
|
|
281
|
+
/**
|
|
282
|
+
* 是否禁用
|
|
283
|
+
*/
|
|
284
|
+
disabled?: boolean
|
|
285
|
+
/**
|
|
286
|
+
* 使用字典
|
|
287
|
+
* 如为boolean则将label作为dictMap的key
|
|
288
|
+
* 如为string或dict.data为string则将dict或dict.data作为dictMap的key
|
|
289
|
+
*/
|
|
290
|
+
useDict?: boolean | string | UseDict
|
|
291
|
+
/**
|
|
292
|
+
* el-col的span
|
|
293
|
+
*/
|
|
294
|
+
span?: number
|
|
295
|
+
/**
|
|
296
|
+
* el-form-item的labelWidth
|
|
297
|
+
*/
|
|
298
|
+
labelWidth?: string
|
|
299
|
+
/**
|
|
300
|
+
* el-form-item的labelPosition
|
|
301
|
+
*/
|
|
302
|
+
labelPosition?: 'left' | 'right' | 'top'
|
|
303
|
+
/**
|
|
304
|
+
* 是否显示当前项
|
|
305
|
+
* 为false则不显示当前项 会占用formColumn空间,似v-show
|
|
306
|
+
*/
|
|
307
|
+
show?: boolean
|
|
308
|
+
/**
|
|
309
|
+
* 是否过滤当前项
|
|
310
|
+
* 为true则将当前项从formColumns中过滤掉 不会占用formColumn空间,似v-if
|
|
311
|
+
*/
|
|
312
|
+
filter?: boolean
|
|
313
|
+
/**
|
|
314
|
+
* el-form-item的class
|
|
315
|
+
*/
|
|
316
|
+
formItemClass?: string
|
|
317
|
+
/**
|
|
318
|
+
* 插槽
|
|
319
|
+
* 为string类型则使用slot值作为具名插槽值
|
|
320
|
+
* 为boolean类型则使用prop值作为具名插槽值
|
|
321
|
+
*/
|
|
322
|
+
slot?: string | boolean
|
|
323
|
+
/**
|
|
324
|
+
* 表单项为【UseRender】的配置项
|
|
325
|
+
*/
|
|
326
|
+
renderConfig?: RenderConfig
|
|
327
|
+
/**
|
|
328
|
+
* 表单项为【输入框】的配置项
|
|
329
|
+
*/
|
|
330
|
+
inputConfig?: InputConfig
|
|
331
|
+
/**
|
|
332
|
+
* 表单项为【数字输入框】的配置项
|
|
333
|
+
*/
|
|
334
|
+
inputNumberConfig?: InputNumberConfig
|
|
335
|
+
/**
|
|
336
|
+
* 表单项为【选择下拉框】的配置项
|
|
337
|
+
*/
|
|
338
|
+
selectConfig?: SelectConfig
|
|
339
|
+
/**
|
|
340
|
+
* 表单项为【树形选择下拉框】的配置项
|
|
341
|
+
*/
|
|
342
|
+
treeSelectConfig?: TreeSelectConfig
|
|
343
|
+
/**
|
|
344
|
+
* 表单项为【级联选择器】的配置项
|
|
345
|
+
*/
|
|
346
|
+
cascaderConfig?: CascaderConfig
|
|
347
|
+
/**
|
|
348
|
+
* 表单项为【日期选择器】的配置项
|
|
349
|
+
*/
|
|
350
|
+
datePickerConfig?: DatePickerConfig
|
|
351
|
+
/**
|
|
352
|
+
* 表单项为【时间选择器】的配置项
|
|
353
|
+
*/
|
|
354
|
+
timePickerConfig?: TimePickerConfig
|
|
355
|
+
/**
|
|
356
|
+
* 表单项为【时间选择范围】的配置项
|
|
357
|
+
*/
|
|
358
|
+
timeSelectConfig?: TimeSelectConfig
|
|
359
|
+
/**
|
|
360
|
+
* 表单项为【单选框】的配置项
|
|
361
|
+
*/
|
|
362
|
+
radioConfig?: RadioConfig
|
|
363
|
+
/**
|
|
364
|
+
* 表单项为【开关】的配置项
|
|
365
|
+
*/
|
|
366
|
+
switchConfig?: SwitchConfig
|
|
367
|
+
/**
|
|
368
|
+
* 表单项为【输入范围】的配置项
|
|
369
|
+
*/
|
|
370
|
+
inputRangeConfig?: InputRangeConfig
|
|
371
|
+
}
|