centaline-data-driven 1.2.48 → 1.2.51
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/build/centaline/centaline.path.js +1 -0
- package/package.json +1 -1
- package/src/assets/ewmA.png +0 -0
- package/src/centaline/css/common.css +4 -1
- package/src/centaline/css/max.css +3 -0
- package/src/centaline/dynamicCheckbox/src/dynamicCheckbox.vue +1 -1
- package/src/centaline/dynamicCompound/index.js +14 -0
- package/src/centaline/dynamicCompound/src/dynamicCompound.vue +89 -0
- package/src/centaline/dynamicDetail/src/dynamicDetail.vue +14 -1
- package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +78 -19
- package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +41 -5
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +7 -3
- package/src/centaline/loader/src/ctl/Base.js +8 -1
- package/src/centaline/loader/src/ctl/Compound.js +59 -0
- package/src/centaline/loader/src/ctl/Router.js +3 -0
- package/src/centaline/loader/src/ctl/lib/Enum.js +4 -0
- package/src/centaline/loader/src/ctl/lib/LibFunction.js +5 -0
- package/src/centaline/loader/src/ctl.js +1 -0
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
|
@@ -43,6 +43,7 @@ const paths = {
|
|
|
43
43
|
"dynamicPhotoSelectList": "./src/centaline/dynamicPhotoSelectList/index.js",//图片选择列表
|
|
44
44
|
"dynamicViewer": "./src/centaline/dynamicViewer/index.js",//图片选择列表
|
|
45
45
|
"dynamicRepeat": "./src/centaline/dynamicRepeat/index.js",//重复控件
|
|
46
|
+
"dynamicCompound": "./src/centaline/dynamicCompound/index.js",//复合控件
|
|
46
47
|
},
|
|
47
48
|
"plugs": {
|
|
48
49
|
"api": "./src/centaline/api/index.js",//调用API插件
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div v-if="model.showLabel && model.label" class="el-input-group__prepend" :class="[model.labelClass]">
|
|
6
6
|
{{model.label}}
|
|
7
7
|
</div>
|
|
8
|
-
<div class="ct-checkbox-mian cover-list-item" :class="[model.showLabel?'showLabel':'',model.value !== ''?'hasValue':'']">
|
|
8
|
+
<div class="ct-checkbox-mian cover-list-item" :class="[model.showLabel?'showLabel':'',model.value !== ''?'hasValue':'',model.label?'':'lableNaN']">
|
|
9
9
|
<el-checkbox-group v-model="model.checkedItemArr" @change="changeHandler1">
|
|
10
10
|
<el-checkbox :disabled="model.lock" v-for="item in model.options" :label="item[model.optionAttrs.value]" :key="item[model.optionAttrs.value]">{{item[model.optionAttrs.label]}}</el-checkbox>
|
|
11
11
|
<span v-if="!model.lock" class="cover-list-item-span max-cover-list-item">
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import dynamicCompound from './src/dynamicCompound'
|
|
2
|
+
import api from '../api/index'
|
|
3
|
+
|
|
4
|
+
dynamicCompound.install = function (Vue) {
|
|
5
|
+
Vue.component(dynamicCompound.name, dynamicCompound);
|
|
6
|
+
|
|
7
|
+
Vue.use(api);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (typeof window !== 'undefined' && window.Vue) {
|
|
11
|
+
window.Vue.use(dynamicCompound);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default dynamicCompound;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-row v-if="model.fields.length > 0">
|
|
3
|
+
<el-col v-for="(col, index) in model.fields" :key="index" v-if="col.show !== false" :span="col.colspan" :class="index>0&&col.label==''?'complex-left-10':''">
|
|
4
|
+
<component ref="Fields" :is="col.is" :vmodel="col" :api="model.OptApi" v-bind="col.bindPara"
|
|
5
|
+
@click="fieldClickHandler(col,index)" @change="changeHandler(col,index)"
|
|
6
|
+
@input="inputHandler(col,index)"></component>
|
|
7
|
+
</el-col>
|
|
8
|
+
</el-row>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
var ctSpan = {
|
|
13
|
+
props: {
|
|
14
|
+
vmodel: Object,
|
|
15
|
+
},
|
|
16
|
+
data: function () {
|
|
17
|
+
return {
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
methods: {
|
|
22
|
+
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default {
|
|
27
|
+
name: 'ct-compound',
|
|
28
|
+
components: {
|
|
29
|
+
'ct-span': ctSpan
|
|
30
|
+
},
|
|
31
|
+
props: {
|
|
32
|
+
vmodel: Object,
|
|
33
|
+
api: String
|
|
34
|
+
},
|
|
35
|
+
data() {
|
|
36
|
+
return {
|
|
37
|
+
model: null,
|
|
38
|
+
foucus: false,
|
|
39
|
+
itemKey: Math.random()
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
created() {
|
|
43
|
+
let self = this;
|
|
44
|
+
this.model = this.vmodel;
|
|
45
|
+
this.model.OptApi = this.api;
|
|
46
|
+
},
|
|
47
|
+
methods: {
|
|
48
|
+
fieldsValidExcute() {
|
|
49
|
+
var self = this;
|
|
50
|
+
var rtnBool = true;
|
|
51
|
+
if (typeof self.$refs.Fields !== 'undefined') {
|
|
52
|
+
self.$refs.Fields.forEach((f) => {
|
|
53
|
+
if (typeof f.validExcute !== 'undefined') {
|
|
54
|
+
if (!f.validExcute()) {
|
|
55
|
+
rtnBool = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return rtnBool;
|
|
61
|
+
},
|
|
62
|
+
validExcute() {
|
|
63
|
+
var self = this;
|
|
64
|
+
var rtnBool = true;
|
|
65
|
+
if (!self.fieldsValidExcute()) {
|
|
66
|
+
rtnBool = false;
|
|
67
|
+
}
|
|
68
|
+
return rtnBool;
|
|
69
|
+
},
|
|
70
|
+
changeHandler(field,index) {
|
|
71
|
+
var self = this;
|
|
72
|
+
this.model.change = field.change;
|
|
73
|
+
self.$emit('change');
|
|
74
|
+
},
|
|
75
|
+
inputHandler(field, index) {
|
|
76
|
+
var self = this;
|
|
77
|
+
this.model.input = field.input;//当前小组件事件作为大组件事件
|
|
78
|
+
self.$emit('input');
|
|
79
|
+
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
</script>
|
|
84
|
+
<style>
|
|
85
|
+
.complex-left-10 {
|
|
86
|
+
padding-left: 10px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
</style>
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<ct-PropertyDetailOFI :api="api" :apiParam="apiParam" class="ct-PropertyDetailOFI" v-if="pageType=='PropertyDetailOFI'"></ct-PropertyDetailOFI>
|
|
4
4
|
<ct-PropertyDetailRET :api="api" :apiParam="apiParam" class="ct-PropertyDetailRET" v-if="pageType=='PropertyDetailRET'"></ct-PropertyDetailRET>
|
|
5
|
-
<ct-PropertySimpleDetailRET :api="api" :apiParam="apiParam"
|
|
5
|
+
<ct-PropertySimpleDetailRET :api="api" :apiParam="apiParam" :selectIndex="selectIndex" :rowCount="rowCount" class="ct-PropertySimpleDetailRET"
|
|
6
|
+
@clickNextHandler="clickNextHandler" @clickPrevHandler="clickPrevHandler"
|
|
7
|
+
v-if="pageType=='PropertySimpleDetailRET'" @closeSideHandler="closeSideHandler"></ct-PropertySimpleDetailRET>
|
|
6
8
|
</div>
|
|
7
9
|
</template>
|
|
8
10
|
|
|
@@ -22,6 +24,8 @@
|
|
|
22
24
|
api: String,
|
|
23
25
|
apiParam: Object,
|
|
24
26
|
pageType: String,
|
|
27
|
+
selectIndex:Number,
|
|
28
|
+
rowCount:Number,
|
|
25
29
|
},
|
|
26
30
|
data() {
|
|
27
31
|
return {
|
|
@@ -32,6 +36,15 @@
|
|
|
32
36
|
this.model = this.vmodel;
|
|
33
37
|
},
|
|
34
38
|
methods: {
|
|
39
|
+
closeSideHandler() {
|
|
40
|
+
this.$emit('closeSideHandler');
|
|
41
|
+
},
|
|
42
|
+
clickNextHandler() {
|
|
43
|
+
this.$emit('clickNextHandler');
|
|
44
|
+
},
|
|
45
|
+
clickPrevHandler() {
|
|
46
|
+
this.$emit('clickPrevHandler');
|
|
47
|
+
},
|
|
35
48
|
}
|
|
36
49
|
}
|
|
37
50
|
</script>
|
|
@@ -1,26 +1,76 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div ref="main" class="main" v-if="model!==null">
|
|
3
|
-
|
|
3
|
+
<div style="height:36px;margin-top: 10px;display: flex;border-bottom: solid 2px #EE6B6B;">
|
|
4
|
+
<img src="../../../assets/ewmA.png" alt="" style="width: 26px;height: 26px;vertical-align: bottom;margin-left:22px;cursor: pointer">
|
|
5
|
+
<div :style="{'width':topWidth+'px'}" style="font-size: 14px;color: #333333;padding-left: 10px;line-height: 26px;">
|
|
6
|
+
<span>{{model.fields1Dic.PropertyNo.label}}</span>
|
|
7
|
+
<span>{{model.fields1Dic.PropertyNo.value}}</span>
|
|
8
|
+
</div>
|
|
9
|
+
<img :class="{'domDisabled':selectIndex<=0}" @click="clickPrevHandler" src="../../../assets/T.png" alt=""
|
|
10
|
+
style="width: 26px;height: 26px;vertical-align: bottom;margin-right:11px;cursor: pointer">
|
|
11
|
+
<img :class="{'domDisabled':selectIndex===rowCount-1}" @click="clickNextHandler" src="../../../assets/B.png" alt=""
|
|
12
|
+
style="width: 26px;height: 26px;vertical-align: bottom;margin-right:8px;cursor: pointer">
|
|
13
|
+
<div class="el-icon-close cursor" style="padding-top: 5px;" @click="closeSideHandler"></div>
|
|
14
|
+
</div>
|
|
15
|
+
<div style="padding-left: 20px;padding-right: 20px;">
|
|
16
|
+
<div style="margin-top: 18px;">
|
|
17
|
+
<div style="font-weight: Bold;font-size: 16px;color: #333333;">
|
|
18
|
+
<span>{{model.fields1Dic.EstateName.value}}</span>
|
|
19
|
+
<span>{{model.fields1Dic.BuildingName.value}}</span>
|
|
20
|
+
<span>{{model.fields1Dic.RoomNo.value}}</span>
|
|
21
|
+
<div style="float:right;border: 1px solid #E0E0E0;font-size: 12px;color: #333333;padding-top: 3px;
|
|
22
|
+
width: 68px;height: 26px;border-radius: 6px;text-align: center;">
|
|
23
|
+
{{model.fields1Dic.StatusName.value}}
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<div style="font-size: 12px;color: #999999;margin-top: 7px;">
|
|
27
|
+
<span>{{model.fields1Dic.DistrictName.value}}</span>
|
|
28
|
+
<span>{{model.fields1Dic.AreaName.value}}</span>
|
|
29
|
+
</div>
|
|
30
|
+
<div style="margin-top: 24px;">
|
|
31
|
+
<div v-for="(tag, index) in model.actionRouterLabel" :key="index"
|
|
32
|
+
:style="{color:tag.textColor,backgroundColor:tag.bgColor,borderColor:tag.borderColor}">
|
|
33
|
+
{{tag.label}}
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div style="display: flex;margin-top: 16px;height: 65px;border: 1px solid #ECEFF2;box-shadow: 0 2px 4px 0 rgba(0,0,0,0.06);border-radius: 6px;text-align: center;">
|
|
38
|
+
<div style="width: 33.33%;">
|
|
39
|
+
<div style="margin-top: 13px;font-size: 12px;">{{model.fields1Dic.AreaNet.label}}</div>
|
|
40
|
+
<div style="margin-top: 7px;font-size: 14px;font-weight: Bold;color: #EE6B6B;">{{model.fields1Dic.AreaNet.value}}{{model.fields1Dic.AreaNet.unitName}}</div>
|
|
41
|
+
</div>
|
|
42
|
+
<div style="width: 33.33%;">
|
|
43
|
+
<div style="margin-top: 13px;font-size: 12px;">{{model.fields1Dic.Price.label}}</div>
|
|
44
|
+
<div style="margin-top: 7px;font-size: 14px;font-weight: Bold;color: #EE6B6B;">{{model.fields1Dic.Price.value}}{{model.fields1Dic.Price.unitName}}</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div style="width: 33.33%;">
|
|
47
|
+
<div style="margin-top: 13px;font-size: 12px;">{{model.fields1Dic.FloorName.label}}</div>
|
|
48
|
+
<div style="margin-top: 7px;font-size: 14px;font-weight: Bold;color: #EE6B6B;">{{model.fields1Dic.FloorName.value}}</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
4
52
|
</div>
|
|
5
53
|
</template>
|
|
6
54
|
|
|
7
55
|
<script>
|
|
8
56
|
import dynamicElement from '../../mixins/dynamicElement';
|
|
9
|
-
import dynamicContactList from './dynamicContactList.vue';
|
|
10
57
|
export default {
|
|
11
58
|
name: 'ct-PropertySimpleDetailRET',
|
|
12
59
|
mixins: [dynamicElement],
|
|
13
60
|
components: {
|
|
14
|
-
'ct-contactList': dynamicContactList,
|
|
15
61
|
},
|
|
16
62
|
props: {
|
|
17
63
|
vmodel: Object,
|
|
18
64
|
api: String,
|
|
19
65
|
apiParam: Object,
|
|
66
|
+
selectIndex:Number,
|
|
67
|
+
rowCount:Number,
|
|
68
|
+
},
|
|
69
|
+
computed: {
|
|
20
70
|
},
|
|
21
71
|
data() {
|
|
22
72
|
return {
|
|
23
|
-
|
|
73
|
+
topWidth:300,
|
|
24
74
|
}
|
|
25
75
|
},
|
|
26
76
|
mounted() {
|
|
@@ -32,14 +82,14 @@
|
|
|
32
82
|
else if (typeof self.source !== 'undefined') {
|
|
33
83
|
self.loaderObj.Detail(self.source,null,self.load);
|
|
34
84
|
}
|
|
35
|
-
else if (typeof self.api !== 'undefined') {
|
|
85
|
+
else if (typeof self.api !== 'undefined' && self.apiParam) {
|
|
36
86
|
self.loaderObj.Detail(self.api,self.apiParam, self.load);
|
|
37
87
|
}
|
|
38
88
|
});
|
|
39
89
|
},
|
|
40
90
|
activated() {
|
|
41
91
|
this.$nextTick(() => {
|
|
42
|
-
this.
|
|
92
|
+
this.setDetailStyle();
|
|
43
93
|
})
|
|
44
94
|
},
|
|
45
95
|
methods: {
|
|
@@ -52,14 +102,20 @@
|
|
|
52
102
|
this.model.getTags2List(0);
|
|
53
103
|
}
|
|
54
104
|
this.loadOperation();
|
|
55
|
-
this.
|
|
56
|
-
this.setDetailHeight();
|
|
105
|
+
this.setDetailStyle();
|
|
57
106
|
this.$nextTick(() => {
|
|
58
107
|
window.addEventListener("resize", (ev) => {
|
|
59
|
-
self.
|
|
108
|
+
self.setDetailStyle();
|
|
60
109
|
});
|
|
61
110
|
});
|
|
62
111
|
},
|
|
112
|
+
setDetailStyle() {
|
|
113
|
+
this.$nextTick(() => {
|
|
114
|
+
if(this.$refs.main){
|
|
115
|
+
this.topWidth=this.$refs.main.clientWidth-140;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
},
|
|
63
119
|
loadFields() {
|
|
64
120
|
var self = this;
|
|
65
121
|
self.collapse=[];
|
|
@@ -106,9 +162,6 @@
|
|
|
106
162
|
this.model._operationRouters=[];
|
|
107
163
|
this.model.getOperationList();
|
|
108
164
|
},
|
|
109
|
-
loadCommission() {
|
|
110
|
-
this.model.getCommissionList();
|
|
111
|
-
},
|
|
112
165
|
lookOwner() {
|
|
113
166
|
this.codeOwner = true
|
|
114
167
|
},
|
|
@@ -118,13 +171,6 @@
|
|
|
118
171
|
this.model.getTags2List(i);
|
|
119
172
|
}
|
|
120
173
|
},
|
|
121
|
-
setDetailHeight() {
|
|
122
|
-
this.$nextTick(() => {
|
|
123
|
-
if (this.$refs.detail && this.$refs.main) {
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
},
|
|
128
174
|
handleSelect(key, keyPath) {
|
|
129
175
|
let i=key.index;
|
|
130
176
|
this.model.activeIndex1=i;
|
|
@@ -291,6 +337,19 @@
|
|
|
291
337
|
clickAcion(field,submitData);
|
|
292
338
|
}
|
|
293
339
|
},
|
|
340
|
+
closeSideHandler() {
|
|
341
|
+
this.$emit('closeSideHandler');
|
|
342
|
+
},
|
|
343
|
+
setBtnHandler(index,count) {
|
|
344
|
+
this.selectIndex=index;
|
|
345
|
+
this.count=count;
|
|
346
|
+
},
|
|
347
|
+
clickNextHandler() {
|
|
348
|
+
this.$emit('clickNextHandler');
|
|
349
|
+
},
|
|
350
|
+
clickPrevHandler() {
|
|
351
|
+
this.$emit('clickPrevHandler');
|
|
352
|
+
},
|
|
294
353
|
}
|
|
295
354
|
}
|
|
296
355
|
</script>
|
|
@@ -14,13 +14,17 @@
|
|
|
14
14
|
|
|
15
15
|
<ct-searchtable ref="table" :api="searchDataApi" :searchStatsApi="searchStatsApi" :from="from" @loaded="tableLoaded"
|
|
16
16
|
@toolbarClick="toolbarClickHandler" @refreshParent="refreshParentHandler" :key="reloadKeyTable" @searchComplate="searchComplate()"
|
|
17
|
+
@rowClickHandle="rowClickHandle"
|
|
17
18
|
@showTitle="showTitleHandler"></ct-searchtable>
|
|
18
19
|
</div>
|
|
19
20
|
<div v-if="flagSideBar && flagSideBarOfData"
|
|
20
21
|
:style="{'height': pageHeight? pageHeight:'100%','width':sideBarWidth+'px',right:sideBarRight+'px'}"
|
|
21
22
|
class="sidebar">
|
|
22
|
-
<ct-Detail :api="sideBarApi" :apiParam="sideBarApiParam" :pageType="sideBarPageType"
|
|
23
|
-
|
|
23
|
+
<ct-Detail ref="detail" :api="sideBarApi" :apiParam="sideBarApiParam" :pageType="sideBarPageType"
|
|
24
|
+
:selectIndex="selectIndex" :rowCount="rowCount" :key="detailKey"
|
|
25
|
+
@clickNextHandler="clickNextHandler" @clickPrevHandler="clickPrevHandler"
|
|
26
|
+
@closeSideHandler="closeSideHandler"></ct-Detail>
|
|
27
|
+
<ct-SearchSideMenu ref="sideMenu" :sideBarMenuRight="sideBarMenuRight" :sideBarStatus="sideBarStatus"
|
|
24
28
|
@sideMenuClickHandler="sideMenuClickHandler"></ct-SearchSideMenu>
|
|
25
29
|
</div>
|
|
26
30
|
</div>
|
|
@@ -32,7 +36,6 @@
|
|
|
32
36
|
import dynamicSearchTable from './dynamicSearchTable.vue';
|
|
33
37
|
import dynamicSearchSideMenu from './dynamicSearchSideMenu.vue';
|
|
34
38
|
import progress from '../../progress/src/progress.vue';
|
|
35
|
-
import dynamicDetail from '../../dynamicDetail/src/dynamicDetail.vue';
|
|
36
39
|
export default {
|
|
37
40
|
name: 'ct-searchlist',
|
|
38
41
|
mixins: [dynamicElement],
|
|
@@ -42,7 +45,7 @@
|
|
|
42
45
|
'ct-progress': progress,
|
|
43
46
|
'ct-searchcategory': dynamicSearchCategory,
|
|
44
47
|
'ct-SearchSideMenu': dynamicSearchSideMenu,
|
|
45
|
-
'ct-Detail': dynamicDetail,
|
|
48
|
+
'ct-Detail': ()=>import('../../dynamicDetail/src/dynamicDetail.vue'),
|
|
46
49
|
},
|
|
47
50
|
props: {
|
|
48
51
|
vmodel: Object,
|
|
@@ -97,6 +100,9 @@
|
|
|
97
100
|
sideBarApi:'',
|
|
98
101
|
sideBarApiParam:null,
|
|
99
102
|
sideBarPageType:'',
|
|
103
|
+
selectIndex:-1,
|
|
104
|
+
rowCount:0,
|
|
105
|
+
detailKey:0,
|
|
100
106
|
}
|
|
101
107
|
},
|
|
102
108
|
methods: {
|
|
@@ -171,7 +177,14 @@
|
|
|
171
177
|
if(this.$refs.table.model.listData.length>0){
|
|
172
178
|
this.flagSideBar=this.$refs.table.model.flagSideBar;
|
|
173
179
|
this.flagDefaultDisplaySideBar=this.$refs.table.model.flagDefaultDisplaySideBar;
|
|
174
|
-
|
|
180
|
+
|
|
181
|
+
if(this.$refs.table.model.rowSelectRouter){
|
|
182
|
+
this.sideBarApi=this.$refs.table.model.rowSelectRouter.action;
|
|
183
|
+
this.sideBarPageType=this.$refs.table.model.rowSelectRouter.actionSource;
|
|
184
|
+
}
|
|
185
|
+
else{
|
|
186
|
+
this.flagSideBar=false;
|
|
187
|
+
}
|
|
175
188
|
|
|
176
189
|
if(this.flagSideBar){
|
|
177
190
|
if(this.flagDefaultDisplaySideBar && !this.sideBarStatus){
|
|
@@ -186,6 +199,19 @@
|
|
|
186
199
|
}
|
|
187
200
|
}
|
|
188
201
|
},
|
|
202
|
+
rowClickHandle() {
|
|
203
|
+
var self = this;
|
|
204
|
+
if(self.selectIndex!==self.$refs.table.model.selectIndex){
|
|
205
|
+
self.selectIndex=self.$refs.table.model.selectIndex;
|
|
206
|
+
self.rowCount=self.$refs.table.model.listData.length;
|
|
207
|
+
self.sideBarApiParam = {};
|
|
208
|
+
self.$refs.table.model.rowSelectRouter.submitListField.forEach((k) => {
|
|
209
|
+
self.sideBarApiParam[k] = self.$refs.table.model.listData[self.selectIndex][k];
|
|
210
|
+
});
|
|
211
|
+
self.sideBarApiParam.actionType = self.$refs.table.model.rowSelectRouter.actionType;
|
|
212
|
+
self.detailKey = self.detailKey+1;
|
|
213
|
+
}
|
|
214
|
+
},
|
|
189
215
|
sideMenuClickHandler(v) {
|
|
190
216
|
if(v=='open'){
|
|
191
217
|
this.sideBarStatus ='close';
|
|
@@ -200,8 +226,18 @@
|
|
|
200
226
|
this.sideBarWidth=this.$refs.table.model.sideBarWidth;
|
|
201
227
|
this.searchWidth=this.$refs.main.clientWidth-this.sideBarWidth;
|
|
202
228
|
this.sideBarMenuRight=this.sideBarWidth-2;
|
|
229
|
+
this.rowClickHandle();
|
|
203
230
|
}
|
|
204
231
|
},
|
|
232
|
+
closeSideHandler() {
|
|
233
|
+
this.$refs.sideMenu.clickHandler();
|
|
234
|
+
},
|
|
235
|
+
clickNextHandler() {
|
|
236
|
+
this.$refs.table.rowKeyDownHandle(null,1);
|
|
237
|
+
},
|
|
238
|
+
clickPrevHandler() {
|
|
239
|
+
this.$refs.table.rowKeyDownHandle(null,-1);
|
|
240
|
+
},
|
|
205
241
|
}
|
|
206
242
|
}
|
|
207
243
|
</script>
|
|
@@ -558,6 +558,7 @@
|
|
|
558
558
|
rowClickHandle(ev, index) {
|
|
559
559
|
this.model.selectIndex = index;
|
|
560
560
|
this.rowColorChange();
|
|
561
|
+
this.$emit('rowClickHandle');
|
|
561
562
|
ev.cancelBubble = true;
|
|
562
563
|
ev.stopPropagation();
|
|
563
564
|
},
|
|
@@ -597,6 +598,7 @@
|
|
|
597
598
|
}
|
|
598
599
|
this.rowColorChange();
|
|
599
600
|
this.resetScroll();
|
|
601
|
+
this.$emit('rowClickHandle');
|
|
600
602
|
if (!this.isBusy) {
|
|
601
603
|
if (this.model.selectIndex === this.model.listData.length - 1) {
|
|
602
604
|
self.isBusy = true;
|
|
@@ -614,9 +616,11 @@
|
|
|
614
616
|
});
|
|
615
617
|
}
|
|
616
618
|
}
|
|
617
|
-
ev
|
|
618
|
-
|
|
619
|
-
|
|
619
|
+
if(ev){
|
|
620
|
+
ev.cancelBubble = true;
|
|
621
|
+
ev.stopPropagation();
|
|
622
|
+
ev.preventDefault();
|
|
623
|
+
}
|
|
620
624
|
},
|
|
621
625
|
searchComplate(m, defaultSearch) {
|
|
622
626
|
var self = this;
|
|
@@ -25,7 +25,14 @@ const Base = function (source) {
|
|
|
25
25
|
source.fieldName2 = v;
|
|
26
26
|
},
|
|
27
27
|
get label() {
|
|
28
|
-
|
|
28
|
+
let l='';
|
|
29
|
+
if(source.controlLabel){
|
|
30
|
+
l=source.controlLabel;
|
|
31
|
+
}
|
|
32
|
+
if(source.labelDelimiter){
|
|
33
|
+
l=l+source.labelDelimiter;
|
|
34
|
+
}
|
|
35
|
+
return l;
|
|
29
36
|
},
|
|
30
37
|
set label(v) {
|
|
31
38
|
source.controlLabel = v;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import base from '../../index';
|
|
2
|
+
import Base from './Base';
|
|
3
|
+
import LibFunction from './lib/LibFunction';
|
|
4
|
+
import common from '../../../common/index';
|
|
5
|
+
import Router from './Router';
|
|
6
|
+
import Enum from './lib/Enum';
|
|
7
|
+
import Vue from 'vue';
|
|
8
|
+
|
|
9
|
+
const Compound = function (source, dateType) {
|
|
10
|
+
var rtn = {
|
|
11
|
+
get label() {
|
|
12
|
+
let l = '';
|
|
13
|
+
if (source.controlLabel) {
|
|
14
|
+
l = source.controlLabel;
|
|
15
|
+
}
|
|
16
|
+
if (source.labelDelimiter) {
|
|
17
|
+
l = l + source.labelDelimiter;
|
|
18
|
+
}
|
|
19
|
+
return l;
|
|
20
|
+
},
|
|
21
|
+
set label(v) {
|
|
22
|
+
source.controlLabel = v;
|
|
23
|
+
},
|
|
24
|
+
getFormObj() {
|
|
25
|
+
var rtnFormObj = {};
|
|
26
|
+
rtn.fields.forEach((f) => {
|
|
27
|
+
if (typeof f.id !== 'undefined') {
|
|
28
|
+
Object.assign(rtnFormObj, f.getFormObj());
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return rtnFormObj;
|
|
32
|
+
},
|
|
33
|
+
_fields: null,//数组,方便遍历
|
|
34
|
+
get fields() {
|
|
35
|
+
if (rtn._fields !== null) {
|
|
36
|
+
return rtn._fields;
|
|
37
|
+
}
|
|
38
|
+
let Index = 0;
|
|
39
|
+
rtn._fields = [];
|
|
40
|
+
for (var key in source.compoundFields) {
|
|
41
|
+
let value = source.compoundFields[key];
|
|
42
|
+
Index++;
|
|
43
|
+
let showLabel = true;
|
|
44
|
+
let item = LibFunction.GetControl(value, source, showLabel, false);
|
|
45
|
+
if (item instanceof Object) {
|
|
46
|
+
item.form = rtn;
|
|
47
|
+
if (Index == 1 && item.label == "") {
|
|
48
|
+
item.label = rtn.label;
|
|
49
|
+
}
|
|
50
|
+
rtn._fields.push(item);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return rtn._fields;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
rtn = base.copy(Base(source), rtn);
|
|
57
|
+
return rtn;
|
|
58
|
+
};
|
|
59
|
+
export default Compound;
|
|
@@ -33,6 +33,7 @@ import SensitiveEye from '../SensitiveEye';
|
|
|
33
33
|
import Cb from '../Cb';
|
|
34
34
|
import PhotoSelect from '../PhotoSelect';
|
|
35
35
|
import Repeat from '../Repeat';
|
|
36
|
+
import Compound from '../Compound';
|
|
36
37
|
|
|
37
38
|
const LibFunction = {
|
|
38
39
|
install(Vue) {
|
|
@@ -218,6 +219,10 @@ const LibFunction = {
|
|
|
218
219
|
item = Repeat(listobj, field);
|
|
219
220
|
item.is = 'ct-repeat';
|
|
220
221
|
break;
|
|
222
|
+
case Enum.ControlType.Compound://复合
|
|
223
|
+
item = Compound(field);
|
|
224
|
+
item.is = 'ct-compound';
|
|
225
|
+
break;
|
|
221
226
|
case Enum.ControlType.Hidden://隐藏控件
|
|
222
227
|
item = Hd(field);
|
|
223
228
|
break;
|
|
@@ -39,6 +39,7 @@ const loader = {
|
|
|
39
39
|
QuickInputSos: require("./ctl/QuickInputSos.js").default,
|
|
40
40
|
ContactList: require("./ctl/ContactList.js").default,
|
|
41
41
|
Repeat: require("./ctl/Repeat.js").default,
|
|
42
|
+
Compound: require("./ctl/Compound.js").default,
|
|
42
43
|
};
|
|
43
44
|
|
|
44
45
|
export default loader;
|