centaline-data-driven 1.3.33 → 1.3.36

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.3.33",
3
+ "version": "1.3.36",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
package/src/Form.vue CHANGED
@@ -2,7 +2,7 @@
2
2
  <div id="form-app" class="data-driven" style="width:100%;height:100%;overflow:auto">
3
3
  <!-- <ct-form :api="'/PropertyRET/getLayoutOfNew'" :apiParam="apiParam"></ct-form> -->
4
4
  <!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
5
- <ct-form :api="'/api/third-dept-tran/transaction/task'" :apiParam="apiParam"></ct-form>
5
+ <ct-form :api="'/commissionmanage/apply'" :apiParam="apiParam"></ct-form>
6
6
  <!--<ct-form :api="'api/Form/formdata'"></ct-form>-->
7
7
  <ct-dialog-list></ct-dialog-list>
8
8
  </div>
@@ -14,12 +14,8 @@
14
14
  data() {
15
15
  return {
16
16
  apiParam:{
17
- actionType: "1",
18
- businessId: "1550013042447081473",
19
- pageOnly: "true",
20
- pageStyle: "2",
21
- stepId: "1550014106894327810"
22
- }
17
+
18
+ }
23
19
  }
24
20
  },
25
21
  activated(){
@@ -201,12 +201,19 @@ const api = {
201
201
  progressAction: data.content.action,
202
202
  progressKey: data.content.key,
203
203
  progressType:'export',
204
- width: '300px',
205
- height: '60px'
204
+ width: '350px',
205
+ height: '165px'
206
206
  },
207
207
  on: {
208
208
  finished() {
209
209
  Vue.prototype.$common.closeDialog(dialogOption.dialog);
210
+ },
211
+ error(data) {
212
+ Vue.prototype.$common.closeDialog(dialogOption.dialog);
213
+ Vue.prototype.$message({
214
+ message: data.rtnMsg,
215
+ type: 'info'
216
+ });
210
217
  }
211
218
  }
212
219
  }]
@@ -328,15 +328,23 @@ const common = {
328
328
  if (parent) {
329
329
  if (parent.$options.name === 'ElTabPane') {
330
330
  return parent;
331
- } else if (evControl.$options.name === 'ctDialog') {
331
+ }
332
+ else if (evControl.$options.name === 'ctDialog') {
332
333
  return evControl.vmodel.pane;
333
- } else if (parent.$options.name === 'DataDrivenSearch') {
334
+ }
335
+ else if (parent.$options.name === 'DataDrivenSearch') {
334
336
  return parent;
335
- } else if (parent.$options.name === 'DataDrivenForm') {
337
+ }
338
+ else if (parent.$options.name === 'DataDrivenForm') {
336
339
  return parent;
337
- } else if (parent.$options.name === 'DataDrivendetail') {
340
+ }
341
+ else if (parent.$options.name === 'DataDrivendetail') {
338
342
  return parent;
339
- } else {
343
+ }
344
+ else if (parent.$options.name === 'App') {
345
+ return parent;
346
+ }
347
+ else {
340
348
  return this.getParentPane(parent);
341
349
  }
342
350
  }
@@ -364,7 +372,8 @@ const common = {
364
372
  if (window.attachEvent && !window.opera) {
365
373
  //ie
366
374
  execScript(code);
367
- } else {
375
+ }
376
+ else {
368
377
  //not ie
369
378
  window.eval(code);
370
379
  }
@@ -151,7 +151,7 @@
151
151
  if(item.attrs.height){
152
152
  ph=parseInt(item.attrs.height.replace('px',''));
153
153
  }
154
- if(self.vmodel.pane && self.vmodel.pane.$el.clientHeight<ph){
154
+ if(self.vmodel.pane && self.vmodel.pane.$el && self.vmodel.pane.$el.clientHeight<ph){
155
155
  item.attrs.height=(self.vmodel.pane.$el.clientHeight-40)+'px';
156
156
  }
157
157
 
@@ -10,7 +10,7 @@
10
10
  <span>{{ model.fields1Dic.EstateName.value }}</span>
11
11
  <span> {{ model.fields1Dic.BuildingName.value }}</span>
12
12
  <span>{{ model.fields1Dic.RoomNo.value }}</span>
13
- <img :src="model.fields1Dic.FavoriteUrl.value" alt="" class="collection"/>
13
+ <img :src="model.fields1Dic.FavoriteUrl.value" alt="" @click="fieldClickHandler(model.actionRouterFavorite, $event)" class="collection" />
14
14
  </div>
15
15
  <div class="title-other">
16
16
  <span>{{ model.fields1Dic.PropertyNo.label }}{{ model.fields1Dic.PropertyNo.value }}</span>
@@ -235,8 +235,9 @@
235
235
  </el-tabs>
236
236
  <div class="more-dropdown">
237
237
  <el-dropdown trigger="click" placement="bottom">
238
- <span class="el-dropdown-link">
239
- <div class="my-icon-more"></div>
238
+ <span class="el-dropdown-link svgIcon">
239
+ <!-- <div class="my-icon-more"></div> -->
240
+ <img :src="iconSort" alt="" width="100%" />
240
241
  </span>
241
242
  <el-dropdown-menu slot="dropdown" class="tabsMore">
242
243
  <el-dropdown-item
@@ -579,6 +580,7 @@ export default {
579
580
  showData: [],
580
581
  FlagStatistics: false,
581
582
  dropDownSelected: false,
583
+ iconSort: require("../../../assets/sort.png"),
582
584
  };
583
585
  },
584
586
  mounted() {
@@ -761,6 +763,9 @@ export default {
761
763
  loadBaseInfo() {
762
764
  this.model.loadBaseInfo();
763
765
  },
766
+ loadFavorite() {
767
+ this.model.loadFavorite();
768
+ },
764
769
  handleClick(tab, event) {
765
770
  let i = tab.index;
766
771
  if (this.model.tags2 && this.model.tags2[i]) {
@@ -828,31 +833,42 @@ export default {
828
833
  });
829
834
  callBack = "loadOperation";
830
835
  }
836
+ if (router == undefined && this.model.actionRouterFavorite) {
837
+ if (field.id === this.model.actionRouterFavorite.id) {
838
+ router = this.model.actionRouterFavorite;
839
+ }
840
+ }
831
841
 
832
842
  if (router) {
833
843
  if (field.isSubmitDataFromSelf) {
834
844
  router.submitFormField.forEach((v) => {
835
845
  submitData[v] = field.list[field.listIndex].code;
836
846
  });
837
- }
847
+ }
838
848
  else {
839
849
  router.submitFormField.forEach((v) => {
840
850
  submitData[v] = self.model.fields1Dic[v].value;
841
851
  });
842
852
  }
843
- if(router.id=="PropertyEdit"){
844
- callBack="loadBaseInfo"
853
+ if (router.id == "PropertyEdit") {
854
+ callBack = "loadBaseInfo"
855
+ }
856
+ else if (router.id == "Favorite") {
857
+ callBack = "loadFavorite"
845
858
  }
846
859
  }
847
860
 
848
861
  if (callBack) {
849
- if(callBack=='loadOperation'){
862
+ if (callBack == 'loadOperation') {
850
863
  this.routerClickHandler(router, submitData, self.loadOperation);
851
864
  }
852
- else if(callBack=='loadBaseInfo'){
865
+ else if (callBack == 'loadBaseInfo') {
853
866
  this.routerClickHandler(router, submitData, self.loadBaseInfo);
854
867
  }
855
- }
868
+ else if (callBack == 'loadFavorite') {
869
+ this.routerClickHandler(router, submitData, self.loadFavorite);
870
+ }
871
+ }
856
872
  else {
857
873
  this.routerClickHandler(router, submitData);
858
874
  }
@@ -925,6 +941,11 @@ export default {
925
941
  });
926
942
  self.$common.closeDialog(dialogOption.dialog);
927
943
  },
944
+ closeDialog(ev) {
945
+ if (field.id == "Favorite" && callBack) {
946
+ callBack();
947
+ }
948
+ }
928
949
  },
929
950
  },
930
951
  ],
@@ -1805,7 +1826,7 @@ export default {
1805
1826
  height: 20px;
1806
1827
  text-align: left;
1807
1828
  top: 13px;
1808
- right: -2px;
1829
+ right: -1px;
1809
1830
  }
1810
1831
  .el-dropdown-menu--mini .el-dropdown-menu__item {
1811
1832
  font-size: 14px;
@@ -1830,6 +1851,11 @@ export default {
1830
1851
  >>> .el-tabs--top .el-tabs__item.is-top:last-child {
1831
1852
  padding-right: 15px;
1832
1853
  }
1854
+ .svgIcon {
1855
+ width: 16px;
1856
+ text-align: center;
1857
+ cursor: pointer;
1858
+ }
1833
1859
  </style>
1834
1860
 
1835
1861
 
@@ -414,10 +414,42 @@
414
414
  else if (field.isSeeVoice) {//看视频
415
415
  self.$common.browseVideo(field,submitData)
416
416
  }
417
- else if (field.isExport) {
417
+ else if (field.isExport || field.flagAsync) {
418
418
  submitData = field.getActionPara(submitData).para;
419
419
  if(field.flagAsync){
420
- self.model.export(field, submitData);
420
+ field.doAction(submitData, (res) => {
421
+ if(res.content && res.content.action){
422
+ var dialogOption = {
423
+ title: field.pageTitle || field.label,
424
+ content: [{
425
+ component: 'ct-progress',
426
+ attrs: {
427
+ progressAction: res.content.action,
428
+ progressKey: res.content.key,
429
+ progressType:'import',
430
+ width: '350px',
431
+ height: '165px'
432
+ },
433
+ on: {
434
+ finished(data) {
435
+ self.$common.closeDialog(dialogOption.dialog);
436
+ if(field && field.changeCallBackFunName){
437
+ self.changeCallBackHandler(field, field.changeCallBackFunName, data.content);
438
+ }
439
+ else{
440
+ self.model.doAction(data);
441
+ }
442
+ },
443
+ error(data) {
444
+ self.$common.closeDialog(dialogOption.dialog);
445
+ self.$message.warning(data.rtnMsg);
446
+ }
447
+ }
448
+ }]
449
+ };
450
+ self.$common.openDialog(dialogOption);
451
+ }
452
+ });
421
453
  }
422
454
  else{
423
455
  field.doAction(submitData, (data) => {
@@ -489,25 +521,29 @@
489
521
  if(field.flagAsync){
490
522
  if(res.content && res.content.action){
491
523
  var dialogOption = {
492
- title: "导入",
524
+ title: field.pageTitle || field.label,
493
525
  content: [{
494
526
  component: 'ct-progress',
495
527
  attrs: {
496
528
  progressAction: res.content.action,
497
529
  progressKey: res.content.key,
498
530
  progressType:'import',
499
- width: '300px',
500
- height: '60px'
531
+ width: '350px',
532
+ height: '165px'
501
533
  },
502
534
  on: {
503
535
  finished(data) {
504
536
  self.$common.closeDialog(dialogOption.dialog);
505
537
  if(field && field.changeCallBackFunName){
506
- self.changeCallBackHandler(field, field.changeCallBackFunName, data.content.content);
538
+ self.changeCallBackHandler(field, field.changeCallBackFunName, data.content);
507
539
  }
508
540
  else{
509
541
  self.model.doAction(data);
510
542
  }
543
+ },
544
+ error(data) {
545
+ self.$common.closeDialog(dialogOption.dialog);
546
+ self.$message.warning(data.rtnMsg);
511
547
  }
512
548
  }
513
549
  }]
@@ -592,11 +628,36 @@
592
628
  popupSearchListHandler(singleSelectio, field, router, callBack) {
593
629
  var self = this;
594
630
  var submitData = {};
631
+ var verified = true;
595
632
  var tempFormData = self.model.getFormObj();
596
633
 
597
634
  var check = true;
598
635
  var checkMsg;
599
636
  router.submitFormField.forEach((v) => {
637
+ self.$refs.Fields.forEach((f) => {
638
+ if(f.model && f.model.id===v){
639
+ if (typeof f.validExcute !== 'undefined'){
640
+ if (!f.validExcute()){
641
+ if(f.validMessage){
642
+ if(f.validMessage=='必填'){
643
+ self.$message.error('【'+f.model.label+'】'+f.validMessage);
644
+ }
645
+ else{
646
+ self.$message.error(f.validMessage);
647
+ }
648
+ }
649
+ else{
650
+ self.$message.error('【'+f.model.label+'】不能为空!');
651
+ }
652
+ verified=false;
653
+ return;
654
+ }
655
+ }
656
+ }
657
+ });
658
+ if(!verified){
659
+ return;
660
+ }
600
661
  submitData[v] = self.$common.getDataOfUpperLower(tempFormData,v);
601
662
  if (typeof tempFormData[v] === "undefined") {
602
663
  if (self.model.fieldsDic[v]) {
@@ -609,6 +670,9 @@
609
670
  }
610
671
  });
611
672
 
673
+ if(!verified){
674
+ return;
675
+ }
612
676
  if (!check) {
613
677
  self.$message.warning(checkMsg);
614
678
  return;
@@ -4,6 +4,7 @@
4
4
  <h5>{{model.title}}</h5>
5
5
  </div>
6
6
  <div class="list-button">
7
+ <component v-if="model.selectRouter !== null" :is="model.selectRouter.is" :vmodel="model.selectRouter" @click="popupSearchListHandle" ></component>
7
8
  <el-button v-if="model.create" type="success" class=" max-btn-add" size="mini" icon="el-icon-circle-plus-outline" @click="addRow">
8
9
  新增
9
10
  </el-button>
@@ -12,7 +13,8 @@
12
13
  <div id="listTable">
13
14
  <el-row>
14
15
  <el-col :span="24">
15
- <el-table size="mini" class="max-table--border" :data="model.tableData" :key="itemKey" border style="width: 100%" highlight-current-row :show-summary="model.showSummary" :summary-method="getSummaries">
16
+ <el-table size="mini" class="max-table--border" :data="model.tableData" :key="itemKey" border
17
+ style="width: 100%" highlight-current-row :show-summary="model.showSummary" :summary-method="getSummaries">
16
18
  <!--数据列-->
17
19
  <el-table-column v-for="(v,i) in model.rows[0].field" :key="i" :prop="v.id" :label="v.label" v-if="v.show !== false">
18
20
  <template slot="header" slot-scope="scope">
@@ -41,7 +43,7 @@
41
43
  </el-table-column>
42
44
 
43
45
  <!--操作列-->
44
- <el-table-column label="操作" v-if="model.rows[0].edit || model.rows[0].delete || model.buttons.length > 0">
46
+ <el-table-column label="操作" v-if="model.rows[0].edit || model.rows[0].delete || model.buttons.length > 0" fixed="right">
45
47
  <template slot-scope="scope">
46
48
  <span v-if="scope.row.edit || scope.row.isSet" class="el-tag el-tag--info el-tag--mini" style="cursor: pointer;" @click="saveRow(scope.row,scope.$index,true)">
47
49
  {{scope.row.isSet?'保存':"修改"}}
@@ -104,8 +106,7 @@
104
106
  itemKey: Math.random()
105
107
  }
106
108
  },
107
- created() {
108
-
109
+ created() {
109
110
  let self = this;
110
111
  this.model = this.vmodel;
111
112
  this.model.OptApi = this.api;
@@ -180,6 +181,7 @@
180
181
  }
181
182
 
182
183
  row.isSet = false;
184
+ app.model.rows[app.model.source.rows.findIndex(v => v.$sourceIndex === row.$sourceIndex)].edited=true;
183
185
  app.model.currentRow.isSet = false;
184
186
  app.itemKey = Math.random();
185
187
  this.model.change = this.model.formListChange;
@@ -215,12 +217,12 @@
215
217
  self.$emit('change');
216
218
  });
217
219
  },
218
- editRow(index) {
220
+ editRow(sourceIndex) {
219
221
  var self = this;
220
- this.model.editRow(index, () => {
222
+ this.model.editRow(sourceIndex, () => {
221
223
  self.$forceUpdate();
222
224
  self.$refs.FieldsLabel.forEach((fd) => {
223
- if (fd.rowNum === index) {
225
+ if (fd.rowNum === sourceIndex) {
224
226
  fd.$forceUpdate();
225
227
  }
226
228
  });
@@ -259,7 +261,7 @@
259
261
  changeHandler(field, index) {
260
262
  var self = this;
261
263
  this.model.change = field.change;
262
- this.model.currentRowIndex = index;
264
+ this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === index);
263
265
  this.model.currentEventField = field;
264
266
  self.$emit('change');
265
267
 
@@ -269,7 +271,7 @@
269
271
  inputHandler(field, index) {
270
272
  var self = this;
271
273
  this.model.input = field.input;//当前小组件事件作为大组件事件
272
- this.model.currentRowIndex = index;
274
+ this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === index);
273
275
  this.model.currentEventField = field;
274
276
 
275
277
  self.$emit('input');
@@ -277,22 +279,31 @@
277
279
  //如果有汇总列,触发重新计算汇总
278
280
  this.recalculationSummary();
279
281
  },
280
- //如果有汇总列,触发重新计算汇总
281
- recalculationSummary() {
282
- if (this.model.showSummary) {
283
- this.model.tableData.push({});
284
- this.model.tableData.pop();
285
- }
286
- },
287
282
  buttonClick(row, button) {
288
283
  var submitData = {};
289
284
  button.submitFormField.forEach((v) => {
290
285
  submitData[v] = row[v].value;
291
286
  });
292
- this.model.currentRowIndex = row.$sourceIndex;
287
+ this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === row.$sourceIndex);
293
288
 
294
289
  this.$emit('tableButtonClick', button, submitData);
295
290
  },
291
+ popupSearchListHandle(field) {
292
+ if(field.isSearchPageWithList){
293
+ var self = this;
294
+ self.$emit('popupSearchList', false, self.model, field, (data) => {
295
+ if (data && data.length>0) {
296
+ data.forEach((v) => {
297
+ if(v.code){
298
+ self.model.insertOrUpdateRow(JSON.parse(v.code),true);
299
+ // self.recalculationSummary();
300
+ // self.$emit('change');
301
+ }
302
+ });
303
+ }
304
+ });
305
+ }
306
+ },
296
307
  rolRouterClickHandler(field, rowData,rowindex) {
297
308
  if(this.$refs['popover'+rowindex]){
298
309
  this.$refs['popover'+rowindex][0].doClose();
@@ -305,6 +316,13 @@
305
316
 
306
317
  this.$emit('tableButtonClick', field, submitData);
307
318
  },
319
+ //如果有汇总列,触发重新计算汇总
320
+ recalculationSummary() {
321
+ if (this.model.showSummary) {
322
+ this.model.tableData.push({});
323
+ this.model.tableData.pop();
324
+ }
325
+ },
308
326
  //汇总行 计算
309
327
  getSummaries(param) {
310
328
  const self = this;
@@ -338,7 +356,6 @@
338
356
  return Number(prev);
339
357
  }
340
358
  }, 0);
341
- //sums[index] += ' 元';
342
359
  if (data[0][column.property].decimals && data[0][column.property].decimals > 0) {
343
360
  sums[index] = sums[index].toFixed(data[0][column.property].decimals);
344
361
  }
@@ -22,8 +22,8 @@
22
22
  <span class="el-select__tags-text">{{item}}</span>
23
23
  </span>
24
24
  </span>
25
- <label v-else class="ct-lable">
26
- {{model.labelValue}}
25
+ <label v-else class="ct-lable" :class="{ isWidth: model.labelValue.length > 30 }">
26
+ <span :class="{ isEllipsis: model.labelValue.length > 30 }"> {{ model.labelValue }}</span>
27
27
  </label>
28
28
  <span slot="suffix" v-if="model.unitName" class="ct-unitnameLable">{{model.unitName}}</span>
29
29
  <span v-if="model.sufLabel" style="width:auto" class="spanMessage">{{model.sufLabel}}</span>
@@ -52,3 +52,16 @@
52
52
  }
53
53
  }
54
54
  }</script>
55
+ <style scoped>
56
+ .isWidth {
57
+ width: 60%;
58
+ display: flex;
59
+ }
60
+ .isEllipsis {
61
+ width: auto;
62
+ overflow: hidden;
63
+ white-space: nowrap;
64
+ text-overflow: ellipsis;
65
+ -o-text-overflow: ellipsis;
66
+ }
67
+ </style>
@@ -3,8 +3,11 @@
3
3
  <div v-if="model !== null && !loading" class="ct-form">
4
4
  <div class="ct-ptb5 max-flex">
5
5
  <template v-for="(col, index) in model.fields" v-if="col.show !== false">
6
- <br v-if="col.is === 'ct-linefeed'" />
7
- <component ref="Fields" :is="col.is" v-bind="col.listBind" :vmodel="col" :api="model.optionApi" @click="getClickHandler(col.action)"></component>
6
+ <!-- <br v-if="col.is === 'ct-linefeed'" /> -->
7
+ <div v-if="col.is === 'ct-linefeed'" style="width: 100%;">
8
+ <el-divider></el-divider>
9
+ </div>
10
+ <component v-else ref="Fields" :is="col.is" v-bind="col.listBind" :vmodel="col" :api="model.optionApi" @click="getClickHandler(col.action)"></component>
8
11
  </template>
9
12
  </div>
10
13
  <ct-popupSearchListTable ref="table" :api="searchDataApi" :jumpBtnName="jumpBtnName" :filterBtnName="filterBtnName"
@@ -67,7 +70,6 @@
67
70
  this.$refs.table.searchComplate(this.model,this.model.flagSearch);
68
71
  });
69
72
  this.loading = false;
70
-
71
73
  //通知父组件加载完成
72
74
  this.$emit('loaded');
73
75
  },
@@ -146,12 +148,19 @@
146
148
  }
147
149
  }
148
150
  </script>
149
- <style>
151
+ <style scoped>
150
152
  .max-flex{
151
153
  display: flex;
152
-
154
+ flex-wrap: wrap;
153
155
  }
154
156
  .max-flex .field-top{
155
157
  margin-right: 10px;
156
158
  }
159
+ .el-divider {
160
+ background-color: #fff;
161
+ }
162
+
163
+ .el-divider--horizontal {
164
+ margin: 5px 0;
165
+ }
157
166
  </style>
@@ -55,14 +55,12 @@
55
55
  loading: true,
56
56
  jumpStr: ''
57
57
  }
58
- },
59
-
58
+ },
60
59
  methods: {
61
60
  load(data) {
62
61
  this.model = data;
63
62
  this.loadFields();
64
63
  this.loading = false;
65
- //this.
66
64
  this.resetTabelWidth();
67
65
 
68
66
  //通知父组件加载完成