tianheng-ui 0.1.9 → 0.1.11
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/lib/theme-chalk/styles/reset.scss +0 -2
- package/lib/tianheng-ui.js +14 -14
- package/package.json +1 -1
- package/packages/FormMaking/GenerateForm.vue +10 -10
- package/packages/FormMaking/GenerateFormItem.vue +66 -578
- package/packages/FormMaking/GenerateFormItemH5.vue +5 -5
- package/packages/FormMaking/Upload/index.vue +0 -1
- package/packages/FormMaking/WidgetConfig.vue +66 -30
- package/packages/FormMaking/WidgetForm.vue +7 -48
- package/packages/FormMaking/WidgetFormItem.vue +41 -65
- package/packages/FormMaking/WidgetSelect.vue +160 -0
- package/packages/FormMaking/custom/config.js +98 -63
- package/packages/FormMaking/custom/configs/grid.vue +4 -4
- package/packages/FormMaking/custom/configs/input.vue +135 -28
- package/packages/FormMaking/custom/configs/number.vue +2 -2
- package/packages/FormMaking/custom/configs/table.vue +2 -2
- package/packages/FormMaking/custom/configs/{table_h5.vue → tableH5.vue} +2 -2
- package/packages/FormMaking/custom/configs/tabs.vue +6 -6
- package/packages/FormMaking/custom/configs/textarea.vue +121 -19
- package/packages/FormMaking/custom/index.js +2 -4
- package/packages/FormMaking/custom/items/alliance.vue +30 -29
- package/packages/FormMaking/custom/items/blank_pro.vue +14 -0
- package/packages/FormMaking/custom/items/button.vue +1 -0
- package/packages/FormMaking/custom/items/cascader.vue +6 -2
- package/packages/FormMaking/custom/items/cell.vue +0 -2
- package/packages/FormMaking/custom/items/checkbox.vue +17 -7
- package/packages/FormMaking/custom/items/color.vue +1 -1
- package/packages/FormMaking/custom/items/date.vue +1 -1
- package/packages/FormMaking/custom/items/editor.vue +1 -1
- package/packages/FormMaking/custom/items/{grid.vue → grid_dev.vue} +16 -47
- package/packages/FormMaking/custom/items/grid_pro.vue +45 -0
- package/packages/FormMaking/custom/items/image.vue +0 -28
- package/packages/FormMaking/custom/items/input.vue +15 -9
- package/packages/FormMaking/custom/items/number.vue +4 -4
- package/packages/FormMaking/custom/items/radio.vue +17 -7
- package/packages/FormMaking/custom/items/rate.vue +1 -1
- package/packages/FormMaking/custom/items/select.vue +12 -6
- package/packages/FormMaking/custom/items/slider.vue +1 -1
- package/packages/FormMaking/custom/items/switch.vue +1 -1
- package/packages/FormMaking/custom/items/{table_h5.vue → tableH5_dev.vue} +44 -49
- package/packages/FormMaking/custom/items/tableH5_pro.vue +113 -0
- package/packages/FormMaking/custom/items/{table.vue → table_dev.vue} +21 -41
- package/packages/FormMaking/custom/items/table_pro.vue +114 -0
- package/packages/FormMaking/custom/items/tabs_dev.vue +101 -0
- package/packages/FormMaking/custom/items/tabs_pro.vue +50 -0
- package/packages/FormMaking/custom/items/text.vue +1 -1
- package/packages/FormMaking/custom/items/textarea.vue +4 -13
- package/packages/FormMaking/custom/items/time.vue +3 -3
- package/packages/FormMaking/custom/items/upload.vue +15 -14
- package/packages/FormMaking/custom/mixins/index.js +23 -1
- package/packages/FormMaking/custom/register.js +22 -11
- package/packages/FormMaking/index.vue +11 -7
- package/packages/FormMaking/styles/index.scss +235 -221
- package/packages/FormMaking/util/generateCode.js +3 -3
- package/packages/FormMaking/util/index.js +33 -23
- package/packages/TableMaking/generateTable.vue +2 -2
- package/packages/FormMaking/custom/items/tabs.vue +0 -145
- /package/packages/FormMaking/custom/items/{blank.vue → blank_dev.vue} +0 -0
@@ -30,7 +30,7 @@ export const basicComponents = [
|
|
30
30
|
onFocus: "",
|
31
31
|
onBlur: ""
|
32
32
|
},
|
33
|
-
rules: []
|
33
|
+
rules: [{}]
|
34
34
|
},
|
35
35
|
{
|
36
36
|
name: "多行文本",
|
@@ -60,7 +60,8 @@ export const basicComponents = [
|
|
60
60
|
onChange: "",
|
61
61
|
onFocus: "",
|
62
62
|
onBlur: ""
|
63
|
-
}
|
63
|
+
},
|
64
|
+
rules: [{}]
|
64
65
|
},
|
65
66
|
{
|
66
67
|
name: "单元格",
|
@@ -79,7 +80,8 @@ export const basicComponents = [
|
|
79
80
|
textAlign: "right",
|
80
81
|
hidden: false,
|
81
82
|
hideLabel: false
|
82
|
-
}
|
83
|
+
},
|
84
|
+
rules: []
|
83
85
|
},
|
84
86
|
{
|
85
87
|
name: "文字",
|
@@ -95,7 +97,8 @@ export const basicComponents = [
|
|
95
97
|
textAlign: "left",
|
96
98
|
hidden: false,
|
97
99
|
hideLabel: false
|
98
|
-
}
|
100
|
+
},
|
101
|
+
rules: []
|
99
102
|
},
|
100
103
|
{
|
101
104
|
name: "单选框组",
|
@@ -137,7 +140,8 @@ export const basicComponents = [
|
|
137
140
|
},
|
138
141
|
events: {
|
139
142
|
onChange: ""
|
140
|
-
}
|
143
|
+
},
|
144
|
+
rules: []
|
141
145
|
},
|
142
146
|
{
|
143
147
|
name: "多选框组",
|
@@ -180,7 +184,8 @@ export const basicComponents = [
|
|
180
184
|
},
|
181
185
|
events: {
|
182
186
|
onChange: ""
|
183
|
-
}
|
187
|
+
},
|
188
|
+
rules: []
|
184
189
|
},
|
185
190
|
{
|
186
191
|
name: "时间选择器",
|
@@ -210,7 +215,8 @@ export const basicComponents = [
|
|
210
215
|
onChange: "",
|
211
216
|
onFocus: "",
|
212
217
|
onBlur: ""
|
213
|
-
}
|
218
|
+
},
|
219
|
+
rules: []
|
214
220
|
},
|
215
221
|
{
|
216
222
|
name: "日期选择器",
|
@@ -237,7 +243,8 @@ export const basicComponents = [
|
|
237
243
|
onChange: "",
|
238
244
|
onFocus: "",
|
239
245
|
onBlur: ""
|
240
|
-
}
|
246
|
+
},
|
247
|
+
rules: []
|
241
248
|
},
|
242
249
|
{
|
243
250
|
name: "下拉选择框",
|
@@ -283,7 +290,8 @@ export const basicComponents = [
|
|
283
290
|
onChange: "",
|
284
291
|
onFocus: "",
|
285
292
|
onBlur: ""
|
286
|
-
}
|
293
|
+
},
|
294
|
+
rules: []
|
287
295
|
},
|
288
296
|
{
|
289
297
|
name: "颜色选择器",
|
@@ -312,7 +320,8 @@ export const basicComponents = [
|
|
312
320
|
},
|
313
321
|
events: {
|
314
322
|
onChange: ""
|
315
|
-
}
|
323
|
+
},
|
324
|
+
rules: []
|
316
325
|
},
|
317
326
|
{
|
318
327
|
name: "开关",
|
@@ -334,7 +343,8 @@ export const basicComponents = [
|
|
334
343
|
},
|
335
344
|
events: {
|
336
345
|
onChange: ""
|
337
|
-
}
|
346
|
+
},
|
347
|
+
rules: []
|
338
348
|
},
|
339
349
|
{
|
340
350
|
name: "按钮",
|
@@ -377,13 +387,12 @@ export const basicComponents = [
|
|
377
387
|
isLabelWidth: false,
|
378
388
|
required: false,
|
379
389
|
defaultValue: 0,
|
380
|
-
min:
|
381
|
-
max:
|
382
|
-
step: 1,
|
390
|
+
min: 0,
|
391
|
+
max: -1,
|
392
|
+
step: 1, //递增递减步数
|
393
|
+
precision: 0, //精度
|
383
394
|
disabled: false,
|
384
395
|
controlsPosition: false,
|
385
|
-
step: 1, //递增递减步数
|
386
|
-
precision: 1, //精度
|
387
396
|
hidden: false,
|
388
397
|
hideLabel: false
|
389
398
|
},
|
@@ -391,7 +400,8 @@ export const basicComponents = [
|
|
391
400
|
onChange: "",
|
392
401
|
onFocus: "",
|
393
402
|
onBlur: ""
|
394
|
-
}
|
403
|
+
},
|
404
|
+
rules: []
|
395
405
|
},
|
396
406
|
{
|
397
407
|
name: "滑块",
|
@@ -419,7 +429,8 @@ export const basicComponents = [
|
|
419
429
|
},
|
420
430
|
events: {
|
421
431
|
onChange: ""
|
422
|
-
}
|
432
|
+
},
|
433
|
+
rules: []
|
423
434
|
},
|
424
435
|
{
|
425
436
|
name: "评分",
|
@@ -440,7 +451,8 @@ export const basicComponents = [
|
|
440
451
|
},
|
441
452
|
events: {
|
442
453
|
onChange: ""
|
443
|
-
}
|
454
|
+
},
|
455
|
+
rules: []
|
444
456
|
},
|
445
457
|
{
|
446
458
|
name: "图片",
|
@@ -471,7 +483,9 @@ export const basicComponents = [
|
|
471
483
|
hidden: false,
|
472
484
|
hideLabel: false,
|
473
485
|
isLazy: true
|
474
|
-
}
|
486
|
+
},
|
487
|
+
events: {},
|
488
|
+
rules: []
|
475
489
|
},
|
476
490
|
{
|
477
491
|
name: "文件",
|
@@ -505,7 +519,9 @@ export const basicComponents = [
|
|
505
519
|
elUploadTip: "",
|
506
520
|
listType: "default", //展示方式
|
507
521
|
drag: false //拖拽上传
|
508
|
-
}
|
522
|
+
},
|
523
|
+
events: {},
|
524
|
+
rules: []
|
509
525
|
},
|
510
526
|
{
|
511
527
|
name: "编辑器",
|
@@ -521,7 +537,9 @@ export const basicComponents = [
|
|
521
537
|
required: false,
|
522
538
|
hidden: false,
|
523
539
|
hideLabel: false
|
524
|
-
}
|
540
|
+
},
|
541
|
+
events: {},
|
542
|
+
rules: []
|
525
543
|
},
|
526
544
|
{
|
527
545
|
name: "级联选择器",
|
@@ -557,7 +575,8 @@ export const basicComponents = [
|
|
557
575
|
},
|
558
576
|
events: {
|
559
577
|
onChange: ""
|
560
|
-
}
|
578
|
+
},
|
579
|
+
rules: []
|
561
580
|
}
|
562
581
|
];
|
563
582
|
|
@@ -569,6 +588,7 @@ export const advanceComponents = [
|
|
569
588
|
options: {
|
570
589
|
height: "",
|
571
590
|
defaultValue: "",
|
591
|
+
columns: [],
|
572
592
|
customClass: "",
|
573
593
|
labelWidth: 100,
|
574
594
|
isLabelWidth: false,
|
@@ -590,14 +610,16 @@ export const advanceComponents = [
|
|
590
610
|
showHeader: true, // 是否显示表头
|
591
611
|
highlightCurrentRow: false // 是否高亮当前行
|
592
612
|
},
|
593
|
-
|
613
|
+
events: {},
|
614
|
+
rules: []
|
594
615
|
},
|
595
616
|
{
|
596
617
|
name: "子表单H5",
|
597
|
-
type: "
|
618
|
+
type: "tableH5",
|
598
619
|
icon: "icon-table",
|
599
620
|
options: {
|
600
621
|
defaultValue: "",
|
622
|
+
columns: [],
|
601
623
|
customClass: "",
|
602
624
|
labelWidth: 100,
|
603
625
|
isLabelWidth: false,
|
@@ -617,29 +639,30 @@ export const advanceComponents = [
|
|
617
639
|
deleteButtonText: "删除",
|
618
640
|
deleteIndex: 0 // 可删除的最小索引
|
619
641
|
},
|
620
|
-
|
642
|
+
events: {},
|
643
|
+
rules: []
|
621
644
|
},
|
622
645
|
{
|
623
646
|
name: "标签页",
|
624
647
|
type: "tabs",
|
625
648
|
icon: "icon-tabs",
|
626
|
-
tabs: [
|
627
|
-
{
|
628
|
-
label: "选项1",
|
629
|
-
value: "tab1",
|
630
|
-
list: []
|
631
|
-
},
|
632
|
-
{
|
633
|
-
label: "选项2",
|
634
|
-
value: "tab2",
|
635
|
-
list: []
|
636
|
-
}
|
637
|
-
],
|
638
649
|
options: {
|
639
650
|
defaultValue: "tab1",
|
640
651
|
type: "",
|
641
652
|
tabPosition: "top",
|
642
653
|
customClass: "",
|
654
|
+
columns: [
|
655
|
+
{
|
656
|
+
label: "选项1",
|
657
|
+
value: "tab1",
|
658
|
+
list: []
|
659
|
+
},
|
660
|
+
{
|
661
|
+
label: "选项2",
|
662
|
+
value: "tab2",
|
663
|
+
list: []
|
664
|
+
}
|
665
|
+
],
|
643
666
|
hidden: false,
|
644
667
|
labelWidth: 100,
|
645
668
|
isLabelWidth: false,
|
@@ -649,6 +672,7 @@ export const advanceComponents = [
|
|
649
672
|
remoteOption: [],
|
650
673
|
tableColumn: false
|
651
674
|
},
|
675
|
+
events: {},
|
652
676
|
rules: []
|
653
677
|
},
|
654
678
|
{
|
@@ -658,7 +682,9 @@ export const advanceComponents = [
|
|
658
682
|
options: {
|
659
683
|
defaultType: "String",
|
660
684
|
required: false
|
661
|
-
}
|
685
|
+
},
|
686
|
+
events: {},
|
687
|
+
rules: []
|
662
688
|
}
|
663
689
|
];
|
664
690
|
|
@@ -667,43 +693,47 @@ export const layoutComponents = [
|
|
667
693
|
name: "栅格布局",
|
668
694
|
type: "grid",
|
669
695
|
icon: "icon-grid-",
|
670
|
-
columns: [
|
671
|
-
{
|
672
|
-
span: 12,
|
673
|
-
list: []
|
674
|
-
},
|
675
|
-
{
|
676
|
-
span: 12,
|
677
|
-
list: []
|
678
|
-
}
|
679
|
-
],
|
680
696
|
options: {
|
681
697
|
gutter: 0,
|
682
698
|
justify: "start",
|
683
699
|
align: "top",
|
700
|
+
columns: [
|
701
|
+
{
|
702
|
+
span: 12,
|
703
|
+
list: []
|
704
|
+
},
|
705
|
+
{
|
706
|
+
span: 12,
|
707
|
+
list: []
|
708
|
+
}
|
709
|
+
],
|
684
710
|
hideLabel: true
|
685
|
-
}
|
711
|
+
},
|
712
|
+
events: {},
|
713
|
+
rules: []
|
686
714
|
},
|
687
715
|
{
|
688
716
|
name: "浮动布局",
|
689
717
|
type: "alliance",
|
690
718
|
icon: "icon-grid-",
|
691
|
-
columns: [
|
692
|
-
{
|
693
|
-
span: 12,
|
694
|
-
list: []
|
695
|
-
},
|
696
|
-
{
|
697
|
-
span: 12,
|
698
|
-
list: []
|
699
|
-
}
|
700
|
-
],
|
701
719
|
options: {
|
702
720
|
gutter: 0,
|
703
721
|
justify: "start",
|
704
722
|
align: "top",
|
723
|
+
columns: [
|
724
|
+
{
|
725
|
+
span: 12,
|
726
|
+
list: []
|
727
|
+
},
|
728
|
+
{
|
729
|
+
span: 12,
|
730
|
+
list: []
|
731
|
+
}
|
732
|
+
],
|
705
733
|
hideLabel: true
|
706
|
-
}
|
734
|
+
},
|
735
|
+
events: {},
|
736
|
+
rules: []
|
707
737
|
},
|
708
738
|
{
|
709
739
|
name: "填充物",
|
@@ -716,8 +746,10 @@ export const layoutComponents = [
|
|
716
746
|
labelWidth: 100,
|
717
747
|
isLabelWidth: false,
|
718
748
|
hideLabel: true,
|
719
|
-
hidden: false
|
720
|
-
}
|
749
|
+
hidden: false
|
750
|
+
},
|
751
|
+
events: {},
|
752
|
+
rules: []
|
721
753
|
},
|
722
754
|
{
|
723
755
|
name: "分割线",
|
@@ -733,10 +765,13 @@ export const layoutComponents = [
|
|
733
765
|
contentPosition: "left",
|
734
766
|
tableColumn: false
|
735
767
|
},
|
768
|
+
events: {},
|
736
769
|
rules: []
|
737
770
|
}
|
738
771
|
];
|
739
772
|
|
773
|
+
export const templateComponents = [];
|
774
|
+
|
740
775
|
export const baseConfig = {
|
741
776
|
ui: "element",
|
742
777
|
title: "",
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<el-form-item label="列配置项">
|
20
20
|
<draggable
|
21
21
|
tag="ul"
|
22
|
-
:list="widget.columns"
|
22
|
+
:list="widget.options.columns"
|
23
23
|
v-bind="{
|
24
24
|
group: { name: 'options' },
|
25
25
|
ghostClass: 'ghost',
|
@@ -27,7 +27,7 @@
|
|
27
27
|
}"
|
28
28
|
handle=".drag-item"
|
29
29
|
>
|
30
|
-
<li v-for="(item, index) in widget.columns" :key="index">
|
30
|
+
<li v-for="(item, index) in widget.options.columns" :key="index">
|
31
31
|
<el-input
|
32
32
|
placeholder="栅格值"
|
33
33
|
style="width: 100px;"
|
@@ -88,13 +88,13 @@ export default {
|
|
88
88
|
mounted() {},
|
89
89
|
methods: {
|
90
90
|
handleAddOption() {
|
91
|
-
this.widget.columns.push({
|
91
|
+
this.widget.options.columns.push({
|
92
92
|
span: "",
|
93
93
|
list: []
|
94
94
|
});
|
95
95
|
},
|
96
96
|
handleOptionsRemove(index) {
|
97
|
-
this.widget.columns.splice(index, 1);
|
97
|
+
this.widget.options.columns.splice(index, 1);
|
98
98
|
}
|
99
99
|
}
|
100
100
|
};
|
@@ -6,7 +6,7 @@
|
|
6
6
|
</el-form-item>
|
7
7
|
|
8
8
|
<el-form-item label="标题">
|
9
|
-
<el-input v-model="widget.name"></el-input>
|
9
|
+
<el-input v-model="widget.name" clearable></el-input>
|
10
10
|
</el-form-item>
|
11
11
|
|
12
12
|
<el-form-item label="标签宽度">
|
@@ -25,15 +25,15 @@
|
|
25
25
|
</el-form-item>
|
26
26
|
|
27
27
|
<el-form-item label="宽度">
|
28
|
-
<el-input v-model="widget.options.width"></el-input>
|
28
|
+
<el-input v-model="widget.options.width" clearable></el-input>
|
29
29
|
</el-form-item>
|
30
30
|
|
31
31
|
<el-form-item label="占位内容">
|
32
|
-
<el-input v-model="widget.options.placeholder"></el-input>
|
32
|
+
<el-input v-model="widget.options.placeholder" clearable></el-input>
|
33
33
|
</el-form-item>
|
34
34
|
|
35
35
|
<el-form-item label="默认值">
|
36
|
-
<el-input v-model="widget.options.defaultValue"></el-input>
|
36
|
+
<el-input v-model="widget.options.defaultValue" clearable></el-input>
|
37
37
|
</el-form-item>
|
38
38
|
|
39
39
|
<el-form-item label="最大字数">
|
@@ -49,16 +49,18 @@
|
|
49
49
|
|
50
50
|
<el-form-item label="带入icon">
|
51
51
|
<el-input
|
52
|
-
placeholder="请输入icon类名"
|
53
52
|
v-model="widget.options.prefixIcon"
|
53
|
+
placeholder="请输入icon类名"
|
54
|
+
clearable
|
54
55
|
>
|
55
56
|
<template slot="prepend">
|
56
57
|
<div style="width:50px;">prefixIcon</div>
|
57
58
|
</template>
|
58
59
|
</el-input>
|
59
60
|
<el-input
|
60
|
-
placeholder="请输入icon类名"
|
61
61
|
v-model="widget.options.suffixIcon"
|
62
|
+
placeholder="请输入icon类名"
|
63
|
+
clearable
|
62
64
|
>
|
63
65
|
<template slot="prepend">
|
64
66
|
<div style="width:50px;">suffixIcon</div>
|
@@ -68,16 +70,18 @@
|
|
68
70
|
|
69
71
|
<el-form-item label="组件插槽">
|
70
72
|
<el-input
|
71
|
-
placeholder="请输入内容或HTML"
|
72
73
|
v-model="widget.options.prepend"
|
74
|
+
placeholder="请输入内容或HTML"
|
75
|
+
clearable
|
73
76
|
>
|
74
77
|
<template slot="prepend">
|
75
78
|
<div style="width:50px;">prepend</div>
|
76
79
|
</template>
|
77
80
|
</el-input>
|
78
81
|
<el-input
|
79
|
-
placeholder="请输入内容或HTML"
|
80
82
|
v-model="widget.options.append"
|
83
|
+
placeholder="请输入内容或HTML"
|
84
|
+
clearable
|
81
85
|
>
|
82
86
|
<template slot="prepend">
|
83
87
|
<div style="width:50px;">append</div>
|
@@ -97,27 +101,54 @@
|
|
97
101
|
</el-form-item>
|
98
102
|
|
99
103
|
<el-form-item label="校验">
|
100
|
-
<
|
101
|
-
|
102
|
-
<el-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
104
|
+
<div class="flexView">
|
105
|
+
<el-checkbox v-model="widget.options.required">必填</el-checkbox>
|
106
|
+
<el-select
|
107
|
+
style="flex: 1;margin-left:10px;"
|
108
|
+
v-model="widget.options.dataType"
|
109
|
+
@change="handleInputTypeChange"
|
110
|
+
>
|
111
|
+
<el-option
|
112
|
+
v-for="rule in Object.values(rulesOptions)"
|
113
|
+
:key="rule.value"
|
114
|
+
:value="rule.value"
|
115
|
+
:label="rule.label"
|
116
|
+
></el-option>
|
117
|
+
</el-select>
|
118
|
+
</div>
|
111
119
|
|
112
|
-
<
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
placeholder="填写正则表达式"
|
120
|
+
<div
|
121
|
+
v-for="(rule, index) in widget.rules"
|
122
|
+
class="flexView"
|
123
|
+
:key="index"
|
117
124
|
>
|
118
|
-
<
|
119
|
-
|
120
|
-
|
125
|
+
<el-input
|
126
|
+
class="config-pattern-input"
|
127
|
+
style="flex: 1;margin-right:10px;"
|
128
|
+
v-model="rule.patternStr"
|
129
|
+
placeholder="填写正则表达式"
|
130
|
+
clearable
|
131
|
+
>
|
132
|
+
<template slot="prepend">/</template>
|
133
|
+
<template slot="append">/</template>
|
134
|
+
</el-input>
|
135
|
+
<el-button
|
136
|
+
v-if="index === widget.rules.length - 1"
|
137
|
+
type="primary"
|
138
|
+
icon="el-icon-plus"
|
139
|
+
size="mini"
|
140
|
+
@click="
|
141
|
+
widget.rules.push({ id: new Date().getTime(), patternStr: '' })
|
142
|
+
"
|
143
|
+
></el-button>
|
144
|
+
<el-button
|
145
|
+
v-else
|
146
|
+
type="danger"
|
147
|
+
icon="el-icon-delete"
|
148
|
+
size="mini"
|
149
|
+
@click="widget.rules.splice(index, 1)"
|
150
|
+
></el-button>
|
151
|
+
</div>
|
121
152
|
</el-form-item>
|
122
153
|
|
123
154
|
<el-form-item>
|
@@ -168,8 +199,84 @@ export default {
|
|
168
199
|
},
|
169
200
|
props: {},
|
170
201
|
mixins: [configComponent],
|
202
|
+
data() {
|
203
|
+
return {
|
204
|
+
rulesOptions: {
|
205
|
+
string: { label: "字符串", value: "string", pattern: "" },
|
206
|
+
number: { label: "数字", value: "number", pattern: "^[0-9]*$" },
|
207
|
+
numberOrAlphabet: {
|
208
|
+
label: "数字和大小写英文字母",
|
209
|
+
value: "numberOrAlphabet",
|
210
|
+
pattern: "^[A-Za-z0-9]+$"
|
211
|
+
},
|
212
|
+
integer: {
|
213
|
+
label: "正整数",
|
214
|
+
value: "integer",
|
215
|
+
pattern: "^[1-9]+[0-9]*$"
|
216
|
+
},
|
217
|
+
url: { label: "URL地址", value: "url", pattern: "" },
|
218
|
+
email: { label: "邮箱地址", value: "email", pattern: "" },
|
219
|
+
chineseName: {
|
220
|
+
label: "中文名(2-16位)",
|
221
|
+
value: "chineseName",
|
222
|
+
pattern: "^(?:[\\u4e00-\\u9fa5·]{2,16})$"
|
223
|
+
},
|
224
|
+
englishName: {
|
225
|
+
label: "英文名(2-22位)",
|
226
|
+
value: "englishName",
|
227
|
+
pattern: "(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)"
|
228
|
+
},
|
229
|
+
tel: { label: "手机号", value: "tel", pattern: "^1\\d{10}$" },
|
230
|
+
specialPlane: {
|
231
|
+
label: "座机号(xxx-xxxxxxxx)",
|
232
|
+
value: "specialPlane",
|
233
|
+
pattern: "^\\d{3}-\\d{8}$|^\\d{4}-\\d{7}$"
|
234
|
+
},
|
235
|
+
idCard: {
|
236
|
+
label: "身份证(18位)",
|
237
|
+
value: "idCard",
|
238
|
+
pattern: "^\\d{17}(\\d|X)$"
|
239
|
+
},
|
240
|
+
bankCard: {
|
241
|
+
label: "银行卡号",
|
242
|
+
value: "bankCard",
|
243
|
+
pattern: "^[1-9]\\d{9,29}$"
|
244
|
+
},
|
245
|
+
creditCode: {
|
246
|
+
label: "统一社会信用代码",
|
247
|
+
value: "creditCode",
|
248
|
+
pattern: "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$"
|
249
|
+
}
|
250
|
+
}
|
251
|
+
};
|
252
|
+
},
|
171
253
|
mounted() {},
|
172
|
-
methods: {
|
254
|
+
methods: {
|
255
|
+
handleInputTypeChange() {
|
256
|
+
const ruleType = this.widget.options.dataType;
|
257
|
+
if (this.rulesOptions[ruleType].pattern) {
|
258
|
+
let isNew = true;
|
259
|
+
this.widget.rules.forEach(rule => {
|
260
|
+
if (rule.name) {
|
261
|
+
rule.name = ruleType;
|
262
|
+
rule.patternStr = this.rulesOptions[ruleType].pattern;
|
263
|
+
isNew = false;
|
264
|
+
}
|
265
|
+
});
|
266
|
+
if (isNew) {
|
267
|
+
this.widget.rules.unshift({
|
268
|
+
id: new Date().getTime(),
|
269
|
+
name: ruleType,
|
270
|
+
patternStr: this.rulesOptions[ruleType].pattern
|
271
|
+
});
|
272
|
+
}
|
273
|
+
} else {
|
274
|
+
this.widget.rules = this.widget.rules.filter(rule => {
|
275
|
+
return !rule.name;
|
276
|
+
});
|
277
|
+
}
|
278
|
+
}
|
279
|
+
}
|
173
280
|
};
|
174
281
|
</script>
|
175
282
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
<div style="flex:1;">最大值:</div>
|
39
39
|
<el-input-number
|
40
40
|
v-model="widget.options.max"
|
41
|
-
:min="
|
41
|
+
:min="-1"
|
42
42
|
>
|
43
43
|
</el-input-number>
|
44
44
|
</div>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
<el-input-number
|
57
57
|
v-model="widget.options.precision"
|
58
58
|
:min="0"
|
59
|
-
:max="
|
59
|
+
:max="6"
|
60
60
|
:step="1"
|
61
61
|
></el-input-number>
|
62
62
|
</div>
|
@@ -84,8 +84,8 @@ export default {
|
|
84
84
|
let dic = {};
|
85
85
|
this.widget.list.forEach(item => {
|
86
86
|
if (item.type === "grid") {
|
87
|
-
for (let i = 0; i < item.columns.length; i++) {
|
88
|
-
const element = item.columns[i];
|
87
|
+
for (let i = 0; i < item.options.columns.length; i++) {
|
88
|
+
const element = item.options.columns[i];
|
89
89
|
for (let j = 0; j < element.list.length; j++) {
|
90
90
|
const element2 = element.list[j];
|
91
91
|
dic[element2.model] = element2.options.defaultValue;
|
@@ -81,8 +81,8 @@ export default {
|
|
81
81
|
let dic = {};
|
82
82
|
this.widget.list.forEach(item => {
|
83
83
|
if (item.type === "grid") {
|
84
|
-
for (let i = 0; i < item.columns.length; i++) {
|
85
|
-
const element = item.columns[i];
|
84
|
+
for (let i = 0; i < item.options.columns.length; i++) {
|
85
|
+
const element = item.options.columns[i];
|
86
86
|
for (let j = 0; j < element.list.length; j++) {
|
87
87
|
const element2 = element.list[j];
|
88
88
|
dic[element2.model] = element2.options.defaultValue;
|