centaline-data-driven 1.2.29 → 1.2.30

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.29",
3
+ "version": "1.2.30",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
@@ -33,6 +33,8 @@
33
33
  :rowspan="column.rowspan"
34
34
  :colspan="column.colspan"
35
35
  :class="[colHasWidth[colIndex],column.sortAction,model.tdClass,
36
+ rowBorderLeftColumns.includes(column.id)?'ct-td4':null,
37
+ rowBorderRightColumns.includes(column.id)?'ct-td5':null,
36
38
  colIndex === leftShadow?'shadowLeft':null,
37
39
  colIndex === rightShadow?'shadowRight':null,
38
40
  column.fixed === 'left'?'left-fixation-th':null,
@@ -66,7 +68,10 @@
66
68
  :colspan="tdColspan(column, row)"
67
69
  class="ct-td"
68
70
  :class="[colHasWidth[colIndex],model.tdClass,
69
- row.flagRow?'ct-td3':null,
71
+ //row.flagRow && row.columnShow===column.id?'ct-td3':null,
72
+ rowBorderLeftColumns.includes(column.id)?'ct-td4':null,
73
+ rowBorderRightColumns.includes(column.id)?'ct-td5':null,
74
+ selectKey===row[model.rowHiddenKey]?'select':null,
70
75
  colIndex === leftShadow?'shadowLeft':null,
71
76
  colIndex === rightShadow?'shadowRight':null,
72
77
  column.fixed === 'left'?'left-fixation':null,
@@ -74,8 +79,8 @@
74
79
  column.fixed === 'right'?'right-fixation':null]"
75
80
  v-bind="column.attrs">
76
81
  <!--操作列-->
77
- <div v-if="row.flagRow" :class="column.autoRowHeight ? 'lineFeedCell':'cell'">
78
- {{row.descNewRow}}
82
+ <div v-if="row.flagRow" :class="column.autoRowHeight ? 'lineFeedCell':'cell'" style="color: #999;">
83
+ {{row.rowHiddenColumns && row.rowHiddenColumns.includes(column.id)?"":row.descNewRow}}
79
84
  </div>
80
85
  <div v-else-if="column.id==='operation' && row.rowHiddenColumns==undefined" class="div_allinline" :class="column.autoRowHeight ? 'lineFeedCell':'cell'">
81
86
  <ct-tablecurrency v-for="(router,rowRouterIndex) in model.rowRouter" :key="rowRouterIndex"
@@ -125,6 +130,10 @@
125
130
  colHasWidth: {},//有无列宽集合
126
131
  pageRowMin: 0,//页面实际的第一行号
127
132
  pageRowMax: 100,//页面实际的第后行号
133
+ rowMergedColumns:['contactNameDesc','propertyIdentityTypeID','operation'],
134
+ rowBorderLeftColumns:['contactNameDesc','operation'],
135
+ rowBorderRightColumns:['propertyIdentityTypeID','operation'],
136
+ selectKey:'',
128
137
  }
129
138
  },
130
139
  mounted() {
@@ -178,7 +187,8 @@
178
187
  });
179
188
  router.doSearch(submitData, (res) => {
180
189
  if (res.rtnCode === 200) {
181
- res.apiRouter=self.apiRouter;
190
+ res.apiRouter=self.apiRouter;
191
+ res.rowMergedColumns=self.rowMergedColumns;
182
192
  self.loaderObj.ContactList(res,null,self.load);
183
193
  self.flagLook = true;
184
194
  }
@@ -202,19 +212,21 @@
202
212
  },
203
213
  rowColorChange() {
204
214
  var index = this.model.selectIndex;
205
- if (typeof this.$refs['rows.' + index] !== "undefined" && this.currentRow !== this.$refs['rows.' + index][0]) {
206
- if (this.currentRow !== null) {
207
- for (var i = 0; i < this.currentRow.children.length; i++) {
208
- this.currentRow.children[i].classList.remove('select');
209
- }
210
- }
211
- if (this.$refs['rows.' + index][0]) {
212
- for (var j = 0; j < this.$refs['rows.' + index][0].children.length; j++) {
213
- this.$refs['rows.' + index][0].children[j].classList.add('select');
214
- }
215
- }
216
- this.currentRow = this.$refs['rows.' + index][0] || null;
217
- }
215
+ this.selectKey=this.model.listData[index][this.model.rowHiddenKey];
216
+ this.currentRow = this.$refs['rows.' + index][0] || null;
217
+ // if (typeof this.$refs['rows.' + index] !== "undefined" && this.currentRow !== this.$refs['rows.' + index][0]) {
218
+ // if (this.currentRow !== null) {
219
+ // for (var i = 0; i < this.currentRow.children.length; i++) {
220
+ // this.currentRow.children[i].classList.remove('select');
221
+ // }
222
+ // }
223
+ // if (this.$refs['rows.' + index][0]) {
224
+ // for (var j = 0; j < this.$refs['rows.' + index][0].children.length; j++) {
225
+ // this.$refs['rows.' + index][0].children[j].classList.add('select');
226
+ // }
227
+ // }
228
+ // this.currentRow = this.$refs['rows.' + index][0] || null;
229
+ // }
218
230
  },
219
231
  tdRowspan(column, row) {
220
232
  if (!column.show) {
@@ -222,17 +234,16 @@
222
234
  }
223
235
 
224
236
  //合并行
225
- if (row.$rowspan !== 0 && this.model.rowMergedColumns.indexOf(column.id) > -1) {
237
+ if (row.$rowspan !== 0 && this.rowMergedColumns.includes(column.id)) {
226
238
  return row.$rowspan;
227
239
  }
228
240
 
229
241
  return '';
230
242
  },
231
243
  tdColspan(column, row) {
232
- if (row.colspan !== 0) {
244
+ if (row.colspan !== 0 && row.columnShow===column.id) {
233
245
  return row.colspan;
234
246
  }
235
- return '';
236
247
  },
237
248
  tdShow(column, row) {
238
249
  if (!column.show) {
@@ -240,11 +251,11 @@
240
251
  }
241
252
 
242
253
  //合并行
243
- if (row.$rowspan === 0 && this.model.rowMergedColumns.indexOf(column.id) > -1) {
254
+ if (row.$rowspan === 0 && this.rowMergedColumns.indexOf(column.id) > -1) {
244
255
  return false;
245
256
  }
246
257
 
247
- if(row.flagRow && row.columnShow!==column.id){
258
+ if(row.flagRow && row.columnShow!==column.id && !row.rowHiddenColumns.includes(column.id)){
248
259
  return false;
249
260
  }
250
261
 
@@ -489,11 +500,11 @@
489
500
 
490
501
  .ct-tableParent {
491
502
  overflow: auto;
492
- border-bottom: 1px solid #ebeef5;
503
+ border-bottom: 0px;
493
504
  width: 100%;
494
505
  outline: 0;
495
506
  }
496
- .ct-searchtable .ct-table {
507
+ .ct-searchtable .ct-table {
497
508
  min-width: 100%;
498
509
  border-collapse: separate;
499
510
  }
@@ -519,6 +530,12 @@
519
530
  .ct-searchtable .ct-tr > .ct-td3 {
520
531
  border: 1px solid #e7e8eb;
521
532
  }
533
+ .ct-searchtable .ct-tr > .ct-td4 {
534
+ border-left: 1px solid #e7e8eb;
535
+ }
536
+ .ct-searchtable .ct-tr > .ct-td5 {
537
+ border-right: 1px solid #e7e8eb;
538
+ }
522
539
  .shadowLeft {
523
540
  border-right: 1px solid #e7e8eb;
524
541
  box-shadow: 2px 0 3px -1px rgba(0,0,0,0.1);
@@ -7,35 +7,40 @@
7
7
  <div v-if="model.showLabel && model.label" class="el-input-group__prepend" :class="[model.labelClass]">
8
8
  {{model.label}}
9
9
  </div>
10
- <el-popover ref="pop" placement="bottom-start" v-model="showDrop" :class="[model.showLabel?'showLabel':'']" :trigger="(!model.paramName || model.lock)? 'manual' : 'click'">
11
- <div>
12
- <div>
13
- <el-input ref="searchInput" :size="model.attrs.size" suffix-icon="el-icon-search" v-model="searchText" @input="searchInputHandle"></el-input>
14
- </div>
15
- <ctSelectOptionVertical :model="model" @click="selectOption($event)"></ctSelectOptionVertical>
10
+ <div class="ct-sostt">
11
+ <div :class="[model.w1=='0'?'ct-input-editor':'ct-input-editorw']" :style="{'width':(model.w1!='0'?model.w1+'px':'auto')}">
12
+ <el-popover ref="pop" placement="bottom-start" v-model="showDrop" :class="[model.showLabel?'showLabel':'']" :trigger="(!model.paramName || model.lock)? 'manual' : 'click'">
13
+ <div>
14
+ <div>
15
+ <el-input ref="searchInput" :size="model.attrs.size" suffix-icon="el-icon-search" v-model="searchText" @input="searchInputHandle"></el-input>
16
+ </div>
17
+ <ctSelectOptionVertical :model="model" @click="selectOption($event)"></ctSelectOptionVertical>
18
+ </div>
19
+ <input slot="reference" v-bind="model.attrs" readonly="readonly" v-model="model.text" :placeholder="soPlaceholder"
20
+ ref="ct-input" :style="{height:inputHeight + 'px','line-height':inputLineHeight + 'px'}"
21
+ @focus="focusHandle" @blur="blurHandle" @click="clickHandle" @input="inputHandler($event)" @change="changeHandler($event)"
22
+ :disabled="model.lock" :class="model.lock ? 'ct-is-disabled' : 'ct-input_inner'" />
23
+ </el-popover>
24
+ <span v-if="!model.lock" class="el-input__suffix" @click="clickHandle" :class="[model.attrs.size?'el-input--'+model.attrs.size:'']">
25
+ <span v-if="showClear === false" class="el-input__suffix-inner">
26
+ <i class="el-select__caret el-input__icon el-icon-arrow-up" :class="{'is-reverse':showDrop}"></i>
27
+ </span>
28
+ <span v-if="showClear === true" class="el-input__suffix-inner ct-close">
29
+ <i class="el-select__caret el-input__icon el-icon-circle-close is-show-close" @click="clearClickHandle($event)"></i>
30
+ </span>
31
+ </span>
16
32
  </div>
17
- <input slot="reference" v-bind="model.attrs" readonly="readonly" v-model="model.text" :placeholder="soPlaceholder"
18
- ref="ct-input" :style="{height:inputHeight + 'px','line-height':inputLineHeight + 'px'}"
19
- @focus="focusHandle" @blur="blurHandle" @click="clickHandle" @input="inputHandler($event)" @change="changeHandler($event)"
20
- :disabled="model.lock" :class="model.lock ? 'ct-is-disabled' : 'ct-input_inner'" />
21
- </el-popover>
22
- <span v-if="!model.lock" class="el-input__suffix" @click="clickHandle" :class="[model.attrs.size?'el-input--'+model.attrs.size:'']">
23
- <span v-if="showClear === false" class="el-input__suffix-inner">
24
- <i class="el-select__caret el-input__icon el-icon-arrow-up" :class="{'is-reverse':showDrop}"></i>
25
- </span>
26
- <span v-if="showClear === true" class="el-input__suffix-inner ct-close">
27
- <i class="el-select__caret el-input__icon el-icon-circle-close is-show-close" @click="clearClickHandle($event)"></i>
28
- </span>
29
- </span>
33
+ <div class="ml10" :class="[model.w2=='0'?'ct-input-editor':'ct-input-editorw']" :style="{'width':(model.w2!='0'?model.w2+'px':'auto')}">
34
+ <el-input :title="model.lock?model.value1:''" :type="model.inputType" v-model="model.value1" v-bind="model.attrs" @input="inputHandler($event);isShowClear()" @change="changeHandler($event)"
35
+ class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'']" :disabled="model.lock" :rows="model.rows"
36
+ :readonly="model.readonly" :show-password="model.isPassword" autocomplete="on" :maxlength="model.max" :show-word-limit="model.showWordLimit"
37
+ @keyup.enter.native="search()">
38
+ </el-input>
39
+ </div>
40
+ </div>
30
41
  </div>
31
42
  </div>
32
- <div style="width:40%; margin-left:10px;">
33
- <el-input :title="model.lock?model.value1:''" :type="model.inputType" v-model="model.value1" v-bind="model.attrs" @input="inputHandler($event);isShowClear()" @change="changeHandler($event)"
34
- class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'']" :disabled="model.lock" :rows="model.rows"
35
- :readonly="model.readonly" :show-password="model.isPassword" autocomplete="on" :maxlength="model.max" :show-word-limit="model.showWordLimit"
36
- @keyup.enter.native="search()">
37
- </el-input>
38
- </div>
43
+
39
44
  <span v-if="model.sufLabel" class="spanMessage ct-flex-div-span">{{model.sufLabel}}</span>
40
45
  <transition name="el-fade-in">
41
46
  <span v-show="!valid" class="errorMessage">
@@ -243,7 +248,8 @@
243
248
  },
244
249
  //不能共用的数据校验
245
250
  selfValidExcute: function (eventName) {
246
- if (this.required == true && this.model.value1 == "") {
251
+ if (this.model.required && this.model.value1 == "") {
252
+ this.validMessage = "必填";
247
253
  this.valid = false;
248
254
  return false;
249
255
  }
@@ -280,4 +286,27 @@
280
286
  .h26{
281
287
  height: 26px;
282
288
  }
289
+ .ct-so .ct-sostt {
290
+ width: 100%;
291
+ display: flex;
292
+ flex-wrap: wrap;
293
+ }
294
+
295
+ .ct-so .ct-sostt .ct-input-editor {
296
+ flex: 1 0 0;
297
+ position: relative;
298
+ }
299
+ .ct-so .ct-sostt .ct-input-editorw {
300
+ position: relative;
301
+ display:inline-block;
302
+ }
303
+
304
+ .ct-so .ct-sostt .ml10 {
305
+ margin-left:10px;
306
+ }
307
+ .ct-sostt .showLabel input {
308
+ border-top-left-radius: 4px !important;
309
+ border-bottom-left-radius: 4px !important;
310
+ text-align: left !important;
311
+ }
283
312
  </style>
@@ -21,7 +21,8 @@ const ContactList = function (source,para ,callBack) {
21
21
  selectIndex: 0,
22
22
  formData: formData,
23
23
  rowHiddenKey:'contactID',
24
- rowHiddenColumns:['contactName','propertyIdentityTypeID'],
24
+ rowHiddenColumns:['contactNameDesc','propertyIdentityTypeID'],
25
+ columnShow:'contactNoTypeDesc',
25
26
  attrs: {
26
27
  size: 'mini'
27
28
  },
@@ -90,8 +91,8 @@ const ContactList = function (source,para ,callBack) {
90
91
  var newRow = {};
91
92
  newRow[rtn.rowHiddenKey]=v[rtn.rowHiddenKey];
92
93
  newRow.descNewRow = v.descNewRow;
93
- newRow.colspan = rtn.dataFieldcolumns.length;
94
- newRow.columnShow=rtn.dataFieldcolumns[0].id;
94
+ newRow.colspan = rtn.dataFieldcolumns.length-rtn.rowMergedColumns.length;
95
+ newRow.columnShow=rtn.columnShow;
95
96
  newRow.flagRow=true;
96
97
  rtn._listData.push(newRow);
97
98
  }
@@ -283,7 +284,7 @@ const ContactList = function (source,para ,callBack) {
283
284
  }
284
285
  },
285
286
  get rowMergedColumns() {
286
- return source.content.rowMergedColumns || [];
287
+ return source.rowMergedColumns || [];
287
288
  },
288
289
  get apiRouter() {
289
290
  return source.apiRouter;
@@ -291,13 +292,14 @@ const ContactList = function (source,para ,callBack) {
291
292
  getCurrentRowApiData(rtnData,router) {
292
293
  var self = this;
293
294
  var searchFields = self.apiRouter.getSearchPara();
295
+ var searchValue1=router.flagAddRowAfterAction? rtnData.content: rtn.listData[rtn.selectIndex][self.primaryKey];
294
296
  if (self.primaryKey) {
295
297
  searchFields.fields.push({
296
298
  fieldName1: self.primaryFieldMappingDBName ? self.primaryFieldMappingDBName : self.primaryKey,
297
299
  groupName: self.primaryKey,
298
300
  operation: Enum.SearchOperation.等于,
299
301
  searchDataType: Enum.SearchDataType.Text,
300
- searchValue1: router.flagAddRowAfterAction? rtnData.content: rtn.listData[rtn.selectIndex][self.primaryKey],
302
+ searchValue1: searchValue1,
301
303
  });
302
304
  }
303
305
  Vue.prototype.$api.postHandler(common.globalUri(), {
@@ -317,8 +319,8 @@ const ContactList = function (source,para ,callBack) {
317
319
  var newRow = {};
318
320
  newRow[rtn.rowHiddenKey]=v[rtn.rowHiddenKey];
319
321
  newRow.descNewRow = v.descNewRow;
320
- newRow.colspan = rtn.dataFieldcolumns.length;
321
- newRow.columnShow=rtn.dataFieldcolumns[0].id;
322
+ newRow.colspan = rtn.dataFieldcolumns.length-rtn.rowMergedColumns.length;
323
+ newRow.columnShow=rtn.columnShow;
322
324
  newRow.flagRow=true;
323
325
  rtn._listData.unshift(newRow);
324
326
  }
@@ -327,11 +329,29 @@ const ContactList = function (source,para ,callBack) {
327
329
  rtn.setHiddenRow();
328
330
  }
329
331
  else{
330
- // response.content.rows.forEach((row) => {
331
- // for (var vkey in row) {
332
- // rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
333
- // }
334
- // });
332
+ let updateData=[];
333
+ response.content.rows.forEach((v) => {
334
+ updateData.push(v);
335
+ if(v.descNewRow){
336
+ var newRow = {};
337
+ newRow[rtn.rowHiddenKey]=v[rtn.rowHiddenKey];
338
+ newRow.descNewRow = v.descNewRow;
339
+ newRow.colspan = rtn.dataFieldcolumns.length-rtn.rowMergedColumns.length;
340
+ newRow.columnShow=rtn.columnShow;
341
+ newRow.flagRow=true;
342
+ updateData.push(newRow);
343
+ }
344
+ });
345
+ let strat=0;
346
+ let count=0;
347
+ rtn._listData.forEach((v,i) => {
348
+ if(v[rtn.rowHiddenKey]===searchValue1){
349
+ if(strat===0)strat=i;
350
+ count=count+1;
351
+ }
352
+ });
353
+ rtn._listData.splice(strat, count,updateData);
354
+ rtn.setHiddenRow();
335
355
  }
336
356
  }
337
357
  }
@@ -372,8 +392,8 @@ const ContactList = function (source,para ,callBack) {
372
392
  var newRow = {};
373
393
  newRow[rtn.rowHiddenKey]=v[rtn.rowHiddenKey];
374
394
  newRow.descNewRow = v.descNewRow;
375
- newRow.colspan = rtn.dataFieldcolumns.length;
376
- newRow.columnShow=rtn.dataFieldcolumns[0].id;
395
+ newRow.colspan = rtn.dataFieldcolumns.length-rtn.rowMergedColumns.length;
396
+ newRow.columnShow=rtn.columnShow;
377
397
  newRow.flagRow=true;
378
398
  rtn._listData.unshift(newRow);
379
399
  }
@@ -383,11 +403,30 @@ const ContactList = function (source,para ,callBack) {
383
403
  break;
384
404
  case Enum.ActionType.Update://修改
385
405
  case Enum.ActionType.CloseTabThenUpdate://修改
386
- response.content.forEach((row) => {
387
- for (var vkey in row) {
388
- rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
406
+ var searchValue1=rtn.listData[rtn.selectIndex][self.primaryKey];
407
+ let updateData=[];
408
+ response.content.forEach((v) => {
409
+ updateData.push(v);
410
+ if(v.descNewRow){
411
+ var newRow = {};
412
+ newRow[rtn.rowHiddenKey]=v[rtn.rowHiddenKey];
413
+ newRow.descNewRow = v.descNewRow;
414
+ newRow.colspan = rtn.dataFieldcolumns.length-rtn.rowMergedColumns.length;
415
+ newRow.columnShow=rtn.columnShow;
416
+ newRow.flagRow=true;
417
+ updateData.push(newRow);
418
+ }
419
+ });
420
+ let strat=0;
421
+ let count=0;
422
+ rtn._listData.forEach((v,i) => {
423
+ if(v[rtn.rowHiddenKey]===searchValue1){
424
+ if(strat===0)strat=i;
425
+ count=count+1;
389
426
  }
390
427
  });
428
+ rtn._listData.splice(strat, count,updateData);
429
+ rtn.setHiddenRow();
391
430
  break;
392
431
  default:
393
432
  break;
@@ -430,19 +469,31 @@ const ContactList = function (source,para ,callBack) {
430
469
  return;
431
470
  }
432
471
  let lastKey='';
472
+ let count=1;
473
+ let firstIndex=0;
433
474
  for (let i = 0; i < rtn.listData.length; i++) {
475
+ rtn.listData[i].$rowspan=0;
434
476
  if(lastKey){
435
477
  if(rtn.listData[i][rtn.rowHiddenKey]){
436
478
  if(rtn.listData[i][rtn.rowHiddenKey]===lastKey){
437
479
  rtn.listData[i].rowHiddenColumns=rtn.rowHiddenColumns;
480
+ count++;
481
+ if(i===rtn.listData.length-1){
482
+ rtn.listData[firstIndex].$rowspan=count;
483
+ }
438
484
  }
439
485
  else{
486
+ rtn.listData[firstIndex].$rowspan=count;
440
487
  lastKey=rtn.listData[i][rtn.rowHiddenKey];
488
+ count=1;
489
+ firstIndex=i;
441
490
  }
442
491
  }
443
492
  }
444
493
  else{
445
494
  lastKey=rtn.listData[i][rtn.rowHiddenKey];
495
+ count=1;
496
+ firstIndex=i;
446
497
  }
447
498
  }
448
499
  },
@@ -22,6 +22,22 @@ const SosTt = function (source, moreActionRouter) {
22
22
  source.name1 = v;
23
23
  }
24
24
  },
25
+ get w1() {
26
+ if (typeof source.width1 !== 'undefined' && source.width1 != "0") {
27
+ return source.width1;
28
+ }
29
+ else {
30
+ return '0';
31
+ }
32
+ },
33
+ get w2() {
34
+ if (typeof source.width2 !== 'undefined' && source.width2 != "0") {
35
+ return source.width2;
36
+ }
37
+ else {
38
+ return '0';
39
+ }
40
+ },
25
41
  get optionColCount() {
26
42
  return parseInt(source.optCount) || 5;
27
43
  },