tianheng-ui 0.1.76 → 0.1.77
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/tianheng-ui.js +4 -4
- package/package.json +1 -1
- package/packages/FormMaking/GenerateForm.vue +5 -3
- package/packages/TableMaking/custom/items/table/index-pc.vue +7 -4
- package/packages/TableMaking/generateTable.vue +15 -44
- package/packages/TableMaking/widgetConfig.vue +34 -7
- package/packages/TableMaking/widgetTable.vue +37 -3
package/package.json
CHANGED
@@ -45,6 +45,7 @@ export default {
|
|
45
45
|
name: "thFormGenerate",
|
46
46
|
components: { GenetateFormItem },
|
47
47
|
props: {
|
48
|
+
businessId: String,
|
48
49
|
formId: String,
|
49
50
|
query: Object,
|
50
51
|
oauthConfig: {
|
@@ -194,7 +195,7 @@ export default {
|
|
194
195
|
const requestConfig = {
|
195
196
|
url: api.url,
|
196
197
|
method: api.method,
|
197
|
-
headers: api.headers
|
198
|
+
headers: { ...api.headers, businessId: this.businessId }
|
198
199
|
};
|
199
200
|
|
200
201
|
// 因为是组件的远端接口,优先级:默认值 > 路由参数
|
@@ -255,7 +256,7 @@ export default {
|
|
255
256
|
const requestConfig = {
|
256
257
|
url: api.url,
|
257
258
|
method: api.method,
|
258
|
-
headers: api.headers
|
259
|
+
headers: { ...api.headers, businessId: this.businessId }
|
259
260
|
};
|
260
261
|
const params = {};
|
261
262
|
for (let e of api.inParams) {
|
@@ -317,7 +318,8 @@ export default {
|
|
317
318
|
method: api.method,
|
318
319
|
headers: {
|
319
320
|
...api.headers,
|
320
|
-
formId: this.formId
|
321
|
+
formId: this.formId,
|
322
|
+
businessId: this.businessId
|
321
323
|
}
|
322
324
|
};
|
323
325
|
if (["get", "delete"].includes(api.method.toLowerCase()))
|
@@ -102,6 +102,10 @@ export default {
|
|
102
102
|
mounted() {},
|
103
103
|
methods: {
|
104
104
|
getProperty: getProperty,
|
105
|
+
clearSelection() {
|
106
|
+
this.multipleSelection = [];
|
107
|
+
this.$refs.elTableRef.clearSelection();
|
108
|
+
},
|
105
109
|
handleSelectionChange(val) {
|
106
110
|
this.multipleSelection = val;
|
107
111
|
},
|
@@ -115,10 +119,6 @@ export default {
|
|
115
119
|
},
|
116
120
|
handlePaginationChange() {
|
117
121
|
this.$emit("change", this.config.pageInfo.options);
|
118
|
-
},
|
119
|
-
clearSelection() {
|
120
|
-
this.multipleSelection = [];
|
121
|
-
this.$refs.elTableRef.clearSelection();
|
122
122
|
}
|
123
123
|
}
|
124
124
|
};
|
@@ -127,5 +127,8 @@ export default {
|
|
127
127
|
<style lang="scss" scoped>
|
128
128
|
.generateTable-table {
|
129
129
|
width: 100%;
|
130
|
+
.el-pagination {
|
131
|
+
margin-top: 10px;
|
132
|
+
}
|
130
133
|
}
|
131
134
|
</style>
|
@@ -43,7 +43,7 @@
|
|
43
43
|
<th-empty
|
44
44
|
v-else
|
45
45
|
:image="require('@/assets/images/notData.png')"
|
46
|
-
:description="
|
46
|
+
:description="empty.description"
|
47
47
|
>
|
48
48
|
<th-button type="primary" @click="initConfig">刷新</th-button>
|
49
49
|
</th-empty>
|
@@ -59,10 +59,12 @@ import appConfig from "./config/index";
|
|
59
59
|
import { deepClone, getProperty } from "./util";
|
60
60
|
import * as Axios from "./network/axios";
|
61
61
|
import * as XLSX from "xlsx/xlsx.mjs";
|
62
|
+
import { setProperty } from "../FormMaking/util";
|
62
63
|
export default {
|
63
64
|
name: "thTableGenerate",
|
64
65
|
components: { Search, Tools, STable, Actions },
|
65
66
|
props: {
|
67
|
+
businessId: String,
|
66
68
|
config: Object,
|
67
69
|
oauthConfig: {
|
68
70
|
type: Object,
|
@@ -77,23 +79,6 @@ export default {
|
|
77
79
|
description: "暂无数据"
|
78
80
|
};
|
79
81
|
}
|
80
|
-
},
|
81
|
-
network: {
|
82
|
-
type: Object,
|
83
|
-
default: () => {
|
84
|
-
return {
|
85
|
-
page: {
|
86
|
-
url: "/api/lc/viewManage/getOne",
|
87
|
-
method: "POST",
|
88
|
-
params: {}
|
89
|
-
},
|
90
|
-
form: {
|
91
|
-
url: "/api/lc/formConfig/getById",
|
92
|
-
method: "get",
|
93
|
-
params: {}
|
94
|
-
}
|
95
|
-
};
|
96
|
-
}
|
97
82
|
}
|
98
83
|
},
|
99
84
|
data() {
|
@@ -108,9 +93,6 @@ export default {
|
|
108
93
|
tableConfig: null,
|
109
94
|
tableData: [],
|
110
95
|
tableSelectionData: [],
|
111
|
-
tableActionsConfig: {},
|
112
|
-
formConfig: null,
|
113
|
-
errorMessage: "",
|
114
96
|
query: {}
|
115
97
|
};
|
116
98
|
},
|
@@ -280,30 +262,20 @@ export default {
|
|
280
262
|
type: "warning"
|
281
263
|
})
|
282
264
|
.then(() => {
|
283
|
-
|
284
|
-
|
265
|
+
action.loading = true;
|
285
266
|
this.axios(requestConfig)
|
286
267
|
.then(res => {
|
287
268
|
callback(true);
|
288
|
-
|
269
|
+
action.loading = false;
|
289
270
|
this.requestListData();
|
290
271
|
})
|
291
272
|
.catch(err => {
|
292
|
-
|
273
|
+
action.loading = false;
|
293
274
|
});
|
294
275
|
})
|
295
276
|
.catch(() => {});
|
296
277
|
},
|
297
278
|
|
298
|
-
// 通用请求
|
299
|
-
requestApi(request, callback) {
|
300
|
-
if (!request) return;
|
301
|
-
|
302
|
-
this.axios(request)
|
303
|
-
.then(res => {})
|
304
|
-
.catch(err => {});
|
305
|
-
},
|
306
|
-
|
307
279
|
// 请求拦截器,返回请求体
|
308
280
|
requestInterceptors(queryParams, networkId, action) {
|
309
281
|
const api = this.networkConfig[networkId];
|
@@ -315,13 +287,14 @@ export default {
|
|
315
287
|
const request = {
|
316
288
|
url: api.url,
|
317
289
|
method: api.method,
|
318
|
-
headers: api.headers
|
290
|
+
headers: { ...api.headers, businessId: this.businessId }
|
319
291
|
};
|
320
292
|
let params = {};
|
321
293
|
switch (action) {
|
322
294
|
case "list":
|
323
295
|
for (const item of api.inParams) {
|
324
|
-
|
296
|
+
const value = getProperty(queryParams, item.pAlias) || null;
|
297
|
+
setProperty(params, item.pAlias, value);
|
325
298
|
}
|
326
299
|
if (this.tableConfig.pageInfo.show) {
|
327
300
|
const pageInfo = this.tableConfig.pageInfo.options;
|
@@ -332,8 +305,11 @@ export default {
|
|
332
305
|
break;
|
333
306
|
case "delete":
|
334
307
|
for (const item of api.inParams) {
|
335
|
-
|
336
|
-
queryParams
|
308
|
+
const value =
|
309
|
+
getProperty(queryParams, item.pAlias) ||
|
310
|
+
getProperty(this.query, item.pAlias) ||
|
311
|
+
null;
|
312
|
+
setProperty(params, item.pAlias, value);
|
337
313
|
}
|
338
314
|
break;
|
339
315
|
case "batchDelete":
|
@@ -414,17 +390,12 @@ export default {
|
|
414
390
|
}
|
415
391
|
},
|
416
392
|
|
393
|
+
// 导出
|
417
394
|
handleExportExcelByTable(rows, fileName = "example") {
|
418
395
|
const ws = XLSX.utils.json_to_sheet(rows);
|
419
396
|
const wb = XLSX.utils.book_new();
|
420
397
|
XLSX.utils.book_append_sheet(wb, ws, fileName);
|
421
398
|
XLSX.writeFileXLSX(wb, `${fileName}.xlsx`);
|
422
|
-
},
|
423
|
-
|
424
|
-
// 表单提交按钮事件回调
|
425
|
-
handleFormButtonSubmit() {
|
426
|
-
this.handleDialogClose();
|
427
|
-
this.requestListData();
|
428
399
|
}
|
429
400
|
}
|
430
401
|
};
|
@@ -13,10 +13,24 @@
|
|
13
13
|
</div>
|
14
14
|
<div v-if="activeTab.value === 'field'" class="configItem fieldsView">
|
15
15
|
<template
|
16
|
-
v-if="
|
16
|
+
v-if="
|
17
|
+
fieldsData.inParams.length ||
|
18
|
+
fieldsData.outParams.length ||
|
19
|
+
config.table.fields.type === 'custom'
|
20
|
+
"
|
17
21
|
>
|
18
22
|
<el-collapse v-model="collapseValue">
|
19
|
-
<el-collapse-item
|
23
|
+
<el-collapse-item name="group-fields_search">
|
24
|
+
<div slot="title" style="width:100%;">
|
25
|
+
<span>查询字段</span>
|
26
|
+
<!-- <el-button
|
27
|
+
v-if="config.table.fields.type === 'custom'"
|
28
|
+
style="float:right;padding:12px 10px;"
|
29
|
+
type="text"
|
30
|
+
@click="handleParamsAdd('in')"
|
31
|
+
>新增</el-button
|
32
|
+
> -->
|
33
|
+
</div>
|
20
34
|
<el-tree
|
21
35
|
ref="fieldsSearchTreeRef"
|
22
36
|
:data="fieldsData.inParams"
|
@@ -30,7 +44,17 @@
|
|
30
44
|
>
|
31
45
|
</el-tree>
|
32
46
|
</el-collapse-item>
|
33
|
-
<el-collapse-item
|
47
|
+
<el-collapse-item name="group-fields_table">
|
48
|
+
<div slot="title" style="width:100%;">
|
49
|
+
<span>列表字段</span>
|
50
|
+
<!-- <el-button
|
51
|
+
v-if="config.table.fields.type === 'custom'"
|
52
|
+
style="float:right;padding:12px 10px;"
|
53
|
+
type="text"
|
54
|
+
@click="handleParamsAdd('out')"
|
55
|
+
>新增</el-button
|
56
|
+
> -->
|
57
|
+
</div>
|
34
58
|
<el-tree
|
35
59
|
ref="fieldsTableTreeRef"
|
36
60
|
:data="fieldsData.outParams"
|
@@ -69,13 +93,15 @@
|
|
69
93
|
<span style="color: #409EFF;">字段类型</span>
|
70
94
|
</el-tooltip>
|
71
95
|
<el-radio-group v-model="config.table.fields.type">
|
72
|
-
<el-radio-button label="custom"
|
73
|
-
>自定义</el-radio-button
|
74
|
-
>
|
96
|
+
<el-radio-button label="custom">自定义</el-radio-button>
|
75
97
|
<el-radio-button label="api">接口导入</el-radio-button>
|
76
98
|
</el-radio-group>
|
77
99
|
</el-form-item>
|
78
|
-
<el-form-item
|
100
|
+
<el-form-item
|
101
|
+
v-if="config.table.fields.type === 'api'"
|
102
|
+
required
|
103
|
+
prop="table.mounted.api"
|
104
|
+
>
|
79
105
|
<el-tooltip
|
80
106
|
slot="label"
|
81
107
|
effect="light"
|
@@ -917,6 +943,7 @@ export default {
|
|
917
943
|
this.config.table.options = nodes;
|
918
944
|
}
|
919
945
|
},
|
946
|
+
handleParamsAdd(action) {},
|
920
947
|
// 对外暴露表单校验
|
921
948
|
formValidate() {
|
922
949
|
return new Promise((resolve, reject) => {
|
@@ -1,6 +1,15 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="widgetTable">
|
3
|
-
<div class="table-title"
|
3
|
+
<div class="table-title">
|
4
|
+
<span>查询字段</span>
|
5
|
+
<el-button
|
6
|
+
v-if="config.table.fields.type === 'custom'"
|
7
|
+
style="float:right;padding:0px 10px;"
|
8
|
+
type="text"
|
9
|
+
@click="handleParamsAdd('in')"
|
10
|
+
>新增</el-button
|
11
|
+
>
|
12
|
+
</div>
|
4
13
|
<div
|
5
14
|
class="tableList searchList"
|
6
15
|
v-loading="!config.search.show"
|
@@ -95,7 +104,16 @@
|
|
95
104
|
</draggable>
|
96
105
|
<div v-else class="search-content"></div>
|
97
106
|
</div>
|
98
|
-
<div class="table-title"
|
107
|
+
<div class="table-title">
|
108
|
+
<span>列表字段</span>
|
109
|
+
<el-button
|
110
|
+
v-if="config.table.fields.type === 'custom'"
|
111
|
+
style="float:right;padding:0px 10px;"
|
112
|
+
type="text"
|
113
|
+
@click="handleParamsAdd('out')"
|
114
|
+
>新增</el-button
|
115
|
+
>
|
116
|
+
</div>
|
99
117
|
<div class="tableList" style="height: calc(100% - 350px);">
|
100
118
|
<div class="table-item table-header">
|
101
119
|
<div class="table-item-custom">拖动</div>
|
@@ -246,6 +264,20 @@ export default {
|
|
246
264
|
handleDialogAffirm() {
|
247
265
|
this.dialog.data.staticData = this.codeEditorValue;
|
248
266
|
this.dialog = { visible: false, title: "", data: null };
|
267
|
+
},
|
268
|
+
handleParamsAdd(action) {
|
269
|
+
if (action === "in") {
|
270
|
+
this.config.search.options.push({
|
271
|
+
alias: "",
|
272
|
+
align: "left",
|
273
|
+
elType: "input",
|
274
|
+
id: new Date().getTime(),
|
275
|
+
javaType: "String",
|
276
|
+
label: "字段名",
|
277
|
+
pAlias: "",
|
278
|
+
prop: ""
|
279
|
+
});
|
280
|
+
}
|
249
281
|
}
|
250
282
|
}
|
251
283
|
};
|
@@ -259,8 +291,10 @@ export default {
|
|
259
291
|
overflow-y: overlay;
|
260
292
|
|
261
293
|
.table-title {
|
294
|
+
display: flex;
|
295
|
+
align-items: center;
|
296
|
+
justify-content: space-between;
|
262
297
|
height: 25px;
|
263
|
-
line-height: 25px;
|
264
298
|
}
|
265
299
|
.searchList {
|
266
300
|
margin: 10px 0;
|