tianheng-ui 0.1.69 → 0.1.70
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/dialog.scss +56 -40
- package/lib/theme-chalk/styles/feature.scss +7 -0
- package/lib/tianheng-ui.js +13 -13
- package/package.json +1 -1
- package/packages/Dialog/index.vue +18 -9
- package/packages/FormMaking/GenerateForm.vue +27 -42
- package/packages/FormMaking/GenerateFormItem.vue +10 -26
- package/packages/FormMaking/WidgetFormItem.vue +9 -7
- package/packages/FormMaking/WidgetGuide.vue +86 -0
- package/packages/FormMaking/WidgetSelect.vue +2 -2
- package/packages/FormMaking/WidgetTools.vue +10 -6
- package/packages/FormMaking/custom/config.js +2 -31
- package/packages/FormMaking/custom/configs/list.vue +11 -12
- package/packages/FormMaking/custom/configs/radio.vue +2 -5
- package/packages/FormMaking/custom/configs/table.vue +12 -9
- package/packages/FormMaking/custom/configs/tabs.vue +69 -55
- package/packages/FormMaking/custom/index.js +1 -1
- package/packages/FormMaking/custom/items/grid_dev.vue +5 -8
- package/packages/FormMaking/custom/items/list_dev.vue +19 -23
- package/packages/FormMaking/custom/items/list_pro.vue +16 -14
- package/packages/FormMaking/custom/items/table_dev.vue +13 -12
- package/packages/FormMaking/custom/items/table_pro.vue +5 -5
- package/packages/FormMaking/custom/items/tabs_dev.vue +4 -7
- package/packages/FormMaking/custom/items/tabs_pro.vue +7 -9
- package/packages/FormMaking/index.vue +62 -76
- package/packages/FormMaking/styles/index.scss +1 -1
- package/packages/TableMaking/index.vue +18 -3
- package/packages/TableMaking/widgetGuide.vue +122 -58
- package/packages/FormMaking/custom/configs/tableH5.vue +0 -98
- package/packages/FormMaking/custom/items/tableH5_dev.vue +0 -112
- package/packages/FormMaking/custom/items/tableH5_pro.vue +0 -119
@@ -13,24 +13,20 @@
|
|
13
13
|
name="group-basic"
|
14
14
|
>
|
15
15
|
<draggable
|
16
|
-
tag="ul"
|
17
16
|
:list="getBasicComponents"
|
18
17
|
v-bind="{
|
19
18
|
group: { name: 'people', pull: 'clone', put: false },
|
20
19
|
sort: false
|
21
20
|
}"
|
22
21
|
>
|
23
|
-
<
|
22
|
+
<div
|
24
23
|
v-for="(item, index) in getBasicComponents"
|
25
|
-
class="fields-label"
|
26
|
-
:class="[[item.type]]"
|
24
|
+
:class="`fields-label ${item.type}`"
|
27
25
|
:key="index"
|
28
26
|
>
|
29
|
-
<
|
30
|
-
|
31
|
-
|
32
|
-
</a>
|
33
|
-
</li>
|
27
|
+
<i class="iconfont" :class="item.icon"></i>
|
28
|
+
<span>{{ item.name }}</span>
|
29
|
+
</div>
|
34
30
|
</draggable>
|
35
31
|
</el-collapse-item>
|
36
32
|
<el-collapse-item
|
@@ -39,24 +35,20 @@
|
|
39
35
|
name="group-advance"
|
40
36
|
>
|
41
37
|
<draggable
|
42
|
-
tag="ul"
|
43
38
|
:list="getAdvanceComponents"
|
44
39
|
v-bind="{
|
45
40
|
group: { name: 'people', pull: 'clone', put: false },
|
46
41
|
sort: false
|
47
42
|
}"
|
48
43
|
>
|
49
|
-
<
|
44
|
+
<div
|
50
45
|
v-for="(item, index) in getAdvanceComponents"
|
51
|
-
class="fields-label no-put"
|
52
|
-
:class="[[item.type]]"
|
46
|
+
:class="`fields-label ${item.type} no-put`"
|
53
47
|
:key="index"
|
54
48
|
>
|
55
|
-
<
|
56
|
-
|
57
|
-
|
58
|
-
</a>
|
59
|
-
</li>
|
49
|
+
<i class="iconfont" :class="item.icon"></i>
|
50
|
+
<span>{{ item.name }}</span>
|
51
|
+
</div>
|
60
52
|
</draggable>
|
61
53
|
</el-collapse-item>
|
62
54
|
<el-collapse-item
|
@@ -65,27 +57,23 @@
|
|
65
57
|
name="group-layout"
|
66
58
|
>
|
67
59
|
<draggable
|
68
|
-
tag="ul"
|
69
60
|
:list="getLayoutComponents"
|
70
61
|
v-bind="{
|
71
62
|
group: { name: 'people', pull: 'clone', put: false },
|
72
63
|
sort: false
|
73
64
|
}"
|
74
65
|
>
|
75
|
-
<
|
66
|
+
<div
|
76
67
|
v-for="(item, index) in getLayoutComponents"
|
77
|
-
class="
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
}"
|
68
|
+
:class="
|
69
|
+
`fields-label ${item.type}
|
70
|
+
${['alliance'].includes(item.type) ? 'no-put' : ''}`
|
71
|
+
"
|
82
72
|
:key="index"
|
83
73
|
>
|
84
|
-
<
|
85
|
-
|
86
|
-
|
87
|
-
</a>
|
88
|
-
</li>
|
74
|
+
<i class="iconfont" :class="item.icon"></i>
|
75
|
+
<span>{{ item.name }}</span>
|
76
|
+
</div>
|
89
77
|
</draggable>
|
90
78
|
</el-collapse-item>
|
91
79
|
<el-collapse-item
|
@@ -94,31 +82,27 @@
|
|
94
82
|
name="group-business"
|
95
83
|
>
|
96
84
|
<draggable
|
97
|
-
tag="ul"
|
98
85
|
:list="getBusinessComponents"
|
99
86
|
v-bind="{
|
100
87
|
group: { name: 'people', pull: 'clone', put: false },
|
101
88
|
sort: false
|
102
89
|
}"
|
103
90
|
>
|
104
|
-
<
|
91
|
+
<div
|
105
92
|
v-for="(item, index) in getBusinessComponents"
|
106
|
-
class="fields-label"
|
107
|
-
:class="[[item.type]]"
|
93
|
+
:class="`fields-label ${item.type}`"
|
108
94
|
:key="index"
|
109
95
|
>
|
110
|
-
<
|
111
|
-
|
112
|
-
|
113
|
-
</a>
|
114
|
-
</li>
|
96
|
+
<i class="iconfont" :class="item.icon"></i>
|
97
|
+
<span>{{ item.name }}</span>
|
98
|
+
</div>
|
115
99
|
</draggable>
|
116
100
|
</el-collapse-item>
|
117
101
|
</el-collapse>
|
118
102
|
</div>
|
119
103
|
|
120
104
|
<!-- 中间视图区 -->
|
121
|
-
<div class="
|
105
|
+
<div class="th-fiex_content">
|
122
106
|
<!-- 操作区 -->
|
123
107
|
<widget-tools
|
124
108
|
:baseConfig="baseConfig"
|
@@ -154,6 +138,10 @@
|
|
154
138
|
>
|
155
139
|
</widget-config>
|
156
140
|
</div>
|
141
|
+
|
142
|
+
<!-- <th-dialog v-model="showGuide" title="配置" :showFooter="false">
|
143
|
+
<widget-guide></widget-guide>
|
144
|
+
</th-dialog> -->
|
157
145
|
</div>
|
158
146
|
</template>
|
159
147
|
|
@@ -163,6 +151,7 @@ import WidgetConfig from "./WidgetConfig";
|
|
163
151
|
import WidgetTools from "./WidgetTools";
|
164
152
|
import WidgetForm from "./WidgetForm";
|
165
153
|
import GenerateForm from "./GenerateForm";
|
154
|
+
import WidgetGuide from "./WidgetGuide.vue";
|
166
155
|
import {
|
167
156
|
basicComponents,
|
168
157
|
advanceComponents,
|
@@ -181,7 +170,8 @@ export default {
|
|
181
170
|
WidgetConfig,
|
182
171
|
WidgetTools,
|
183
172
|
WidgetForm,
|
184
|
-
GenerateForm
|
173
|
+
GenerateForm,
|
174
|
+
WidgetGuide
|
185
175
|
},
|
186
176
|
props: {
|
187
177
|
config: Object,
|
@@ -229,7 +219,7 @@ export default {
|
|
229
219
|
},
|
230
220
|
advanceFields: {
|
231
221
|
type: Array,
|
232
|
-
default: () => ["table", "
|
222
|
+
default: () => ["table", "list", "tabs"]
|
233
223
|
},
|
234
224
|
layoutFields: {
|
235
225
|
type: Array,
|
@@ -238,7 +228,8 @@ export default {
|
|
238
228
|
businessFields: {
|
239
229
|
type: Array,
|
240
230
|
default: () => ["blank", "descriptions", "workflow"]
|
241
|
-
}
|
231
|
+
},
|
232
|
+
guide: Boolean
|
242
233
|
},
|
243
234
|
data() {
|
244
235
|
this.basicComponents = basicComponents;
|
@@ -256,7 +247,8 @@ export default {
|
|
256
247
|
"group-advance",
|
257
248
|
"group-layout",
|
258
249
|
"group-business"
|
259
|
-
]
|
250
|
+
],
|
251
|
+
showGuide: this.guide
|
260
252
|
};
|
261
253
|
},
|
262
254
|
computed: {
|
@@ -292,6 +284,12 @@ export default {
|
|
292
284
|
},
|
293
285
|
apiOptions(val) {
|
294
286
|
this.handleNetworkConfig(true);
|
287
|
+
},
|
288
|
+
guide(val) {
|
289
|
+
this.showGuide = val;
|
290
|
+
},
|
291
|
+
showGuide(val) {
|
292
|
+
this.$emit("update:guide", val);
|
295
293
|
}
|
296
294
|
},
|
297
295
|
created() {
|
@@ -353,7 +351,7 @@ export default {
|
|
353
351
|
item.options.columns.forEach(e => {
|
354
352
|
initList(e.list);
|
355
353
|
});
|
356
|
-
} else if (item.type === "table" || item.type === "
|
354
|
+
} else if (item.type === "table" || item.type === "list") {
|
357
355
|
initList(item.options.columns);
|
358
356
|
} else if (item.type === "workflow") {
|
359
357
|
initList(item.options.buttons);
|
@@ -497,14 +495,8 @@ export default {
|
|
497
495
|
padding: 0 15px;
|
498
496
|
z-index: 99;
|
499
497
|
}
|
500
|
-
ul {
|
501
|
-
position: relative;
|
502
|
-
overflow: hidden;
|
503
|
-
padding: 5px;
|
504
|
-
margin: 0;
|
505
|
-
}
|
506
498
|
.fields-label {
|
507
|
-
margin:
|
499
|
+
margin: 2px 3px;
|
508
500
|
width: calc(50% - 6px);
|
509
501
|
line-height: 26px;
|
510
502
|
font-size: 12px;
|
@@ -513,9 +505,23 @@ export default {
|
|
513
505
|
overflow: hidden;
|
514
506
|
text-overflow: ellipsis;
|
515
507
|
white-space: nowrap;
|
508
|
+
background: #f4f6fc;
|
516
509
|
border: 1px solid #f4f6fc;
|
517
510
|
box-sizing: border-box;
|
518
511
|
transition: 0.25s;
|
512
|
+
cursor: move;
|
513
|
+
|
514
|
+
i {
|
515
|
+
margin-right: 6px;
|
516
|
+
margin-left: 8px;
|
517
|
+
font-size: 14px;
|
518
|
+
display: inline-block;
|
519
|
+
vertical-align: middle;
|
520
|
+
}
|
521
|
+
span {
|
522
|
+
display: inline-block;
|
523
|
+
vertical-align: middle;
|
524
|
+
}
|
519
525
|
|
520
526
|
&:hover {
|
521
527
|
color: $color-parimary-active !important;
|
@@ -525,32 +531,8 @@ export default {
|
|
525
531
|
color: $color-parimary-active !important;
|
526
532
|
}
|
527
533
|
}
|
528
|
-
|
529
|
-
& > a {
|
530
|
-
color: #333;
|
531
|
-
display: block;
|
532
|
-
cursor: move;
|
533
|
-
background: #f4f6fc;
|
534
|
-
border: 1px solid #f4f6fc;
|
535
|
-
transition: 0.25s;
|
536
|
-
|
537
|
-
.icon {
|
538
|
-
margin-right: 6px;
|
539
|
-
margin-left: 8px;
|
540
|
-
font-size: 14px;
|
541
|
-
display: inline-block;
|
542
|
-
vertical-align: middle;
|
543
|
-
}
|
544
|
-
|
545
|
-
span {
|
546
|
-
display: inline-block;
|
547
|
-
vertical-align: middle;
|
548
|
-
}
|
549
|
-
}
|
550
534
|
}
|
551
535
|
}
|
552
|
-
.formMaking-drawing {
|
553
|
-
}
|
554
536
|
}
|
555
537
|
</style>
|
556
538
|
|
@@ -562,5 +544,9 @@ export default {
|
|
562
544
|
line-height: 40px;
|
563
545
|
background-color: #f5f7f9;
|
564
546
|
}
|
547
|
+
.el-collapse-item__content {
|
548
|
+
padding: 2px 3px;
|
549
|
+
line-height: normal;
|
550
|
+
}
|
565
551
|
}
|
566
552
|
</style>
|
@@ -22,7 +22,14 @@
|
|
22
22
|
ref="configRef"
|
23
23
|
></widget-config>
|
24
24
|
</div>
|
25
|
-
|
25
|
+
|
26
|
+
<th-dialog v-model="showGuide" title="引导配置" :showFooter="false">
|
27
|
+
<widget-guide
|
28
|
+
:config="tableConfig"
|
29
|
+
:apiOptions="apiOptions"
|
30
|
+
@save="showGuide = false"
|
31
|
+
></widget-guide>
|
32
|
+
</th-dialog>
|
26
33
|
</div>
|
27
34
|
</template>
|
28
35
|
|
@@ -79,12 +86,14 @@ export default {
|
|
79
86
|
"generateCode",
|
80
87
|
"generateJson"
|
81
88
|
]
|
82
|
-
}
|
89
|
+
},
|
90
|
+
guide: Boolean
|
83
91
|
},
|
84
92
|
data() {
|
85
93
|
this.baseConfig = deepClone(baseConfig);
|
86
94
|
return {
|
87
|
-
tableConfig: this.baseConfig
|
95
|
+
tableConfig: this.baseConfig,
|
96
|
+
showGuide: this.guide
|
88
97
|
};
|
89
98
|
},
|
90
99
|
watch: {
|
@@ -94,6 +103,12 @@ export default {
|
|
94
103
|
config(val) {
|
95
104
|
this.tableConfig = Object.assign(this.baseConfig, val);
|
96
105
|
this.handleNetworkConfig();
|
106
|
+
},
|
107
|
+
guide(val) {
|
108
|
+
this.showGuide = val;
|
109
|
+
},
|
110
|
+
showGuide(val) {
|
111
|
+
this.$emit("update:guide", val);
|
97
112
|
}
|
98
113
|
},
|
99
114
|
mounted() {
|
@@ -1,26 +1,107 @@
|
|
1
1
|
<template>
|
2
|
-
<div
|
3
|
-
<
|
4
|
-
<
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
2
|
+
<div class="widgetGuide">
|
3
|
+
<el-steps :active="step" finish-status="success" simple>
|
4
|
+
<el-step title="列表配置" icon="el-icon-s-operation" description="">
|
5
|
+
</el-step>
|
6
|
+
<!-- <el-step
|
7
|
+
title="字段配置"
|
8
|
+
icon="el-icon-c-scale-to-original"
|
9
|
+
description=""
|
10
|
+
></el-step> -->
|
11
|
+
<el-step title="按钮配置" icon="el-icon-set-up" description=""></el-step>
|
12
|
+
</el-steps>
|
13
|
+
<div class="content">
|
14
|
+
<el-form :model="config" label-width="80px" size="small">
|
15
|
+
<div v-show="step === 0">
|
16
|
+
<el-form-item size="small">
|
17
|
+
<el-tooltip
|
18
|
+
slot="label"
|
19
|
+
effect="light"
|
20
|
+
content="字段的配置方式"
|
21
|
+
placement="top"
|
22
|
+
>
|
23
|
+
<span style="color: #409EFF;">字段类型</span>
|
24
|
+
</el-tooltip>
|
25
|
+
<el-radio-group v-model="config.table.fields.type">
|
26
|
+
<el-radio-button label="custom" disabled>自定义</el-radio-button>
|
27
|
+
<el-radio-button label="api">接口导入</el-radio-button>
|
28
|
+
</el-radio-group>
|
29
|
+
</el-form-item>
|
30
|
+
<el-form-item>
|
31
|
+
<el-tooltip
|
32
|
+
slot="label"
|
33
|
+
effect="light"
|
34
|
+
content="开启后,选择数据接口会触发 remote-params 回调,用于从服务器查询字段"
|
35
|
+
placement="top"
|
36
|
+
>
|
37
|
+
<span style="color: #409EFF;">远程字段</span>
|
38
|
+
</el-tooltip>
|
39
|
+
<el-switch v-model="config.table.fields.remote"> </el-switch>
|
40
|
+
</el-form-item>
|
41
|
+
<el-form-item>
|
42
|
+
<el-tooltip
|
43
|
+
slot="label"
|
44
|
+
effect="light"
|
45
|
+
content="列表初始化完成后,调用该接口获取列表数据"
|
46
|
+
placement="top"
|
47
|
+
>
|
48
|
+
<span style="color: #409EFF;">列表接口</span>
|
49
|
+
</el-tooltip>
|
50
|
+
<el-select
|
51
|
+
v-model="config.table.mounted.api"
|
52
|
+
style="width:100%"
|
53
|
+
clearable
|
54
|
+
placeholder="请选择"
|
55
|
+
no-data-text="暂无接口,请前往【接口模块】创建"
|
56
|
+
filterable
|
57
|
+
>
|
58
|
+
<el-option
|
59
|
+
v-for="item in apiOptions"
|
60
|
+
:key="item.id"
|
61
|
+
:label="item.name"
|
62
|
+
:value="item.id"
|
63
|
+
>
|
64
|
+
</el-option>
|
65
|
+
</el-select>
|
66
|
+
</el-form-item>
|
67
|
+
<el-form-item label="列表名称">
|
68
|
+
<el-input
|
69
|
+
v-model="config.table.title"
|
70
|
+
placeholder="请输入"
|
71
|
+
></el-input>
|
72
|
+
</el-form-item>
|
73
|
+
</div>
|
74
|
+
<div v-show="step === 1">
|
75
|
+
<el-form-item label="">
|
76
|
+
<div v-for="item in Object.values(config.tools)" :key="item.type">
|
77
|
+
<el-checkbox v-model="item.show" :label="item.name"></el-checkbox>
|
78
|
+
</div>
|
79
|
+
</el-form-item>
|
23
80
|
</div>
|
81
|
+
</el-form>
|
82
|
+
</div>
|
83
|
+
<div class="footer">
|
84
|
+
<div></div>
|
85
|
+
<div class="stepView">
|
86
|
+
<el-button
|
87
|
+
type="primary"
|
88
|
+
icon="el-icon-back"
|
89
|
+
size="small"
|
90
|
+
:disabled="step === 0"
|
91
|
+
@click="handleBack"
|
92
|
+
>上一步</el-button
|
93
|
+
>
|
94
|
+
<el-button
|
95
|
+
v-if="step !== 1"
|
96
|
+
type="primary"
|
97
|
+
size="small"
|
98
|
+
@click="handleNext"
|
99
|
+
>
|
100
|
+
下一步<i class="el-icon-right el-icon--right"></i>
|
101
|
+
</el-button>
|
102
|
+
<el-button v-else type="success" size="small" @click="handleSave">
|
103
|
+
完 成<i class="el-icon-finished el-icon--right"></i>
|
104
|
+
</el-button>
|
24
105
|
</div>
|
25
106
|
</div>
|
26
107
|
</div>
|
@@ -28,19 +109,16 @@
|
|
28
109
|
|
29
110
|
<script>
|
30
111
|
export default {
|
31
|
-
props: {
|
112
|
+
props: { config: Object, apiOptions: Array },
|
32
113
|
data() {
|
33
114
|
return {
|
34
|
-
|
35
|
-
|
115
|
+
step: 0,
|
116
|
+
formData: {}
|
36
117
|
};
|
37
118
|
},
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
},
|
42
|
-
show(val) {
|
43
|
-
this.$emit("update:visible", val);
|
119
|
+
computed: {
|
120
|
+
getFields() {
|
121
|
+
return [];
|
44
122
|
}
|
45
123
|
},
|
46
124
|
created() {},
|
@@ -51,6 +129,9 @@ export default {
|
|
51
129
|
},
|
52
130
|
handleNext() {
|
53
131
|
this.step++;
|
132
|
+
},
|
133
|
+
handleSave() {
|
134
|
+
this.$emit("save");
|
54
135
|
}
|
55
136
|
}
|
56
137
|
};
|
@@ -58,38 +139,21 @@ export default {
|
|
58
139
|
|
59
140
|
<style lang="scss" scoped>
|
60
141
|
.widgetGuide {
|
61
|
-
position: absolute;
|
62
142
|
width: 100%;
|
63
143
|
height: 100%;
|
64
|
-
display: flex;
|
65
|
-
align-items: center;
|
66
|
-
justify-content: center;
|
67
|
-
background-color: rgba($color: #000000, $alpha: 0.6);
|
68
|
-
z-index: 999;
|
69
144
|
|
70
|
-
.
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
.content {
|
81
|
-
height: calc(100% - 100px);
|
82
|
-
}
|
83
|
-
.footer {
|
84
|
-
padding: 10px 20px;
|
85
|
-
height: 50px;
|
86
|
-
display: flex;
|
87
|
-
align-items: center;
|
88
|
-
justify-content: space-between;
|
89
|
-
box-sizing: border-box;
|
145
|
+
.content {
|
146
|
+
height: calc(100% - 96px);
|
147
|
+
padding-top: 10px;
|
148
|
+
}
|
149
|
+
.footer {
|
150
|
+
height: 50px;
|
151
|
+
display: flex;
|
152
|
+
align-items: center;
|
153
|
+
justify-content: space-between;
|
154
|
+
box-sizing: border-box;
|
90
155
|
|
91
|
-
|
92
|
-
}
|
156
|
+
.stepView {
|
93
157
|
}
|
94
158
|
}
|
95
159
|
}
|
@@ -1,98 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div class="component-config">
|
3
|
-
<el-collapse-item title="组件配置" name="group-element">
|
4
|
-
<el-form-item label="标题">
|
5
|
-
<el-input v-model="widget.name"></el-input>
|
6
|
-
</el-form-item>
|
7
|
-
|
8
|
-
<el-form-item label="标签宽度">
|
9
|
-
<div style="display: flex;">
|
10
|
-
<el-checkbox v-model="widget.options.isLabelWidth"
|
11
|
-
>自定义</el-checkbox
|
12
|
-
>
|
13
|
-
<el-input-number
|
14
|
-
v-model="widget.options.labelWidth"
|
15
|
-
:min="0"
|
16
|
-
:max="200"
|
17
|
-
:disabled="!widget.options.isLabelWidth"
|
18
|
-
>
|
19
|
-
</el-input-number>
|
20
|
-
</div>
|
21
|
-
</el-form-item>
|
22
|
-
|
23
|
-
<el-form-item>
|
24
|
-
<div class="config-header" slot="label">
|
25
|
-
<span class="title">默认值</span>
|
26
|
-
<span class="value" @click="handleAddData">添加数据</span>
|
27
|
-
</div>
|
28
|
-
<code-editor
|
29
|
-
v-model="widget.options.defaultValue"
|
30
|
-
language="json"
|
31
|
-
></code-editor>
|
32
|
-
</el-form-item>
|
33
|
-
|
34
|
-
<el-form-item label="新增按钮文本内容">
|
35
|
-
<el-input v-model.number="widget.options.addButtonText"></el-input>
|
36
|
-
</el-form-item>
|
37
|
-
|
38
|
-
<el-form-item label="删除按钮文本内容">
|
39
|
-
<el-input v-model.number="widget.options.deleteButtonText"></el-input>
|
40
|
-
</el-form-item>
|
41
|
-
|
42
|
-
<el-form-item label="可删除的最小索引">
|
43
|
-
<el-input-number v-model="widget.options.deleteIndex" :min="0">
|
44
|
-
</el-input-number>
|
45
|
-
</el-form-item>
|
46
|
-
|
47
|
-
<el-form-item label="操作属性">
|
48
|
-
<el-checkbox v-model="widget.options.disabled">禁用 </el-checkbox>
|
49
|
-
<el-checkbox v-model="widget.options.hidden">隐藏组件 </el-checkbox>
|
50
|
-
<el-checkbox v-model="widget.options.hideLabel">隐藏标签 </el-checkbox>
|
51
|
-
<el-checkbox v-model="widget.options.isAdd">可新增 </el-checkbox>
|
52
|
-
<el-checkbox v-model="widget.options.isDelete">可删除 </el-checkbox>
|
53
|
-
</el-form-item>
|
54
|
-
|
55
|
-
<el-form-item label="校验">
|
56
|
-
<el-checkbox v-model="widget.options.required">必填</el-checkbox>
|
57
|
-
</el-form-item>
|
58
|
-
</el-collapse-item>
|
59
|
-
</div>
|
60
|
-
</template>
|
61
|
-
|
62
|
-
<script>
|
63
|
-
import Draggable from "vuedraggable";
|
64
|
-
import { configComponent } from "../mixins";
|
65
|
-
import CodeEditor from "ui/CodeEditor/index.vue";
|
66
|
-
export default {
|
67
|
-
components: {
|
68
|
-
Draggable,
|
69
|
-
CodeEditor
|
70
|
-
},
|
71
|
-
props: {},
|
72
|
-
mixins: [configComponent],
|
73
|
-
mounted() {},
|
74
|
-
methods: {
|
75
|
-
handleAddData() {
|
76
|
-
let defaultValue = JSON.parse(this.widget.options.defaultValue || "[]");
|
77
|
-
let dic = {};
|
78
|
-
this.widget.list.forEach(item => {
|
79
|
-
if (item.type === "grid") {
|
80
|
-
for (let i = 0; i < item.options.columns.length; i++) {
|
81
|
-
const element = item.options.columns[i];
|
82
|
-
for (let j = 0; j < element.list.length; j++) {
|
83
|
-
const element2 = element.list[j];
|
84
|
-
dic[element2.model] = element2.options.defaultValue;
|
85
|
-
}
|
86
|
-
}
|
87
|
-
} else {
|
88
|
-
dic[item.model] = item.options.defaultValue;
|
89
|
-
}
|
90
|
-
});
|
91
|
-
defaultValue.push(dic);
|
92
|
-
this.widget.options.defaultValue = JSON.stringify(defaultValue, null, 2);
|
93
|
-
}
|
94
|
-
}
|
95
|
-
};
|
96
|
-
</script>
|
97
|
-
|
98
|
-
<style></style>
|