centaline-data-driven 1.3.94 → 1.3.96

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.94",
3
+ "version": "1.3.96",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
@@ -828,7 +828,9 @@ html {
828
828
  float: none;
829
829
  display: inline-block;
830
830
  }
831
-
831
+ .inputHighlights .el-textarea__inner{
832
+ background-color: transparent !important;
833
+ }
832
834
  .ml10{
833
835
  margin-left: 10px;
834
836
  }
@@ -6,7 +6,7 @@
6
6
  </ct-tableStats>
7
7
 
8
8
  <ct-tabletoolbar ref="toolbar" v-if="!isLoading && model && model.buttons"
9
- :buttons="model.buttons"
9
+ :buttons="model.buttons" :key="model.toolbarKey"
10
10
  @click="toolbarClickHandler($event)" @importComplete="importComplete"
11
11
  :optionApi="model.optionApi" :searchModel="model.searchModel">
12
12
  </ct-tabletoolbar>
@@ -8,12 +8,13 @@
8
8
  <span>{{model.label}}</span>
9
9
  </div>
10
10
  <div ref="highlights" v-if="model.firbiddenWords" class="backdrop" :style="{width:firbiddenWordsWidth+'px',height:firbiddenWordsHeight+'px',left:firbiddenWordsLeft+'px',top:firbiddenWordsTop+'px'}">
11
- <div class="highlights">{{model.value}}</div>
11
+ <div class="highlights" v-html="firbiddenWordsValue"></div>
12
12
  </div>
13
13
  <el-input ref="input" :title="model.lock?model.value:''" :type="model.inputType" v-model="model.value" v-bind="model.attrs" @input="inputHandler($event);isShowClear()" @change="changeHandler($event)"
14
- class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'']" :disabled="model.lock" :rows="model.rows"
14
+ class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'',model.firbiddenWords?'inputHighlights':'']"
15
+ :disabled="model.lock" :rows="model.rows"
15
16
  :readonly="model.readonly" :show-password="model.isPassword" autocomplete="on" :maxlength="model.max" :show-word-limit="model.showWordLimit"
16
- @keyup.enter.native="search()" style="z-index: 3;">
17
+ @keyup.enter.native="search()" style="z-index: 3;background-color: transparent;">
17
18
  <span slot="suffix" v-if="model.unitName" class="ct-unitname" :class="showClear?'unitName-20':'unitName-0'">{{model.unitName}}</span>
18
19
 
19
20
  <span slot="suffix" class="el-input__suffix el-input--mini is-show-Span" v-if="!model.isPassword&&showClear" :class="model.unitName?'ct-right-10':'ct-right-0'">
@@ -28,8 +29,8 @@
28
29
 
29
30
  <div v-if="model.moreActionRouter && !model.lock">
30
31
  <img v-if="model.moreActionRouter.imgUrl" class="ct-tablecurrencyImg ct-tablecurrencyItem"
31
- :src="model.moreActionRouter.imgUrl" :title="model.moreActionRouter.label" @click="popupSearchListHandle"/>
32
- <el-button v-else size="mini" type="primary" class="h26" @click="popupSearchListHandle">
32
+ :src="model.moreActionRouter.imgUrl" :title="model.moreActionRouter.label" @click="popupSearchListHandle($event)"/>
33
+ <el-button v-else size="mini" type="primary" class="h26" @click="popupSearchListHandle($event)">
33
34
  {{model.moreActionRouter.label}}
34
35
  </el-button>
35
36
  </div>
@@ -59,6 +60,7 @@
59
60
  showClear: false,
60
61
  minText:'',
61
62
  minTextLeft:0,
63
+ firbiddenWordsValue:'',
62
64
  firbiddenWordsWidth:0,
63
65
  firbiddenWordsHeight:0,
64
66
  firbiddenWordsLeft:0,
@@ -89,6 +91,7 @@
89
91
  this.firbiddenWordsHeight=this.$refs.input.$el.offsetHeight;
90
92
  this.firbiddenWordsLeft=this.$refs.input.$el.offsetLeft;
91
93
  this.firbiddenWordsTop=this.$refs.input.$el.offsetTop;
94
+ this.$refs.input.$el.addEventListener('scroll',this.scrollHandler,true);
92
95
  }
93
96
  },
94
97
  methods: {
@@ -135,7 +138,7 @@
135
138
  }
136
139
  this.search();
137
140
  },
138
- popupSearchListHandle: function () {
141
+ popupSearchListHandle: function (e) {
139
142
  var self = this;
140
143
  self.showDrop=false;
141
144
  self.$emit('popupSearchList', false, self.model, self.model.moreActionRouter, (optionArr) => {
@@ -146,12 +149,37 @@
146
149
  else {
147
150
  self.model.value=row[self.model.optionAttrs.label];
148
151
  }
152
+ self.inputHandler(e);
149
153
  });
150
154
  });
151
155
  },
152
156
  inputHandler(e) {
157
+ this.applyHighlights();
153
158
  this.$emit('inputHandler',e);
154
- }
159
+ },
160
+ scrollHandler() {
161
+ var scrollTop = this.$refs.input.$el.children[0].scrollTop;
162
+ var scrollHeight = this.$refs.input.$el.children[0].scrollHeight;
163
+ var offsetHeight = this.$refs.input.$el.children[0].offsetHeight;
164
+ // console.log(scrollTop)
165
+ // console.log(scrollHeight)
166
+ // console.log(offsetHeight)
167
+ // if(scrollTop+offsetHeight>=scrollHeight){
168
+ // scrollTop=scrollTop-32;
169
+ // }
170
+ this.$refs.highlights.scrollTop=scrollTop;
171
+ },
172
+ applyHighlights() {
173
+ var self=this;
174
+ if(self.model.firbiddenWords){
175
+ self.firbiddenWordsValue=self.model.value;
176
+ let joinChar=self.model.joinChar || ',';
177
+ self.model.firbiddenWords.split(joinChar).forEach(w => {
178
+ let reg1=new RegExp(w,'g');
179
+ self.firbiddenWordsValue=self.firbiddenWordsValue.replace(reg1,'<span style="background-color: red;color: transparent;">'+w+'</span>');
180
+ });
181
+ }
182
+ },
155
183
  },
156
184
  }
157
185
  </script>
@@ -173,8 +201,8 @@
173
201
  z-index: 1;
174
202
  border: 1px solid #DCDFE6;
175
203
  background-color: #fff;
176
- overflow: auto;
177
204
  pointer-events: none;
205
+ overflow-y: auto;
178
206
  border-radius: 4px;
179
207
  -webkit-transition: -webkit-transform 1s;
180
208
  transition: -webkit-transform 1s;
@@ -184,7 +212,15 @@
184
212
  .highlights {
185
213
  white-space: pre-wrap;
186
214
  word-wrap: break-word;
187
- /* color: transparent; */
188
- padding: 5px 15px;
215
+ color: transparent;
216
+ padding: 5px 15px 5px 15px;
217
+ line-height: 1.5;
218
+ /* overflow-y: auto;
219
+ width: 100%;
220
+ height: 100%;
221
+ border-radius: 4px;
222
+ resize: vertical;
223
+ box-sizing: border-box;
224
+ transition: border-color .2s cubic-bezier(.645,.045,.355,1); */
189
225
  }
190
226
  </style>
@@ -142,7 +142,7 @@
142
142
  </a>
143
143
  </template>
144
144
  <a v-if="itemFile.rightDownload"
145
- :href="resultObject.replace(/\/preview$/,'download')" target="_blank"
145
+ :href="resultObject.replace(/\/preview$/,'/download')" target="_blank"
146
146
  class="magnify-btn el-icon-download"
147
147
  title="下载"
148
148
  :download="(itemFile.mediaLabelName || itemFile.fileName)"></a>
@@ -8,6 +8,7 @@
8
8
  :height="displayAreaHeight - 78 + 'px'"
9
9
  :width="displayAreaWidth + 'px'"
10
10
  @load="complete()"
11
+ @contextmenu="handleMouse"
11
12
  >
12
13
  </iframe>
13
14
  </div>
@@ -31,7 +32,10 @@ export default {
31
32
  },
32
33
  created() {
33
34
  },
34
- methods: {
35
+ methods: {
36
+ handleMouse(e) {
37
+ e.preventDefault();
38
+ },
35
39
  init(pdfUrl) {
36
40
  var self = this;
37
41
  self.fileUrl = 'r='+Math.random()+'&file='+encodeURIComponent(pdfUrl);
@@ -43,6 +47,7 @@ export default {
43
47
  doc.getElementById("openFile").style.display = "none";
44
48
  doc.getElementById("print").style.display = "none";
45
49
  doc.getElementById("viewBookmark").style.display = "none";
50
+ doc.oncontextmenu = new Function("event.returnValue=false");
46
51
  },
47
52
  },
48
53
  watch: {
@@ -304,6 +304,9 @@ const Base = function (source) {
304
304
  // get firbiddenWords() {
305
305
  // return source.description;
306
306
  // },
307
+ get joinChar() {
308
+ return source.joinChar;
309
+ },
307
310
  };
308
311
 
309
312
  return rtn;
@@ -361,10 +361,24 @@ const ContactList = function (source, para, callBack) {
361
361
  }
362
362
  else if (response.content.rows.length > 0) {
363
363
  if (router.flagAddRowAfterAction) {
364
- rtn.doNew(response.content.rows);
364
+ self.doNew(response.content.rows);
365
365
  }
366
366
  else {
367
- rtn.doUpdate(response.content.rows, searchValue1);
367
+ self.doUpdate(response.content.rows, searchValue1);
368
+ }
369
+ }
370
+ if(response.content.updateToolButtons){
371
+ if (response.content.toolButtons) {
372
+ self._buttons=[];
373
+ response.content.toolButtons.forEach((v) => {
374
+ var button = Router(v);
375
+ button.is = "ct-btn";
376
+ button.attrs = {
377
+ size: "mini",
378
+ class: 'max-btn-gray'
379
+ }
380
+ self._buttons.push(button);
381
+ });
368
382
  }
369
383
  }
370
384
  }
@@ -16,6 +16,7 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
16
16
  pageIndex: 1,
17
17
  selectIndex: 0,
18
18
  selectAll: 0,
19
+ toolbarKey:0,
19
20
  searchAction:action?action:data,
20
21
  get title() {
21
22
  return source.content.title;
@@ -324,7 +325,8 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
324
325
  get buttons() {
325
326
  if (rtn._buttons !== null) {
326
327
  return rtn._buttons;
327
- } else {
328
+ }
329
+ else {
328
330
  rtn._buttons = [];
329
331
  if (source.content.toolButtons) {
330
332
 
@@ -531,6 +533,22 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
531
533
  self.$vue.refreshTableColumns(response);
532
534
  }
533
535
  }
536
+ if(response.content.updateToolButtons){
537
+ if (response.content.toolButtons) {
538
+ self._buttons=[];
539
+ response.content.toolButtons.forEach((v) => {
540
+ var button = Router(v);
541
+ button.is = "ct-btn";
542
+ button.attrs = {
543
+ size: "mini",
544
+ class: 'max-btn-gray'
545
+ }
546
+ self._buttons.push(button);
547
+ });
548
+ self.toolbarKey=self.toolbarKey+1;
549
+ self.$vue.setTableHeight();
550
+ }
551
+ }
534
552
  if (typeof callback !== 'undefined') {
535
553
  if (response.content.rows.length > 0) {
536
554
  callback(true,response);
@@ -293,15 +293,17 @@ const LibFunction = {
293
293
  return v1.key === field.fieldName1;
294
294
  });
295
295
  var files = [];
296
- source.medias.forEach((v, index) => {
297
- if (v.GroupID) {
298
- if (v.GroupID == field.fieldName1) {
296
+ if(source.medias && source.medias.length>0){
297
+ source.medias.forEach((v, index) => {
298
+ if (v.GroupID) {
299
+ if (v.GroupID == field.fieldName1) {
300
+ files.push(v);
301
+ }
302
+ } else {
299
303
  files.push(v);
300
304
  }
301
- } else {
302
- files.push(v);
303
- }
304
- })
305
+ })
306
+ }
305
307
  item = File(field, files, router, source.parameterAction);
306
308
  item.is = 'ct-file';
307
309
  break;
@@ -310,15 +312,17 @@ const LibFunction = {
310
312
  return v1.key === field.fieldName1;
311
313
  });
312
314
  var files = [];
313
- source.medias.forEach((v, index) => {
314
- if (v.GroupID) {
315
- if (v.GroupID == field.fieldName1) {
315
+ if(source.medias && source.medias.length>0){
316
+ source.medias.forEach((v, index) => {
317
+ if (v.GroupID) {
318
+ if (v.GroupID == field.fieldName1) {
319
+ files.push(v);
320
+ }
321
+ } else {
316
322
  files.push(v);
317
323
  }
318
- } else {
319
- files.push(v);
320
- }
321
- })
324
+ })
325
+ }
322
326
  item = PhotoSelect(field, files, router, source.parameterAction);
323
327
  item.is = 'ct-photoselect';
324
328
  break;
@@ -3,6 +3,11 @@ import Enum from '../loader/src/ctl/lib/Enum';
3
3
 
4
4
  const actions = {
5
5
  required(v, o) {
6
+ if(v.type===Enum.ControlType.TextBox || v.type===Enum.ControlType.MultiLineText){
7
+ if (v.value === undefined || v.value === null || v.value === '' || v.value.trim() === '') {
8
+ return false;
9
+ }
10
+ }
6
11
  if (v.value === undefined || v.value === null || v.value === '') {
7
12
  return false;
8
13
  }
package/src/main.js CHANGED
@@ -43,7 +43,7 @@ Vue.use(centaline, {
43
43
  getRequestHeaders: function () {
44
44
  return {
45
45
  oldToken: '823894f8-bbf3-4d54-b3fb-4c697801c5c4',
46
- token:'aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjrEOgkAQRP9lazZh2XXvlk4PbPwIcsAVWBmBRGP8dzFCR-8rpphkMu8F49xCCW4Fd2KjsRXciY2GSMyR1ng0F1BUGD0Fj0E0yLmqOZwqyCA9blCSqlrBwnkGQ5x-hWeXf4t5TPdLev5D7joNyy2laBRbh7w4obAWGPtl0RkXvu2lO5iD9wcAAP__.VJjQX8G1teWA34Y7jETg4iNhSUkxtB1tiqkyl--zbZU',
46
+ token:'aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjjsOwjAQBe-ydVbC9rL2pgMnNBwicpxFChXKRwIh7g6IpEvPFFNM894TxrmFEvwCbmilkQXc0EpjDIk3XONBfERichhMDBiJI52q2sVjBQXo_QalYfaWhfe-gD5Nv2CCs98wjzqc9fGPc9ep_8zmJGJDzthaViQVxbQjwtSpdqSOLjbB6w0AAP__.nf7jF3ewbimJ8eNFZ72RKXS7qN0SgN5OnkZ0ZEk82Rc',
47
47
 
48
48
  originalRequestURL: 'http://10.88.22.67:8080',
49
49
  EstateInfo: '{"estateId":"FAF029E8-EC28-4297-83CF-B8FFD826DB91","estateName":"AABBCC"}',