centaline-data-driven 1.2.77 → 1.2.80

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 (28) hide show
  1. package/package.json +1 -1
  2. package/src/Detail.vue +1 -1
  3. package/src/Form.vue +8 -3
  4. package/src/SearchList.vue +9 -3
  5. package/src/centaline/dynamicBtn/src/dynamicBtn.vue +2 -2
  6. package/src/centaline/dynamicContact/src/dynamicContact.vue +5 -1
  7. package/src/centaline/dynamicDetail/src/dynamicContactList.vue +6 -1
  8. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +5 -1
  9. package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +5 -1
  10. package/src/centaline/dynamicForm/src/dynamicForm.vue +20 -19
  11. package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +8 -5
  12. package/src/centaline/dynamicLayout/src/dynamicLayout.vue +149 -32
  13. package/src/centaline/dynamicLayout/src/dynamicLayoutChildren.vue +11 -8
  14. package/src/centaline/dynamicLayout/src/dynamicLayoutChildrenFor.vue +39 -0
  15. package/src/centaline/dynamicLayout/src/dynamicLayoutImage.vue +55 -5
  16. package/src/centaline/dynamicLayout/src/dynamicLayoutLabel.vue +6 -4
  17. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +13 -3
  18. package/src/centaline/loader/src/ctl/Base.js +6 -0
  19. package/src/centaline/loader/src/ctl/CellLayout.js +184 -115
  20. package/src/centaline/loader/src/ctl/Form.js +11 -4
  21. package/src/centaline/loader/src/ctl/FormList.js +33 -12
  22. package/src/centaline/loader/src/ctl/InputNumber.js +0 -3
  23. package/src/centaline/loader/src/ctl/RichText.js +3 -0
  24. package/src/centaline/loader/src/ctl/SearchScreen.js +22 -22
  25. package/src/centaline/loader/src/ctl/lib/LibFunction.js +6 -3
  26. package/src/main.js +7 -4
  27. package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
  28. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.2.77",
3
+ "version": "1.2.80",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
package/src/Detail.vue CHANGED
@@ -10,7 +10,7 @@
10
10
  name: 'DataDrivendetail',
11
11
  data() {
12
12
  return {
13
- apiParam: {actionType: 1,chanceID: "3"} ,
13
+ apiParam: {actionType: 1,chanceID: "1"} ,
14
14
  }
15
15
  },
16
16
  mounted() {
package/src/Form.vue CHANGED
@@ -1,9 +1,8 @@
1
1
  <template>
2
2
  <div id="app-form" class="data-driven" style="width:100%;height:100%;overflow:auto">
3
- <!-- <ct-form :api="'/salematter/squareupload/readDetail'" :apiParam="apiParam"></ct-form> -->
4
3
  <!-- <ct-form :api="'/PropertyRET/getLayoutOfNew'" :apiParam="apiParam"></ct-form> -->
5
4
  <!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
6
- <ct-form :api="'/salematter/priceupload/readDetail'" :apiParam="apiParam"></ct-form>
5
+ <ct-form :api="'/api/third-dept-tran/transaction/detail'" :apiParam="apiParam"></ct-form>
7
6
  <!--<ct-form :api="'api/Form/formdata'"></ct-form>-->
8
7
  <ct-dialog-list></ct-dialog-list>
9
8
  </div>
@@ -18,7 +17,13 @@
18
17
  // apiParam: {headerParam: {}, urlParam: {contractID: "06cad32e-4d0d-4b6f-bd24-16a28629a550", actionType: "0"}}
19
18
  // apiParam: {originalTraId: "1475658732246241281", actionType: 2, chanceID: "1"} ,
20
19
  // apiParam: {originalTraId: "1516290587463507969", actionType: "3", pageStyle: "2", pageTitle: "成交报告",pageOnly: "true"}
21
- apiParam:{"actionType":2}
20
+ apiParam:{
21
+ actionType: 3,
22
+ originalTraId: "1526048947277938690",
23
+ pageOnly: true,
24
+ pageStyle: 2,
25
+ pageTitle: "成交报告"
26
+ }
22
27
  }
23
28
  },
24
29
  methods: {
@@ -4,8 +4,8 @@
4
4
 
5
5
  <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'" :searchDataApi="'/PropertyRETList/getListOfSearchModel'" :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"></ct-searchlist> -->
6
6
 
7
- <ct-searchlist :searchConditionApi="'/salemattersmanage/squareuploadlist/getLayoutOfSearch'"
8
- :searchDataApi="'/salemattersmanage/squareuploadlist/getList'"></ct-searchlist>
7
+ <ct-searchlist :searchConditionApi="'/api/distribution/agentRelationProperty/getLayoutOfSearch'"
8
+ :searchDataApi="'/api/distribution/agentRelationProperty/list'" :apiParam="para"></ct-searchlist>
9
9
 
10
10
  <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
11
11
  :searchDataApi="'/PropertyRETList/getListOfSearchModel'"
@@ -25,7 +25,13 @@
25
25
  name: 'DataDrivenSearch',
26
26
  data() {
27
27
  return {
28
- para:{},
28
+ para:{
29
+ agentId: "1491335181504401409",
30
+ delegateType: "1",
31
+ estateId: "18721",
32
+ estateName: "凯旋路1798号"
33
+
34
+ },
29
35
  // para: {searchFields: {fields: []}, pageAttribute: {pageIndex: 1}, flagSearch: true}
30
36
  // para: {publishID: "1503900718229229568"}
31
37
  // para: {paramKey: "PropertyStatusID", code: "002.001", name: "盘源状态", paramName: "盘源状态"}
@@ -53,7 +53,7 @@
53
53
  </el-button>
54
54
  <el-button v-else class="max"
55
55
  :type="model.isHyperLink ? 'text' : 'primary'"
56
- v-bind="model.attrs" @click="$emit('click',model)"
56
+ v-bind="model.attrs" @click="clickHandle"
57
57
  :style="{color:model.textColor,backgroundColor:model.imgUrl?'transparent':model.bgColor,borderColor:model.imgUrl?'transparent':model.borderColor,padding:model.imgUrl?'0px':null}"
58
58
  :icon="model.icon"
59
59
  :disabled="model.disabled || model.locked">
@@ -149,7 +149,7 @@
149
149
  }
150
150
  }
151
151
  else{
152
- this.$emit('click',this.model);
152
+ this.$emit('click',this.model,this.rowData,this.rowindex);
153
153
  }
154
154
  },
155
155
  callTelClick(data){
@@ -245,10 +245,14 @@
245
245
  };
246
246
  self.$common.openDialog(dialogOption);
247
247
  }
248
- else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
248
+ else if (field.isFormPageInTab) {// 外部框架tab页打开
249
249
  submitData = field.getActionPara(submitData).para;
250
250
  self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle);
251
251
  }
252
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
253
+ submitData = field.getActionPara(submitData).para;
254
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
255
+ }
252
256
  else if (field.isBrowserNewTab) {// 浏览器打开
253
257
  submitData = field.getActionPara(submitData).para;
254
258
  let query = self.$common.objectToQueryStr(submitData);
@@ -359,6 +359,7 @@
359
359
  self.$common.openDialog(dialogOption);
360
360
  }
361
361
  else if (field.isOpenList) {
362
+ submitData = field.getActionPara(submitData).para;
362
363
  var dialogOption = {
363
364
  title: field.pageTitle,
364
365
  pane: self.$common.getParentPane(self),
@@ -385,10 +386,14 @@
385
386
  };
386
387
  self.$common.openDialog(dialogOption);
387
388
  }
388
- else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
389
+ else if (field.isFormPageInTab) {// 外部框架tab页打开
389
390
  submitData = field.getActionPara(submitData).para;
390
391
  self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle);
391
392
  }
393
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
394
+ submitData = field.getActionPara(submitData).para;
395
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
396
+ }
392
397
  else if (field.isBrowserNewTab) {// 浏览器打开
393
398
  submitData = field.getActionPara(submitData).para;
394
399
  let query = self.$common.objectToQueryStr(submitData);
@@ -556,10 +556,14 @@
556
556
  };
557
557
  self.$common.openDialog(dialogOption);
558
558
  }
559
- else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
559
+ else if (field.isFormPageInTab) {// 外部框架tab页打开
560
560
  submitData = field.getActionPara(submitData).para;
561
561
  self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle, self.model,field.dialogWidth);
562
562
  }
563
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
564
+ submitData = field.getActionPara(submitData).para;
565
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
566
+ }
563
567
  else if (field.isBrowserNewTab) {// 浏览器打开
564
568
  submitData = field.getActionPara(submitData).para;
565
569
  let query = self.$common.objectToQueryStr(submitData);
@@ -365,10 +365,14 @@
365
365
  };
366
366
  self.$common.openDialog(dialogOption);
367
367
  }
368
- else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
368
+ else if (field.isFormPageInTab) {// 外部框架tab页打开
369
369
  submitData = field.getActionPara(submitData).para;
370
370
  self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle, self.model,field.dialogWidth);
371
371
  }
372
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
373
+ submitData = field.getActionPara(submitData).para;
374
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
375
+ }
372
376
  else if (field.isBrowserNewTab) {// 浏览器打开
373
377
  submitData = field.getActionPara(submitData).para;
374
378
  let query = self.$common.objectToQueryStr(submitData);
@@ -328,21 +328,7 @@
328
328
  }
329
329
 
330
330
  if (!submitData) {
331
- submitData = {};
332
- var tempFormData = self.model.getFormObj();
333
- if(field.flagAttachSearchCondition){
334
- submitData.jsonData=tempFormData;
335
- }
336
- else{
337
- field.submitFormField.forEach((v) => {
338
- if(tempFormData[v]){
339
- submitData[v] = tempFormData[v];
340
- }
341
- else{
342
- submitData[v] = tempFormData[self.$common.initialsToUpperCase(v)];
343
- }
344
- });
345
- }
331
+ submitData = self.getFileData(field);
346
332
  }
347
333
 
348
334
  if (field.isOpenForm) {
@@ -400,10 +386,14 @@
400
386
  };
401
387
  self.$common.openDialog(dialogOption);
402
388
  }
403
- else if (field.isFormPageInTab || field.isSearchPageInTab) {// 外部框架tab页打开
389
+ else if (field.isFormPageInTab) {// 外部框架tab页打开
404
390
  submitData = field.getActionPara(submitData).para;
405
391
  self.$common.getDataDrivenOpts().handler.openTab(field.action, submitData, field.pageTitle,self.model,field.dialogWidth);
406
392
  }
393
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
394
+ submitData = field.getActionPara(submitData).para;
395
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
396
+ }
407
397
  else if (field.isBrowserNewTab) {// 浏览器打开
408
398
  submitData = field.getActionPara(submitData).para;
409
399
  let query = self.$common.objectToQueryStr(submitData);
@@ -415,8 +405,13 @@
415
405
  }
416
406
  else {
417
407
  submitData = field.getActionPara(submitData).para;
418
- field.doAction(submitData, (data) => {
419
- self.model.doAction(data);
408
+ field.doAction(submitData, (data) => {
409
+ if(field && field.changeCallBackFunName){
410
+ self.changeCallBackHandler(field, field.changeCallBackFunName, data.content);
411
+ }
412
+ else{
413
+ self.model.doAction(data);
414
+ }
420
415
  })
421
416
  }
422
417
  }
@@ -624,6 +619,7 @@
624
619
  return formData;
625
620
  },
626
621
  getFileData(field) {
622
+ var self=this;
627
623
  var submitData = {};
628
624
  var tempFormData = this.model.getFormObj();
629
625
  if(field.flagAttachSearchCondition){
@@ -632,7 +628,12 @@
632
628
  else{
633
629
  if(field.submitFormField){
634
630
  field.submitFormField.forEach((v) => {
635
- submitData[v] = tempFormData[v];
631
+ if(tempFormData[v]){
632
+ submitData[v] = tempFormData[v];
633
+ }
634
+ else{
635
+ submitData[v] = tempFormData[self.$common.initialsToUpperCase(v)];
636
+ }
636
637
  });
637
638
  }
638
639
  }
@@ -22,9 +22,10 @@
22
22
  </template>
23
23
  <template slot-scope="scope">
24
24
  <span v-if="scope.row.isSet">
25
- <component ref="Fields" :is="v.is" :vmodel="model.currentRow.data[v.id]" :api="model.OptApi"
26
- @change="changeHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"
27
- @input="inputHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"></component>
25
+ <component ref="Fields" :is="model.currentRow.data[v.id].locked || model.currentRow.data[v.id].is!==v.is?model.currentRow.data[v.id].is:v.is"
26
+ :vmodel="model.currentRow.data[v.id]" :api="model.OptApi"
27
+ @change="changeHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"
28
+ @input="inputHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"></component>
28
29
  </span>
29
30
  <span v-else-if="v.is=='ct-sensitiveeye'">
30
31
  <component v-if ref="Fields" :is="v.is" :vmodel="scope.row[v.id]" :vrowmodel="scope.row" :api="model.OptApi"></component>
@@ -308,7 +309,8 @@
308
309
  const value = Number(curr);
309
310
  if (!isNaN(value)) {
310
311
  return Number(prev + curr);
311
- } else {
312
+ }
313
+ else {
312
314
  return Number(prev);
313
315
  }
314
316
  }, 0);
@@ -316,7 +318,8 @@
316
318
  if (data[0][column.property].decimals && data[0][column.property].decimals > 0) {
317
319
  sums[index] = sums[index].toFixed(data[0][column.property].decimals);
318
320
  }
319
- } else {
321
+ }
322
+ else {
320
323
  sums[index] = 'N/A';
321
324
  }
322
325
  }
@@ -1,12 +1,11 @@
1
1
  <template>
2
- <div v-loading="loading" class="ct-Layout" v-if="Layout !== null && !loading">
3
- <ct-layoutchildren :rowindex="rowindex" :vmodel="Layout" @click="rolRouterClickHandler"></ct-layoutchildren>
4
- </div>
2
+ <div v-loading="loading" class="ct-Layout" v-if="Layout !== null && !loading">
3
+ <ct-layoutchildren :ref="'layout'+rowindex" :rowindex="rowindex" :vmodel="Layout" @click="rolRouterClickHandler"></ct-layoutchildren>
4
+ </div>
5
5
  </template>
6
6
  <script>
7
7
  import dynamicElement from '../../mixins/dynamicElement'
8
8
  import dynamicLayoutChildren from './dynamicLayoutChildren.vue';
9
- import common from '../../common';
10
9
  export default {
11
10
  name: 'ct-layout',
12
11
  mixins: [dynamicElement],
@@ -24,7 +23,7 @@
24
23
  },
25
24
  data() {
26
25
  return {
27
- Layout:[]
26
+ Layout: []
28
27
  };
29
28
  },
30
29
  created() {
@@ -49,21 +48,71 @@
49
48
  },
50
49
  load(data, cellLayout) {
51
50
  var str = '';
51
+ if (cellLayout.indexOf("for=") != -1) {
52
+ var cellxmlDOM = this.loadXML(cellLayout);
53
+ var listxml = this.getxmlForStr(cellxmlDOM);
54
+
55
+ if (typeof listxml !== 'undefined') {
56
+ for (var j = 0; j < listxml.attributes.length; j++) {
57
+ var attribute = listxml.attributes.item(j);
58
+ if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
59
+ var liststr = "";
60
+ var celllist = this.xmlToString(listxml)
61
+
62
+ var celllistNew = this.loadXML(celllist);
63
+ var newAtt = celllistNew.createAttribute("forrowindex");
64
+ newAtt.nodeValue = "{{forrowindex}}";
65
+ var x = celllistNew.getElementsByTagName("Layout");
66
+ x[0].setAttributeNode(newAtt);
67
+ var cellstr = this.xmlToString(celllistNew)
68
+ var list = data[attribute.nodeValue];
69
+ if (typeof list !== 'undefined') {
70
+ for (var i = 0; i < list.length; i++) {
71
+ list[i].forrowindex = i;
72
+ liststr += cellstr.replace(/\{\{(.+?)\}\}/g, (...args) => {
73
+ return this.getValue(list[i], args[1])
74
+ });
75
+ }
76
+ }
77
+ cellLayout = cellLayout.replace(/\n/g, '').trim() //去除换行 和头尾空格
78
+ let replacer = function (match, p1, p2, p3, offset) {
79
+ return p1 + p3
80
+ }
81
+ cellLayout = cellLayout.replace(/(>)(\s*)(<)/g, replacer) //把 > 和 < 之间的空格去除
82
+ cellLayout = cellLayout.replace(/ +/g, ' ')
83
+ cellLayout = cellLayout.replace(celllist, liststr)
84
+ }
85
+ }
86
+ }
87
+ }
52
88
  if (typeof data !== 'undefined') {
53
89
  str = cellLayout.replace(/\{\{(.+?)\}\}/g, (...args) => {
54
90
  return this.getValue(data, args[1])
55
91
  });
56
92
  }
57
93
  var xmlDOM = this.loadXML(str);
58
- this.Layout = this.xmlToJson(xmlDOM.childNodes[0]);
94
+ console.log(xmlDOM)
95
+ this.Layout = this.xmlToJson(xmlDOM);
96
+ this.model = this.loaderObj.CellLayout(this.Layout);
59
97
  this.loading = false;
60
98
  },
61
- getValue(data,val) {
99
+ getValue(data, val) {
62
100
  return val.split('.').reduce((data, currentVal) => {
63
- return data[currentVal]
101
+ var rtn = data[currentVal];
102
+ if (rtn.toString().indexOf('"') != -1) {
103
+ rtn = rtn.replace(/"/g, "'");
104
+ rtn = rtn.replace(/>/g, "&gt;");
105
+ rtn = rtn.replace(/</g, "&lt;");
106
+ }
107
+ return rtn
64
108
  }, data)
65
109
  },
66
110
  loadXML(xmlString) {
111
+ xmlString = xmlString.replace(/\n/g, '').trim()
112
+ let replacer = function (match, p1, p2, p3, offset) {
113
+ return p1 + p3
114
+ }
115
+ xmlString = xmlString.replace(/(>)(\s*)(<)/g, replacer)
67
116
  if (document.all) {
68
117
  var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
69
118
  xmlDom.loadXML(xmlString)
@@ -73,19 +122,43 @@
73
122
  return new DOMParser().parseFromString(xmlString, "text/xml");
74
123
  }
75
124
  },
76
-
77
- xmlToJson(xml) {
78
- // Create the return object
79
- var obj = {};
125
+ xmlToString(xmlObj) {
126
+ if (document.all) //IE浏览器
127
+ {
128
+ return xmlObj.xml;
129
+ }
130
+ else //其他浏览器
131
+ {
132
+ return (new XMLSerializer()).serializeToString(xmlObj);
133
+ }
134
+ },
135
+ getxmlForStr(xml) {
80
136
  if (xml.nodeType == 1) { // element
81
137
  // do attributes
82
138
  if (xml.attributes.length > 0) {
83
139
  for (var j = 0; j < xml.attributes.length; j++) {
84
140
  var attribute = xml.attributes.item(j);
85
- obj[attribute.nodeName] = attribute.nodeValue;
141
+ if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
142
+ return xml
143
+ }
86
144
  }
87
145
  }
88
146
  }
147
+ if (xml.hasChildNodes()) {
148
+ for (var i = 0; i < xml.childNodes.length; i++) {
149
+ var item = xml.childNodes.item(i);
150
+ var result = this.getxmlForStr(item);
151
+ if (result) {
152
+ return result;
153
+ }
154
+ }
155
+ }
156
+ },
157
+
158
+ xmlToJson(xml) {
159
+ var self = this;
160
+ // Create the return object
161
+ var obj = {};
89
162
  if (xml.nodeName.toLowerCase() == "Layout".toLowerCase() || xml.nodeName.toLowerCase() == "StackLayout".toLowerCase()) {
90
163
  obj["is"] = "ct-layoutchildren";
91
164
  }
@@ -98,12 +171,35 @@
98
171
  else if (xml.nodeName.toLowerCase() == "Image".toLowerCase()) {
99
172
  obj["is"] = "ct-layoutimage";
100
173
  }
101
- obj["type"] = xml.nodeName;
174
+ if (xml.nodeType == 1) { // element
175
+ // do attributes
176
+ if (xml.attributes.length > 0) {
177
+ for (var j = 0; j < xml.attributes.length; j++) {
178
+ var attribute = xml.attributes.item(j);
179
+ obj[attribute.nodeName] = attribute.nodeValue;
180
+ if (attribute.nodeName.toLowerCase() == "for".toLowerCase()) {
181
+ obj["is"] = "ct-layoutchildrenfor";
182
+ }
183
+ if (attribute.nodeName.toLowerCase() == "routerKey".toLowerCase()) {
184
+ var actionRouter = self.actionRouter;
185
+ let field = actionRouter.find(b => {
186
+ return b.id === attribute.nodeValue;
187
+ });
188
+ if (typeof field !== "undefined") {
189
+ if (!field.rightField || self.vmodel[field.rightField] == 1) {
190
+ obj["rightRouter"] = true;
191
+ }
192
+
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+
102
199
  // do children
103
200
  if (xml.hasChildNodes()) {
104
201
  for (var i = 0; i < xml.childNodes.length; i++) {
105
202
  var item = xml.childNodes.item(i);
106
- var nodeName = item.nodeName;
107
203
  if (typeof (obj["fields"]) == "undefined") {
108
204
  obj["fields"] = [];
109
205
  obj["fields"].push(this.xmlToJson(item));
@@ -119,40 +215,49 @@
119
215
  }
120
216
  return obj;
121
217
  },
122
- rolRouterClickHandler(routerKey, rowindex) {
218
+ rolRouterClickHandler(routerKey, rowindex, forname, forrowindex) {
123
219
  var self = this;
124
220
  var submitData = {};
125
221
  var rowData = self.vmodel;
126
222
  var actionRouter = self.actionRouter;
127
- debugger
128
223
  let field = actionRouter.find(b => {
129
224
  return b.id === routerKey;
130
225
  });
131
- field.submitListField.forEach((k) => {
132
- submitData[k] = rowData[k];
133
- });
134
-
226
+ if (typeof forname !== "undefined") {
227
+ field.submitListField.forEach((k) => {
228
+ submitData[k] = rowData[forname][forrowindex][k];
229
+ });
230
+ }
231
+ else {
232
+ field.submitListField.forEach((k) => {
233
+ submitData[k] = rowData[k];
234
+ });
235
+ }
135
236
  let action = field.action;
136
237
  if (field.actionField) {
137
238
  action = rowData[field.actionField];
138
239
  }
139
- this.routerClickHandler(field, submitData, action);
240
+ this.routerClickHandler(field, submitData, action, rowindex,forname, forrowindex);
140
241
  },
141
- routerClickHandler(field, submitData, action) {
242
+ routerClickHandler(field, submitData, action, rowindex, forname, forrowindex) {
142
243
  let self = this;
143
244
  action = action || field.action;
144
-
245
+
145
246
  var clickAcion = function () {
146
247
  //若不是客户端方法,则直接访问接口
147
248
  if (!field.isClientFuntion) {
148
249
  // 外部框架tab页打开
149
- if (field.isFormPageInTab || field.isSearchPageInTab) {
250
+ if (field.isFormPageInTab) {
150
251
  submitData = field.getActionPara(submitData).para;
151
252
  if (field.pageStyle) {
152
253
  submitData.pageStyle = field.pageStyle;
153
254
  }
154
255
  self.$common.getDataDrivenOpts().handler.openTab(action, submitData, field.pageTitle, self.model, field.dialogWidth);
155
256
  }
257
+ else if (field.isSearchPageInTab) {// 外部框架tab页打开
258
+ submitData = field.getActionPara(submitData).para;
259
+ self.$common.getDataDrivenOpts().handler.openTabSearch(field, submitData);
260
+ }
156
261
  else if (field.isBrowserNewTab) {// 浏览器打开
157
262
  submitData = field.getActionPara(submitData).para;
158
263
  let query = self.$common.objectToQueryStr(submitData);
@@ -246,15 +351,11 @@
246
351
  self.$common.openDialog(dialogOption);
247
352
  }
248
353
  else {
249
- self.operationLoading = true;
250
354
  field.doAction(submitData, (data) => {
251
- self.operationLoading = false;
252
- if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
253
- self.model.doAction({ responseData: data });
355
+ self.model.doAction(data, field);
356
+ if (field.actionType === 19) {
357
+ self.callTelClick(self.$refs['layout' + rowindex].$refs.layoutchildren, data, forname, forrowindex)
254
358
  }
255
- self.$forceUpdate();
256
- self.$refs.footer.$forceUpdate();
257
- self.updateCurrentRow(field, data);
258
359
  })
259
360
  }
260
361
  }
@@ -287,6 +388,22 @@
287
388
  clickAcion();
288
389
  }
289
390
  },
391
+ callTelClick(VueCom, data, forname, forrowindex) {
392
+ if (typeof VueCom.$refs['router' + forname + forrowindex] !== "undefined") {
393
+ VueCom.callTelClick(data);
394
+ return true;
395
+ }
396
+ if (VueCom.$children.length>0) {
397
+ for (var i = 0; i < VueCom.$children.length; i++) {
398
+ var item = VueCom.$children[i];
399
+ var result = this.callTelClick(item, data,forname, forrowindex);
400
+ if (result) {
401
+ return result;
402
+ }
403
+ }
404
+ }
405
+ },
406
+
290
407
  },
291
408
  mounted() {
292
409
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <el-container :direction="model.orientation" :style="model.styleObject">
3
- <component v-for="(item, index) in model.fields" :key="index" :is="item.is" :vmodel="item" :rowindex="rowindex" @click="clickHandler"></component>
2
+ <el-container :direction="model.orientation" :style="model.styleObject" ref="layoutchildren">
3
+ <component v-for="(item, index) in model.fields" :key="index" :is="item.is" :vmodel="item" :rowindex="rowindex" :forname="forname" :forrowindex="forrowindex" @click="clickHandler"></component>
4
4
  </el-container>
5
5
  </template>
6
6
  <script>
@@ -8,30 +8,33 @@
8
8
  import dynamicLayoutLabel from './dynamicLayoutLabel.vue';
9
9
  import dynamicLayoutLine from './dynamicLayoutLine.vue';
10
10
  import dynamicLayoutImage from './dynamicLayoutImage.vue';
11
+ import dynamicLayoutChildrenFor from './dynamicLayoutChildrenFor.vue';
11
12
  export default {
12
13
  name: 'ct-layoutchildren',
13
14
  mixins: [dynamicElement],
14
15
  components: {
15
16
  'ct-layoutlabel': dynamicLayoutLabel,
16
17
  'ct-layoutline': dynamicLayoutLine,
17
- 'ct-layoutimage': dynamicLayoutImage
18
+ 'ct-layoutimage': dynamicLayoutImage,
19
+ 'ct-layoutchildrenfor': dynamicLayoutChildrenFor
18
20
  },
19
21
  props: {
20
22
  vmodel: Object,
21
- rowindex: Number
23
+ rowindex: Number,
24
+ forname: String,
25
+ forrowindex: String
22
26
  },
23
27
  data() {
24
28
  return {
25
-
29
+ forindex:0
26
30
  };
27
31
  },
28
32
  created() {
29
33
  this.model = this.loaderObj.CellLayout(this.vmodel);
30
-
31
34
  },
32
35
  methods: {
33
- clickHandler(routerKey, rowindex) {
34
- this.$emit('click', routerKey, rowindex);
36
+ clickHandler(routerKey, rowindex, forname, forrowindex) {
37
+ this.$emit('click', routerKey, rowindex, forname, forrowindex);
35
38
  }
36
39
  },
37
40
  mounted() {
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <el-container :direction="model.orientation" :style="model.styleObject">
3
+ <ct-layoutchildren v-for="(item, index) in model.fields" :key="index" :rowindex="rowindex" :forrowindex="model.forrowindex" :vmodel="item" :forname="model.forname" @click="clickHandler"></ct-layoutchildren>
4
+ </el-container>
5
+ </template>
6
+ <script>
7
+ import dynamicElement from '../../mixins/dynamicElement'
8
+ export default {
9
+ name: 'ct-layoutchildrenfor',
10
+ mixins: [dynamicElement],
11
+ components: {
12
+ 'ct-layoutchildren': () => import('./dynamicLayoutChildren.vue'),
13
+ },
14
+ props: {
15
+ vmodel: Object,
16
+ rowindex: Number
17
+ },
18
+ data() {
19
+ return {
20
+ forname: '',
21
+ forwindex:0
22
+ };
23
+ },
24
+ created() {
25
+ this.model = this.loaderObj.CellLayout(this.vmodel);
26
+ },
27
+ methods: {
28
+ clickHandler(routerKey, rowindex, forname, forrowindex) {
29
+ this.$emit('click', routerKey, rowindex, forname, forrowindex);
30
+ }
31
+ },
32
+ mounted() {
33
+
34
+ }
35
+ }
36
+ </script>
37
+ <style>
38
+
39
+ </style>