centaline-data-driven 1.2.79 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.2.79",
3
+ "version": "1.2.80",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
@@ -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
+ }
144
+ }
145
+ }
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;
86
153
  }
87
154
  }
88
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,29 +215,34 @@
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) {
@@ -250,15 +351,11 @@
250
351
  self.$common.openDialog(dialogOption);
251
352
  }
252
353
  else {
253
- self.operationLoading = true;
254
354
  field.doAction(submitData, (data) => {
255
- self.operationLoading = false;
256
- if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
257
- 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)
258
358
  }
259
- self.$forceUpdate();
260
- self.$refs.footer.$forceUpdate();
261
- self.updateCurrentRow(field, data);
262
359
  })
263
360
  }
264
361
  }
@@ -291,6 +388,22 @@
291
388
  clickAcion();
292
389
  }
293
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
+
294
407
  },
295
408
  mounted() {
296
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>
@@ -1,6 +1,16 @@
1
1
  <template>
2
- <div v-if="model.routerKey" :style="model.styleObject">
3
- <img class="ct-tablecurrencyImg ct-tablecurrencyItem" :src="model.value" @click="clickHandler($event)" />
2
+ <div v-if="model.routerKey">
3
+ <div :ref="'router'+forname+forrowindex" :style="model.styleObject">
4
+ <el-popover class="Stats-popover" :popper-class="'el-popoverCallTel'" :placement="option.placement?option.placement:'left'"
5
+ v-model="visible" :trigger="option.trigger?option.trigger:''">
6
+ <div style="border-bottom:none">
7
+ <div style="color: #388cd3;text-align: center;">{{message}}</div>
8
+ <img v-show="qrCode" :src="qrCode" style="margin-top: 5px;" :style="{'width':width+'px','height':height+'px'}" />
9
+ </div>
10
+ <el-image :src="tellImgUrl?tellImgUrl:model.value"
11
+ fit="fit" slot="reference" @click="clickHandler($event)" style="cursor:pointer;"></el-image>
12
+ </el-popover>
13
+ </div>
4
14
  </div>
5
15
  <div v-else :style="model.styleObject">
6
16
  <el-image :src="model.value"
@@ -15,10 +25,25 @@
15
25
  mixins: [dynamicElement],
16
26
  props: {
17
27
  vmodel: Object,
18
- rowindex: Number
28
+ rowindex: Number,
29
+ forname: String,
30
+ forrowindex: String
19
31
  },
20
32
  data() {
21
33
  return {
34
+ visible: false,
35
+ message: '',
36
+ qrCode: '',
37
+ width: 300,
38
+ height: 300,
39
+ tellImgUrl: '',
40
+ option: {
41
+ isHidden: true,//是否开启操作栏隐藏设置,默认开启
42
+ showNum: 3,//如果isHidden为true时,个数大于3就会隐藏,默认是3
43
+ appendId: '',//将浮动栏添加到对应id或者class节点中。或者.xxx。传空字符串是添加到body中。
44
+ trigger: 'manual',//触发方式,传值可查看Popper UI组件trigger属性
45
+ placement: 'bottom-start',//方向,传值可查看Popper UI组件placement属性
46
+ },
22
47
  }
23
48
  },
24
49
  created() {
@@ -29,8 +54,33 @@
29
54
 
30
55
  methods: {
31
56
  clickHandler(ev) {
32
- this.$emit('click', this.model.routerKey, this.rowindex);
33
- }
57
+ if (!this.visible) {
58
+ this.$emit('click', this.model.routerKey, this.rowindex, this.forname, this.forrowindex);
59
+ }
60
+ else {
61
+ this.visible = false;
62
+ this.tellImgUrl = '';
63
+ }
64
+
65
+ },
66
+ callTelClick(data) {
67
+ this.message = '';
68
+ this.qrCode = '';
69
+ this.tellImgUrl = '';
70
+ if (data.content.actionType == '显示消息') {
71
+ this.visible = true;
72
+ this.message = data.content.message;
73
+ if (data.content.imgUrl) this.tellImgUrl = data.content.imgUrl;
74
+ }
75
+ else if (data.content.actionType == '扫码拨号') {
76
+ this.visible = true;
77
+ this.message = data.content.message;
78
+ this.qrCode = data.content.qrCode;
79
+ if (data.content.width) this.width = data.content.width;
80
+ if (data.content.height) this.height = data.content.height;
81
+ if (data.content.imgUrl) this.tellImgUrl = data.content.imgUrl;
82
+ }
83
+ },
34
84
  },
35
85
  computed: {
36
86
 
@@ -1,8 +1,10 @@
1
1
  <template>
2
- <div v-if="model.routerKey" :style="model.styleObject">
3
- <a href="javascript:void(0);" @click="clickHandler($event)" class="ct-tablecurrencyItem">
4
- {{model.value}}
5
- </a>
2
+ <div v-if="model.routerKey">
3
+ <div :style="model.styleObject">
4
+ <a href="javascript:void(0);" @click="clickHandler($event)" class="ct-tablecurrencyItem">
5
+ {{model.value}}
6
+ </a>
7
+ </div>
6
8
  </div>
7
9
  <div v-else :style="model.styleObject" v-html="model.value">
8
10
  </div>
@@ -549,8 +549,14 @@
549
549
  else {
550
550
  if (this.$parent.$parent.$vnode.componentOptions.tag === 'ct-PropertySimpleDetailRET') {
551
551
  var h1 = this.$parent.$parent.$parent.$parent.$refs.sidebar.offsetHeight | 0;
552
- var h2 = this.$parent.$parent.$refs.contact.offsetHeight | 0;
553
- var h3 = this.$parent.$parent.$refs.title.offsetHeight | 0;
552
+ var h2 = 0;
553
+ if (this.$parent.$parent.$refs.contact) {
554
+ h2 = this.$parent.$parent.$refs.contact.offsetHeight | 0;
555
+ }
556
+ var h3 = 0;
557
+ if (this.$parent.$parent.$refs.contact) {
558
+ h3 = this.$parent.$parent.$refs.title.offsetHeight | 0;
559
+ }
554
560
  let tableHeight = h1 - h2 - h3 - 270;
555
561
  if (h2 == 0) {
556
562
  tableHeight = tableHeight + 15;