centaline-data-driven-v3 0.1.36 → 0.1.38
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/dist/centaline-data-driven-v3.umd.js +270 -274
- package/package.json +2 -1
- package/src/components/web/Form.vue +60 -20
- package/src/components/web/JsonViewer.vue +102 -0
- package/src/components/web/SearchList/SearchSideRight.vue +2 -2
- package/src/components/web/SearchList/SearchTable.vue +1 -1
- package/src/loader/src/JsonViewer.js +20 -0
- package/src/loader/src/LibFunction.js +13 -8
- package/src/loader/src/SearchTable.js +28 -16
- package/src/main.js +2 -2
- package/src/utils/Enum.js +5 -1
- package/src/views/Form.vue +1 -1
- package/src/views/SearchList.vue +2 -2
- package/src/views/Tree.vue +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "centaline-data-driven-v3",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.38",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "centaline-data-driven-v3",
|
|
6
6
|
"main": "dist/centaline-data-driven-v3.umd.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"vue-cropper": "^1.1.1",
|
|
26
26
|
"vue-router": "^4.2.5",
|
|
27
27
|
"vue-ueditor-wrap": "^3.0.8",
|
|
28
|
+
"vue3-json-viewer": "^2.4.1",
|
|
28
29
|
"vue3-pdf-app": "^1.0.3",
|
|
29
30
|
"vuedraggable": "^4.1.0"
|
|
30
31
|
},
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div ref="refForm" v-loading="loading"
|
|
2
|
+
<div ref="refForm" v-loading="loading"
|
|
3
|
+
:style="{ width: pageWidth ? pageWidth + 'px' : '100%', margin: 'auto', 'min-height': minHeight }">
|
|
3
4
|
<div style="display: flex; width: 100%;">
|
|
4
5
|
<div style="flex: 1; min-width: 0;">
|
|
5
6
|
<div v-if="model !== null && !loading" class="ct-form">
|
|
@@ -11,13 +12,18 @@
|
|
|
11
12
|
|
|
12
13
|
<!--可根据场景判断显示el-card还是el-main-->
|
|
13
14
|
<component :is="model.showTitle ? 'el-main' : 'el-card'">
|
|
15
|
+
<div class="ct-from-title" v-if="typeof model.title !== 'undefined' && model.flagShowTitle">
|
|
16
|
+
<span style="font-weight:bold">{{ model.title }}</span>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
14
19
|
<!--relationParentFormFields-->
|
|
15
20
|
<el-row v-if="relationParentFormFields.length > 0">
|
|
16
21
|
<template v-for="(col, index) in relationParentFormFields" :key="index">
|
|
17
22
|
<div style="display: flex; flex: 0 0 100%;" v-if="col.show !== false && col.lineFeed">
|
|
18
23
|
</div>
|
|
19
|
-
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
20
|
-
|
|
24
|
+
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
25
|
+
:class="[col.is == 'ct-button' && col.labelPlacement == '1' ? 'el-col1' : '']">
|
|
26
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :key="itemKey" :listHeight="listHeight"
|
|
21
27
|
:parameterAction="model.parameterAction" v-bind="col.bindPara"
|
|
22
28
|
:fileData="getFileData(col)" @change="changeHandler"
|
|
23
29
|
@importComplete="importComplete" @popupLocation="popupLocationHandler"
|
|
@@ -34,8 +40,9 @@
|
|
|
34
40
|
<template v-for="(col, index) in model.collapseFields[0]" :key="index">
|
|
35
41
|
<div style="display: flex; flex: 0 0 100%;" v-if="col.show !== false && col.lineFeed">
|
|
36
42
|
</div>
|
|
37
|
-
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
38
|
-
|
|
43
|
+
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
44
|
+
:class="[col.is == 'ct-button' && col.labelPlacement == '1' ? 'el-col1' : '']">
|
|
45
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :key="itemKey" :listHeight="listHeight"
|
|
39
46
|
:parameterAction="model.parameterAction" v-bind="col.bindPara"
|
|
40
47
|
:fileData="getFileData(col)" @change="changeHandler"
|
|
41
48
|
@importComplete="importComplete" @popupLocation="popupLocationHandler"
|
|
@@ -47,16 +54,20 @@
|
|
|
47
54
|
</template>
|
|
48
55
|
</el-row>
|
|
49
56
|
<!--tabs-->
|
|
50
|
-
<el-tabs v-if="model.isHorizontalLayout" v-model="activeName">
|
|
57
|
+
<el-tabs v-if="model.isHorizontalLayout" v-model="activeName" @tab-click="tabClick">
|
|
51
58
|
<template v-for="(item, index) in model.collapse" :key="index">
|
|
52
|
-
<el-tab-pane :
|
|
53
|
-
|
|
59
|
+
<el-tab-pane :name="index.toString()" :lazy="item.lazyLoad" v-if="item.show !== false"
|
|
60
|
+
:key="index">
|
|
61
|
+
<template #label>
|
|
62
|
+
<span v-html="item.controlLabel"></span>
|
|
63
|
+
</template>
|
|
54
64
|
<el-row>
|
|
55
65
|
<template v-for="(col, i) in model.collapseFields[index + 1]" :key="i">
|
|
56
66
|
<div style="display: flex; flex: 0 0 100%;"
|
|
57
67
|
v-if="col.show !== false && col.lineFeed"></div>
|
|
58
|
-
<el-col :span="col.colspan" v-if="col.show !== false" style="padding:5px"
|
|
59
|
-
|
|
68
|
+
<el-col :span="col.colspan" v-if="col.show !== false" style="padding:5px"
|
|
69
|
+
:class="[col.is == 'ct-button' && col.labelPlacement == '1' ? 'el-col1' : '']">
|
|
70
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :key="itemKey" :listHeight="listHeight"
|
|
60
71
|
:parameterAction="model.parameterAction" v-bind="col.bindPara"
|
|
61
72
|
:fileData="getFileData(col)" @change="changeHandler"
|
|
62
73
|
@fieldClick="fieldClickHandler"
|
|
@@ -83,7 +94,7 @@
|
|
|
83
94
|
<template #title>
|
|
84
95
|
<i class="sign"></i>
|
|
85
96
|
<span :class="[item.required ? 'requiredLabel' : '']">{{ item.controlLabel
|
|
86
|
-
|
|
97
|
+
}}</span>
|
|
87
98
|
<span v-html="item.sufLabel1"></span>
|
|
88
99
|
</template>
|
|
89
100
|
|
|
@@ -91,8 +102,9 @@
|
|
|
91
102
|
<template v-for="(col, i) in model.collapseFields[index + 1]" :key="i">
|
|
92
103
|
<div style="display: flex; flex: 0 0 100%;"
|
|
93
104
|
v-if="col.show !== false && col.lineFeed"></div>
|
|
94
|
-
<el-col :span="col.colspan" v-if="col.show !== false" style="padding:5px"
|
|
95
|
-
|
|
105
|
+
<el-col :span="col.colspan" v-if="col.show !== false" style="padding:5px"
|
|
106
|
+
:class="[col.is == 'ct-button' && col.labelPlacement == '1' ? 'el-col1' : '']">
|
|
107
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :key="itemKey" :listHeight="listHeight"
|
|
96
108
|
:parameterAction="model.parameterAction" v-bind="col.bindPara"
|
|
97
109
|
:fileData="getFileData(col)" @change="changeHandler"
|
|
98
110
|
@fieldClick="fieldClickHandler"
|
|
@@ -114,8 +126,9 @@
|
|
|
114
126
|
<template v-for="(col, index) in model.independentItem" :key="index">
|
|
115
127
|
<div style="display: flex; flex: 0 0 100%;" v-if="col.show !== false && col.lineFeed">
|
|
116
128
|
</div>
|
|
117
|
-
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
118
|
-
|
|
129
|
+
<el-col v-if="col.show !== false" :span="col.colspan" style="padding:5px"
|
|
130
|
+
:class="[col.is == 'ct-button' && col.labelPlacement == '1' ? 'el-col1' : '']">
|
|
131
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :listHeight="listHeight"
|
|
119
132
|
:parameterAction="model.parameterAction" v-bind="col.bindPara"
|
|
120
133
|
@change="changeHandler" :key="itemKey" :fileData="getFileData(col)"
|
|
121
134
|
@fieldClick="fieldClickHandler" @popupSearchList="popupSearchListHandler"
|
|
@@ -127,7 +140,7 @@
|
|
|
127
140
|
</template>
|
|
128
141
|
</el-row>
|
|
129
142
|
<el-row v-if="model.links.findIndex((v) => { return v.show }) > -1" style="margin-top: 8px;">
|
|
130
|
-
<el-col :span="24" style="text-align:left"
|
|
143
|
+
<el-col :span="24" style="text-align:left">
|
|
131
144
|
<template v-for="(btn, index) in model.links" :key="index">
|
|
132
145
|
<component :is="btn.is" :vmodel="btn" v-if="btn.show" @fieldClick="clickHandler">
|
|
133
146
|
</component>
|
|
@@ -140,7 +153,7 @@
|
|
|
140
153
|
:style="['max-width:' + buttonsWidth(), isWebScroll ? 'position: fixed;' : '']">
|
|
141
154
|
<el-col :span="24"
|
|
142
155
|
style="text-align:center;padding-bottom: 1px;padding-left: 5px;padding-right: 5px;"
|
|
143
|
-
class="btnPadBom"
|
|
156
|
+
class="btnPadBom">
|
|
144
157
|
<template v-for="(btn, index) in model.buttons" :key="index">
|
|
145
158
|
<component :is="btn.is" :vmodel="btn" v-if="btn.show" @fieldClick="clickHandler"
|
|
146
159
|
:style="{ 'float': btn.isCheckbox ? btn.alignCss : '' }"></component>
|
|
@@ -193,7 +206,6 @@ import { useRouter } from 'vue-router';
|
|
|
193
206
|
import util from '../../utils/pub-use'
|
|
194
207
|
import Enum from '../../utils/Enum';
|
|
195
208
|
import AIChat from '../web/AIChat.vue';
|
|
196
|
-
import { fi } from 'element-plus/es/locale';
|
|
197
209
|
const emit = defineEmits(['loaded', 'failLoad', 'submit', 'AIToggle'])
|
|
198
210
|
const props = defineProps({
|
|
199
211
|
api: String,
|
|
@@ -227,6 +239,10 @@ const props = defineProps({
|
|
|
227
239
|
String,
|
|
228
240
|
default: 'close',
|
|
229
241
|
},
|
|
242
|
+
pageStyle: {
|
|
243
|
+
String,
|
|
244
|
+
default: '',
|
|
245
|
+
},
|
|
230
246
|
openType: {
|
|
231
247
|
String,
|
|
232
248
|
default: '',
|
|
@@ -243,6 +259,7 @@ const props = defineProps({
|
|
|
243
259
|
},
|
|
244
260
|
dialogHeight: Number,
|
|
245
261
|
dialoWidth: Number,
|
|
262
|
+
listHeight: Number,
|
|
246
263
|
})
|
|
247
264
|
|
|
248
265
|
const itemKey = ref(1)
|
|
@@ -258,6 +275,7 @@ const downloadUrl = ref('')
|
|
|
258
275
|
const minHeight = ref('auto')
|
|
259
276
|
const showAI = ref(false);
|
|
260
277
|
const dialogHeight = ref(props.dialogHeight || (window.innerHeight - 60));
|
|
278
|
+
const tabActiveNameKey = ref('')
|
|
261
279
|
|
|
262
280
|
const qrtimer1 = ref(null)
|
|
263
281
|
const qrtimer2 = ref(null)
|
|
@@ -333,6 +351,22 @@ function load(data) {
|
|
|
333
351
|
});
|
|
334
352
|
}
|
|
335
353
|
loading.value = false;
|
|
354
|
+
|
|
355
|
+
if (props.openType == 'detail') {
|
|
356
|
+
tabActiveNameKey.value = props.api + model.value.title + props.pageStyle;
|
|
357
|
+
var tagkey = window.localStorage.getItem(tabActiveNameKey.value);
|
|
358
|
+
if (window.localStorage) {
|
|
359
|
+
if (model.value.collapseFields && model.value.collapse) {
|
|
360
|
+
for (var i = 0; i < model.value.collapse.length; i++) {
|
|
361
|
+
if (tagkey == model.value.collapse[i].fieldName1) {
|
|
362
|
+
activeName.value = i.toString();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
336
370
|
//通知父组件加载完成
|
|
337
371
|
emit('loaded', model.value);
|
|
338
372
|
}
|
|
@@ -375,9 +409,9 @@ function fieldClickHandler(field) {
|
|
|
375
409
|
let data = Form.getRouterAndSubmitData(field, model.value);
|
|
376
410
|
clickHandler(data.router, data.submitData);
|
|
377
411
|
}
|
|
378
|
-
function clickHandler(field, submitData,formList) {
|
|
412
|
+
function clickHandler(field, submitData, formList) {
|
|
379
413
|
if (field.isOpenFileDialog) {
|
|
380
|
-
common.excuteFunStr.call(model.value.scripts, field.onChanged, {files: field.fileList,columns: formList?.source?.rows[0].columns });
|
|
414
|
+
common.excuteFunStr.call(model.value.scripts, field.onChanged, { files: field.fileList, columns: formList?.source?.rows[0].columns });
|
|
381
415
|
}
|
|
382
416
|
else {
|
|
383
417
|
RouterClickHandler(field, submitData, null, model.value, 'form');
|
|
@@ -675,6 +709,12 @@ function buttonsWidth() {
|
|
|
675
709
|
return rtn;
|
|
676
710
|
}
|
|
677
711
|
|
|
712
|
+
function tabClick(event) {
|
|
713
|
+
if (props.openType == 'detail') {
|
|
714
|
+
window.localStorage.setItem(tabActiveNameKey.value, model.value.collapse[event.index].fieldName1);//存储
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
678
718
|
</script>
|
|
679
719
|
|
|
680
720
|
<style scoped>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
|
|
3
|
+
<div class="josnViewerBox" :style="{ height: model.height || 'auto','max-height':(listHeight?listHeight-130+'px':'calc(100vh - 130px)') }" v-if="isRefresh">
|
|
4
|
+
<JsonViewer :value="model.json" copyable show-array-index show-double-quotes theme="light" :expanded="true"
|
|
5
|
+
:expand-depth="2" @onKeyClick="keyClick">
|
|
6
|
+
<template #copy="{ copied }">
|
|
7
|
+
<div class="btn-iocn"><el-icon title="复原到初始状态" @click.stop="resetJSON">
|
|
8
|
+
<Refresh />
|
|
9
|
+
</el-icon>
|
|
10
|
+
|
|
11
|
+
<!-- 复制按钮 -->
|
|
12
|
+
<el-icon :class="{ 'copied': copied }" title="复制JSON内容">
|
|
13
|
+
<CopyDocument />
|
|
14
|
+
</el-icon>
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
17
|
+
</JsonViewer>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script setup>
|
|
22
|
+
import { JsonViewer } from "vue3-json-viewer"
|
|
23
|
+
import "vue3-json-viewer/dist/vue3-json-viewer.css";
|
|
24
|
+
import { nextTick, ref } from "vue";
|
|
25
|
+
const props = defineProps({
|
|
26
|
+
api: String,
|
|
27
|
+
vmodel: Object,
|
|
28
|
+
actionRouter: Array,
|
|
29
|
+
listHeight: Number,
|
|
30
|
+
})
|
|
31
|
+
const model = ref({});
|
|
32
|
+
const isRefresh = ref(true);
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
init()
|
|
36
|
+
//初始化数据
|
|
37
|
+
function init() {
|
|
38
|
+
|
|
39
|
+
nextTick(function () {
|
|
40
|
+
if (props.vmodel) {
|
|
41
|
+
load(props.vmodel);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function load(data) {
|
|
46
|
+
model.value = data;
|
|
47
|
+
}
|
|
48
|
+
const resetJSON = () => {
|
|
49
|
+
isRefresh.value = false;
|
|
50
|
+
nextTick(() => {
|
|
51
|
+
isRefresh.value = true;
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
const keyClick = (keyName) => {
|
|
58
|
+
console.log(keyName, "it was click")
|
|
59
|
+
}
|
|
60
|
+
</script>
|
|
61
|
+
|
|
62
|
+
<style scoped>
|
|
63
|
+
:deep(.jv-container .jv-code) {
|
|
64
|
+
padding: 0px !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:deep(.jv-tooltip) {
|
|
68
|
+
position: sticky !important;
|
|
69
|
+
top: 0 !important;
|
|
70
|
+
right: 0 !important;
|
|
71
|
+
/* 新增:靠右定位 */
|
|
72
|
+
z-index: 10;
|
|
73
|
+
margin-left: auto;
|
|
74
|
+
/* 辅助:确保靠右 */
|
|
75
|
+
float: right;
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
.josnViewerBox {
|
|
82
|
+
overflow: auto;
|
|
83
|
+
width: 100%;
|
|
84
|
+
border: 1px solid #eee;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
padding: 2px;
|
|
87
|
+
/* 明确设置背景色 */
|
|
88
|
+
/* 增加内边距让边框更明显 */
|
|
89
|
+
box-sizing: border-box;
|
|
90
|
+
background-color: #ffffff;
|
|
91
|
+
}
|
|
92
|
+
.josnViewerBox:focus {
|
|
93
|
+
border: 1px solid #3D5ECC;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
.btn-iocn {
|
|
98
|
+
display: flex;
|
|
99
|
+
gap: 10px;
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
</style>
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
<div ref="detailForm" v-if="pageType == 'Form'" style="overflow: auto;"
|
|
9
9
|
:style="{ height: (listHeight - 5) + 'px' }">
|
|
10
|
-
<ct-form :api="rowSelectRouter.action" :apiParam="apiParam" @submit="submit" :flagScroll="'true'"
|
|
11
|
-
:drowerClose="drowerClose" :openType="'detail'">
|
|
10
|
+
<ct-form :api="rowSelectRouter.action" :pageStyle="rowSelectRouter.pageStyle" :apiParam="apiParam" @submit="submit" :flagScroll="'true'"
|
|
11
|
+
:drowerClose="drowerClose" :openType="'detail'" :listHeight="listHeight">
|
|
12
12
|
</ct-form>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
@@ -858,7 +858,7 @@ function setTableHeight() {
|
|
|
858
858
|
h8 = refPopupButton.value.offsetHeight + 21 | 0;
|
|
859
859
|
}
|
|
860
860
|
|
|
861
|
-
let tableHeight = h1 - h2 - h3 - h4 - h5 - h6 - h7 - h8 -
|
|
861
|
+
let tableHeight = h1 - h2 - h3 - h4 - h5 - h6 - h7 - h8 - 10;
|
|
862
862
|
model.value.tableHeight = tableHeight < 40 ? 350 : tableHeight;
|
|
863
863
|
nextTick(() => {
|
|
864
864
|
getScrollAttr();
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function loadJsonViewerModel(source) {
|
|
2
|
+
let rtn = {
|
|
3
|
+
get json() {
|
|
4
|
+
if (source.code1 && typeof source.code1 === 'string') {
|
|
5
|
+
return JSON.parse(source.code1);
|
|
6
|
+
|
|
7
|
+
} else {
|
|
8
|
+
return source.code1;
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
get height() {
|
|
12
|
+
return source.rows ? source.rows * 20 + 'px' : 'auto';
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
return rtn;
|
|
16
|
+
}
|
|
17
|
+
const JsonViewer = {
|
|
18
|
+
loadJsonViewerModel
|
|
19
|
+
};
|
|
20
|
+
export default JsonViewer;
|
|
@@ -23,6 +23,7 @@ import Steps from './Steps';
|
|
|
23
23
|
import Tags from './Tags';
|
|
24
24
|
import Location from './Location';
|
|
25
25
|
import AIChat from './AIChat';
|
|
26
|
+
import JsonViewer from './JsonViewer';
|
|
26
27
|
const LibFunction = {
|
|
27
28
|
install(app) {
|
|
28
29
|
},
|
|
@@ -80,7 +81,7 @@ const LibFunction = {
|
|
|
80
81
|
moreActionRouter = LibFunction.getRouter(source.actionRouters, field.moreActionRouterKey);
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
item = Field(field, moreActionRouter,source.labelPlacement);
|
|
84
|
+
item = Field(field, moreActionRouter, source.labelPlacement);
|
|
84
85
|
item.isList = isList;
|
|
85
86
|
switch (field.controlType) {
|
|
86
87
|
case Enum.ControlType.Group:
|
|
@@ -217,10 +218,10 @@ const LibFunction = {
|
|
|
217
218
|
item.is = 'ct-customizecolumns'
|
|
218
219
|
break;
|
|
219
220
|
case Enum.ControlType.Location:
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
221
|
+
moreActionRouter = LibFunction.getRouter(source.actionRouters, field.moreActionRouterKey);
|
|
222
|
+
item = Location(item, moreActionRouter);
|
|
223
|
+
item.is = 'ct-location';
|
|
224
|
+
break;
|
|
224
225
|
case Enum.ControlType.SearchPage: //搜索列表页面
|
|
225
226
|
//item = {};
|
|
226
227
|
item.is = 'ct-searchlist';
|
|
@@ -255,8 +256,8 @@ const LibFunction = {
|
|
|
255
256
|
case Enum.ControlType.Image:
|
|
256
257
|
item.is = 'ct-image'
|
|
257
258
|
break;
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
|
|
260
|
+
case Enum.ControlType.AIChat: //AI
|
|
260
261
|
var router = {};
|
|
261
262
|
if (source.actionRouters) {
|
|
262
263
|
router = source.actionRouters.find((v1) => {
|
|
@@ -270,10 +271,14 @@ const LibFunction = {
|
|
|
270
271
|
} else {
|
|
271
272
|
messages = field.code1 && field.code1 != "[]" ? JSON.parse(field.code1) : [];
|
|
272
273
|
}
|
|
273
|
-
|
|
274
|
+
|
|
274
275
|
item = AIChat.loadFromModel(item, messages, router);
|
|
275
276
|
item.is = 'ct-aichat';
|
|
276
277
|
break;
|
|
278
|
+
case Enum.ControlType.JsonViewer: //JSON预览控件
|
|
279
|
+
item = JsonViewer.loadJsonViewerModel(item);
|
|
280
|
+
item.is = 'ct-jsonviewer';
|
|
281
|
+
break;
|
|
277
282
|
default:
|
|
278
283
|
item = Label(item)
|
|
279
284
|
item.is = 'ct-label'
|
|
@@ -64,7 +64,7 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
|
|
|
64
64
|
toolbarKey: 0,
|
|
65
65
|
downloadUrl: '',
|
|
66
66
|
_scripts: null,
|
|
67
|
-
OriginalColumns:source.content.columns?JSON.parse(JSON.stringify(source.content.columns)):[],
|
|
67
|
+
OriginalColumns: source.content.columns ? JSON.parse(JSON.stringify(source.content.columns)) : [],
|
|
68
68
|
get scripts() {
|
|
69
69
|
if (rtn._scripts !== null) {
|
|
70
70
|
return rtn._scripts;
|
|
@@ -85,6 +85,11 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
|
|
|
85
85
|
set title(v) {
|
|
86
86
|
source.content.title = v;
|
|
87
87
|
},
|
|
88
|
+
get flagShowTitle() {
|
|
89
|
+
let v = false;
|
|
90
|
+
if (source.flagShowTitle) v = source.flagShowTitle;
|
|
91
|
+
return v;
|
|
92
|
+
},
|
|
88
93
|
//源数据
|
|
89
94
|
get source() {
|
|
90
95
|
return source;
|
|
@@ -107,6 +112,7 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
|
|
|
107
112
|
get $rowCount() {
|
|
108
113
|
return source.page.rowCount;
|
|
109
114
|
},
|
|
115
|
+
$totalExecutionTime: '',
|
|
110
116
|
// 表头描述文本(富文本)
|
|
111
117
|
get listHeader() {
|
|
112
118
|
return source.content.topText || '';
|
|
@@ -169,9 +175,9 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
|
|
|
169
175
|
get mainBarWidth() {
|
|
170
176
|
return source.content.mainBarWidth;
|
|
171
177
|
},
|
|
172
|
-
set mainBarWidth(v) {
|
|
178
|
+
set mainBarWidth(v) {
|
|
173
179
|
source.content.mainBarWidth = v;
|
|
174
|
-
},
|
|
180
|
+
},
|
|
175
181
|
//用于移动端列表单元格的布局
|
|
176
182
|
get cellLayout() {
|
|
177
183
|
return source.content.cellLayout;
|
|
@@ -228,28 +234,34 @@ function loadSearchTableModel(source, searchModel, defaultSearchData, action, se
|
|
|
228
234
|
get footer() {
|
|
229
235
|
if (typeof source.content.foot !== 'undefined') {
|
|
230
236
|
var data = source.content.foot;
|
|
231
|
-
var
|
|
232
|
-
if (objs) {
|
|
233
|
-
objs.forEach((v1) => {
|
|
234
|
-
data = data.replace(v1, this[v1.replace('{{', '').replace('}}', '')]);
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
+
var searchTotalText = "";
|
|
237
238
|
if (this.$vue && this.$vue.searchStrat && this.$vue.searchEnd) {
|
|
238
239
|
let searchTotal = this.$vue.searchEnd - this.$vue.searchStrat;
|
|
239
240
|
if (searchTotal > 0) {
|
|
240
|
-
if (data.indexOf(
|
|
241
|
-
|
|
241
|
+
if (data.indexOf("totalExecutionTime") > -1) {
|
|
242
|
+
rtn.$totalExecutionTime = searchTotal;
|
|
242
243
|
}
|
|
243
244
|
else {
|
|
244
|
-
|
|
245
|
+
if (data.indexOf('总耗时') > -1 || data.indexOf('總耗時') > -1) {
|
|
246
|
+
searchTotalText = " " + searchTotal + " 毫秒";
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
searchTotalText = " 总耗时 " + searchTotal + " 毫秒";
|
|
250
|
+
}
|
|
245
251
|
}
|
|
246
|
-
|
|
247
252
|
}
|
|
248
253
|
}
|
|
249
254
|
else {
|
|
250
255
|
data = data.replace("总耗时", "").replace("總耗時", "");
|
|
251
256
|
}
|
|
252
|
-
|
|
257
|
+
var objs = data.match(/({{[^}]+}})/g);
|
|
258
|
+
if (objs) {
|
|
259
|
+
objs.forEach((v1) => {
|
|
260
|
+
data = data.replace(v1, this[v1.replace('{{', '').replace('}}', '')]);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return data + searchTotalText;
|
|
253
265
|
}
|
|
254
266
|
else {
|
|
255
267
|
return '';
|
|
@@ -805,7 +817,7 @@ function apiData(model, callback) {
|
|
|
805
817
|
model.flagMoreData = response.page.flagMoreData;
|
|
806
818
|
}
|
|
807
819
|
if (response.content.updateTableColumns && response.page.pageIndex <= 1
|
|
808
|
-
&&JSON.stringify(model.OriginalColumns) !== JSON.stringify(response.content.columns)) {
|
|
820
|
+
&& JSON.stringify(model.OriginalColumns) !== JSON.stringify(response.content.columns)) {
|
|
809
821
|
model.columns = response.content.columns;
|
|
810
822
|
if (model.template) {
|
|
811
823
|
// var tempLoader = template.loader(model.template).default;
|
|
@@ -1043,7 +1055,7 @@ function getCurrentRowApiData(model, callback, rtnData, router) {
|
|
|
1043
1055
|
model.listFooter = response.content.bottomText;
|
|
1044
1056
|
}
|
|
1045
1057
|
if (response.content.updateTableColumns && response.page.pageIndex <= 1
|
|
1046
|
-
&&JSON.stringify(model.OriginalColumns) !== JSON.stringify(response.content.columns)
|
|
1058
|
+
&& JSON.stringify(model.OriginalColumns) !== JSON.stringify(response.content.columns)
|
|
1047
1059
|
) {
|
|
1048
1060
|
model.columns = response.content.columns;
|
|
1049
1061
|
if (model.template) {
|
package/src/main.js
CHANGED
|
@@ -21,7 +21,7 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
app.use(centaline, {
|
|
24
|
-
baseUrl: "http://10.88.22.
|
|
24
|
+
baseUrl: "http://10.88.22.13:7080/ibs-api/",
|
|
25
25
|
//baseUrl:"http://10.88.22.13:7070/onecard-api/",
|
|
26
26
|
//baseUrl: "https://kq-api.centaline.com.cn/onecard-api/",
|
|
27
27
|
//baseUrl: "http://10.88.22.13:6060/onecard-api/",
|
|
@@ -65,7 +65,7 @@ app.use(centaline, {
|
|
|
65
65
|
//获取请求头
|
|
66
66
|
getRequestHeaders: function () {
|
|
67
67
|
return {
|
|
68
|
-
authobject: '{
|
|
68
|
+
authobject: '{token:"T5067-1993594422771769344",platform:"WEB"}',
|
|
69
69
|
//oldToken: 'd92d4a3b-2274-42e8-96f0-100ffb579b6e',
|
|
70
70
|
//authObject: '{token:"jiangzf-1958445358178844672",platform:"WEB"}',
|
|
71
71
|
//authObject: '{EmpID:"Token_4e09499b-4b76-46df-9ce5-5498d48ed062",MachineCode:"ae184643-f8e2-453c-a752-ba82612b592f",SSO_Token:"SSOToken_4e09499b-4b76-46df-9ce5-5498d48ed062",Platform:"WEB"}',
|
package/src/utils/Enum.js
CHANGED
package/src/views/Form.vue
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="form-app" class="data-driven" style="width:100%;height:100%;overflow:auto">
|
|
3
|
-
<ct-form :api="'/
|
|
3
|
+
<ct-form :api="'/propertyTender/readDetail'" :apiParam="apiParam"></ct-form>
|
|
4
4
|
<!-- <ct-textbox :source="source"></ct-textbox> -->
|
|
5
5
|
<ct-dialoglist ref="dialogList"></ct-dialoglist>
|
|
6
6
|
</div>
|
package/src/views/SearchList.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="app-search" style="width:100%;height:100%;position: fixed;">
|
|
3
|
-
<ct-searchlist :apiParam="apiParam" :searchConditionApi="'
|
|
4
|
-
:searchDataApi="'
|
|
3
|
+
<ct-searchlist :apiParam="apiParam" :searchConditionApi="'/UIResourceList/getLayoutOfSearch'"
|
|
4
|
+
:searchDataApi="'/UIResourceList/getListOfSearchModel'"></ct-searchlist>
|
|
5
5
|
|
|
6
6
|
<!-- <ct-searchlist :apiParam="apiParam" :searchConditionApi="'/EmployeeMaternityList/getLayoutOfSearch'"
|
|
7
7
|
:searchDataApi="'/EmployeeMaternityList/getListOfSearchModel'"></ct-searchlist> -->
|
package/src/views/Tree.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="app-Tree" style="height:100%;position: fixed;width:100%;padding: 10px;">
|
|
3
3
|
<ct-treelist :flagsearch="true" :apiParam="apiParam" :leftWidth="'280'"
|
|
4
|
-
:searchConditionApi="'/
|
|
4
|
+
:searchConditionApi="'/SystemParameterCatalogList/getLayoutOfSearch'" :searchDataApi="'/SystemParameterCatalogList/getListOfSearchModel'"
|
|
5
5
|
@loaded="loaded"></ct-treelist>
|
|
6
6
|
<!-- <ct-textbox :source="source"></ct-textbox> -->
|
|
7
7
|
<ct-dialoglist></ct-dialoglist>
|