tianheng-ui 0.1.38 → 0.1.40
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/feature.scss +2 -4
- package/lib/theme-chalk/styles/variable.scss +2 -0
- package/lib/tianheng-ui.js +5 -5
- package/package.json +1 -1
- package/packages/Dialog/index.vue +1 -4
- package/packages/FormMaking/GenerateForm.vue +1 -1
- package/packages/FormMaking/WidgetConfig.vue +29 -34
- package/packages/FormMaking/WidgetForm.vue +15 -0
- package/packages/FormMaking/WidgetTools.vue +2 -3
- package/packages/FormMaking/custom/items/upload.vue +1 -1
- package/packages/FormMaking/index.vue +2 -0
- package/packages/FormMaking/styles/index.scss +1 -242
- package/packages/TableMaking/WidgetTools.vue +3 -3
- package/packages/TableMaking/custom/items/search/index-h5.vue +13 -2
- package/packages/TableMaking/custom/items/search/index-pc.vue +12 -1
- package/packages/TableMaking/custom/items/table/index-pc.vue +13 -1
- package/packages/TableMaking/generateTable.vue +1 -1
- package/packages/TableMaking/widgetConfig.vue +130 -55
- package/packages/TableMaking/widgetTable.vue +4 -2
- package/packages/FormMaking/FormConfig.vue +0 -190
@@ -12,40 +12,43 @@
|
|
12
12
|
</div>
|
13
13
|
</div>
|
14
14
|
<div v-if="activeTab.value === 'field'" class="configItem fieldsView">
|
15
|
-
<
|
16
|
-
<el-collapse-
|
17
|
-
<el-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
<el-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
15
|
+
<template v-if="fields.length">
|
16
|
+
<el-collapse v-model="collapseValue">
|
17
|
+
<el-collapse-item title="查询字段" name="group-fields_search">
|
18
|
+
<el-checkbox
|
19
|
+
v-model="searchField.isCheckAll"
|
20
|
+
:indeterminate="searchField.isIndeterminate"
|
21
|
+
@change="val => handleCheckAllChange(val, 'searchField')"
|
22
|
+
>全选</el-checkbox
|
23
|
+
>
|
24
|
+
<el-checkbox
|
25
|
+
v-for="item in fields"
|
26
|
+
:label="item.prop"
|
27
|
+
:key="`searchField-${item.prop}-${item.isSearch}`"
|
28
|
+
:checked="item.isSearch"
|
29
|
+
@change="val => handleCheckboxChange(val, 'searchField', item)"
|
30
|
+
>{{ item.label }}</el-checkbox
|
31
|
+
>
|
32
|
+
</el-collapse-item>
|
33
|
+
<el-collapse-item title="列表字段" name="group-fields_table">
|
34
|
+
<el-checkbox
|
35
|
+
v-model="tableField.isCheckAll"
|
36
|
+
:indeterminate="tableField.isIndeterminate"
|
37
|
+
@change="val => handleCheckAllChange(val, 'tableField')"
|
38
|
+
>全选</el-checkbox
|
39
|
+
>
|
40
|
+
<el-checkbox
|
41
|
+
v-for="item in fields"
|
42
|
+
:label="item.prop"
|
43
|
+
:key="`tableField-${item.prop}-${item.isTable}`"
|
44
|
+
:checked="item.isTable"
|
45
|
+
@change="val => handleCheckboxChange(val, 'tableField', item)"
|
46
|
+
>{{ item.label }}</el-checkbox
|
47
|
+
>
|
48
|
+
</el-collapse-item>
|
49
|
+
</el-collapse>
|
50
|
+
</template>
|
51
|
+
<th-empty v-else description="请选择列表接口"></th-empty>
|
49
52
|
</div>
|
50
53
|
<div v-if="activeTab.value === 'table' && config.table" class="configItem">
|
51
54
|
<el-form
|
@@ -112,7 +115,7 @@
|
|
112
115
|
<el-switch v-model="config.search.show"> </el-switch>
|
113
116
|
</el-form-item>
|
114
117
|
</el-collapse-item>
|
115
|
-
<el-collapse-item title="排序配置" name="group-
|
118
|
+
<el-collapse-item title="排序配置" name="group-table_sort">
|
116
119
|
<el-form-item label="排序类型">
|
117
120
|
<el-radio-group v-model="config.table.sort.type">
|
118
121
|
<el-radio-button label="1">降序</el-radio-button>
|
@@ -135,7 +138,7 @@
|
|
135
138
|
</el-select>
|
136
139
|
</el-form-item>
|
137
140
|
</el-collapse-item>
|
138
|
-
<el-collapse-item title="分页配置" name="group-
|
141
|
+
<el-collapse-item title="分页配置" name="group-table_pageInfo">
|
139
142
|
<el-form-item label="开启分页">
|
140
143
|
<el-switch v-model="config.table.pageInfo.show"> </el-switch>
|
141
144
|
</el-form-item>
|
@@ -207,7 +210,7 @@
|
|
207
210
|
</el-form-item>
|
208
211
|
</template>
|
209
212
|
</el-collapse-item>
|
210
|
-
<el-collapse-item title="提示语配置" name="group-
|
213
|
+
<el-collapse-item title="提示语配置" name="group-table_hint">
|
211
214
|
<el-form-item label="空数据">
|
212
215
|
<el-input
|
213
216
|
v-model="config.table.empty.text"
|
@@ -221,9 +224,9 @@
|
|
221
224
|
></el-input>
|
222
225
|
</el-form-item>
|
223
226
|
</el-collapse-item>
|
224
|
-
<!-- <el-collapse-item title="数据接口配置" name="group-
|
227
|
+
<!-- <el-collapse-item title="数据接口配置" name="group-table_network">
|
225
228
|
</el-collapse-item> -->
|
226
|
-
<el-collapse-item name="group-
|
229
|
+
<el-collapse-item name="group-table_button">
|
227
230
|
<template slot="title">
|
228
231
|
<div class="collapse-title">
|
229
232
|
<div>按钮配置</div>
|
@@ -475,17 +478,39 @@
|
|
475
478
|
:modal-append-to-body="false"
|
476
479
|
:showFooter="false"
|
477
480
|
>
|
478
|
-
<div class="
|
479
|
-
<
|
480
|
-
<
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
481
|
+
<div class="eventsSetting th-flex_box th-is_border">
|
482
|
+
<div class="list th-flex_aside">
|
483
|
+
<div class="events-header th-sticky_top">
|
484
|
+
<div>按钮库</div>
|
485
|
+
<!-- <el-button type="text" icon="el-icon-plus" size="mini" disabled
|
486
|
+
>添加</el-button
|
487
|
+
> -->
|
488
|
+
</div>
|
489
|
+
<div
|
490
|
+
v-for="(item, index) in Object.values(config.tools || [])"
|
491
|
+
class="list-item th-is_hover"
|
492
|
+
:class="{
|
493
|
+
'th-is_active': dialog.data && dialog.data.name === item.name
|
494
|
+
}"
|
495
|
+
:key="item.key"
|
496
|
+
@click="dialog.data = item"
|
497
|
+
>
|
498
|
+
<div class="list-item-value">{{ item.name }}</div>
|
499
|
+
<!-- <el-popconfirm
|
500
|
+
:title="`是否确定删除方法 ${item.name}`"
|
501
|
+
confirm-button-text="删除"
|
502
|
+
confirm-button-type="danger"
|
503
|
+
@confirm="handleEventDialogDelete(item, index)"
|
504
|
+
>
|
505
|
+
<i class="el-icon-delete" slot="reference"></i>
|
506
|
+
</el-popconfirm> -->
|
507
|
+
</div>
|
508
|
+
</div>
|
509
|
+
<div class="detail th-fiex_content">
|
510
|
+
<div class="events-header th-sticky_top">按钮详情</div>
|
488
511
|
<el-form
|
512
|
+
v-if="dialog.data"
|
513
|
+
class="detail-form"
|
489
514
|
ref="form"
|
490
515
|
:model="dialog.data"
|
491
516
|
label-width="80px"
|
@@ -587,7 +612,7 @@
|
|
587
612
|
</el-select>
|
588
613
|
</el-form-item>
|
589
614
|
</el-form>
|
590
|
-
</
|
615
|
+
</div>
|
591
616
|
</div>
|
592
617
|
</th-dialog>
|
593
618
|
</div>
|
@@ -626,12 +651,14 @@ export default {
|
|
626
651
|
isIndeterminate: false
|
627
652
|
},
|
628
653
|
collapseValue: [
|
654
|
+
"group-fields_search",
|
655
|
+
"group-fields_table",
|
629
656
|
"group-table",
|
630
|
-
"group-
|
631
|
-
"group-
|
632
|
-
"group-
|
633
|
-
"group-
|
634
|
-
"group-
|
657
|
+
"group-table_pageInfo",
|
658
|
+
"group-table_sort",
|
659
|
+
"group-table_hint",
|
660
|
+
"group-table_network",
|
661
|
+
"group-table_button"
|
635
662
|
],
|
636
663
|
pageInfoLayout: [
|
637
664
|
{ label: "总条数", value: "total" },
|
@@ -865,6 +892,54 @@ export default {
|
|
865
892
|
}
|
866
893
|
}
|
867
894
|
}
|
895
|
+
|
896
|
+
.eventsSetting {
|
897
|
+
height: 100%;
|
898
|
+
|
899
|
+
.events-header {
|
900
|
+
display: flex;
|
901
|
+
align-items: center;
|
902
|
+
justify-content: space-between;
|
903
|
+
padding: 0 10px;
|
904
|
+
height: 40px;
|
905
|
+
background-color: #f2f6fc;
|
906
|
+
z-index: 10;
|
907
|
+
}
|
908
|
+
|
909
|
+
.list {
|
910
|
+
width: 200px;
|
911
|
+
min-height: 430px;
|
912
|
+
overflow-y: overlay;
|
913
|
+
border-right: 1px solid #eee;
|
914
|
+
|
915
|
+
.list-item {
|
916
|
+
display: flex;
|
917
|
+
// align-items: center;
|
918
|
+
margin: 5px;
|
919
|
+
padding: 10px;
|
920
|
+
border-radius: 3px;
|
921
|
+
border: 1px solid #dcdfe6;
|
922
|
+
transition: 0.25s;
|
923
|
+
|
924
|
+
.list-item-title {
|
925
|
+
color: var(--th-green);
|
926
|
+
}
|
927
|
+
.list-item-value {
|
928
|
+
flex: 1;
|
929
|
+
padding: 0 5px;
|
930
|
+
}
|
931
|
+
i {
|
932
|
+
cursor: pointer;
|
933
|
+
}
|
934
|
+
}
|
935
|
+
}
|
936
|
+
|
937
|
+
.detail {
|
938
|
+
.detail-form {
|
939
|
+
padding: 10px;
|
940
|
+
}
|
941
|
+
}
|
942
|
+
}
|
868
943
|
}
|
869
944
|
</style>
|
870
945
|
|
@@ -79,7 +79,7 @@
|
|
79
79
|
<div v-else class="search-content"></div>
|
80
80
|
</div>
|
81
81
|
<div class="table-title">列表字段</div>
|
82
|
-
<div class="tableList" style="height: calc(100% -
|
82
|
+
<div class="tableList" style="height: calc(100% - 350px);">
|
83
83
|
<div class="table-item table-header">
|
84
84
|
<div class="table-item-custom">拖动</div>
|
85
85
|
<div>列名</div>
|
@@ -219,9 +219,11 @@ export default {
|
|
219
219
|
|
220
220
|
<style lang="scss" scoped>
|
221
221
|
.widgetTable {
|
222
|
-
height: 100
|
222
|
+
height: calc(100% - 45px);
|
223
223
|
padding: 10px;
|
224
224
|
background-color: white;
|
225
|
+
overflow-y: overlay;
|
226
|
+
|
225
227
|
.table-title {
|
226
228
|
height: 25px;
|
227
229
|
line-height: 25px;
|
@@ -1,190 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div class="form-config">
|
3
|
-
<el-form
|
4
|
-
:model="config"
|
5
|
-
label-position="left"
|
6
|
-
label-width="80px"
|
7
|
-
size="small"
|
8
|
-
:rules="formRules"
|
9
|
-
ref="formRef"
|
10
|
-
>
|
11
|
-
<el-collapse v-model="collapseValue">
|
12
|
-
<el-collapse-item title="表单配置" name="group-form">
|
13
|
-
<el-form-item prop="fieldsType" required>
|
14
|
-
<el-tooltip
|
15
|
-
slot="label"
|
16
|
-
effect="light"
|
17
|
-
content="字段的配置方式"
|
18
|
-
placement="top"
|
19
|
-
>
|
20
|
-
<span style="color: #409EFF;">字段类型</span>
|
21
|
-
</el-tooltip>
|
22
|
-
<el-radio-group v-model="config.fieldsType">
|
23
|
-
<el-radio-button label="custom">自定义</el-radio-button>
|
24
|
-
<el-radio-button label="fieldsApi">接口导入</el-radio-button>
|
25
|
-
</el-radio-group>
|
26
|
-
</el-form-item>
|
27
|
-
<el-form-item
|
28
|
-
v-if="config.fieldsType === 'fieldsApi'"
|
29
|
-
prop="fieldsApi"
|
30
|
-
required
|
31
|
-
>
|
32
|
-
<el-tooltip
|
33
|
-
slot="label"
|
34
|
-
effect="light"
|
35
|
-
content="使用接口的出参配置可选字段"
|
36
|
-
placement="top"
|
37
|
-
>
|
38
|
-
<span style="color: #409EFF;">字段接口</span>
|
39
|
-
</el-tooltip>
|
40
|
-
<el-select
|
41
|
-
v-model="config.fieldsApi"
|
42
|
-
style="width:100%"
|
43
|
-
clearable
|
44
|
-
placeholder="请选择"
|
45
|
-
no-data-text="暂无接口,请前往【数据源模块】创建"
|
46
|
-
@change="handleFieldsApiChange"
|
47
|
-
>
|
48
|
-
<el-option
|
49
|
-
v-for="item in Object.values(apiConfig)"
|
50
|
-
:key="item.id"
|
51
|
-
:label="item.label"
|
52
|
-
:value="item.id"
|
53
|
-
>
|
54
|
-
</el-option>
|
55
|
-
</el-select>
|
56
|
-
</el-form-item>
|
57
|
-
<el-form-item label="表单标题" prop="title" required>
|
58
|
-
<el-input
|
59
|
-
v-model="config.title"
|
60
|
-
placeholder="请输入"
|
61
|
-
clearable
|
62
|
-
></el-input>
|
63
|
-
</el-form-item>
|
64
|
-
<el-form-item label="表单宽度">
|
65
|
-
<el-input v-model="config.width"></el-input>
|
66
|
-
</el-form-item>
|
67
|
-
<el-form-item label="组件库">
|
68
|
-
<el-radio-group v-model="config.ui">
|
69
|
-
<el-radio-button label="element">Element</el-radio-button>
|
70
|
-
<el-radio-button label="vant" disabled>Vant</el-radio-button>
|
71
|
-
</el-radio-group>
|
72
|
-
</el-form-item>
|
73
|
-
<el-form-item label="组件尺寸">
|
74
|
-
<el-radio-group v-model="config.size">
|
75
|
-
<el-radio-button label="medium">medium</el-radio-button>
|
76
|
-
<el-radio-button label="small">small</el-radio-button>
|
77
|
-
<el-radio-button label="mini">mini</el-radio-button>
|
78
|
-
</el-radio-group>
|
79
|
-
</el-form-item>
|
80
|
-
</el-collapse-item>
|
81
|
-
|
82
|
-
<el-collapse-item title="数据配置" name="group-resultData">
|
83
|
-
<el-form-item>
|
84
|
-
<el-tooltip
|
85
|
-
slot="label"
|
86
|
-
effect="light"
|
87
|
-
content="一般用于编辑和详情的数据回显"
|
88
|
-
placement="top"
|
89
|
-
>
|
90
|
-
<span style="color: #409EFF;">数据回填</span>
|
91
|
-
</el-tooltip>
|
92
|
-
<el-select
|
93
|
-
v-model="config.mounted.api"
|
94
|
-
value-key="id"
|
95
|
-
clearable
|
96
|
-
placeholder="请选择数据方法"
|
97
|
-
no-data-text="暂无接口,请前往【接口模块】创建"
|
98
|
-
>
|
99
|
-
<el-option
|
100
|
-
v-for="item in Object.values(apiConfig)"
|
101
|
-
:key="item.id"
|
102
|
-
:label="item.label"
|
103
|
-
:value="item.id"
|
104
|
-
>
|
105
|
-
</el-option>
|
106
|
-
</el-select>
|
107
|
-
</el-form-item>
|
108
|
-
</el-collapse-item>
|
109
|
-
<el-collapse-item title="标签配置" name="group-label">
|
110
|
-
<el-form-item label="标签宽度">
|
111
|
-
<el-input-number
|
112
|
-
v-model="config.labelWidth"
|
113
|
-
:min="0"
|
114
|
-
:step="5"
|
115
|
-
></el-input-number>
|
116
|
-
</el-form-item>
|
117
|
-
<el-form-item label="对齐方式">
|
118
|
-
<el-radio-group v-model="config.labelPosition">
|
119
|
-
<el-radio-button label="left">左对齐</el-radio-button>
|
120
|
-
<el-radio-button label="right">右对齐</el-radio-button>
|
121
|
-
<el-radio-button label="top">顶部对齐</el-radio-button>
|
122
|
-
</el-radio-group>
|
123
|
-
</el-form-item>
|
124
|
-
</el-collapse-item>
|
125
|
-
<el-collapse-item title="属性配置" name="group-attributes">
|
126
|
-
<el-form-item label-width="0">
|
127
|
-
<el-checkbox v-model="config.disabled">禁用 </el-checkbox>
|
128
|
-
<el-checkbox v-model="config.hideLabel">隐藏标签 </el-checkbox>
|
129
|
-
</el-form-item>
|
130
|
-
</el-collapse-item>
|
131
|
-
</el-collapse>
|
132
|
-
</el-form>
|
133
|
-
</div>
|
134
|
-
</template>
|
135
|
-
|
136
|
-
<script>
|
137
|
-
export default {
|
138
|
-
props: ["config", "apiConfig"],
|
139
|
-
data() {
|
140
|
-
return {
|
141
|
-
collapseValue: [
|
142
|
-
"group-form",
|
143
|
-
"group-resultData",
|
144
|
-
"group-label",
|
145
|
-
"group-attributes"
|
146
|
-
],
|
147
|
-
formRules: {
|
148
|
-
fieldsType: [
|
149
|
-
{ required: true, message: "请选择字段类型", trigger: "change" }
|
150
|
-
],
|
151
|
-
fieldsApi: [
|
152
|
-
{ required: true, message: "请选择字段类型", trigger: "change" }
|
153
|
-
],
|
154
|
-
title: [
|
155
|
-
{ required: true, message: "请选择字段类型", trigger: "change" }
|
156
|
-
]
|
157
|
-
}
|
158
|
-
};
|
159
|
-
},
|
160
|
-
methods: {
|
161
|
-
handleFieldsApiChange() {
|
162
|
-
this.$emit("fieldsChange");
|
163
|
-
},
|
164
|
-
formValidate() {
|
165
|
-
return new Promise((resolve, reject) => {
|
166
|
-
this.$refs.formRef.validate(valid => {
|
167
|
-
resolve(valid);
|
168
|
-
});
|
169
|
-
});
|
170
|
-
}
|
171
|
-
}
|
172
|
-
};
|
173
|
-
</script>
|
174
|
-
|
175
|
-
<style lang="scss">
|
176
|
-
.form-config {
|
177
|
-
.el-collapse-item__header {
|
178
|
-
padding: 0 10px;
|
179
|
-
height: 40px;
|
180
|
-
line-height: 40px;
|
181
|
-
background-color: #f5f7f9;
|
182
|
-
}
|
183
|
-
.el-collapse-item__wrap {
|
184
|
-
padding: 10px;
|
185
|
-
}
|
186
|
-
.el-radio-button__inner {
|
187
|
-
padding: 7px !important;
|
188
|
-
}
|
189
|
-
}
|
190
|
-
</style>
|