tianheng-ui 0.1.81 → 0.1.84

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 (32) hide show
  1. package/README.md +72 -15
  2. package/lib/theme-chalk/fonts/formMaking-iconfont.svg +155 -155
  3. package/lib/theme-chalk/fonts/th-iconfont.css +2402 -2402
  4. package/lib/theme-chalk/js/axios.js +87 -87
  5. package/lib/tianheng-ui.js +13 -13
  6. package/package.json +87 -86
  7. package/packages/CodeEditor/index.vue +3 -2
  8. package/packages/FormMaking/GenerateForm.vue +392 -392
  9. package/packages/FormMaking/Upload/index.vue +571 -571
  10. package/packages/FormMaking/WidgetFooter.vue +16 -0
  11. package/packages/FormMaking/WidgetForm.vue +145 -146
  12. package/packages/FormMaking/WidgetTools.vue +21 -16
  13. package/packages/FormMaking/custom/config.js +120 -2
  14. package/packages/FormMaking/custom/configs/number.vue +0 -5
  15. package/packages/FormMaking/custom/configs/page-table.vue +146 -0
  16. package/packages/FormMaking/custom/index.js +1 -1
  17. package/packages/FormMaking/custom/items/page-table.vue +250 -0
  18. package/packages/FormMaking/custom/register.js +43 -43
  19. package/packages/FormMaking/iconfont/demo.css +539 -539
  20. package/packages/FormMaking/iconfont/demo_index.html +1159 -1159
  21. package/packages/FormMaking/iconfont/formMaking-iconfont.css +189 -189
  22. package/packages/FormMaking/iconfont/formMaking-iconfont.svg +155 -155
  23. package/packages/FormMaking/index.js +33 -33
  24. package/packages/FormMaking/index.vue +6 -1
  25. package/packages/FormMaking/lang/en-US.js +187 -187
  26. package/packages/FormMaking/lang/zh-CN.js +187 -187
  27. package/packages/FormMaking/network/axios.js +88 -88
  28. package/packages/FormMaking/styles/index.scss +216 -216
  29. package/packages/FormMaking/util/generateCode.js +427 -157
  30. package/packages/FormMaking/util/index.js +98 -98
  31. package/packages/TableMaking/network/axios.js +88 -88
  32. package/packages/TableMaking/widgetConfig.vue +1 -1
@@ -0,0 +1,146 @@
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
+ </el-collapse-item>
8
+
9
+ <el-collapse-item title="树选择" name="group-tree">
10
+ <el-form-item label="是否显示">
11
+ <el-switch v-model="widget.options.columns.tree.show"> </el-switch>
12
+ </el-form-item>
13
+ <el-form-item label="默认数据">
14
+ <code-editor
15
+ v-model="widget.options.columns.tree.props.data"
16
+ language="json"
17
+ :fontSize="12"
18
+ :height="200"
19
+ :showGutter="false"
20
+ ></code-editor>
21
+ </el-form-item>
22
+ <el-form-item label="自定义字段">
23
+ <code-editor
24
+ v-model="widget.options.columns.tree.props.fieldNames"
25
+ language="json"
26
+ :fontSize="12"
27
+ :height="80"
28
+ :showGutter="false"
29
+ ></code-editor>
30
+ </el-form-item>
31
+ <el-form-item label="默认展开">
32
+ <el-switch v-model="widget.options.columns.tree.props.defaultExpandAll">
33
+ </el-switch>
34
+ </el-form-item>
35
+ <!-- <el-form-item label="默认选中">
36
+ <code-editor
37
+ v-model="widget.options.columns.tree.props.selectedKeys"
38
+ language="json"
39
+ :fontSize="12"
40
+ :height="50"
41
+ :showGutter="false"
42
+ ></code-editor>
43
+ </el-form-item> -->
44
+ <el-form-item label="节点是否可被选择">
45
+ <el-switch v-model="widget.options.columns.tree.props.checkable">
46
+ </el-switch>
47
+ </el-form-item>
48
+ </el-collapse-item>
49
+
50
+ <el-collapse-item title="搜索" name="group-search">
51
+ <el-form-item label="是否显示">
52
+ <el-switch v-model="widget.options.columns.search.show"> </el-switch>
53
+ </el-form-item>
54
+ <el-form-item label="栅格列宽">
55
+ <el-input-number
56
+ v-model="widget.options.columns.search.props.grid.span"
57
+ :min="1"
58
+ :max="24"
59
+ ></el-input-number>
60
+ </el-form-item>
61
+ <el-form-item label="栅格间距">
62
+ <el-input-number
63
+ v-model="widget.options.columns.search.props.grid.gutter"
64
+ :min="0"
65
+ :max="100"
66
+ ></el-input-number>
67
+ </el-form-item>
68
+ </el-collapse-item>
69
+
70
+ <el-collapse-item title="功能栏" name="group-tools">
71
+ <el-form-item label="是否显示">
72
+ <el-switch v-model="widget.options.columns.tools.show"> </el-switch>
73
+ </el-form-item>
74
+ <el-form-item label="间距">
75
+ <el-input-number
76
+ v-model="widget.options.columns.tools.props.space.size"
77
+ :min="0"
78
+ :max="100"
79
+ ></el-input-number>
80
+ </el-form-item>
81
+ </el-collapse-item>
82
+
83
+ <el-collapse-item title="列表" name="group-table">
84
+ <el-form-item label="默认数据">
85
+ <code-editor
86
+ v-model="widget.options.columns.table.data"
87
+ language="json"
88
+ :fontSize="12"
89
+ :height="200"
90
+ :showGutter="false"
91
+ ></code-editor>
92
+ </el-form-item>
93
+ <el-form-item label="表头配置">
94
+ <code-editor
95
+ v-model="widget.options.columns.table.columns"
96
+ language="json"
97
+ :fontSize="12"
98
+ :height="200"
99
+ :showGutter="false"
100
+ ></code-editor>
101
+ </el-form-item>
102
+ <el-form-item label="分页配置">
103
+ <el-switch
104
+ v-model="widget.options.columns.table.pagination.show"
105
+ active-text="开启分页"
106
+ inactive-text="关闭分页"
107
+ >
108
+ </el-switch>
109
+ <code-editor
110
+ v-if="widget.options.columns.table.pagination.show"
111
+ v-model="widget.options.columns.table.pagination.options"
112
+ language="json"
113
+ :fontSize="12"
114
+ :height="120"
115
+ :showGutter="false"
116
+ ></code-editor>
117
+ </el-form-item>
118
+ <el-form-item label="边框">
119
+ <el-switch v-model="widget.options.columns.table.border"> </el-switch>
120
+ </el-form-item>
121
+ <el-form-item label="边框">
122
+ <el-radio-group v-model="widget.options.columns.table.size" size="mini">
123
+ <el-radio-button label="medium"></el-radio-button>
124
+ <el-radio-button label="small"></el-radio-button>
125
+ <el-radio-button label="mini"></el-radio-button>
126
+ </el-radio-group>
127
+ </el-form-item>
128
+ </el-collapse-item>
129
+ </div>
130
+ </template>
131
+
132
+ <script>
133
+ import { configComponent } from "../mixins";
134
+ import CodeEditor from "ui/CodeEditor/index.vue";
135
+ export default {
136
+ components: {
137
+ CodeEditor
138
+ },
139
+ mixins: [configComponent],
140
+ created() {},
141
+ mounted() {},
142
+ methods: {}
143
+ };
144
+ </script>
145
+
146
+ <style lang="scss" scoped></style>
@@ -22,7 +22,7 @@ const basicComponents = [
22
22
  ];
23
23
  const advanceComponents = ["table", "list", "tabs"];
24
24
  const layoutComponents = ["grid", "alliance", "filler", "divider"];
25
- const businessComponents = ["blank", "descriptions"];
25
+ const businessComponents = ["blank", "descriptions", "page-table"];
26
26
 
27
27
  module.exports = {
28
28
  basicComponents,
@@ -0,0 +1,250 @@
1
+ <template>
2
+ <div class="pageTable">
3
+ <div v-if="widget.options.columns.tree.show" class="pageTable-tree">
4
+ <el-tree
5
+ :data="widget.options.columns.tree.props.data"
6
+ :current-node-key="widget.options.columns.tree.props.selectedKeys[0]"
7
+ :show-checkbox="widget.options.columns.tree.props.checkable"
8
+ :default-expanded-keys="widget.options.columns.tree.props.expandedKeys"
9
+ :default-checked-keys="widget.options.columns.tree.props.checkedKeys"
10
+ :props="widget.options.columns.tree.props.fieldNames"
11
+ :default-expand-all="widget.options.columns.tree.props.defaultExpandAll"
12
+ :node-key="widget.options.columns.tree.props.fieldNames.key"
13
+ >
14
+ </el-tree>
15
+ </div>
16
+ <div class="pageTable-content">
17
+ <div v-if="widget.options.columns.search.show" class="pageTable-search">
18
+ <draggable
19
+ v-model="widget.options.columns.search.list"
20
+ v-bind="{
21
+ group: 'people',
22
+ ghostClass: 'draggable-ghost',
23
+ animation: 200,
24
+ handle: '.drag-widget'
25
+ }"
26
+ :no-transition-on-drag="true"
27
+ @add="handleWidgetAdd($event, widget, 'search')"
28
+ >
29
+ <transition-group name="fade" tag="div" class="draggable-list">
30
+ <widget-form-item
31
+ v-for="(element,
32
+ elementIndex) in widget.options.columns.search.list.filter(
33
+ item => {
34
+ return item.key;
35
+ }
36
+ )"
37
+ :key="element.key"
38
+ :widget="element"
39
+ :widgetArray="widget.options.columns.search.list"
40
+ :widgetIndex="elementIndex"
41
+ :config="config"
42
+ :select.sync="selectWidget"
43
+ ></widget-form-item>
44
+ </transition-group>
45
+ </draggable>
46
+ <th-empty
47
+ v-if="widget.options.columns.search.list.length == 0"
48
+ class="pageTable-empty"
49
+ description="从左侧拖拽来添加搜索字段"
50
+ ></th-empty>
51
+ </div>
52
+ <div v-if="widget.options.columns.tools.show" class="pageTable-tools">
53
+ <draggable
54
+ v-model="widget.options.columns.tools.list"
55
+ v-bind="{
56
+ group: 'people',
57
+ ghostClass: 'draggable-ghost',
58
+ animation: 200,
59
+ handle: '.drag-widget'
60
+ }"
61
+ :no-transition-on-drag="true"
62
+ @add="handleWidgetAdd($event, widget, 'tools')"
63
+ >
64
+ <transition-group name="fade" tag="div" class="draggable-list">
65
+ <widget-form-item
66
+ v-for="(element,
67
+ elementIndex) in widget.options.columns.tools.list.filter(
68
+ item => {
69
+ return item.key;
70
+ }
71
+ )"
72
+ :key="element.key"
73
+ :widget="element"
74
+ :widgetArray="widget.options.columns.tools.list"
75
+ :widgetIndex="elementIndex"
76
+ :config="config"
77
+ :select.sync="selectWidget"
78
+ ></widget-form-item>
79
+ </transition-group>
80
+ </draggable>
81
+ <th-empty
82
+ v-if="widget.options.columns.tools.list.length == 0"
83
+ class="pageTable-empty"
84
+ description="从左侧拖拽来添加功能按钮"
85
+ ></th-empty>
86
+ </div>
87
+ <div class="pageTable-table">
88
+ <el-table
89
+ :data="widget.options.columns.table.data"
90
+ :size="widget.options.columns.table.size"
91
+ :border="widget.options.columns.table.border"
92
+ >
93
+ <el-table-column
94
+ v-for="column in widget.options.columns.table.columns"
95
+ :key="column.dataIndex"
96
+ :prop="column.dataIndex"
97
+ :label="column.title"
98
+ >
99
+ <template slot-scope="scope">
100
+ <template v-if="column.dataIndex === 'action'">
101
+ <el-button type="text" size="small">查看</el-button>
102
+ <el-button type="text" size="small">编辑</el-button>
103
+ </template>
104
+ <template v-else>{{ scope.row[column.dataIndex] }}</template>
105
+ </template>
106
+ </el-table-column>
107
+ </el-table>
108
+ </div>
109
+ <div
110
+ v-if="widget.options.columns.table.pagination.show"
111
+ class="pageTable-pagination"
112
+ >
113
+ <el-pagination
114
+ :current-page="
115
+ widget.options.columns.table.pagination.options.current
116
+ "
117
+ :page-sizes="
118
+ widget.options.columns.table.pagination.options.pageSizes
119
+ "
120
+ :page-size="widget.options.columns.table.pagination.options.pageSize"
121
+ layout="total, sizes, prev, pager, next, jumper"
122
+ :total="widget.options.columns.table.data.length"
123
+ >
124
+ </el-pagination>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </template>
129
+
130
+ <script>
131
+ import { deepClone } from "../../util/index";
132
+ import { itemsComponent, eventMixin } from "../mixins/index";
133
+ import Draggable from "vuedraggable";
134
+ import WidgetFormItem from "../../WidgetFormItem.vue";
135
+ import compsData from "../register";
136
+ export default {
137
+ components: { Draggable, WidgetFormItem },
138
+ mixins: [itemsComponent, eventMixin],
139
+ data() {
140
+ return {
141
+ compsData: deepClone(compsData),
142
+ selectWidget: this.select
143
+ };
144
+ },
145
+ watch: {
146
+ select(val) {
147
+ this.selectWidget = val;
148
+ },
149
+ selectWidget(val) {
150
+ this.$emit("update:select", val);
151
+ }
152
+ },
153
+ created() {
154
+ const devComponentsPath = {
155
+ grid: "grid_dev",
156
+ table: "table_dev",
157
+ list: "list_dev",
158
+ tabs: "tabs_dev",
159
+ blank: "blank_dev"
160
+ };
161
+ const keys = Object.keys(this.compsData);
162
+ for (const key of keys) {
163
+ const element = this.compsData[key];
164
+ if (devComponentsPath[key])
165
+ element.content = require(`./${devComponentsPath[key]}`).default;
166
+ else element.content = require(`./${key}`).default;
167
+ }
168
+ },
169
+ mounted() {},
170
+ methods: {
171
+ handleWidgetAdd($event, row, colIndex) {
172
+ const newIndex = $event.newIndex;
173
+ const oldIndex = $event.oldIndex;
174
+ const item = $event.item;
175
+ const newComponent = JSON.parse(
176
+ JSON.stringify(row.options.columns[colIndex].list[newIndex])
177
+ );
178
+
179
+ // 防止布局元素的嵌套拖拽
180
+ if (item.className.indexOf("grid") >= 0) {
181
+ // 如果是列表中拖拽的元素需要还原到原来位置
182
+ item.tagName === "DIV" &&
183
+ this.widgetArray.splice(oldIndex, 0, newComponent);
184
+
185
+ row.options.columns[colIndex].list.splice(newIndex, 1);
186
+ return false;
187
+ }
188
+
189
+ if (!newComponent.key) {
190
+ const key =
191
+ Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
192
+ newComponent.key = key;
193
+ newComponent.model = `${newComponent.type}_${key}`;
194
+ if (colIndex === "tools") newComponent.options.hideLabel = true;
195
+ }
196
+ this.$set(row.options.columns[colIndex].list, newIndex, newComponent);
197
+ this.selectWidget = newComponent;
198
+ }
199
+ }
200
+ };
201
+ </script>
202
+
203
+ <style lang="scss" scoped>
204
+ .pageTable {
205
+ display: flex;
206
+ padding: 10px;
207
+
208
+ .pageTable-tree {
209
+ margin-right: 10px;
210
+ width: 200px;
211
+ }
212
+
213
+ .pageTable-content {
214
+ flex: 1;
215
+ width: 0;
216
+ .pageTable-search {
217
+ position: relative;
218
+ margin-bottom: 10px;
219
+ }
220
+ .pageTable-tools {
221
+ position: relative;
222
+ // margin-bottom: 10px;
223
+ }
224
+ .pageTable-table {
225
+ margin-bottom: 10px;
226
+ }
227
+ .pageTable-pagination {
228
+ text-align: right;
229
+ }
230
+ }
231
+ .draggable-list {
232
+ display: flex;
233
+ }
234
+
235
+ .pageTable-empty {
236
+ position: absolute;
237
+ margin-left: -200px;
238
+ padding: 0;
239
+ width: 400px;
240
+ top: 0;
241
+ left: 50%;
242
+ text-align: center;
243
+ color: #ccc;
244
+
245
+ .th-empty-description {
246
+ font-size: 20px;
247
+ }
248
+ }
249
+ }
250
+ </style>
@@ -1,43 +1,43 @@
1
- //在此注册组件
2
- import {
3
- basicComponents,
4
- advanceComponents,
5
- layoutComponents,
6
- businessComponents
7
- } from "./config";
8
-
9
- let compsData = {};
10
- for (const config of basicComponents) {
11
- compsData[config.type] = {
12
- name: config.name,
13
- type: config.type,
14
- config: config,
15
- content: null
16
- };
17
- }
18
- for (const config of advanceComponents) {
19
- compsData[config.type] = {
20
- name: config.name,
21
- type: config.type,
22
- config: config,
23
- content: null
24
- };
25
- }
26
- for (const config of layoutComponents) {
27
- compsData[config.type] = {
28
- name: config.name,
29
- type: config.type,
30
- config: config,
31
- content: null
32
- };
33
- }
34
- for (const config of businessComponents) {
35
- compsData[config.type] = {
36
- name: config.name,
37
- type: config.type,
38
- config: config,
39
- content: null
40
- };
41
- }
42
-
43
- export default compsData;
1
+ //在此注册组件
2
+ import {
3
+ basicComponents,
4
+ advanceComponents,
5
+ layoutComponents,
6
+ businessComponents
7
+ } from "./config";
8
+
9
+ let compsData = {};
10
+ for (const config of basicComponents) {
11
+ compsData[config.type] = {
12
+ name: config.name,
13
+ type: config.type,
14
+ config: config,
15
+ content: null
16
+ };
17
+ }
18
+ for (const config of advanceComponents) {
19
+ compsData[config.type] = {
20
+ name: config.name,
21
+ type: config.type,
22
+ config: config,
23
+ content: null
24
+ };
25
+ }
26
+ for (const config of layoutComponents) {
27
+ compsData[config.type] = {
28
+ name: config.name,
29
+ type: config.type,
30
+ config: config,
31
+ content: null
32
+ };
33
+ }
34
+ for (const config of businessComponents) {
35
+ compsData[config.type] = {
36
+ name: config.name,
37
+ type: config.type,
38
+ config: config,
39
+ content: null
40
+ };
41
+ }
42
+
43
+ export default compsData;