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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.2.48",
3
+ "version": "1.2.51",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
Binary file
@@ -800,4 +800,7 @@ html {
800
800
  }
801
801
  .el-input-group{
802
802
  line-height: 26px;
803
- }
803
+ }
804
+
805
+
806
+
@@ -108,6 +108,9 @@
108
108
  min-height: 26px;
109
109
  line-height: 25px;
110
110
  }
111
+ .ct-checkbox .lableNaN{
112
+ padding-left: 3px!important;
113
+ }
111
114
  .cover-list-item .el-checkbox{
112
115
  margin-right: 10px!important;
113
116
  }
@@ -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" class="ct-PropertySimpleDetailRET" v-if="pageType=='PropertySimpleDetailRET'"></ct-PropertySimpleDetailRET>
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
- 1111111111111111111111
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.setDetailHeight();
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.loadCommission();
56
- this.setDetailHeight();
105
+ this.setDetailStyle();
57
106
  this.$nextTick(() => {
58
107
  window.addEventListener("resize", (ev) => {
59
- self.setDetailHeight();
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"></ct-Detail>
23
- <ct-SearchSideMenu :sideBarMenuRight="sideBarMenuRight" :sideBarStatus="sideBarStatus"
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
- if(!this.$refs.table.model.rowSelectRouter)this.flagSideBar=false;
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.cancelBubble = true;
618
- ev.stopPropagation();
619
- ev.preventDefault();
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
- return source.controlLabel + this.labelDelimiter || '';
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;
@@ -23,6 +23,9 @@ const Router = function (source) {
23
23
  get actionForSearch() {
24
24
  return source.actionForSearch;
25
25
  },
26
+ get actionSource() {
27
+ return source.actionSource;
28
+ },
26
29
  get onClick() {
27
30
  return source.onChanged;
28
31
  },
@@ -229,6 +229,10 @@ const Enum = {
229
229
  /// 重复控件
230
230
  /// </summary>
231
231
  Repeat: 47,
232
+ /// <summary>
233
+ /// 复合控件
234
+ /// </summary>
235
+ Compound: 48,
232
236
  },
233
237
 
234
238
  //返回状态码
@@ -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;