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
@@ -55,77 +55,65 @@
|
|
55
55
|
</el-form-item>
|
56
56
|
|
57
57
|
<el-form-item label-width="0">
|
58
|
-
<div v-if="widget.options.remote">
|
58
|
+
<div v-if="widget.options.remote.open">
|
59
59
|
<el-select
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
>
|
67
|
-
<el-option
|
68
|
-
v-for="item in apiOptions"
|
69
|
-
:key="item.id"
|
70
|
-
:label="item.name"
|
71
|
-
:value="item.id"
|
60
|
+
style="width:100%;margin-bottom:5px;"
|
61
|
+
v-model="widget.options.remote.api"
|
62
|
+
placeholder="请选择"
|
63
|
+
no-data-text="暂无数据,请查阅相关文档说明"
|
64
|
+
clearable
|
65
|
+
filterable
|
72
66
|
>
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
</
|
67
|
+
<el-option
|
68
|
+
v-for="item in apiOptions"
|
69
|
+
:key="item.id"
|
70
|
+
:label="item.name"
|
71
|
+
:value="item.id"
|
72
|
+
>
|
73
|
+
</el-option>
|
74
|
+
</el-select>
|
75
|
+
<el-input
|
76
|
+
style="margin-bottom:5px;"
|
77
|
+
v-model="widget.options.remote.props.value"
|
78
|
+
>
|
79
|
+
<div slot="prepend">内容</div>
|
80
|
+
</el-input>
|
81
|
+
<el-input v-model="widget.options.remote.props.label">
|
82
|
+
<div slot="prepend">标签</div>
|
80
83
|
</el-input>
|
81
|
-
<el-input size="mini" style="" v-model="widget.options.props.label">
|
82
|
-
<template slot="prepend">
|
83
|
-
<div style="width:30px;">标签</div>
|
84
|
-
</template>
|
85
|
-
</el-input> -->
|
86
84
|
</div>
|
87
85
|
<template v-else>
|
88
86
|
<el-radio-group v-model="widget.options.defaultValue">
|
89
87
|
<draggable
|
90
|
-
tag="ul"
|
91
88
|
:list="widget.options.columns"
|
92
89
|
v-bind="{
|
93
|
-
group: { name: '
|
90
|
+
group: { name: 'options' },
|
94
91
|
ghostClass: 'ghost',
|
95
|
-
handle: '.drag
|
92
|
+
handle: '.drag'
|
96
93
|
}"
|
97
|
-
handle=".drag
|
94
|
+
handle=".drag"
|
98
95
|
>
|
99
|
-
<
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
<el-input
|
108
|
-
|
109
|
-
|
110
|
-
size="mini"
|
111
|
-
placeholder="label"
|
112
|
-
></el-input>
|
113
|
-
</el-radio>
|
114
|
-
<i
|
115
|
-
class="drag-item"
|
116
|
-
style="font-size: 16px;margin: 0 5px;cursor: move;"
|
117
|
-
><i class="iconfont icon-icon_bars"></i
|
118
|
-
></i>
|
96
|
+
<div
|
97
|
+
v-for="(item, index) in widget.options.columns"
|
98
|
+
class="draggable-item"
|
99
|
+
:key="index"
|
100
|
+
>
|
101
|
+
<i class="drag"><i class="iconfont icon-icon_bars"></i></i>
|
102
|
+
<el-radio :label="item.value"> <span></span> </el-radio>
|
103
|
+
<div class="content">
|
104
|
+
<el-input v-model="item.value"></el-input>
|
105
|
+
<el-input v-model="item.label"></el-input>
|
106
|
+
</div>
|
119
107
|
<el-button
|
120
|
-
|
121
|
-
circle
|
122
|
-
plain
|
108
|
+
class="delete"
|
123
109
|
type="danger"
|
124
110
|
size="mini"
|
125
111
|
icon="el-icon-minus"
|
126
|
-
|
112
|
+
circle
|
113
|
+
plain
|
114
|
+
@click="handleOptionsRemove(index)"
|
127
115
|
></el-button>
|
128
|
-
</
|
116
|
+
</div>
|
129
117
|
</draggable>
|
130
118
|
</el-radio-group>
|
131
119
|
|
@@ -168,4 +156,30 @@ export default {
|
|
168
156
|
};
|
169
157
|
</script>
|
170
158
|
|
171
|
-
<style
|
159
|
+
<style lang="scss" scoped>
|
160
|
+
.draggable-item {
|
161
|
+
margin-bottom: 5px;
|
162
|
+
display: flex;
|
163
|
+
align-items: center;
|
164
|
+
.el-radio {
|
165
|
+
margin-right: 0;
|
166
|
+
padding-left: 10px;
|
167
|
+
}
|
168
|
+
|
169
|
+
.content {
|
170
|
+
flex: 1;
|
171
|
+
display: flex;
|
172
|
+
margin-right: 5px;
|
173
|
+
> div {
|
174
|
+
margin: 0 2px;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
.drag {
|
178
|
+
font-size: 16px;
|
179
|
+
cursor: move;
|
180
|
+
}
|
181
|
+
.delete {
|
182
|
+
padding: 4px;
|
183
|
+
}
|
184
|
+
}
|
185
|
+
</style>
|
@@ -20,7 +20,7 @@ const basicComponents = [
|
|
20
20
|
"editor",
|
21
21
|
"cascader"
|
22
22
|
];
|
23
|
-
const advanceComponents = ["table", "
|
23
|
+
const advanceComponents = ["table", "list", "tabs"];
|
24
24
|
const layoutComponents = ["grid", "alliance", "filler", "divider"];
|
25
25
|
const businessComponents = ["blank", "descriptions"];
|
26
26
|
|
@@ -12,13 +12,13 @@
|
|
12
12
|
>
|
13
13
|
<draggable
|
14
14
|
v-model="column.list"
|
15
|
-
:no-transition-on-drag="true"
|
16
15
|
v-bind="{
|
17
16
|
group: 'people',
|
18
17
|
ghostClass: 'draggable-ghost',
|
19
18
|
animation: 200,
|
20
19
|
handle: '.drag-widget'
|
21
20
|
}"
|
21
|
+
:no-transition-on-drag="true"
|
22
22
|
@add="handleWidgetAdd($event, widget, columnIndex)"
|
23
23
|
>
|
24
24
|
<transition-group name="fade" tag="div" class="draggable-list">
|
@@ -50,18 +50,15 @@ export default {
|
|
50
50
|
mixins: [itemsComponent, eventMixin],
|
51
51
|
data() {
|
52
52
|
return {
|
53
|
-
selectWidget:
|
53
|
+
selectWidget: this.select
|
54
54
|
};
|
55
55
|
},
|
56
56
|
watch: {
|
57
57
|
select(val) {
|
58
58
|
this.selectWidget = val;
|
59
59
|
},
|
60
|
-
selectWidget
|
61
|
-
|
62
|
-
this.$emit("update:select", val);
|
63
|
-
},
|
64
|
-
deep: true
|
60
|
+
selectWidget(val) {
|
61
|
+
this.$emit("update:select", val);
|
65
62
|
}
|
66
63
|
},
|
67
64
|
methods: {
|
@@ -74,7 +71,7 @@ export default {
|
|
74
71
|
);
|
75
72
|
|
76
73
|
// 防止布局元素的嵌套拖拽
|
77
|
-
if (item.className.indexOf("
|
74
|
+
if (item.className.indexOf("grid") >= 0) {
|
78
75
|
// 如果是列表中拖拽的元素需要还原到原来位置
|
79
76
|
item.tagName === "DIV" &&
|
80
77
|
this.widgetArray.splice(oldIndex, 0, newComponent);
|
@@ -2,34 +2,30 @@
|
|
2
2
|
<div class="component-list">
|
3
3
|
<draggable
|
4
4
|
v-model="widget.options.columns"
|
5
|
-
:no-transition-on-drag="true"
|
6
5
|
v-bind="{
|
7
6
|
group: 'people',
|
8
7
|
ghostClass: 'draggable-ghost',
|
9
8
|
animation: 200,
|
10
9
|
handle: '.drag-widget'
|
11
10
|
}"
|
11
|
+
:no-transition-on-drag="true"
|
12
12
|
@add="handleWidgetAdd($event)"
|
13
13
|
>
|
14
14
|
<transition-group name="fade" tag="div" class="draggable-list">
|
15
|
-
<
|
15
|
+
<widget-form-item
|
16
16
|
v-for="(element, elementIndex) in widget.options.columns.filter(
|
17
17
|
item => {
|
18
18
|
return item.key;
|
19
19
|
}
|
20
20
|
)"
|
21
21
|
:key="element.key"
|
22
|
-
|
22
|
+
:widget="element"
|
23
|
+
:widgetArray="widget.options.columns"
|
24
|
+
:widgetIndex="elementIndex"
|
25
|
+
:select.sync="selectWidget"
|
26
|
+
:config="config"
|
23
27
|
>
|
24
|
-
|
25
|
-
:widget="element"
|
26
|
-
:widgetArray="widget.options.columns"
|
27
|
-
:widgetIndex="elementIndex"
|
28
|
-
:select.sync="selectWidget"
|
29
|
-
:config="config"
|
30
|
-
>
|
31
|
-
</widget-form-item>
|
32
|
-
</div>
|
28
|
+
</widget-form-item>
|
33
29
|
</transition-group>
|
34
30
|
</draggable>
|
35
31
|
<div v-if="widget.options.isDelete" class="tools">
|
@@ -52,35 +48,34 @@ export default {
|
|
52
48
|
mixins: [itemsComponent, eventMixin],
|
53
49
|
data() {
|
54
50
|
return {
|
55
|
-
selectWidget:
|
51
|
+
selectWidget: this.select
|
56
52
|
};
|
57
53
|
},
|
58
54
|
watch: {
|
59
55
|
select(val) {
|
60
56
|
this.selectWidget = val;
|
61
57
|
},
|
62
|
-
selectWidget
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
58
|
+
selectWidget(val) {
|
59
|
+
this.$emit("update:select", val);
|
60
|
+
},
|
61
|
+
// 子组建变动后重置初始值
|
62
|
+
"widget.options.columns.length"(val) {
|
63
|
+
this.widget.options.defaultValue = [];
|
67
64
|
}
|
68
65
|
},
|
69
66
|
methods: {
|
70
67
|
handleWidgetAdd($event) {
|
71
|
-
console.log("handleWidgetAdd =>", $event);
|
72
68
|
const newIndex = $event.newIndex;
|
73
69
|
const oldIndex = $event.oldIndex;
|
74
70
|
const newComponent = JSON.parse(
|
75
71
|
JSON.stringify(this.widget.options.columns[newIndex])
|
76
72
|
);
|
77
|
-
|
73
|
+
|
78
74
|
// 防止布局元素的嵌套拖拽
|
79
|
-
if (item.className.indexOf("no-put") >= 0) {
|
75
|
+
if ($event.item.className.indexOf("no-put") >= 0) {
|
80
76
|
// 如果是列表中拖拽的元素需要还原到原来位置
|
81
|
-
item.tagName === "DIV" &&
|
77
|
+
$event.item.tagName === "DIV" &&
|
82
78
|
this.widgetArray.splice(oldIndex, 0, newComponent);
|
83
|
-
|
84
79
|
this.widget.options.columns.splice(newIndex, 1);
|
85
80
|
return false;
|
86
81
|
}
|
@@ -92,6 +87,7 @@ export default {
|
|
92
87
|
newComponent.model = `${newComponent.type}_${key}`;
|
93
88
|
}
|
94
89
|
this.$set(this.widget.options.columns, newIndex, newComponent);
|
90
|
+
this.widget.options.defaultValue = [];
|
95
91
|
this.selectWidget = newComponent;
|
96
92
|
}
|
97
93
|
}
|
@@ -2,16 +2,15 @@
|
|
2
2
|
<div class="component-list">
|
3
3
|
<div
|
4
4
|
v-for="(column, columnIndex) in dataModel"
|
5
|
-
class="
|
6
|
-
:key="`
|
5
|
+
class="list-group"
|
6
|
+
:key="`group_${columnIndex}`"
|
7
7
|
>
|
8
8
|
<div
|
9
9
|
v-for="(element, elementIndex) in widget.options.columns"
|
10
|
-
class="
|
11
|
-
:key="
|
10
|
+
class="list-group-item"
|
11
|
+
:key="elementIndex"
|
12
12
|
>
|
13
13
|
<generate-form-item
|
14
|
-
style="flex:1;"
|
15
14
|
:widget="element"
|
16
15
|
:model.sync="
|
17
16
|
element.type === 'grid' && !element.options.isEntity
|
@@ -19,11 +18,7 @@
|
|
19
18
|
: column[element.model]
|
20
19
|
"
|
21
20
|
:models="models"
|
22
|
-
:pModel="
|
23
|
-
pModel
|
24
|
-
? `${pModel}.${columnIndex}`
|
25
|
-
: `${widget.model}.${columnIndex}`
|
26
|
-
"
|
21
|
+
:pModel="getPModel(columnIndex)"
|
27
22
|
:config="config"
|
28
23
|
:slotKeys="slotKeys"
|
29
24
|
:componentsData="componentsData"
|
@@ -66,10 +61,13 @@ import GenerateFormItem from "../../GenerateFormItem.vue";
|
|
66
61
|
export default {
|
67
62
|
components: { GenerateFormItem },
|
68
63
|
mixins: [itemsComponent, eventMixin],
|
69
|
-
props: ["
|
64
|
+
props: ["slotKeys", "componentsData"],
|
70
65
|
data() {
|
71
66
|
return {};
|
72
67
|
},
|
68
|
+
mounted() {
|
69
|
+
console.log("mounted pModel =>", this.pModel);
|
70
|
+
},
|
73
71
|
methods: {
|
74
72
|
handleTableAdd() {
|
75
73
|
let dic = {};
|
@@ -90,6 +88,10 @@ export default {
|
|
90
88
|
};
|
91
89
|
initData(this.widget.options.columns, dic);
|
92
90
|
this.dataModel.push(dic);
|
91
|
+
},
|
92
|
+
getPModel(val) {
|
93
|
+
if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
|
94
|
+
else return `${this.widget.model}.${val}`;
|
93
95
|
}
|
94
96
|
}
|
95
97
|
};
|
@@ -99,11 +101,11 @@ export default {
|
|
99
101
|
.component-list {
|
100
102
|
background: #fff;
|
101
103
|
|
102
|
-
.
|
103
|
-
.
|
104
|
+
.list-group {
|
105
|
+
.list-group-item {
|
104
106
|
width: 100%;
|
105
107
|
}
|
106
|
-
.
|
108
|
+
.list-group-item:nth-child(1) {
|
107
109
|
display: flex;
|
108
110
|
> div:first-child {
|
109
111
|
flex: 1;
|
@@ -2,14 +2,14 @@
|
|
2
2
|
<draggable
|
3
3
|
class="component-table"
|
4
4
|
v-model="widget.options.columns"
|
5
|
-
:no-transition-on-drag="true"
|
6
5
|
v-bind="{
|
7
6
|
group: 'people',
|
8
7
|
ghostClass: 'draggable-ghost',
|
9
8
|
animation: 200,
|
10
9
|
handle: '.drag-widget'
|
11
10
|
}"
|
12
|
-
|
11
|
+
:no-transition-on-drag="true"
|
12
|
+
@add="handleWidgetAdd($event)"
|
13
13
|
>
|
14
14
|
<transition-group name="fade" tag="div" class="draggable-list">
|
15
15
|
<widget-form-item
|
@@ -39,18 +39,19 @@ export default {
|
|
39
39
|
mixins: [itemsComponent, eventMixin],
|
40
40
|
data() {
|
41
41
|
return {
|
42
|
-
selectWidget:
|
42
|
+
selectWidget: this.select
|
43
43
|
};
|
44
44
|
},
|
45
45
|
watch: {
|
46
46
|
select(val) {
|
47
47
|
this.selectWidget = val;
|
48
48
|
},
|
49
|
-
selectWidget
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
selectWidget(val) {
|
50
|
+
this.$emit("update:select", val);
|
51
|
+
},
|
52
|
+
// 子组建变动后重置初始值
|
53
|
+
"widget.options.columns.length"(val) {
|
54
|
+
this.widget.options.defaultValue = [];
|
54
55
|
}
|
55
56
|
},
|
56
57
|
methods: {
|
@@ -60,13 +61,12 @@ export default {
|
|
60
61
|
const newComponent = JSON.parse(
|
61
62
|
JSON.stringify(this.widget.options.columns[newIndex])
|
62
63
|
);
|
63
|
-
|
64
|
+
|
64
65
|
// 防止布局元素的嵌套拖拽
|
65
|
-
if (item.className.indexOf("no-put") >= 0) {
|
66
|
+
if ($event.item.className.indexOf("no-put") >= 0) {
|
66
67
|
// 如果是列表中拖拽的元素需要还原到原来位置
|
67
|
-
item.tagName === "DIV" &&
|
68
|
+
$event.item.tagName === "DIV" &&
|
68
69
|
this.widgetArray.splice(oldIndex, 0, newComponent);
|
69
|
-
|
70
70
|
this.widget.options.columns.splice(newIndex, 1);
|
71
71
|
return false;
|
72
72
|
}
|
@@ -78,6 +78,7 @@ export default {
|
|
78
78
|
newComponent.model = `${newComponent.type}_${key}`;
|
79
79
|
}
|
80
80
|
this.$set(this.widget.options.columns, newIndex, newComponent);
|
81
|
+
this.widget.options.defaultValue = [];
|
81
82
|
this.selectWidget = newComponent;
|
82
83
|
}
|
83
84
|
}
|
@@ -27,11 +27,7 @@
|
|
27
27
|
:widget="element"
|
28
28
|
:model.sync="dataModel[scope.$index][element.model]"
|
29
29
|
:models="models"
|
30
|
-
:pModel="
|
31
|
-
pModel
|
32
|
-
? `${pModel}.${scope.$index}`
|
33
|
-
: `${widget.model}.${scope.$index}`
|
34
|
-
"
|
30
|
+
:pModel="getPModel(scope.$index)"
|
35
31
|
:config="config"
|
36
32
|
:slotKeys="slotKeys"
|
37
33
|
:componentsData="componentsData"
|
@@ -110,6 +106,10 @@ export default {
|
|
110
106
|
},
|
111
107
|
handleTableDelete(index) {
|
112
108
|
this.dataModel.splice(index, 1);
|
109
|
+
},
|
110
|
+
getPModel(val) {
|
111
|
+
if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
|
112
|
+
else return `${this.widget.model}.${val}`;
|
113
113
|
}
|
114
114
|
}
|
115
115
|
};
|
@@ -13,13 +13,13 @@
|
|
13
13
|
>
|
14
14
|
<draggable
|
15
15
|
v-model="column.list"
|
16
|
-
:no-transition-on-drag="true"
|
17
16
|
v-bind="{
|
18
17
|
group: 'people',
|
19
18
|
ghostClass: 'draggable-ghost',
|
20
19
|
animation: 200,
|
21
20
|
handle: '.drag-widget'
|
22
21
|
}"
|
22
|
+
:no-transition-on-drag="true"
|
23
23
|
@add="handleWidgetAdd($event, widget, columnIndex)"
|
24
24
|
>
|
25
25
|
<transition-group name="fade" tag="div" class="draggable-list">
|
@@ -49,18 +49,15 @@ export default {
|
|
49
49
|
mixins: [itemsComponent, eventMixin],
|
50
50
|
data() {
|
51
51
|
return {
|
52
|
-
selectWidget:
|
52
|
+
selectWidget: this.select
|
53
53
|
};
|
54
54
|
},
|
55
55
|
watch: {
|
56
56
|
select(val) {
|
57
57
|
this.selectWidget = val;
|
58
58
|
},
|
59
|
-
selectWidget
|
60
|
-
|
61
|
-
this.$emit("update:select", val);
|
62
|
-
},
|
63
|
-
deep: true
|
59
|
+
selectWidget(val) {
|
60
|
+
this.$emit("update:select", val);
|
64
61
|
}
|
65
62
|
},
|
66
63
|
methods: {
|
@@ -20,11 +20,7 @@
|
|
20
20
|
: dataModel[column.value][element.model]
|
21
21
|
"
|
22
22
|
:models="models"
|
23
|
-
:pModel="
|
24
|
-
pModel
|
25
|
-
? `${pModel}.${scope.$index}`
|
26
|
-
: `${widget.model}.${column.value}`
|
27
|
-
"
|
23
|
+
:pModel="getPModel(column.value)"
|
28
24
|
:config="config"
|
29
25
|
:slotKeys="slotKeys"
|
30
26
|
:componentsData="componentsData"
|
@@ -44,10 +40,12 @@ export default {
|
|
44
40
|
components: { GenerateFormItem },
|
45
41
|
mixins: [itemsComponent, eventMixin],
|
46
42
|
props: ["slotKeys", "componentsData"],
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
methods: {
|
44
|
+
getPModel(val) {
|
45
|
+
if (this.pModel) return `${this.pModel}.${this.widget.model}.${val}`;
|
46
|
+
else return `${this.widget.model}.${val}`;
|
47
|
+
}
|
48
|
+
}
|
51
49
|
};
|
52
50
|
</script>
|
53
51
|
|