cc1-form 1.0.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.
@@ -0,0 +1,151 @@
1
+ declare const conf: {
2
+ show: boolean;
3
+ add: (field: string, row: any, itemFields: any[]) => void;
4
+ remove: (field: string, row: any, item: any) => void;
5
+ };
6
+ declare const emit: (event: "change", ...args: any[]) => void;
7
+ declare const __VLS_ctx: InstanceType<__VLS_PickNotAny<typeof __VLS_self, new () => {}>>;
8
+ declare var __VLS_1: {
9
+ row: any;
10
+ }, __VLS_11: {
11
+ item: any;
12
+ row: any;
13
+ }, __VLS_21: {
14
+ item: any;
15
+ row: any;
16
+ }, __VLS_31: {
17
+ row: any;
18
+ };
19
+ type __VLS_Slots = __VLS_PrettifyGlobal<__VLS_OmitStringIndex<typeof __VLS_ctx.$slots> & {
20
+ 'list-start'?: (props: typeof __VLS_1) => any;
21
+ } & {
22
+ 'item-start'?: (props: typeof __VLS_11) => any;
23
+ } & {
24
+ 'item-end'?: (props: typeof __VLS_21) => any;
25
+ } & {
26
+ 'list-end'?: (props: typeof __VLS_31) => any;
27
+ }>;
28
+ declare const __VLS_self: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
29
+ row: {
30
+ default: any;
31
+ };
32
+ label: {
33
+ default: string;
34
+ };
35
+ value: {
36
+ default: string;
37
+ };
38
+ itemFields: {
39
+ default: any[];
40
+ };
41
+ field: {
42
+ default: string;
43
+ };
44
+ inputWidth: {
45
+ default: string;
46
+ };
47
+ inputClass: {
48
+ default: string;
49
+ };
50
+ }>, {
51
+ conf: typeof conf;
52
+ emit: typeof emit;
53
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
54
+ change: (...args: any[]) => void;
55
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
+ row: {
57
+ default: any;
58
+ };
59
+ label: {
60
+ default: string;
61
+ };
62
+ value: {
63
+ default: string;
64
+ };
65
+ itemFields: {
66
+ default: any[];
67
+ };
68
+ field: {
69
+ default: string;
70
+ };
71
+ inputWidth: {
72
+ default: string;
73
+ };
74
+ inputClass: {
75
+ default: string;
76
+ };
77
+ }>> & Readonly<{
78
+ onChange?: ((...args: any[]) => any) | undefined;
79
+ }>, {
80
+ label: string;
81
+ value: string;
82
+ itemFields: any[];
83
+ inputWidth: string;
84
+ inputClass: string;
85
+ row: any;
86
+ field: string;
87
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
88
+ declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
89
+ row: {
90
+ default: any;
91
+ };
92
+ label: {
93
+ default: string;
94
+ };
95
+ value: {
96
+ default: string;
97
+ };
98
+ itemFields: {
99
+ default: any[];
100
+ };
101
+ field: {
102
+ default: string;
103
+ };
104
+ inputWidth: {
105
+ default: string;
106
+ };
107
+ inputClass: {
108
+ default: string;
109
+ };
110
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
111
+ change: (...args: any[]) => void;
112
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
113
+ row: {
114
+ default: any;
115
+ };
116
+ label: {
117
+ default: string;
118
+ };
119
+ value: {
120
+ default: string;
121
+ };
122
+ itemFields: {
123
+ default: any[];
124
+ };
125
+ field: {
126
+ default: string;
127
+ };
128
+ inputWidth: {
129
+ default: string;
130
+ };
131
+ inputClass: {
132
+ default: string;
133
+ };
134
+ }>> & Readonly<{
135
+ onChange?: ((...args: any[]) => any) | undefined;
136
+ }>, {
137
+ label: string;
138
+ value: string;
139
+ itemFields: any[];
140
+ inputWidth: string;
141
+ inputClass: string;
142
+ row: any;
143
+ field: string;
144
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
145
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
146
+ export default _default;
147
+ type __VLS_WithSlots<T, S> = T & {
148
+ new (): {
149
+ $slots: S;
150
+ };
151
+ };
@@ -0,0 +1,457 @@
1
+ export type CurdOption<T = any> = CurdConfig<T & CurdSearchDto>;
2
+ /**
3
+ * 组件配置
4
+ *
5
+ * @example
6
+ * 布局插槽:
7
+ * 1. box-left: 左侧布局插槽
8
+ * 2. box-right: 右侧布局插槽
9
+ *
10
+ * 搜索区域插槽:
11
+ * 3. search-start: 搜索表单开始位置插槽,作用域参数:{ row }
12
+ * 4. search-center: 搜索表单中间位置插槽,作用域参数:{ row }
13
+ * 5. search-end: 搜索表单结束位置插槽,作用域参数:{ row }
14
+ * 6. search-{fieldKey}: 搜索字段自定义插槽,fieldKey为字段的key值,作用域参数:{ row }
15
+ *
16
+ * 工具栏插槽:
17
+ * 7. tools-left: 工具栏左侧插槽
18
+ * 8. tools-right: 工具栏右侧插槽
19
+ *
20
+ * 表格插槽:
21
+ * 9. table-{fieldKey}: 表格字段自定义插槽,fieldKey为字段的key值,作用域参数:{ row, item }
22
+ * 10. table-op-left: 表格操作列左侧插槽,作用域参数:{ row }
23
+ * 11. table-op-right: 表格操作列右侧插槽,作用域参数:{ row }
24
+ *
25
+ * 表单插槽:
26
+ * 12. form-start: 新增/编辑表单开始位置插槽,作用域参数:{ row }
27
+ * 13. form-end: 新增/编辑表单结束位置插槽,作用域参数:{ row }
28
+ * 14. form-{fieldKey}: 新增/编辑表单字段自定义插槽,fieldKey为字段的key值,作用域参数:{ row, item }
29
+ * 15. form-{fieldKey}-start: 新增/编辑表单字段开始位置插槽,fieldKey为字段的key值,作用域参数:{ row, item }
30
+ * 16. form-{fieldKey}-end: 新增/编辑表单字段结束位置插槽,fieldKey为字段的key值,作用域参数:{ row, item }
31
+ */
32
+ export interface CurdConfig<T = any> {
33
+ /**
34
+ * 弹窗配置
35
+ */
36
+ dialog?: Record<string, any>;
37
+ /**
38
+ * 额外的搜索附加信息
39
+ */
40
+ search?: Partial<{
41
+ /**
42
+ * 是否显示搜索
43
+ */
44
+ show: boolean;
45
+ /**
46
+ * 搜索表单默认值
47
+ */
48
+ formDefault: Partial<T>;
49
+ /**
50
+ * 重置模式-默认为null,将所有值修改为undefined,如果为default,则将所有值修改为formDefault默认值
51
+ */
52
+ resetMode: 'default' | undefined;
53
+ /**
54
+ * 搜索前执行处理,如有返回值取返回值
55
+ */
56
+ before?: (data: T & CurdSearchDto) => any;
57
+ }>;
58
+ /**
59
+ * 分页配置
60
+ */
61
+ page?: Partial<{
62
+ /**
63
+ * 每页条数 默认10
64
+ */
65
+ size: number;
66
+ /**
67
+ * 每页条数列表 默认[10, 20, 50, 100]
68
+ */
69
+ sizeList: number[];
70
+ /**
71
+ * 分页布局 默认'total, sizes, prev, pager, next, jumper'
72
+ */
73
+ layout: string;
74
+ }>;
75
+ /**
76
+ * 表格配置
77
+ */
78
+ table?: Partial<{
79
+ /**
80
+ * 是否显示边框
81
+ */
82
+ border: boolean;
83
+ /**
84
+ * 是否可多选
85
+ */
86
+ selectable?: ((data: T) => boolean) | boolean;
87
+ /**
88
+ * 额外的表格列信息,可配置是否可搜索,不参与新增编辑表单
89
+ */
90
+ column?: CurdConfigColumn[];
91
+ }>;
92
+ /**
93
+ * 工具栏配置
94
+ */
95
+ tools?: Partial<{
96
+ /**
97
+ * 是否显示展开/收缩
98
+ */
99
+ expand: boolean;
100
+ /**
101
+ * 是否显示搜索
102
+ */
103
+ search: boolean;
104
+ /**
105
+ * 是否显示重置
106
+ */
107
+ reset: boolean;
108
+ /**
109
+ * 是否显示新增
110
+ */
111
+ add: ((data: T) => boolean) | boolean;
112
+ /**
113
+ * 是否显示编辑
114
+ */
115
+ update: ((data: T) => boolean) | boolean;
116
+ /**
117
+ * 是否显示删除
118
+ */
119
+ delete: ((data: T) => boolean) | boolean;
120
+ /**
121
+ * 导出配置
122
+ */
123
+ export: Partial<{
124
+ /**
125
+ * 是否显示导出
126
+ */
127
+ show: boolean;
128
+ /**
129
+ * 导出文件名前缀
130
+ */
131
+ fileName?: string | (() => string);
132
+ /**
133
+ * 导出前执行处理
134
+ */
135
+ before?: (param: {
136
+ data: T[];
137
+ columns: CurdConfigColumn[];
138
+ }) => void;
139
+ }>;
140
+ }>;
141
+ /**
142
+ * 新增编辑表单默认配置
143
+ */
144
+ form?: Partial<{
145
+ /**
146
+ * 编辑时是否全量进行更新数据,默认为false,只更新修改过的字段
147
+ */
148
+ editAll?: boolean;
149
+ /**
150
+ * 最大栅格占比-默认为12
151
+ */
152
+ maxSpan?: number;
153
+ /**
154
+ * 默认栅格占比-默认为最大栅格占比的一半
155
+ */
156
+ defaultSpan?: number;
157
+ /**
158
+ * 打开弹窗前执行处理
159
+ */
160
+ openBefore?: (data: T, update: {
161
+ type: any;
162
+ form: T;
163
+ }) => any;
164
+ /**
165
+ * 打开弹窗后执行处理
166
+ */
167
+ openAfter?: (data: T, update: {
168
+ type: any;
169
+ form: T;
170
+ }) => any;
171
+ /**
172
+ * 关闭弹窗前执行处理
173
+ */
174
+ closeBefore?: (data: T) => any;
175
+ /**
176
+ * 提交前执行处理
177
+ */
178
+ submitBefore?: (form: T, update: {
179
+ type: any;
180
+ form: T;
181
+ }) => any;
182
+ /**
183
+ * 提交后执行处理
184
+ */
185
+ submitAfter?: (form: T, update: {
186
+ type: any;
187
+ form: T;
188
+ }) => any;
189
+ }>;
190
+ /**
191
+ * 表格列和新增编辑表单字段
192
+ */
193
+ column: CurdConfigColumn[];
194
+ /**
195
+ * 接口
196
+ */
197
+ api: {
198
+ /**
199
+ * 列表
200
+ */
201
+ list: (param?: any) => any;
202
+ /**
203
+ * 新增
204
+ */
205
+ create: (param?: any) => any;
206
+ /**
207
+ * 编辑
208
+ */
209
+ update: (param?: any) => any;
210
+ /**
211
+ * 删除
212
+ */
213
+ delete: (param?: any) => any;
214
+ };
215
+ /**
216
+ * 数据处理
217
+ */
218
+ data?: (data: T[]) => T[];
219
+ }
220
+ export interface CurdConfigColumn<T = any> {
221
+ /**
222
+ * 字段名
223
+ */
224
+ key: string;
225
+ /**
226
+ * 标签
227
+ */
228
+ label: string;
229
+ /**
230
+ * 默认值
231
+ */
232
+ value: any;
233
+ /**
234
+ * 是否禁止操作
235
+ */
236
+ disabled?: Partial<{
237
+ /**
238
+ * 是否新增禁用-默认不限制
239
+ */
240
+ create: boolean;
241
+ /**
242
+ * 是否编辑禁用-默认不限制
243
+ */
244
+ update: boolean;
245
+ /**
246
+ * 是否搜索禁用-默认不限制
247
+ */
248
+ search: boolean;
249
+ }>;
250
+ /**
251
+ * 配置管理
252
+ */
253
+ options?: {
254
+ [key: string]: any;
255
+ /**
256
+ * 输入框选项
257
+ */
258
+ input?: Record<string, any>;
259
+ /**
260
+ * 开关选项
261
+ */
262
+ switch?: {
263
+ /**
264
+ * 开启值
265
+ */
266
+ activeValue: any;
267
+ /**
268
+ * 开启值标签
269
+ */
270
+ activeLabel: string;
271
+ /**
272
+ * 关闭值
273
+ */
274
+ inactiveValue: any;
275
+ /**
276
+ * 关闭值标签
277
+ */
278
+ inactiveLabel: string;
279
+ /**
280
+ * 表格直接操作切换前执行处理
281
+ */
282
+ tableBeforeChange: (key: string, data: any) => any;
283
+ };
284
+ /**
285
+ * 选择组件属性
286
+ */
287
+ select?: Record<string, any>;
288
+ /**
289
+ * 树选择组件属性
290
+ */
291
+ treeSelect?: Record<string, any>;
292
+ /**
293
+ * 时间选择组件属性
294
+ */
295
+ datetime?: Record<string, any>;
296
+ /**
297
+ * 列表组件属性
298
+ * @example
299
+ * 插槽列表:
300
+ * 1. list-start: 列表开始位置插槽,作用域参数:{ row }
301
+ * 2. list-end: 列表结束位置插槽,作用域参数:{ row }
302
+ * 3. item-start: 列表项开始位置插槽,作用域参数:{ row, item }
303
+ * 4. item-end: 列表项结束位置插槽,作用域参数:{ row, item }
304
+ */
305
+ list?: Partial<{
306
+ /**
307
+ * 输入的名称字段,默认label,优先作为placeholder显示
308
+ */
309
+ label: string;
310
+ /**
311
+ * 输入的值字段,默认value,label为空时,使用value作为placeholder显示
312
+ */
313
+ value: string;
314
+ /**
315
+ * 对象字段列表,默认提供label和value字段,配置时覆盖默认值
316
+ */
317
+ itemFields: Partial<{
318
+ [key: string]: string;
319
+ /**
320
+ * 标签
321
+ */
322
+ label: string;
323
+ /**
324
+ * 值
325
+ */
326
+ value: string;
327
+ }[]>;
328
+ /**
329
+ * 输入框宽度
330
+ */
331
+ inputWidth: string;
332
+ /**
333
+ * 输入框类名
334
+ */
335
+ inputClass: string;
336
+ }>;
337
+ };
338
+ /**
339
+ * 新增编辑表单配置
340
+ */
341
+ form?: Partial<{
342
+ /**
343
+ * 标签宽度
344
+ */
345
+ labelWidth: string;
346
+ /**
347
+ * 宽度
348
+ */
349
+ width: string;
350
+ /**
351
+ * 栅格占比-一行最多12列,0为铺满剩余空间
352
+ */
353
+ span: number;
354
+ }>;
355
+ /**
356
+ * 数据类型
357
+ */
358
+ type: 'input' | 'select' | 'switch' | 'textarea' | 'radio' | 'checkbox' | 'date' | 'time' | 'datetime' | 'number' | 'color' | 'icon' | 'slider' | 'upload' | 'editor' | 'tree' | 'tree-select' | 'list';
359
+ /**
360
+ * 表格配置
361
+ */
362
+ table?: Partial<{
363
+ /**
364
+ * 表格控制-传入false不参与字段初始化
365
+ */
366
+ table: boolean;
367
+ /**
368
+ * 最小宽度
369
+ */
370
+ minWidth: string;
371
+ /**
372
+ * 宽度
373
+ */
374
+ width: string;
375
+ /**
376
+ * 固定
377
+ */
378
+ fixed: 'left' | 'right';
379
+ /**
380
+ * 对齐方式
381
+ */
382
+ align: 'left' | 'center' | 'right';
383
+ /**
384
+ * 是否显示溢出提示
385
+ */
386
+ showOverflowTooltip: boolean;
387
+ }>;
388
+ /**
389
+ * 验证规则
390
+ */
391
+ rules?: any[];
392
+ /**
393
+ * 显示控制
394
+ */
395
+ show?: {
396
+ /**
397
+ * 默认表格控制显示,默认为显示,传入false也可以通过列显示控制列表再次显示
398
+ */
399
+ table?: boolean;
400
+ /**
401
+ * 搜索控制
402
+ */
403
+ search?: ((data: T) => boolean) | boolean;
404
+ /**
405
+ * 新增编辑表单排序
406
+ */
407
+ form?: ((data: T) => boolean) | boolean;
408
+ };
409
+ /**
410
+ * 排序
411
+ */
412
+ sort?: {
413
+ /**
414
+ * 搜索排序
415
+ */
416
+ search?: number;
417
+ /**
418
+ * 表格排序
419
+ */
420
+ table?: number;
421
+ };
422
+ }
423
+ interface CurdSearchDto {
424
+ /**
425
+ * 主键
426
+ */
427
+ _id: string;
428
+ /**
429
+ * 状态
430
+ */
431
+ status: any;
432
+ /**
433
+ * 描述
434
+ */
435
+ desc: string;
436
+ /**
437
+ * 创建时间
438
+ */
439
+ createTime: any;
440
+ /**
441
+ * 更新时间
442
+ */
443
+ updateTime: any;
444
+ /**
445
+ * 开始时间
446
+ */
447
+ startTime: any;
448
+ /**
449
+ * 结束时间
450
+ */
451
+ endTime: any;
452
+ /**
453
+ * 父级id
454
+ */
455
+ parentId: string;
456
+ }
457
+ export {};