starfish-form-custom 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.
Files changed (73) hide show
  1. package/README.md +2 -0
  2. package/auto-imports.d.ts +9 -0
  3. package/components.d.ts +68 -0
  4. package/dist/formAction-28d86b6a.mjs +446 -0
  5. package/dist/index-04830c0b.mjs +126 -0
  6. package/dist/index-eab8ef70.mjs +519 -0
  7. package/dist/index-f7ea052c.mjs +241 -0
  8. package/dist/main-96327b2e.mjs +5051 -0
  9. package/dist/starfish-form-a18a5409.mjs +328 -0
  10. package/dist/starfish-form.mjs +36 -0
  11. package/dist/style.css +377 -0
  12. package/dist/types/form/src/common/Loading.vue.d.ts +3 -0
  13. package/dist/types/form/src/env.d.ts +15 -0
  14. package/dist/types/form/src/main.d.ts +43 -0
  15. package/dist/types/form/src/starfish-form.vue.d.ts +40 -0
  16. package/dist/types/form/src/utils/customHooks.d.ts +2 -0
  17. package/dist/types/form/src/utils/fieldConfig.d.ts +78 -0
  18. package/dist/types/form/src/utils/fieldProps.d.ts +43 -0
  19. package/dist/types/starfish-form.d.ts +3 -0
  20. package/package.json +42 -0
  21. package/src/common/KeyValueConfig.vue +145 -0
  22. package/src/common/KeyValueConfigMult.vue +139 -0
  23. package/src/common/Loading.vue +14 -0
  24. package/src/common/action.vue +76 -0
  25. package/src/common/formAction.vue +298 -0
  26. package/src/common/listConfig.vue +45 -0
  27. package/src/common/panel.vue +61 -0
  28. package/src/common/radiogroup.vue +31 -0
  29. package/src/components/CheckBox/index.vue +42 -0
  30. package/src/components/ColorSelect/index.vue +49 -0
  31. package/src/components/Date/index.vue +39 -0
  32. package/src/components/DateTime/index.vue +39 -0
  33. package/src/components/InputNumber/index.vue +48 -0
  34. package/src/components/JsonEditor/index.vue +167 -0
  35. package/src/components/Radio/index.vue +42 -0
  36. package/src/components/RichText/index.vue +60 -0
  37. package/src/components/Rule/index.vue +365 -0
  38. package/src/components/Rule/ruleform.json +315 -0
  39. package/src/components/Rule/rules.js +91 -0
  40. package/src/components/Selected/index.vue +50 -0
  41. package/src/components/Selecteds/index.vue +50 -0
  42. package/src/components/ShowRule/index.vue +50 -0
  43. package/src/components/Slider/index.vue +38 -0
  44. package/src/components/Switch/index.vue +61 -0
  45. package/src/components/Text/index.vue +48 -0
  46. package/src/components/TextArea/index.vue +49 -0
  47. package/src/components/Time/index.vue +36 -0
  48. package/src/env.d.ts +15 -0
  49. package/src/layout/Divider.vue +30 -0
  50. package/src/layout/Info.vue +69 -0
  51. package/src/layout/Tabs.vue +75 -0
  52. package/src/layout/collapse.vue +78 -0
  53. package/src/layout/grid.vue +88 -0
  54. package/src/layout/table.vue +80 -0
  55. package/src/main.ts +62 -0
  56. package/src/starfish-form.vue +265 -0
  57. package/src/styles/action.scss +25 -0
  58. package/src/styles/collapse.scss +15 -0
  59. package/src/styles/custom-cpm.scss +5 -0
  60. package/src/styles/divider.scss +16 -0
  61. package/src/styles/form-action.scss +92 -0
  62. package/src/styles/formedit.scss +69 -0
  63. package/src/styles/grid.scss +12 -0
  64. package/src/styles/index.scss +12 -0
  65. package/src/styles/keyvalueConfig.scss +56 -0
  66. package/src/styles/rule.scss +17 -0
  67. package/src/styles/showrule.scss +5 -0
  68. package/src/styles/table.scss +19 -0
  69. package/src/styles/tabs.scss +5 -0
  70. package/src/utils/customHooks.ts +22 -0
  71. package/src/utils/fieldConfig.ts +961 -0
  72. package/src/utils/fieldProps.ts +50 -0
  73. package/stats.html +4949 -0
@@ -0,0 +1,961 @@
1
+ import { AllFormItem } from "../../../editor/src/type";
2
+ export interface fields {
3
+ /**
4
+ * 字段名称
5
+ */
6
+ fieldName: string;
7
+ /**
8
+ * 标签名称
9
+ */
10
+ label: string;
11
+ /**
12
+ * 提示信息
13
+ */
14
+ tip?: string;
15
+ /**
16
+ * 占位内容
17
+ */
18
+ placeholder?: string;
19
+ /**
20
+ * 表单显示规则
21
+ */
22
+ showRule: string;
23
+ /**
24
+ * 是否必填
25
+ */
26
+ required?: boolean;
27
+ /**
28
+ * 校验规则
29
+ */
30
+ rule: string;
31
+ /**
32
+ * 默认内容
33
+ */
34
+ default?: string | number | any[];
35
+ type?: number;
36
+ size?: string | number;
37
+ itemConfig?: any;
38
+ formConfig?:any;
39
+ trs?: fieldsTrs[];
40
+ columns?: Columns[];
41
+ items?: Columns[];
42
+ }
43
+
44
+ interface Columns {
45
+ list: AllFormItem[];
46
+ span: number;
47
+ }
48
+
49
+ export interface fieldsTrs {
50
+ tds: fieldTds[];
51
+ }
52
+
53
+ export interface fieldTds {
54
+ colspan: number;
55
+ rowspan: number;
56
+ list: AllFormItem[];
57
+ }
58
+ export interface FormConfig {
59
+ ControlType: string;
60
+ data: fields;
61
+ layout?: boolean;
62
+ dynamic?: boolean;
63
+ }
64
+ const beforeBaseFormCofig: () => FormConfig[] = function () {
65
+ return [
66
+ {
67
+ ControlType: "Text",
68
+ data: {
69
+ fieldName: "fieldName",
70
+ tip: "",
71
+ label: "字段名称",
72
+ placeholder: "请输入字段名称",
73
+ value: "",
74
+ showRule: "{}",
75
+ required: true,
76
+ rule: "[]",
77
+ },
78
+ },
79
+ {
80
+ ControlType: "Text",
81
+ data: {
82
+ fieldName: "label",
83
+ tip: "",
84
+ label: "标签名称",
85
+ placeholder: "请输入标签名称",
86
+ value: "标签名称",
87
+ showRule: "{}",
88
+ required: true,
89
+ rule: "[]",
90
+ },
91
+ },
92
+ ];
93
+ };
94
+ const afterBaseFormConfig: () => FormConfig[] = function () {
95
+ return [
96
+ {
97
+ ControlType: "Switch",
98
+ data: {
99
+ fieldName: "required",
100
+ tip: "",
101
+ label: "是否必填",
102
+ showRule: "{}",
103
+ required: false,
104
+ rule: "[]",
105
+ },
106
+ },
107
+ {
108
+ ControlType: "TextArea",
109
+ data: {
110
+ fieldName: "tip",
111
+ tip: "",
112
+ label: "提示",
113
+ placeholder: "请输入提示",
114
+ value: "标签名称",
115
+ showRule: "{}",
116
+ required: false,
117
+ rule: "[]",
118
+ },
119
+ },
120
+ {
121
+ ControlType: "Rule",
122
+ data: {
123
+ fieldName: "rule",
124
+ tip: "",
125
+ label: "校验规则",
126
+ showRule: "{}",
127
+ required: false,
128
+ rule: "[]",
129
+ default: "[]",
130
+ },
131
+ },
132
+ // {
133
+ // ControlType: "ShowRule",
134
+ // data: {
135
+ // fieldName: "showRule",
136
+ // tip: "",
137
+ // label: "显示条件",
138
+ // showRule: "{}",
139
+ // required: false,
140
+ // rule: "[]",
141
+ // default: "[]",
142
+ // },
143
+ // },
144
+ // {
145
+ // ControlType: "Action",
146
+ // data: {
147
+ // fieldName: "action",
148
+ // tip: "",
149
+ // label: "动作面板",
150
+ // showRule: "{}",
151
+ // required: false,
152
+ // rule: "[]",
153
+ // default: "{}",
154
+ // },
155
+ // },
156
+ ];
157
+ };
158
+ /**
159
+ * 配置
160
+ */
161
+ const fieldsMap: any = {
162
+ Text: {
163
+ fieldName: "",
164
+ label: "标签名称",
165
+ tip: "",
166
+ placeholder: "",
167
+ showRule: "{}",
168
+ required: false,
169
+ rule: "[]",
170
+ default: "",
171
+ maxLength: 100,
172
+ minLength: 0,
173
+ state: "normal", // 状态:normal, disabled, readonly
174
+ },
175
+ Info: {
176
+ fieldName: "",
177
+ label: "标签名称",
178
+ title: "标题",
179
+ desc: "文字描述",
180
+ labelShow: false,
181
+ closable: true,
182
+ showIcon: true,
183
+ effect: "light",
184
+ infotype: "success",
185
+ showRule: "{}",
186
+ rule: "[]",
187
+ },
188
+ TextArea: {
189
+ fieldName: "",
190
+ label: "标签名称",
191
+ tip: "",
192
+ placeholder: "",
193
+ showRule: "{}",
194
+ required: false,
195
+ rule: "[]",
196
+ default: "",
197
+ maxLength: 100,
198
+ minLength: 0,
199
+ state: "normal",
200
+ autoHeight: false, // 自适应高度
201
+ },
202
+ Switch: {
203
+ fieldName: "",
204
+ label: "标签名称",
205
+ tip: "",
206
+ value: "",
207
+ showRule: "{}",
208
+ required: false,
209
+ rule: "[]",
210
+ default: false,
211
+ state: "normal",
212
+ },
213
+ Slider: {
214
+ fieldName: "",
215
+ label: "标签名称",
216
+ tip: "",
217
+ showRule: "{}",
218
+ required: false,
219
+ rule: "[]",
220
+ default: 0,
221
+ min: 0,
222
+ max: 100,
223
+ },
224
+ Grid: {
225
+ fieldName: "",
226
+ label: "标签名称",
227
+ gutter: 0, // 栅格间隔
228
+ showRule: "{}",
229
+ columns: [
230
+ {
231
+ span: 12,
232
+ list: [],
233
+ },
234
+ {
235
+ span: 12,
236
+ list: [],
237
+ },
238
+ ],
239
+ },
240
+ TableLayout: {
241
+ fieldName: "",
242
+ label: "标签名称",
243
+ showRule: "{}",
244
+ borderShow: false,
245
+ borderWidth: 1,
246
+ trs: [
247
+ {
248
+ tds: [
249
+ {
250
+ colspan: 1,
251
+ rowspan: 1,
252
+ list: [],
253
+ },
254
+ {
255
+ colspan: 1,
256
+ rowspan: 1,
257
+ list: [],
258
+ },
259
+ ],
260
+ },
261
+ {
262
+ tds: [
263
+ {
264
+ colspan: 1,
265
+ rowspan: 1,
266
+ list: [],
267
+ },
268
+ {
269
+ colspan: 1,
270
+ rowspan: 1,
271
+ list: [],
272
+ },
273
+ ],
274
+ },
275
+ ],
276
+ },
277
+ Collapse: {
278
+ fieldName: "",
279
+ label: "标签名称",
280
+ accordion: false,
281
+ name: "折叠面板",
282
+ items: [
283
+ {
284
+ name: "折叠面板",
285
+ list: [],
286
+ },
287
+ ],
288
+ },
289
+ Tabs: {
290
+ fieldName: "",
291
+ label: "标签名称",
292
+ name: "标签",
293
+ items: [
294
+ {
295
+ name: "tab",
296
+ list: [],
297
+ },
298
+ ],
299
+ },
300
+ Selected: {
301
+ fieldName: "",
302
+ label: "标签名称",
303
+ tip: "",
304
+ placeholder: "",
305
+ showRule: "{}",
306
+ required: false,
307
+ rule: "[]",
308
+ state: "normal", // 状态:normal, disabled, readonly
309
+ itemConfig: {
310
+ value: "选项1",
311
+ items: [
312
+ {
313
+ label: "选项1",
314
+ value: "选项1",
315
+ select: true,
316
+ id: 1,
317
+ },
318
+ {
319
+ label: "选项2",
320
+ value: "选项2",
321
+ select: false,
322
+ id: 2,
323
+ },
324
+ ],
325
+ },
326
+ },
327
+ Selecteds: {
328
+ fieldName: "",
329
+ label: "标签名称",
330
+ tip: "",
331
+ placeholder: "",
332
+ showRule: "{}",
333
+ required: false,
334
+ rule: "[]",
335
+ state: "normal", // 状态:normal, disabled, readonly
336
+ itemConfig: {
337
+ value: ["选项1"],
338
+ items: [
339
+ {
340
+ label: "选项1",
341
+ value: "选项1",
342
+ select: true,
343
+ id: 1,
344
+ },
345
+ {
346
+ label: "选项2",
347
+ value: "选项2",
348
+ select: false,
349
+ id: 2,
350
+ },
351
+ ],
352
+ },
353
+ },
354
+ RichText: {
355
+ fieldName: "",
356
+ label: "标签名称",
357
+ tip: "",
358
+ placeholder: "",
359
+ showRule: "{}",
360
+ required: false,
361
+ rule: "[]",
362
+ default: "",
363
+ state: "normal", // 状态:normal, disabled, readonly
364
+ },
365
+ Radio: {
366
+ fieldName: "",
367
+ label: "标签名称",
368
+ tip: "",
369
+ value: "",
370
+ showRule: "{}",
371
+ required: false,
372
+ rule: "[]",
373
+ default: false,
374
+ arrangeMent: 'horizontal',
375
+ state: "normal", // 状态:normal, disabled, readonly
376
+ itemConfig: {
377
+ value: "选项1",
378
+ id: 1,
379
+ items: [
380
+ {
381
+ label: "选项1",
382
+ value: "选项1",
383
+ select: true,
384
+ id: 1,
385
+ },
386
+ {
387
+ label: "选项2",
388
+ value: "选项2",
389
+ select: false,
390
+ id: 2,
391
+ },
392
+ ],
393
+ },
394
+ },
395
+ KeyValueConfigMult: {
396
+ fieldName: "",
397
+ label: "标签名称",
398
+ tip: "",
399
+ value: "",
400
+ showRule: "{}",
401
+ required: false,
402
+ rule: "[]",
403
+ },
404
+ KeyValueConfig: {
405
+ fieldName: "",
406
+ label: "标签名称",
407
+ tip: "",
408
+ value: "",
409
+ showRule: "{}",
410
+ required: false,
411
+ rule: "[]",
412
+ },
413
+ JsonEditor: {
414
+ fieldName: "",
415
+ label: "标签名称",
416
+ tip: "",
417
+ showRule: "{}",
418
+ required: false,
419
+ rule: "[]",
420
+ default: "[]",
421
+ json: true,
422
+ },
423
+ InputNumber: {
424
+ fieldName: "",
425
+ label: "标签名称",
426
+ tip: "",
427
+ placeholder: "",
428
+ showRule: "{}",
429
+ required: false,
430
+ rule: "[]",
431
+ default: 0,
432
+ type: "1",
433
+ size: "large",
434
+ precision: 0, // 精度
435
+ state: "normal",
436
+ },
437
+ Divider: {
438
+ fieldName: "",
439
+ label: "标签名称",
440
+ tip: "",
441
+ showRule: "{}",
442
+ required: false,
443
+ rule: "[]",
444
+ color: "#000",
445
+ dividerColor: "#000",
446
+ },
447
+ DateTime: {
448
+ fieldName: "",
449
+ label: "标签名称",
450
+ tip: "",
451
+ placeholder: "1",
452
+ showRule: "{}",
453
+ required: false,
454
+ rule: "[]",
455
+ default: "1",
456
+ format: "YYYY-MM-DD", // 日期格式
457
+ state: "normal",
458
+ },
459
+ Date: {
460
+ fieldName: "",
461
+ label: "标签名称",
462
+ tip: "",
463
+ placeholder: "请输入",
464
+ showRule: "{}",
465
+ required: false,
466
+ rule: "[]",
467
+ default: "",
468
+ state: "normal",
469
+ },
470
+ ColorSelect: {
471
+ fieldName: "",
472
+ label: "标签名称",
473
+ tip: "",
474
+ placeholder: "",
475
+ showRule: "{}",
476
+ required: false,
477
+ rule: "[]",
478
+ default: "#409EFF",
479
+ },
480
+ CheckBox: {
481
+ fieldName: "",
482
+ label: "标签名称",
483
+ tip: "",
484
+ value: "",
485
+ showRule: "{}",
486
+ required: false,
487
+ rule: "[]",
488
+ default: false,
489
+ state: "normal",
490
+ arrangeMent: 'horizontal', // 布局方式:horizontal, vertical
491
+ itemConfig: {
492
+ value: ["选项1"],
493
+ items: [
494
+ {
495
+ label: "选项1",
496
+ value: "选项1",
497
+ select: true,
498
+ id: 1,
499
+ },
500
+ {
501
+ label: "选项2",
502
+ value: "选项2",
503
+ select: false,
504
+ id: 2,
505
+ },
506
+ ],
507
+ },
508
+ },
509
+ };
510
+ type fieldMap = "default" | "placeholder" | "min" | "max" | "itemConfig" | "type" | "columns" | "infotype" | "effect" | "size" | "color" | "dividerColor" | "InputNumber" | "multiple" | "gutter" | "minLength" | "maxLength" | "state" | "autoHeight" | "format" | "precision" | "arrangeMent";
511
+
512
+ type morenFields = Partial<Record<fieldMap, FormConfig>>;
513
+
514
+ function getMoren(fieldName: string, component: string, label?: string): FormConfig {
515
+ const map: morenFields = {
516
+ default: {
517
+ ControlType: "Text",
518
+ data: {
519
+ fieldName: "default",
520
+ tip: "",
521
+ label: "默认值",
522
+ placeholder: "",
523
+ showRule: "{}",
524
+ required: false,
525
+ rule: "[]",
526
+ },
527
+ },
528
+ placeholder: {
529
+ ControlType: "Text",
530
+ data: {
531
+ fieldName: "placeholder",
532
+ tip: "",
533
+ label: "输入占位文字",
534
+ placeholder: "请输入占位文字",
535
+ showRule: "{}",
536
+ required: false,
537
+ rule: "[]",
538
+ },
539
+ },
540
+ precision: {
541
+ ControlType: "InputNumber",
542
+ data: {
543
+ fieldName: "precision",
544
+ tip: "",
545
+ label: "精度",
546
+ placeholder: "",
547
+ showRule: "{}",
548
+ required: false,
549
+ rule: "[]",
550
+ default: 0,
551
+ },
552
+ },
553
+ maxLength: {
554
+ ControlType: "InputNumber",
555
+ data: {
556
+ fieldName: "maxLength",
557
+ tip: "",
558
+ label: "最大输入长度",
559
+ placeholder: "",
560
+ showRule: "{}",
561
+ required: false,
562
+ rule: "[]",
563
+ default: 100,
564
+ },
565
+ },
566
+ minLength: {
567
+ ControlType: "InputNumber",
568
+ data: {
569
+ fieldName: "minLength",
570
+ tip: "",
571
+ label: "最小输入长度",
572
+ placeholder: "",
573
+ showRule: "{}",
574
+ required: false,
575
+ rule: "[]",
576
+ default: 0,
577
+ },
578
+ },
579
+ state: {
580
+ ControlType: "Radio",
581
+ data: {
582
+ fieldName: "state",
583
+ tip: "",
584
+ label: "状态",
585
+ placeholder: "",
586
+ showRule: "{}",
587
+ required: false,
588
+ rule: "[]",
589
+ itemConfig: {
590
+ value: "normal",
591
+ items: [
592
+ { label: "正常", value: "normal" },
593
+ { label: "禁用", value: "disabled" },
594
+ { label: "只读", value: "readonly" },
595
+ ],
596
+ },
597
+ },
598
+ },
599
+ arrangeMent: {
600
+ ControlType: "Radio",
601
+ data: {
602
+ fieldName: "arrangeMent",
603
+ tip: "",
604
+ label: "排列方式",
605
+ placeholder: "",
606
+ showRule: "{}",
607
+ required: false,
608
+ rule: "[]",
609
+ itemConfig: {
610
+ value: "normal",
611
+ items: [
612
+ { label: "水平", value: "horizontal" },
613
+ { label: "垂直", value: "vertical" },
614
+ ],
615
+ },
616
+ },
617
+ },
618
+ autoHeight: {
619
+ ControlType: "Switch",
620
+ data: {
621
+ fieldName: "autoHeight",
622
+ tip: "",
623
+ label: "自适应高度",
624
+ showRule: "{}",
625
+ required: false,
626
+ rule: "[]",
627
+ },
628
+ },
629
+ format: {
630
+ ControlType: "Selected",
631
+ data: {
632
+ fieldName: "format",
633
+ tip: "",
634
+ label: "日期格式",
635
+ placeholder: "",
636
+ showRule: "{}",
637
+ required: false,
638
+ rule: "[]",
639
+ itemConfig: {
640
+ value: "YYYY-MM-DD",
641
+ items: [
642
+ { label: "年", value: "YYYY" },
643
+ { label: "年月", value: "YYYY-MM" },
644
+ { label: "年月日", value: "YYYY-MM-DD" },
645
+ { label: "年月日时", value: "YYYY-MM-DD HH" },
646
+ { label: "年月日时分", value: "YYYY-MM-DD HH:mm" },
647
+ { label: "年月日时分秒", value: "YYYY-MM-DD HH:mm:ss" },
648
+ ],
649
+ },
650
+ },
651
+ },
652
+ multiple: {
653
+ ControlType: "Switch",
654
+ data: {
655
+ fieldName: "multiple",
656
+ tip: "",
657
+ label: "是否多选",
658
+ showRule: "{}",
659
+ required: false,
660
+ rule: "[]",
661
+ },
662
+ },
663
+ min: {
664
+ ControlType: "Text",
665
+ data: {
666
+ fieldName: "min",
667
+ tip: "",
668
+ label: "最小范围",
669
+ placeholder: "",
670
+ showRule: "{}",
671
+ required: false,
672
+ rule: "[]",
673
+ },
674
+ },
675
+ max: {
676
+ ControlType: "Text",
677
+ data: {
678
+ fieldName: "max",
679
+ tip: "",
680
+ label: "最大范围",
681
+ placeholder: "",
682
+ showRule: "{}",
683
+ required: false,
684
+ rule: "[]",
685
+ },
686
+ },
687
+ itemConfig: {
688
+ ControlType: "KeyValueConfigMult",
689
+ data: {
690
+ fieldName: "itemConfig",
691
+ tip: "",
692
+ label: "默认值",
693
+ placeholder: "",
694
+ showRule: "{}",
695
+ required: false,
696
+ rule: "[]",
697
+ },
698
+ },
699
+ type: {
700
+ ControlType: "Radio",
701
+ data: {
702
+ fieldName: "type",
703
+ tip: "",
704
+ label: "按钮位置",
705
+ placeholder: "",
706
+ showRule: "{}",
707
+ required: false,
708
+ rule: "[]",
709
+ itemConfig: {
710
+ value: "1",
711
+ id: 1,
712
+ items: [
713
+ {
714
+ label: "默认",
715
+ value: "1",
716
+ select: true,
717
+ id: 1,
718
+ },
719
+ {
720
+ label: "右边",
721
+ value: "2",
722
+ select: false,
723
+ id: 2,
724
+ },
725
+ ],
726
+ },
727
+ },
728
+ },
729
+ infotype: {
730
+ ControlType: "Selected",
731
+ data: {
732
+ fieldName: "infotype",
733
+ tip: "",
734
+ label: "风格类型",
735
+ placeholder: "",
736
+ showRule: "{}",
737
+ required: false,
738
+ rule: "[]",
739
+ itemConfig: {
740
+ value: "success",
741
+ id: 1,
742
+ items: [
743
+ {
744
+ label: "success",
745
+ value: "success",
746
+ select: true,
747
+ id: 1,
748
+ },
749
+ {
750
+ label: "info",
751
+ value: "info",
752
+ select: false,
753
+ id: 2,
754
+ },
755
+ {
756
+ label: "warning",
757
+ value: "warning",
758
+ select: false,
759
+ id: 3,
760
+ },
761
+ {
762
+ label: "error",
763
+ value: "error",
764
+ select: false,
765
+ id: 4,
766
+ },
767
+ ],
768
+ },
769
+ },
770
+ },
771
+ effect: {
772
+ ControlType: "Selected",
773
+ data: {
774
+ fieldName: "effect",
775
+ tip: "",
776
+ label: "风格类型",
777
+ placeholder: "",
778
+ showRule: "{}",
779
+ required: false,
780
+ rule: "[]",
781
+ itemConfig: {
782
+ value: "light",
783
+ id: 1,
784
+ items: [
785
+ {
786
+ label: "light",
787
+ value: "light",
788
+ select: true,
789
+ id: 1,
790
+ },
791
+ {
792
+ label: "dark",
793
+ value: "dark",
794
+ select: false,
795
+ id: 2,
796
+ },
797
+ ],
798
+ },
799
+ },
800
+ },
801
+ size: {
802
+ ControlType: "Radio",
803
+ data: {
804
+ fieldName: "size",
805
+ tip: "",
806
+ label: "计数器尺寸类型",
807
+ placeholder: "",
808
+ showRule: "{}",
809
+ required: false,
810
+ rule: "[]",
811
+ itemConfig: {
812
+ value: "large",
813
+ id: 1,
814
+ items: [
815
+ {
816
+ label: "large",
817
+ value: "large",
818
+ select: true,
819
+ id: 1,
820
+ },
821
+ {
822
+ label: "medium",
823
+ value: "medium",
824
+ select: false,
825
+ id: 2,
826
+ },
827
+ {
828
+ label: "small",
829
+ value: "small",
830
+ select: false,
831
+ id: 3,
832
+ },
833
+ {
834
+ label: "mini",
835
+ value: "mini",
836
+ select: false,
837
+ id: 4,
838
+ },
839
+ ],
840
+ },
841
+ },
842
+ },
843
+ InputNumber: {
844
+ ControlType: "InputNumber",
845
+ data: {
846
+ fieldName: "",
847
+ label: "标签名称",
848
+ tip: "",
849
+ placeholder: "",
850
+ showRule: "{}",
851
+ required: false,
852
+ rule: "[]",
853
+ default: 0,
854
+ type: 1,
855
+ size: "large",
856
+ },
857
+ },
858
+ gutter: {
859
+ ControlType: "InputNumber",
860
+ data: {
861
+ fieldName: "gutter",
862
+ label: "栅格间距",
863
+ tip: "",
864
+ placeholder: "",
865
+ showRule: "{}",
866
+ required: false,
867
+ rule: "[]",
868
+ default: 0,
869
+ type: 1,
870
+ size: "small",
871
+ },
872
+ },
873
+ columns: {
874
+ ControlType: "ListConfig",
875
+ data: {
876
+ fieldName: "columns",
877
+ label: "列配置项",
878
+ tip: "",
879
+ showRule: "{}",
880
+ required: false,
881
+ rule: "[]",
882
+ },
883
+ },
884
+ };
885
+ if (map[fieldName] && map[fieldName].ControlType == component) {
886
+ return map[fieldName];
887
+ } else if (!map[fieldName]) {
888
+ return {
889
+ ControlType: component,
890
+ data: {
891
+ fieldName,
892
+ tip: "",
893
+ label: label ? label : "输入占位文字",
894
+ placeholder: "请输入占位文字",
895
+ showRule: "{}",
896
+ required: false,
897
+ rule: "[]",
898
+ },
899
+ };
900
+ } else {
901
+ map[fieldName].ControlType = component;
902
+ return map[fieldName];
903
+ }
904
+ }
905
+
906
+ interface Config {
907
+ fieldName: string;
908
+ component: string;
909
+ label?: string;
910
+ }
911
+
912
+ interface FormConfigReturn {
913
+ data: () => fields;
914
+ morenConfig: () => fields[];
915
+ }
916
+ /**
917
+ *
918
+ * @param componentName
919
+ * @param config
920
+ * @param filterField 过滤表单不要的配置
921
+ * @returns
922
+ */
923
+ function getFormConfig(componentName: string, config: Config[] = [], filterField: string[] = []): FormConfigReturn {
924
+ if (!fieldsMap[componentName]) {
925
+ return {
926
+ data(): any {
927
+ return {};
928
+ },
929
+ morenConfig() {
930
+ return [];
931
+ },
932
+ };
933
+ }
934
+ const configList: any = [];
935
+ if (config && config.length > 0) {
936
+ config.forEach((item) => {
937
+ configList.push(getMoren(item.fieldName, item.component, item.label));
938
+ });
939
+ }
940
+
941
+ return {
942
+ data() {
943
+ return JSON.parse(JSON.stringify(fieldsMap[componentName]));
944
+ },
945
+ morenConfig() {
946
+ const before = beforeBaseFormCofig().filter((item) => {
947
+ if (!filterField.includes(item.data.fieldName)) {
948
+ return item;
949
+ }
950
+ });
951
+ const after = afterBaseFormConfig().filter((item) => {
952
+ if (!filterField.includes(item.data.fieldName)) {
953
+ return item;
954
+ }
955
+ });
956
+ return [...before, ...configList, ...after];
957
+ },
958
+ };
959
+ }
960
+
961
+ export { getFormConfig };