centaline-data-driven 1.2.85 → 1.2.88

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/SearchList.vue +4 -8
  4. package/src/centaline/css/common.css +9 -0
  5. package/src/centaline/dynamicContact/src/dynamicContact.vue +3 -0
  6. package/src/centaline/dynamicDetail/src/dynamicContactList.vue +3 -0
  7. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +3 -0
  8. package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +21 -1
  9. package/src/centaline/dynamicDtd/src/dynamicDtd.vue +1 -5
  10. package/src/centaline/dynamicForm/src/dynamicForm.vue +11 -2
  11. package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +3 -1
  12. package/src/centaline/dynamicLayout/src/dynamicLayout.vue +9 -4
  13. package/src/centaline/dynamicRichText/src/dynamicRichText.vue +5 -3
  14. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +6 -0
  15. package/src/centaline/dynamicSearchList/src/dynamicTableStats.vue +1 -1
  16. package/src/centaline/dynamicT/src/dynamicT.vue +11 -2
  17. package/src/centaline/loader/src/ctl/Base.js +3 -0
  18. package/src/centaline/loader/src/ctl/ContactList.js +2 -2
  19. package/src/centaline/loader/src/ctl/Detail.js +4 -1
  20. package/src/centaline/loader/src/ctl/Dtd.js +2 -3
  21. package/src/centaline/loader/src/ctl/Router.js +3 -0
  22. package/src/centaline/loader/src/ctl/SearchScreen.js +5 -0
  23. package/src/centaline/loader/src/ctl/SearchTable.js +1 -1
  24. package/src/centaline/loader/src/ctl/lib/Enum.js +18 -0
  25. package/src/centaline/mixins/dynamicElement.js +0 -1
  26. package/src/main.js +1 -1
  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.85",
3
+ "version": "1.2.88",
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: "1"} ,
13
+ apiParam: {actionType: 1,chanceID: "3"} ,
14
14
  }
15
15
  },
16
16
  mounted() {
@@ -4,14 +4,14 @@
4
4
 
5
5
  <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'" :searchDataApi="'/PropertyRETList/getListOfSearchModel'" :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"></ct-searchlist> -->
6
6
 
7
- <ct-searchlist :searchConditionApi="'/SystemParameterList/getLayoutOfSearch'"
8
- :searchDataApi="'/SystemParameterList/getListOfSearchModel'" :apiParam="para"></ct-searchlist>
7
+ <!-- <ct-searchlist :searchConditionApi="'/SystemParameterList/getLayoutOfSearch'"
8
+ :searchDataApi="'/SystemParameterList/getListOfSearchModel'" :apiParam="para"></ct-searchlist> -->
9
9
 
10
- <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
10
+ <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
11
11
  :searchDataApi="'/PropertyRETList/getListOfSearchModel'"
12
12
  :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"
13
13
  :searchStatsApi="'/exampleList/getListStats'"
14
- ></ct-searchlist> -->
14
+ ></ct-searchlist>
15
15
 
16
16
  <!--<ct-searchlist :searchConditionApi="'/api/invoice-info/search-condition'" :searchDataApi="'/api/invoice-info/list'" :searchDataStatisticsApi="'api/ContractList/GetLayoutOfStatisticsTool'" :apiParam="para"></ct-searchlist>-->
17
17
  <!-- <ct-searchlist :searchConditionApi="'/PropertyStatusList/getLayoutOfSearch'" :searchDataApi="'/PropertyStatusList/getListOfSearchModel'" :apiParam="para"></ct-searchlist> -->
@@ -26,10 +26,6 @@
26
26
  data() {
27
27
  return {
28
28
  para:{
29
- code: "001.001",
30
- name: "物业用途",
31
- paramKey: "PropertyUsageID",
32
- paramName: "物业用途"
33
29
  },
34
30
  // para: {searchFields: {fields: []}, pageAttribute: {pageIndex: 1}, flagSearch: true}
35
31
  // para: {publishID: "1503900718229229568"}
@@ -803,5 +803,14 @@ html {
803
803
  .el-input-group{
804
804
  line-height: 26px;
805
805
  }
806
+ .shortcutFollow .ct-form{
807
+ margin:0px !important;
808
+ }
809
+ .shortcutFollow .ct-form .el-card__body{
810
+ padding:0px !important;
811
+ }
812
+ .shortcutFollow .ct-form .el-card__body .el-col{
813
+ padding:0px 5px 0 0 !important;
814
+ }
806
815
 
807
816
 
@@ -258,6 +258,9 @@
258
258
  let query = self.$common.objectToQueryStr(submitData);
259
259
  window.open(field.action + query, "_blank");
260
260
  }
261
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
262
+ window.open(submitData[field.submitFormField], "_blank");
263
+ }
261
264
  else{
262
265
  field.doAction(submitData, (data) => {
263
266
  self.model.doAction(data,field);
@@ -399,6 +399,9 @@
399
399
  let query = self.$common.objectToQueryStr(submitData);
400
400
  window.open(field.action + query, "_blank");
401
401
  }
402
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
403
+ window.open(submitData[field.submitFormField], "_blank");
404
+ }
402
405
  else{
403
406
  field.doAction(submitData, (data) => {
404
407
  self.model.doAction(data,field);
@@ -584,6 +584,9 @@
584
584
  let query = self.$common.objectToQueryStr(submitData);
585
585
  window.open(field.action + query, "_blank");
586
586
  }
587
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
588
+ window.open(submitData[field.submitFormField], "_blank");
589
+ }
587
590
  else{
588
591
  field.doAction(submitData, (data) => {
589
592
  self.model.doAction(data,field);
@@ -67,7 +67,10 @@
67
67
  </component>
68
68
  </div>
69
69
  <span :slot="showIndex>0?'reference':''" class="more" style="margin-left: 10px;"></span>
70
- </el-popover>
70
+ </el-popover>
71
+ </div>
72
+ <div ref="shortcutFollow" v-if="model.shortcutFollowForm!==undefined && model.shortcutFollowForm!==null" class="shortcutFollow" style="margin-top: 16px;">
73
+ <ct-form :source="model.shortcutFollowForm" @submit="saveShortcutFollow"></ct-form>
71
74
  </div>
72
75
  <div class="tablist-info base-box">
73
76
  <div class="details-tabs-box">
@@ -90,11 +93,13 @@
90
93
  <script>
91
94
  import dynamicElement from '../../mixins/dynamicElement';
92
95
  import dynamicContact from '../../dynamicContact/src/dynamicContact.vue';
96
+ import dynamicForm from '../../dynamicForm/src/dynamicForm.vue';
93
97
  export default {
94
98
  name: 'ct-PropertySimpleDetailRET',
95
99
  mixins: [dynamicElement],
96
100
  components: {
97
101
  'ct-contact': dynamicContact,
102
+ 'ct-form': dynamicForm,
98
103
  },
99
104
  props: {
100
105
  vmodel: Object,
@@ -393,6 +398,9 @@
393
398
  let query = self.$common.objectToQueryStr(submitData);
394
399
  window.open(field.action + query, "_blank");
395
400
  }
401
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
402
+ window.open(submitData[field.submitFormField], "_blank");
403
+ }
396
404
  else{
397
405
  field.doAction(submitData, (data) => {
398
406
  self.model.doAction(data,field);
@@ -445,6 +453,18 @@
445
453
  clickPrevHandler() {
446
454
  this.$emit('clickPrevHandler');
447
455
  },
456
+ saveShortcutFollow(){
457
+ var self=this;
458
+ self.model.tags1.forEach((v,i) => {
459
+ if(v.appID=='Follow'){
460
+ self.model.activeIndex1=i.toString();
461
+ self.listKey=self.listKey+1;
462
+ self.model.searchConditionApiTags1=v.searchConditionApiUrl||'';
463
+ self.model.searchDataApiTags1=v.searchDataApiUrl||'';
464
+ self.model.paramDataTags1 = v.paramData || '';
465
+ }
466
+ });
467
+ },
448
468
  }
449
469
  }
450
470
  </script>
@@ -49,9 +49,7 @@
49
49
  pickerOptions: this.getPickerOptions()
50
50
  };
51
51
  },
52
-
53
- mounted() {
54
-
52
+ mounted() {
55
53
  var self = this;
56
54
  this.$nextTick(function () {
57
55
  if (self.vmodel) {
@@ -70,10 +68,8 @@
70
68
  },
71
69
  watch: {
72
70
  'model.value': function () {
73
-
74
71
  },
75
72
  'model.value1': function () {
76
-
77
73
  },
78
74
  },
79
75
  methods: {
@@ -308,7 +308,7 @@
308
308
  }
309
309
  field.disabled = false;
310
310
  self.model.pageDisabled= false;
311
- });
311
+ },self.model.scripts);
312
312
  }
313
313
  //无值,触发submit事件
314
314
  else {
@@ -399,6 +399,9 @@
399
399
  let query = self.$common.objectToQueryStr(submitData);
400
400
  window.open(field.action + query, "_blank");
401
401
  }
402
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
403
+ window.open(submitData[field.submitFormField], "_blank");
404
+ }
402
405
  else if (field.isExport) {
403
406
  submitData = field.getActionPara(submitData).para;
404
407
  self.model.export(field, submitData);
@@ -475,7 +478,13 @@
475
478
  self.model.requiredHandle(field);
476
479
  //self.model.validMrf(field);
477
480
 
478
- if(field.onAfterChanged){
481
+ if(field.routerKeyForEnterKey){
482
+ var router =self.model.actionRouters.find((v) => {
483
+ return v.id === field.routerKeyForEnterKey;
484
+ });
485
+ self.clickHandler(router);
486
+ }
487
+ else if(field.onAfterChanged){
479
488
  var router =self.model.actionRouters.find((v) => {
480
489
  return v.id === field.onAfterChanged;
481
490
  });
@@ -52,7 +52,9 @@
52
52
  <span v-else-if="scope.row.isSet" class="el-tag el-tag--mini" style="cursor: pointer;" @click="saveRow(scope.row,scope.$index,false)">
53
53
  取消
54
54
  </span>
55
- <span v-for="(v,i) in model.buttons" v-if="!scope.row.isSet && v.show" class="el-tag el-tag--info el-tag--mini" style="cursor: pointer;" @click="buttonClick(scope.row, v)">
55
+ <span v-for="(v,i) in model.buttons"
56
+ v-if="!scope.row.isSet && v.show && ( !v.rightField || !scope.row[v.rightField] || scope.row[v.rightField].value == 1 )"
57
+ class="el-tag el-tag--info el-tag--mini" style="cursor: pointer;" @click="buttonClick(scope.row, v)">
56
58
  {{v.label}}
57
59
  </span>
58
60
  </template>
@@ -97,10 +97,15 @@
97
97
  getValue(data, val) {
98
98
  return val.split('.').reduce((data, currentVal) => {
99
99
  var rtn = data[currentVal];
100
- if (rtn.toString().indexOf('"') != -1) {
101
- rtn = rtn.replace(/"/g, "'");
102
- rtn = rtn.replace(/>/g, "&gt;");
103
- rtn = rtn.replace(/</g, "&lt;");
100
+ if (typeof rtn !== 'undefined') {
101
+ if (rtn.toString().indexOf('"') != -1) {
102
+ rtn = rtn.replace(/"/g, "'");
103
+ rtn = rtn.replace(/>/g, "&gt;");
104
+ rtn = rtn.replace(/</g, "&lt;");
105
+ }
106
+ }
107
+ else {
108
+ rtn = "";
104
109
  }
105
110
  return rtn
106
111
  }, data)
@@ -247,9 +247,11 @@
247
247
  this.config.toolbars = [['help']];
248
248
  return;
249
249
  }
250
- this.config.maximumWords = this.model && this.model.max ? parseFloat(this.model.max) : 5000;
251
- this.config.serverUrl = this.model.action;
252
- this.config.imageUrl = this.model.action;
250
+ else if (!this.model.lock) {
251
+ this.config.maximumWords = this.model && this.model.max ? parseFloat(this.model.max) : 5000;
252
+ this.config.serverUrl = this.model.action;
253
+ this.config.imageUrl = this.model.action;
254
+ }
253
255
  },
254
256
  computed: {
255
257
 
@@ -750,6 +750,9 @@
750
750
  let query = self.$common.objectToQueryStr(submitData);
751
751
  window.open(action + query, "_blank");
752
752
  }
753
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
754
+ window.open(submitData[field.submitFormField], "_blank");
755
+ }
753
756
  else {
754
757
  //self.operationLoading = true;
755
758
 
@@ -928,6 +931,9 @@
928
931
  let query = self.$common.objectToQueryStr(submitData);
929
932
  window.open(action + query, "_blank");
930
933
  }
934
+ else if (field.isOpenUrlInBrowse) {// 浏览器打开
935
+ window.open(submitData[field.submitFormField], "_blank");
936
+ }
931
937
  else {
932
938
  //self.operationLoading = true;
933
939
 
@@ -44,7 +44,7 @@
44
44
  <br />
45
45
  </div>
46
46
  </div>
47
- <span slot="reference" class="icon-more">⋮</span>
47
+ <span slot="reference" class="icon-more"></span>
48
48
 
49
49
  </el-popover>
50
50
  </template>
@@ -21,7 +21,7 @@
21
21
  </el-input>
22
22
 
23
23
  <span v-if="model.sufLabel" class="spanMessage ct-flex-div-span">{{model.sufLabel}}</span>
24
- <ctQuickInputSos v-if="!model.lock && model.paramName" class="ct-flex-div-span" :pn="model.paramName" :action="api" @click="model.value=$event"></ctQuickInputSos>
24
+ <ctQuickInputSos v-if="!model.lock && model.paramName" class="ct-flex-div-span" :pn="model.paramName" :action="api" @click="quickSelect"></ctQuickInputSos>
25
25
  </div>
26
26
  <transition name="el-fade-in" class="ct-flex-div-span">
27
27
  <span v-show="!valid" class="errorMessage ">
@@ -80,7 +80,16 @@
80
80
  }
81
81
  },
82
82
  search() {
83
- if(this.model.autoSearch) this.$emit('click');
83
+ if(this.model.autoSearch) {
84
+ this.$emit('click');
85
+ }
86
+ else if(this.model.routerKeyForEnterKey){
87
+ this.changeHandler(this.model.value);
88
+ }
89
+ },
90
+ quickSelect(v) {
91
+ this.model.value=v;
92
+ this.search();
84
93
  },
85
94
  },
86
95
  }</script>
@@ -284,6 +284,9 @@ const Base = function (source) {
284
284
  get onAfterChanged() {
285
285
  return source.onAfterChanged;
286
286
  },
287
+ get routerKeyForEnterKey() {
288
+ return source.routerKeyForEnterKey;
289
+ },
287
290
  };
288
291
 
289
292
  return rtn;
@@ -379,11 +379,11 @@ const ContactList = function (source,para ,callBack) {
379
379
  var deleteRow = response.content.split(',');
380
380
  if (deleteRow) {
381
381
  deleteRow.forEach((r) => {
382
- let strat=0;
382
+ let strat=-1;
383
383
  let count=0;
384
384
  rtn._listData.forEach((v,i) => {
385
385
  if(v[rtn.rowHiddenKey]===r){
386
- if(strat===0)strat=i;
386
+ if(strat===-1)strat=i;
387
387
  count=count+1;
388
388
  }
389
389
  });
@@ -32,7 +32,7 @@ const Detail = function (source,para ,callBack) {
32
32
  _commissionList:null,
33
33
  get title() {
34
34
  return data.title;
35
- },
35
+ },
36
36
  get fields1() {
37
37
  return data.fields1;
38
38
  },
@@ -370,6 +370,9 @@ const Detail = function (source,para ,callBack) {
370
370
  }
371
371
  return rtn._commissionList;
372
372
  },
373
+ get shortcutFollowForm() {
374
+ return data.shortcutFollowForm;
375
+ },
373
376
  doAction(response,field) {
374
377
  if (response.responseData) {
375
378
  response = response.responseData;
@@ -64,9 +64,8 @@ const Dtd = function (source, dateType) {
64
64
  },
65
65
  reset() {
66
66
  this.formatValue = this.defaultFormat;
67
- //this.setFormatValue(this.defaultFormat);
68
- source.code1 = this.formatValue[0];
69
- source.code2 = this.formatValue[1];
67
+ rtn.value = this.formatValue[0];
68
+ rtn.value1 = this.formatValue[1];
70
69
  },
71
70
  getFormObj() {
72
71
  var rtnFormObj = {};
@@ -98,6 +98,9 @@ const Router = function (source) {
98
98
  get isSearchPageWithList() {
99
99
  return source.pageStyle === Enum.PageStyle.SearchPageWithList;
100
100
  },
101
+ get isOpenUrlInBrowse() {
102
+ return source.actionType === Enum.ActionType.OpenUrlInBrowse;
103
+ },
101
104
  //打开页面(1Form,2SearchList(弹在tab),3Tab,4执行客户端脚本,5SearchList(弹出))
102
105
  get navToNewPage() {
103
106
  return source.navToNewPage;
@@ -48,6 +48,11 @@ const SearchScreen = function (source, callBack, screenPara) {
48
48
  this._sourceFieldsArr = [];
49
49
 
50
50
  for (let key in source.content.fields) {
51
+ if((source.content.fields[key].controlType===Enum.ControlType.DateRange
52
+ || source.content.fields[key].controlType===Enum.ControlType.DateTimeRange)
53
+ && source.content.fields[key].code2==undefined){
54
+ source.content.fields[key].code2='';
55
+ }
51
56
  let field = source.content.fields[key];
52
57
  this._sourceFieldsArr.push(field);
53
58
  }
@@ -609,7 +609,7 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
609
609
  rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
610
610
  }
611
611
  });
612
- if (rtn.cellLayout != "") {
612
+ if (rtn.cellLayout) {
613
613
  rtn.$vue.$set(rtn.listData, rtn.selectIndex, rtn.dataDictionary[searchValue1]);
614
614
  }
615
615
  }
@@ -377,6 +377,21 @@ const Enum = {
377
377
  /// 执行 拨打电话 的动作
378
378
  /// </summary>
379
379
  CallTel: 19,
380
+
381
+ /// <summary>
382
+ /// 弹出浮层 播放录音
383
+ /// </summary>
384
+ ListenVoice: 20,
385
+
386
+ /// <summary>
387
+ /// 弹出浮层 播放视频
388
+ /// </summary>
389
+ SeeVoice: 21,
390
+
391
+ /// <summary>
392
+ /// 在浏览器中打开一个 relationField 执行的URL
393
+ /// </summary>
394
+ OpenUrlInBrowse: 22,
380
395
  },
381
396
 
382
397
  /// <summary>
@@ -482,6 +497,9 @@ const Enum = {
482
497
  Dropdown : 3
483
498
  },
484
499
 
500
+ /// <summary>
501
+ /// 页面打开类型
502
+ /// </summary>
485
503
  PageStyle:
486
504
  {
487
505
  /// <summary>
@@ -103,7 +103,6 @@ export default {
103
103
  if ("undefined" !== typeof this.selfValidExcute) {
104
104
  if (!this.selfValidExcute("change")) {
105
105
  self.valid = false;
106
- //return false;
107
106
  }
108
107
  }
109
108
  }
package/src/main.js CHANGED
@@ -39,7 +39,7 @@ Vue.use(centaline, {
39
39
  // 获取请求头
40
40
  getRequestHeaders: function () {
41
41
  return {
42
- oldToken: '5c3b43fb-5051-40e0-b9dc-577f37767af0',
42
+ oldToken: 'd7a1705d-d8f4-4fee-9778-f9f6e402eacd',
43
43
  originalRequestURL: 'http://10.88.22.67:8080',
44
44
  EstateInfo: ' {"estateId":"201703020943128D8A8FCF463E4016D6","estateName":"undefined"}',
45
45
  Authorization:'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk4NGM0ZjJlLTRhNTgtNDM4YS1iNjkxLWQyMTI4ZjdlYjNlMyJ9.nxO4kEXzIM2RJTXuX_AOoctKFvBiTZUEwHTu1YSFMn8JBjM9p-RK31ZB8ckJvlwgjiDGdbuGt1QOZRRP9KS3qQ',