@ttkj/avue 2.10.11 → 2.10.12
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -24
- package/package.json +2 -1
- package/types/README.md +48 -0
- package/types/avue.d.ts +33 -0
- package/types/crud/column.d.ts +383 -0
- package/types/crud/index.d.ts +263 -0
- package/types/crud/option.d.ts +376 -0
- package/types/crud/refs/dialog-form.d.ts +36 -0
- package/types/form/column.d.ts +300 -0
- package/types/form/index.d.ts +63 -0
- package/types/form/option.d.ts +167 -0
- package/types/global-component/dialog-form.d.ts +57 -0
- package/types/global-component/export.d.ts +23 -0
- package/types/global-component/image-cropper.d.ts +142 -0
- package/types/global-component/image-preview.d.ts +52 -0
- package/types/global-component/watermark.d.ts +37 -0
- package/types/global.d.ts +315 -0
- package/types/index.d.ts +4 -0
@@ -0,0 +1,300 @@
|
|
1
|
+
import { PopoverPlacement } from 'element-ui/types/popover';
|
2
|
+
import { AvueComponentSize, Obj, DicProps as BaseDicProps, DicHttpProps } from '../global';
|
3
|
+
|
4
|
+
/** 表单项字典Props配置 */
|
5
|
+
export interface DicProps extends BaseDicProps, DicHttpProps {}
|
6
|
+
|
7
|
+
/** 组件类型: 布局(layout) 基础(basic) 表单组件(form) */
|
8
|
+
export type ComponentType = 'layout' | 'basic' | 'form';
|
9
|
+
|
10
|
+
/** 表单项数据模拟配置 */
|
11
|
+
export type ColumnMock =
|
12
|
+
| ((form: Obj) => any)
|
13
|
+
| {
|
14
|
+
/** 随机生成一个常见的姓名。 */
|
15
|
+
type: 'name';
|
16
|
+
/** 是否英文名 */
|
17
|
+
en?: boolean;
|
18
|
+
}
|
19
|
+
| {
|
20
|
+
type: 'number';
|
21
|
+
/** 整数部分的最小值。默认值为 -9007199254740992。 */
|
22
|
+
min?: number;
|
23
|
+
/** 整数部分的最大值。默认值为 9007199254740992。 */
|
24
|
+
max?: number;
|
25
|
+
/** 小数部分位数的最小值。默认值为 0。不传返回整数值 */
|
26
|
+
precision?: number;
|
27
|
+
}
|
28
|
+
| {
|
29
|
+
/** 随机生成日期时间。文档:```https://github.com/nuysoft/Mock/wiki/Date``` */
|
30
|
+
type: 'datetime';
|
31
|
+
/** 指示生成的日期字符串的格式。默认值为 yyyy-MM-dd。当now为true时,概念有所不同,具体查看文档
|
32
|
+
*/
|
33
|
+
format?: string;
|
34
|
+
/** 是否为当前时间 */
|
35
|
+
now?: boolean;
|
36
|
+
}
|
37
|
+
| {
|
38
|
+
/** 随机生成一段中文文本。 */
|
39
|
+
type: 'word';
|
40
|
+
/** 指示句子中单词的最小个数。默认值为 12。 */
|
41
|
+
min?: number;
|
42
|
+
/** 指示句子中单词的最大个数。默认值为 18。 */
|
43
|
+
max?: number;
|
44
|
+
}
|
45
|
+
| {
|
46
|
+
/** 随机生成网址 */
|
47
|
+
type: 'url';
|
48
|
+
/** 是否包含"http://"。默认值为 true */
|
49
|
+
header?: boolean;
|
50
|
+
}
|
51
|
+
| {
|
52
|
+
/** 随机生成一个(中国)县。返回省市区三级 */
|
53
|
+
type: 'county';
|
54
|
+
}
|
55
|
+
| {
|
56
|
+
/** 随机生成字典值 */
|
57
|
+
type: 'dic';
|
58
|
+
};
|
59
|
+
|
60
|
+
/**
|
61
|
+
* 表单项事件参数,适用于click|blur|focus
|
62
|
+
*/
|
63
|
+
export interface FormColumnEventParams {
|
64
|
+
/** 表单项值 */
|
65
|
+
value: any;
|
66
|
+
/** 鼠标点击事件$event */
|
67
|
+
event: MouseEvent;
|
68
|
+
/** 表单项列配置 */
|
69
|
+
column: AvueFormColumn;
|
70
|
+
/** 表单项列配置索引 */
|
71
|
+
columnIndex: Record<string, AvueFormColumn>;
|
72
|
+
/** 表单值 */
|
73
|
+
row: Obj;
|
74
|
+
/** dic */
|
75
|
+
dic: Obj[];
|
76
|
+
/** 当表单项含dic时,根据选中值返回对应的dic项 */
|
77
|
+
item?: Obj;
|
78
|
+
/** 表单项值的label,含dic时,为dic的label,否则为value的字符串格式 */
|
79
|
+
label: string;
|
80
|
+
/** 所在行索引,只在明细组件中生效 */
|
81
|
+
index?: number;
|
82
|
+
}
|
83
|
+
|
84
|
+
/** 表单项基本配置属性 */
|
85
|
+
export interface FormBaseColumn {
|
86
|
+
/** 列类型, 默认: 'input' */
|
87
|
+
type?: string;
|
88
|
+
/** 组件 */
|
89
|
+
component?: string;
|
90
|
+
/**
|
91
|
+
* 组件类型
|
92
|
+
* @description 自定义属性
|
93
|
+
* @since 2.9.12
|
94
|
+
*/
|
95
|
+
componentType?: ComponentType;
|
96
|
+
/** 列字段(唯一不重复) */
|
97
|
+
prop?: string;
|
98
|
+
/** 深结构数据绑定取值 */
|
99
|
+
bind?: string;
|
100
|
+
/** 标题名称 */
|
101
|
+
label: string;
|
102
|
+
/** 标题名称宽度, 默认: 110 */
|
103
|
+
labelWidth?: number;
|
104
|
+
/** 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 labelWidth, 默认: 'right' */
|
105
|
+
labelPosition?: 'left' | 'right' | 'top';
|
106
|
+
/** 弹窗编辑文字提示 */
|
107
|
+
tip?: string;
|
108
|
+
/**
|
109
|
+
* 辅助文字提示展示方向
|
110
|
+
* @since 2.8.2
|
111
|
+
*/
|
112
|
+
tipPlacement?: PopoverPlacement;
|
113
|
+
/** 标题文字提示 */
|
114
|
+
labelTip?: string;
|
115
|
+
/**
|
116
|
+
* 标题文字提示展示方向
|
117
|
+
* @since 2.8.2
|
118
|
+
*/
|
119
|
+
labelTipPlacement?: PopoverPlacement;
|
120
|
+
/** placeholder */
|
121
|
+
placeholder?: string;
|
122
|
+
/** 只读, 默认: false */
|
123
|
+
readonly?: boolean;
|
124
|
+
/** 是否可以清空选项, 默认: false */
|
125
|
+
clearable?: boolean;
|
126
|
+
/** 禁止编辑, 默认: false */
|
127
|
+
disabled?: boolean;
|
128
|
+
/** 是否详情模式, 默认: false */
|
129
|
+
detail?: boolean;
|
130
|
+
/** 校验规则 */
|
131
|
+
rules?: Obj[];
|
132
|
+
/** 控件大小 */
|
133
|
+
size?: AvueComponentSize;
|
134
|
+
/** 是否可见, 默认: true */
|
135
|
+
display?: boolean;
|
136
|
+
/** 默认值 */
|
137
|
+
value?: any;
|
138
|
+
/**
|
139
|
+
* 字段位置排序
|
140
|
+
* @description 不同版本中排序规则并不相同:`2.7.9 - 2.8.26`中,order值越小位置越靠前,其余版本值越大位置越靠前。自用版本自 `2.9.12` 改为值越小位置越靠前
|
141
|
+
*/
|
142
|
+
order?: number;
|
143
|
+
/** 数据类型转化时的分隔符,配合dataType使用, 默认: ', */
|
144
|
+
separator?: string;
|
145
|
+
/** 数据类型用于数组和字符串之间的转化 */
|
146
|
+
dataType?: 'string' | 'number' | 'array';
|
147
|
+
/**
|
148
|
+
* 自定义样式
|
149
|
+
* @since 2.7.1
|
150
|
+
*/
|
151
|
+
className?: string;
|
152
|
+
/**
|
153
|
+
* 自定义属性
|
154
|
+
* @description 用于设定自定义组件的prop属性值
|
155
|
+
* @since 2.3.4
|
156
|
+
*/
|
157
|
+
params?: {
|
158
|
+
/** 当组件不存在时,若配置了该属性,则会将其渲染成html元素 */
|
159
|
+
html?: string;
|
160
|
+
/** 其他自定义属性 */
|
161
|
+
[x: string]: any;
|
162
|
+
};
|
163
|
+
/**
|
164
|
+
* 组件隐藏是否提交数据
|
165
|
+
* @default default
|
166
|
+
* @description 流程相关配置。说明:组件隐藏是否提交数据。注意:若流程配置为不显示,则无法获取到组件数据
|
167
|
+
*/
|
168
|
+
dataSubmit?: 'default' | 'always';
|
169
|
+
/** 级联的子节点prop */
|
170
|
+
cascader?: string[];
|
171
|
+
/** 级联的默认选项序号 */
|
172
|
+
cascaderIndex?: number;
|
173
|
+
/** 表单项数据模拟 */
|
174
|
+
mock?: ColumnMock;
|
175
|
+
}
|
176
|
+
|
177
|
+
/** 表单项列宽配置 */
|
178
|
+
export interface FormColumnColOption {
|
179
|
+
/** 栅列, 默认: 12 */
|
180
|
+
span: number;
|
181
|
+
/**
|
182
|
+
* ≥768px 响应式栅格数或者栅格属性对象, 默认: 12
|
183
|
+
* @since 2.8.12
|
184
|
+
*/
|
185
|
+
smSpan: ResponsiveColumn;
|
186
|
+
/**
|
187
|
+
* <768px 响应式栅格数或者栅格属性对象, 默认: 24
|
188
|
+
* @since 2.8.12
|
189
|
+
*/
|
190
|
+
xsSpan: ResponsiveColumn;
|
191
|
+
/**
|
192
|
+
* 栅格左侧的间隔格数, 默认: 0
|
193
|
+
* @since 2.8.12
|
194
|
+
*/
|
195
|
+
offset: number;
|
196
|
+
/** 表单项是否单独成行, 默认: false */
|
197
|
+
row: boolean;
|
198
|
+
}
|
199
|
+
|
200
|
+
/** 表单项字典配置 */
|
201
|
+
export interface FormColumnDicOption {
|
202
|
+
/**
|
203
|
+
* 字典
|
204
|
+
*
|
205
|
+
* 默认为{label, value},其中label为显示,value为取值。可通过props属性调整
|
206
|
+
*/
|
207
|
+
dicData: Obj[];
|
208
|
+
/** 远程字典地址 */
|
209
|
+
dicUrl: string;
|
210
|
+
/** 字典请求方式,配合dicUrl使用 */
|
211
|
+
dicMethod: 'get' | 'GET' | 'post' | 'POST';
|
212
|
+
/** 字典请求参数,配合dicUrl使用 */
|
213
|
+
dicQuery: Obj;
|
214
|
+
/** 字典数据返回的执行函数,配合dicUrl使用 */
|
215
|
+
dicFormatter: (value: any) => Obj[];
|
216
|
+
/** 参数配置项 */
|
217
|
+
props: Partial<DicProps>;
|
218
|
+
}
|
219
|
+
|
220
|
+
/** 表单项通用事件 */
|
221
|
+
export interface FormColumnEvent<T = Obj> {
|
222
|
+
/**
|
223
|
+
* 字段控制器, 不使用箭头函数
|
224
|
+
* @param value 表单项的值
|
225
|
+
* @param form 表单值
|
226
|
+
* @example https://avuejs.com/form/form-control.html
|
227
|
+
* @since 2.8.6
|
228
|
+
*/
|
229
|
+
control: (value: any, form: T) => Record<string, Partial<AvueFormColumn>>;
|
230
|
+
/**
|
231
|
+
* 点击事件
|
232
|
+
* @since 2.9.6
|
233
|
+
*/
|
234
|
+
click: (params: FormColumnEventParams) => void;
|
235
|
+
/**
|
236
|
+
* 值改变事件
|
237
|
+
* @since 2.9.6
|
238
|
+
*/
|
239
|
+
change: (params: Omit<FormColumnEventParams, 'event'>) => void;
|
240
|
+
/**
|
241
|
+
* 聚焦事件
|
242
|
+
* @since 2.9.6
|
243
|
+
*/
|
244
|
+
focus: (params: FormColumnEventParams) => void;
|
245
|
+
/**
|
246
|
+
* 失焦事件
|
247
|
+
* @since 2.9.6
|
248
|
+
*/
|
249
|
+
blur: (params: FormColumnEventParams) => void;
|
250
|
+
/**
|
251
|
+
* 回车事件
|
252
|
+
*/
|
253
|
+
enter: (params: Pick<FormColumnEventParams, 'value' | 'column'>) => void;
|
254
|
+
/**
|
255
|
+
* 事件源码
|
256
|
+
* @since 2.9.12(伪)
|
257
|
+
*/
|
258
|
+
_event?: Partial<Record<'click' | 'change' | 'focus' | 'blur', string>>;
|
259
|
+
/** 事件 */
|
260
|
+
event: Partial<Omit<FormColumnEvent<T>, 'control' | 'event' | 'enter'>>;
|
261
|
+
}
|
262
|
+
|
263
|
+
/** 表单项通用参数 */
|
264
|
+
export interface AvueFormBaseColumn<T>
|
265
|
+
extends FormBaseColumn,
|
266
|
+
Partial<FormColumnColOption>,
|
267
|
+
Partial<FormColumnDicOption>,
|
268
|
+
Partial<FormColumnEvent<T>> {
|
269
|
+
/** 底部操作栏栅列, 默认: 12 */
|
270
|
+
menuSpan?: number;
|
271
|
+
/**
|
272
|
+
* 表单自定义, 默认: false
|
273
|
+
* @deprecated 2.8.0
|
274
|
+
*/
|
275
|
+
formslot?: boolean;
|
276
|
+
/**
|
277
|
+
* 表单标题自定义, 默认: false
|
278
|
+
* @deprecated 2.8.0
|
279
|
+
*/
|
280
|
+
labelslot?: boolean;
|
281
|
+
/**
|
282
|
+
* 表单错误自定义, 默认: false
|
283
|
+
* @deprecated 2.8.0
|
284
|
+
*/
|
285
|
+
errorslot?: boolean;
|
286
|
+
/**
|
287
|
+
* 组件下拉自定义, 默认: false
|
288
|
+
* @deprecated 2.8.0
|
289
|
+
*/
|
290
|
+
typeslot?: boolean;
|
291
|
+
}
|
292
|
+
|
293
|
+
/**
|
294
|
+
* 表单项配置
|
295
|
+
* TODO 表单项个性化配置待完成
|
296
|
+
*/
|
297
|
+
export type AvueFormColumn<T = Obj> = AvueFormBaseColumn<T> & {
|
298
|
+
/** 其他配置 */
|
299
|
+
[x: string]: any;
|
300
|
+
};
|
@@ -0,0 +1,63 @@
|
|
1
|
+
// 引入定义
|
2
|
+
import { VNode } from 'vue';
|
3
|
+
import { ElForm } from 'element-ui/types/form';
|
4
|
+
import { AvueComponent } from '../global';
|
5
|
+
import { FormOption } from './option';
|
6
|
+
|
7
|
+
/** 表单Refs */
|
8
|
+
export interface AvueFormRefs {
|
9
|
+
/** 表单组件 */
|
10
|
+
form: ElForm;
|
11
|
+
/** 表单项Ref(仅未slot插槽的表单项才有),无实际使用意义 */
|
12
|
+
[x: string]: VNode[];
|
13
|
+
}
|
14
|
+
|
15
|
+
/** 表单组件 */
|
16
|
+
export declare class AvueForm<T = Obj> extends AvueComponent {
|
17
|
+
// ========== 属性 ==========
|
18
|
+
/** 表单配置 */
|
19
|
+
readonly option: FormOption<T>;
|
20
|
+
/** 表单值 */
|
21
|
+
readonly value: Obj;
|
22
|
+
/** 表单dic数据 */
|
23
|
+
DIC: Record<string, Obj[]>;
|
24
|
+
// ========== 方法 ==========
|
25
|
+
/** 重新初始化(多数用于服务端加载或者更新网络字典) */
|
26
|
+
init(): void;
|
27
|
+
/**
|
28
|
+
* 获取prop的ref对象
|
29
|
+
* @param prop 表单项的 prop 属性
|
30
|
+
*/
|
31
|
+
getPropRef(prop: keyof AvueFormRefs): ReturnType<AvueFormRefs>;
|
32
|
+
/**
|
33
|
+
* 移除表单项的校验结果。
|
34
|
+
* @param {string | string[]} [props] 传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果
|
35
|
+
*/
|
36
|
+
clearValidate(props?: string | string[]): void;
|
37
|
+
/** 对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。 */
|
38
|
+
validate(
|
39
|
+
callback: (
|
40
|
+
valid: boolean,
|
41
|
+
hide: () => void,
|
42
|
+
msg?: Record<
|
43
|
+
string,
|
44
|
+
{
|
45
|
+
/** 字段名(prop) */
|
46
|
+
field: string;
|
47
|
+
/** 错误内容 */
|
48
|
+
message: string;
|
49
|
+
}[]
|
50
|
+
>
|
51
|
+
) => void
|
52
|
+
): void;
|
53
|
+
/** 清空表单数据 */
|
54
|
+
resetForm(): void;
|
55
|
+
/** 提交表单数据 */
|
56
|
+
submit(): void;
|
57
|
+
/** 将表单置于提交状态 */
|
58
|
+
show(): void;
|
59
|
+
/** 将表单置于普通状态 */
|
60
|
+
hide(): void;
|
61
|
+
/** 组件Refs */
|
62
|
+
$refs: AvueFormRefs;
|
63
|
+
}
|
@@ -0,0 +1,167 @@
|
|
1
|
+
import { ResponsiveColumn } from 'element-ui/types/col';
|
2
|
+
import { AvueAlignment, AvueComponentSize, DicHttpProps } from '../global';
|
3
|
+
import { AvueFormColumn } from './column';
|
4
|
+
|
5
|
+
/** 表单组件基本配置属性 */
|
6
|
+
export interface FormBaseOption {
|
7
|
+
/** 视图类型 */
|
8
|
+
boxType: 'add' | 'edit' | 'view';
|
9
|
+
/** 是否详情模式, 默认: false */
|
10
|
+
detail: boolean;
|
11
|
+
/** 是否禁用模式, 默认: false */
|
12
|
+
disabled: boolean;
|
13
|
+
/** 是否只读模式, 默认: false */
|
14
|
+
readonly: boolean;
|
15
|
+
/** 表单宽度 */
|
16
|
+
formWidth: number | string;
|
17
|
+
/** 是否在输入框中显示校验结果反馈图标, 默认: false */
|
18
|
+
statusIcon: boolean;
|
19
|
+
/** 是否卡片效果, 默认: false */
|
20
|
+
card: boolean;
|
21
|
+
/**
|
22
|
+
* 重置时不清空的字段, 默认: []
|
23
|
+
* @since 2.7.7
|
24
|
+
*/
|
25
|
+
clearExclude: string[];
|
26
|
+
/** 是否回车提交表单, 默认: false */
|
27
|
+
enter: boolean;
|
28
|
+
/** 项之间的间间距, 默认: 10 */
|
29
|
+
gutter: number;
|
30
|
+
/** 表单的label宽度, 默认: 80 */
|
31
|
+
labelWidth: string | number;
|
32
|
+
/** 表单的label位置, 默认: 'left' */
|
33
|
+
labelPosition: 'left' | 'top' | 'right';
|
34
|
+
/** 标题的后缀, 默认: ':' */
|
35
|
+
labelSuffix: string;
|
36
|
+
/** 表单全局控件的大小, 默认: 'medium' */
|
37
|
+
size: AvueComponentSize;
|
38
|
+
/** 是否以tab形式展示group, 默认: false */
|
39
|
+
tabs: boolean;
|
40
|
+
/** 栅列, 默认: 12 */
|
41
|
+
span: number;
|
42
|
+
/** 输入时是否触发表单的校验,仅对input类型表单项生效, 默认: false */
|
43
|
+
validateEvent: boolean;
|
44
|
+
/** 默认的接口请求配置 */
|
45
|
+
propsHttp: DicHttpProps;
|
46
|
+
}
|
47
|
+
|
48
|
+
/** 表单组件菜单栏配置属性 */
|
49
|
+
export interface FormMenuOption {
|
50
|
+
/** 是否显示按钮栏, 默认: true */
|
51
|
+
menuBtn: boolean;
|
52
|
+
/** 按钮栏的span, 可选值为1-24, 默认: 24 */
|
53
|
+
menuSpan: number;
|
54
|
+
/** 按钮的位置, 默认: 'center' */
|
55
|
+
menuPosition: AvueAlignment;
|
56
|
+
/** 是否显示提交按钮, 默认: true */
|
57
|
+
submitBtn: boolean;
|
58
|
+
/** 提交按钮的大小, 默认: 'medium' */
|
59
|
+
submitSize: AvueComponentSize;
|
60
|
+
/** 提交按钮的文字, 默认: '提交' */
|
61
|
+
submitText: string;
|
62
|
+
/**
|
63
|
+
* 提交按钮图标 , 默认: 'el-icon-check'
|
64
|
+
* @since v2.5.1
|
65
|
+
*/
|
66
|
+
submitIcon: string;
|
67
|
+
/** 是否显示清空按钮, 默认: true */
|
68
|
+
emptyBtn?: boolean;
|
69
|
+
/** 清空按钮的大小, 默认: 'medium' */
|
70
|
+
emptySize: AvueAlignment;
|
71
|
+
/** 清空按钮的文字, 默认: '清空' */
|
72
|
+
emptyText: string;
|
73
|
+
/** 清空按钮图标, 默认: 'el-icon-delete' */
|
74
|
+
emptyIcon: string;
|
75
|
+
/** 是否显示表单打印按钮, 默认: false */
|
76
|
+
printBtn: boolean;
|
77
|
+
/**
|
78
|
+
* 是否显示模拟数据按钮, 默认: false
|
79
|
+
* @description 需要导入额外的包(一定要放到index.html中的head标签里)
|
80
|
+
* ```
|
81
|
+
* <script src="https://cdnjs.cloudflare.com/ajax/libs/Mock.js/1.0.0/mock-min.js"></script>
|
82
|
+
* ```
|
83
|
+
*/
|
84
|
+
mockBtn: boolean;
|
85
|
+
}
|
86
|
+
|
87
|
+
/** 表单分组配置 */
|
88
|
+
export interface FormGroupOption<T = Obj> {
|
89
|
+
/** 分组名称 */
|
90
|
+
label: string;
|
91
|
+
/** 分组名称宽度, 默认: 90 */
|
92
|
+
labelWidth?: number;
|
93
|
+
/** 分组字段 */
|
94
|
+
prop?: string;
|
95
|
+
/** 分组图标 */
|
96
|
+
icon?: string;
|
97
|
+
/** 是否分组折叠, 默认: true */
|
98
|
+
arrow?: boolean;
|
99
|
+
/** 分组默认叠起, 默认: false */
|
100
|
+
collapse?: boolean;
|
101
|
+
/**
|
102
|
+
* ≥768px 响应式栅格数或者栅格属性对象, 默认: 12
|
103
|
+
* @since 2.8.12
|
104
|
+
*/
|
105
|
+
smSpan?: ResponsiveColumn;
|
106
|
+
/**
|
107
|
+
* <768px 响应式栅格数或者栅格属性对象, 默认: 24
|
108
|
+
* @since 2.9.12
|
109
|
+
*/
|
110
|
+
xsSpan?: ResponsiveColumn;
|
111
|
+
/**
|
112
|
+
* <768px 响应式栅格数或者栅格属性对象, 默认: 24
|
113
|
+
* @since 2.8.12
|
114
|
+
* @deprecated 2.9.12
|
115
|
+
*/
|
116
|
+
xmSpan?: ResponsiveColumn;
|
117
|
+
/**
|
118
|
+
* 栅格左侧的间隔格数, 默认: 0
|
119
|
+
* @since 2.8.12
|
120
|
+
*/
|
121
|
+
offset?: number;
|
122
|
+
/** 是否显示分组, 默认: true */
|
123
|
+
display?: boolean;
|
124
|
+
/** 分组下的字段配置 */
|
125
|
+
column: AvueFormColumn<T>[];
|
126
|
+
}
|
127
|
+
|
128
|
+
/**
|
129
|
+
* 表单项配置
|
130
|
+
* @description 表单的渲染顺序从上到下为column -> group -> footer
|
131
|
+
*/
|
132
|
+
export interface FormColumnOption<T = Obj> {
|
133
|
+
/** 分组配置 */
|
134
|
+
group?: FormGroupOption<T>[];
|
135
|
+
/** 字段配置 */
|
136
|
+
column?: AvueFormColumn<T>[];
|
137
|
+
/**
|
138
|
+
* 底部字段配置
|
139
|
+
* @description 该字段等同于在group最后push一个无label分组在tabs模式下效果更糟,因此内部改版中删除该字段
|
140
|
+
* @since 2.9.9
|
141
|
+
* @deprecated 2.9.12(改)
|
142
|
+
*/
|
143
|
+
footer?: AvueFormColumn<T>[];
|
144
|
+
}
|
145
|
+
|
146
|
+
/** 表单全局事件 */
|
147
|
+
export interface FormEvents {
|
148
|
+
/**
|
149
|
+
* 表单全局事件源码
|
150
|
+
* @since 2.9.12(伪)
|
151
|
+
*/
|
152
|
+
_events?: {
|
153
|
+
/** 表单加载完成后执行事件字符串源码 */
|
154
|
+
didMount?: string;
|
155
|
+
};
|
156
|
+
/**
|
157
|
+
* 表单全局事件
|
158
|
+
* @since 2.9.12(伪)
|
159
|
+
*/
|
160
|
+
events?: {
|
161
|
+
/** 表单加载完成后执行事件 */
|
162
|
+
didMount?: () => void;
|
163
|
+
};
|
164
|
+
}
|
165
|
+
|
166
|
+
/** 表单组件配置属性 */
|
167
|
+
export type FormOption<T = Obj> = Partial<FormBaseOption> & Partial<FormMenuOption> & FormColumnOption<T> & FormEvents;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import { ElDialog } from 'element-ui/types/dialog';
|
2
|
+
import { FormOption } from '../form/option';
|
3
|
+
|
4
|
+
export declare class DialogForm<T = Obj> {
|
5
|
+
/** 表单弹窗配置项 */
|
6
|
+
private opt: DialogFormOption;
|
7
|
+
/** 是否显示弹窗 */
|
8
|
+
private visible: boolean;
|
9
|
+
/** 弹窗配置 */
|
10
|
+
private dialog: Partial<ElDialog>;
|
11
|
+
/** 表单配置 */
|
12
|
+
private option: FormOption;
|
13
|
+
/** 表单值 */
|
14
|
+
data: T;
|
15
|
+
/** 表单提交事件 */
|
16
|
+
submit: () => void;
|
17
|
+
/**
|
18
|
+
* 表单重置事件
|
19
|
+
* @description 此处重置完后调用close关闭了弹窗
|
20
|
+
*/
|
21
|
+
reset: () => void;
|
22
|
+
/**
|
23
|
+
* 显示弹窗
|
24
|
+
*/
|
25
|
+
show: (option: DialogFormOption<T>) => void;
|
26
|
+
/** 表单关闭事件 */
|
27
|
+
close: () => void;
|
28
|
+
}
|
29
|
+
|
30
|
+
/** 表单弹窗 */
|
31
|
+
export declare class DialogFormPlugin {
|
32
|
+
/** 组件VM */
|
33
|
+
$root: DialogForm<T>;
|
34
|
+
/** 构建弹窗 */
|
35
|
+
initMounted: () => void;
|
36
|
+
/**
|
37
|
+
* 显示弹窗
|
38
|
+
*/
|
39
|
+
show: <T = Obj>(option: DialogFormOption<T>) => void;
|
40
|
+
}
|
41
|
+
|
42
|
+
/** 表单弹窗配置项 */
|
43
|
+
export interface DialogFormOption<T = Obj> extends Partial<ElDialog> {
|
44
|
+
/** 表单配置 */
|
45
|
+
option: FormOption;
|
46
|
+
/** 表单值 */
|
47
|
+
data: T;
|
48
|
+
/** 表单提交后的回调 */
|
49
|
+
callback?: (params: {
|
50
|
+
/** 表单值 */
|
51
|
+
data: T;
|
52
|
+
/** 关闭弹窗 */
|
53
|
+
close: () => void;
|
54
|
+
/** 将表单置于普通状态 */
|
55
|
+
done: () => void;
|
56
|
+
}) => void;
|
57
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/**
|
2
|
+
* 导出相关
|
3
|
+
* @description 需要引入以下包(一定要放到index.html中的head标签里)
|
4
|
+
* \<script src="https://cdn.staticfile.org/FileSaver.js/2014-11-29/FileSaver.min.js"><\/script>
|
5
|
+
* \<script src="https://cdn.staticfile.org/xlsx/0.18.2/xlsx.full.min.js"><\/script>
|
6
|
+
*/
|
7
|
+
|
8
|
+
export interface Export {
|
9
|
+
/** 导出excel */
|
10
|
+
excel: (options: {
|
11
|
+
/** excel标题 */
|
12
|
+
title: string;
|
13
|
+
/** 数据列配置 */
|
14
|
+
columns: {
|
15
|
+
/** 列名称 */
|
16
|
+
label: string;
|
17
|
+
/** 列ID */
|
18
|
+
prop: string;
|
19
|
+
}[];
|
20
|
+
/** 数据 */
|
21
|
+
data: Obj[];
|
22
|
+
}) => void;
|
23
|
+
}
|