centaline-data-driven 1.5.76 → 1.5.77

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.
@@ -63,6 +63,7 @@ const paths = {
63
63
  "dynamicSearch": "./src/centaline/dynamicSearch/index.js", //查询条件
64
64
  "dynamicCalendar": "./src/centaline/dynamicCalendar/index.js", //日历控件
65
65
  "dynamicLH": "./src/centaline/dynamicLH/index.js", //html 标签
66
+ "dynamicImage": "./src/centaline/dynamicImage/index.js", //图片
66
67
  },
67
68
  "plugs": {
68
69
  "api": "./src/centaline/api/index.js", //调用API插件
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.5.76",
3
+ "version": "1.5.77",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
package/release-log.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## v1.5.77
2
+ 2023-11-14
3
+ 优化
4
+
5
+ 多行文本只有1行时,违禁词显示优化
6
+
7
+ 多行文本选择后,自动计算文本最多字数
8
+
9
+ 多行文本参数2设置为0时,选择后覆盖文本内容,其他则追加文本内容
10
+
1
11
  ## v1.5.76
2
12
  2023-11-09
3
13
  bug修复
package/src/Form.vue CHANGED
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div id="form-app" class="data-driven" style="width:100%;height:100%;overflow:auto">
3
3
  <!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
4
- <ct-form :api="'/api/distribution/agent/detail'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
4
+ <ct-form :api="'/SystemParameter/readDetail'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
5
5
  <ct-dialog-list></ct-dialog-list>
6
6
  </div>
7
7
  </template>
@@ -12,7 +12,7 @@
12
12
  data() {
13
13
  return {
14
14
  apiParam:{
15
- "actionType":"2","pageStyle":"2","pageTitle":"新增分销项目","pageOnly":"true"
15
+ "paramID":"1723863642618859520","actionType":3
16
16
  },
17
17
  topHeight:10,
18
18
  }
@@ -21,7 +21,7 @@
21
21
 
22
22
  <!-- <ct-searchlist :apiParam="para" :searchConditionApi="'/filemanage/batchdownlist/getLayoutOfSearch'" :searchDataApi="'/filemanage/batchdownlist/getList'"></ct-searchlist> -->
23
23
 
24
- <ct-searchlist :apiParam="para" :searchConditionApi="'/api/finance/tran-commission-allocate/process-layout'" :searchDataApi="'/api/finance/tran-commission-allocate/process-list'"></ct-searchlist>
24
+ <!-- <ct-searchlist :apiParam="para" :searchConditionApi="'/api/finance/tran-commission-allocate/process-layout'" :searchDataApi="'/api/finance/tran-commission-allocate/process-list'"></ct-searchlist> -->
25
25
 
26
26
 
27
27
  <!-- <ct-searchlist :apiParam="para"
@@ -65,11 +65,11 @@
65
65
  :searchStatsApi="'/PropertyRETList/getListStats'">
66
66
  </ct-searchlist> -->
67
67
 
68
- <!-- <ct-searchlist :searchConditionApi="'/PropertyOFIList/getLayoutOfSearch'" :appRootUrl="appRootUrl"
68
+ <ct-searchlist :searchConditionApi="'/PropertyOFIList/getLayoutOfSearch'" :appRootUrl="appRootUrl"
69
69
  :searchDataApi="'/PropertyOFIList/getListOfSearchModel'"
70
70
  :searchCategoryApi="'/PropertyOFIList/getLayoutOfSearchCategory'"
71
71
  :searchStatsApi="'/PropertyOFIList/getListStats'">
72
- </ct-searchlist> -->
72
+ </ct-searchlist>
73
73
 
74
74
  <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/EstateList/getLayoutOfSearch'" :searchDataApi="'/EstateList/getListOfSearchModel'"></ct-searchlist> -->
75
75
 
Binary file
Binary file
@@ -811,7 +811,11 @@ color: var(--centalinePlaceholder);
811
811
  .el-input--mini .el-input__inner{
812
812
  height: 26px;
813
813
  line-height: 26px;
814
- }
814
+ }
815
+ .inputHighlights .el-input__inner{
816
+ background-color: transparent;
817
+ font-family: monospace;
818
+ }
815
819
  .ct-rich-text {
816
820
  min-height: 26px!important;
817
821
  }
@@ -601,6 +601,30 @@
601
601
  else if (field.isSeeVoice) {//看视频
602
602
  self.$common.browseVideo(field, submitData)
603
603
  }
604
+ else if (field.isBrowseAttachment) {//浏览附件
605
+ var mediaviewpagetype=(field.isFormPageInTab||field.isSearchPageInTab)?2:0;
606
+ var MediaAlbum = [
607
+ { albumName: self.model.title || "媒体", medias: [] },
608
+ ];
609
+ if (field.action) {
610
+ var callback = function (data) {
611
+ if(typeof data =='object'&&data.mediaAlbums){
612
+ MediaAlbum = data.mediaAlbums;
613
+ }
614
+ else{
615
+ MediaAlbum[0].medias = data;
616
+ }
617
+ self.$common.viewerfile(field.pageTitle, MediaAlbum, 0, 0,mediaviewpagetype);
618
+ }
619
+ field.doAction(submitData, callback);
620
+ }
621
+ else {
622
+ submitData.mediaData.forEach((v) => {
623
+ MediaAlbum[0].medias.push(v);
624
+ });
625
+ self.$common.viewerfile(field.pageTitle, MediaAlbum, 0, 0,mediaviewpagetype);
626
+ }
627
+ }
604
628
  else if (field.isExport || field.flagAsync) {
605
629
  submitData = field.getActionPara(submitData).para;
606
630
  if (field.flagAsync) {
@@ -0,0 +1,11 @@
1
+ import dynamicImage from './src/dynamicImage';
2
+
3
+ dynamicImage.install = function (Vue) {
4
+ Vue.component(dynamicImage.name, dynamicImage);
5
+ }
6
+
7
+ if (typeof window !== 'undefined' && window.Vue) {
8
+ window.Vue.use(dynamicImage);
9
+ }
10
+
11
+ export default dynamicImage;
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <div class="field-top">
3
+ <div class="ct-image" style="width:100%;text-align: center" v-if="model !== null">
4
+ <el-image :src="model.code1||require('../../../assets/none.png')"
5
+ :style="{'width': model.min? model.min+'px':null,'height': model.max? model.max+'px':null,'border-radius':(model.width1 || 0)+'px'}">
6
+ </el-image>
7
+ </div>
8
+ </div>
9
+ </template>
10
+ <script>
11
+ import dynamicElement from '../../mixins/dynamicElement';
12
+ export default {
13
+ name: 'ct-image',
14
+ mixins: [dynamicElement],
15
+ props: {
16
+ vmodel: Object
17
+ },
18
+ data() {
19
+ return {
20
+ }
21
+ },
22
+ created() {
23
+ if (typeof this.vmodel === 'undefined') {
24
+ this.model = this.loaderObj.LH(this.source);
25
+ }
26
+ else {
27
+ this.model = this.vmodel;
28
+ }
29
+ this.model.self=this;
30
+ },
31
+ methods: {
32
+ }
33
+ }
34
+ </script>
35
+ <style scoped>
36
+
37
+ </style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div style="width: 100%" class="ct-searchtable" ref="searchTable"
3
- :style="{ 'margin-top': isMarginTop ? '0' : '10px', padding: isLayout ? '0' : '' }">
3
+ :style="{ 'margin-top': (isMarginTop || from=='detail') ? '0' : '10px', padding: isLayout ? '0' : '' }">
4
4
  <ct-tableStats ref="tableStats" class="ct-search-table-list-header" v-if="!isLoading && model && searchStatsApi"
5
5
  :api="searchStatsApi" @searchStats="searchStats" @setTableHeight="setTableHeight" :flagDisabled="disabledStats"
6
6
  :searchModel="model.searchModel">
@@ -300,7 +300,7 @@ export default {
300
300
  theadTitleLeft:0,
301
301
  theadTitleWidth:0,
302
302
  updateTableColumnsKey:0,
303
- backgroundColor: "#ecf5ff",
303
+ backgroundColor: "#ecf5ff",
304
304
  };
305
305
  },
306
306
  deactivated(){
@@ -32,14 +32,16 @@
32
32
  </el-popover>
33
33
 
34
34
  <div v-else class="textarea-box" ref="input">
35
- <div ref="highlights" v-if="model.forbiddenWords" class="backdrop hoverColor" :style="{width:forbiddenWordsWidth+'px',height:forbiddenWordsHeight+'px',left:forbiddenWordsLeft+'px',top:forbiddenWordsTop+'px'}">
36
- <div class="highlights" v-html="forbiddenWordsValue"></div>
35
+ <div ref="highlights" v-if="model.forbiddenWords" class="backdrop hoverColor"
36
+ :style="{'width':forbiddenWordsWidth+'px','height':forbiddenWordsHeight+'px','left':forbiddenWordsLeft+'px','top':forbiddenWordsTop+'px','overflow-y': model.rows===1?'hidden':'auto','overflow-x':'hidden'}">
37
+ <div class="highlights" :style="{'line-height':model.rows===1?1:1.5,'white-space': model.rows===1?'nowrap':'pre-wrap'}" v-html="forbiddenWordsValue"></div>
37
38
  </div>
38
- <el-input ref="inputText" :title="model.lock?model.value:''" :type="model.rows==1 ? '':model.inputType" v-model="model.value" v-bind="model.attrs" @input="inputHandler($event);isShowClear();applyHighlights()" @change="changeHandler($event)"
39
- class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'',model.forbiddenWords?'inputHighlights':'']"
40
- :disabled="model.lock" :rows="model.rows"
41
- :readonly="model.readonly" :show-password="model.isPassword" autocomplete="on" :maxlength="model.max"
42
- @keyup.enter.native="search()" style="z-index: 3;background-color: transparent;">
39
+ <el-input ref="inputText" :title="model.lock?model.value:''" :type="model.rows===1 ? 'text':model.inputType" v-model="model.value" v-bind="model.attrs"
40
+ @input="inputHandler($event);isShowClear();applyHighlights()" @change="changeHandler($event)"
41
+ class="ct-flex-div-input max-input" :class="[model.showLabel?'showLabel':'',!valid?'inputError':'',model.forbiddenWords?'inputHighlights':'']"
42
+ :disabled="model.lock" :rows="model.rows"
43
+ :readonly="model.readonly" :show-password="model.isPassword" autocomplete="on" :maxlength="model.max"
44
+ @keyup.enter.native="search()" style="z-index: 3;background-color: transparent;">
43
45
  <span slot="suffix" v-if="model.unitName" class="ct-unitname" :class="showClear?'unitName-20':'unitName-0'">{{model.unitName}}</span>
44
46
 
45
47
  <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'">
@@ -132,6 +134,7 @@
132
134
  this.forbiddenWordsLeft=this.$refs.inputText.$el.offsetLeft;
133
135
  this.forbiddenWordsTop=this.$refs.inputText.$el.offsetTop;
134
136
  this.$refs.inputText.$el.addEventListener('scroll',this.scrollHandler,true);
137
+ this.applyHighlights();
135
138
  }
136
139
  },
137
140
  methods: {
@@ -197,12 +200,27 @@
197
200
  },
198
201
  quickSelect(value,label) {
199
202
  if(this.model.type===3){
200
- this.model.value=this.model.value+label;
203
+ if(this.model.paramName2 && this.model.paramName2=='0'){
204
+ this.model.value=label;
205
+ }
206
+ else{
207
+ this.model.value=this.model.value+label;
208
+ }
209
+ if(this.model.max>0 && this.model.value.length>this.model.max){
210
+ this.$message({
211
+ message: '输入内容已达最大值,超出部分已被截取!',
212
+ type: 'warning',
213
+ showClose:true,
214
+ });
215
+ this.model.value=this.model.value.substr(0,this.model.max)
216
+ }
201
217
  this.validExcute();
202
218
  }
203
219
  else{
204
220
  this.model.value=label;
205
221
  }
222
+ this.inputHandler();
223
+ this.applyHighlights();
206
224
  this.search();
207
225
  },
208
226
  popupSearchListHandle: function (e) {
@@ -211,11 +229,24 @@
211
229
  self.$emit('popupSearchList', self.model.type===3?false:true, self.model, self.model.moreActionRouter, (optionArr) => {
212
230
  optionArr.forEach(row => {
213
231
  if(self.model.type===3){
214
- self.model.value=self.model.value+(self.model.value?'\r\n':'')+row[self.model.optionAttrs.label];
232
+ if(self.model.paramName2 && self.model.paramName2=='0'){
233
+ self.model.value=row[self.model.optionAttrs.label];
234
+ }
235
+ else{
236
+ self.model.value=self.model.value+(self.model.value?'\r\n':'')+row[self.model.optionAttrs.label];
237
+ }
215
238
  }
216
239
  else {
217
240
  self.model.value=row[self.model.optionAttrs.label];
218
- }
241
+ }
242
+ if(self.model.max>0 && self.model.value.length>self.model.max){
243
+ self.$message({
244
+ message: '输入内容已达最大值,超出部分已被截取!',
245
+ type: 'warning',
246
+ showClose:true,
247
+ });
248
+ self.model.value=self.model.value.substr(0,self.model.max)
249
+ }
219
250
  self.inputHandler(e);
220
251
  self.applyHighlights();
221
252
  });
@@ -224,6 +255,10 @@
224
255
  scrollHandler() {
225
256
  var scrollTop = this.$refs.inputText.$el.children[0].scrollTop;
226
257
  this.$refs.highlights.scrollTop=scrollTop;
258
+ if(this.model.rows===1){
259
+ var scrollLeft = this.$refs.inputText.$el.children[0].scrollLeft;
260
+ this.$refs.highlights.scrollLeft=scrollLeft;
261
+ }
227
262
  },
228
263
  applyHighlights() {
229
264
  var self=this;
@@ -254,6 +289,9 @@
254
289
  if(char===appoint){
255
290
  self.forbiddenWordsValue=self.forbiddenWordsValue+' ';
256
291
  }
292
+ if(this.model.rows===1){
293
+ self.forbiddenWordsValue=self.forbiddenWordsValue+'&nbsp;&nbsp;&nbsp;&nbsp;'
294
+ }
257
295
  }
258
296
  },
259
297
  //不能共用的数据校验
@@ -266,7 +304,7 @@
266
304
  flag=false;
267
305
  this.validMessage = (this.validMessage?this.validMessage+" ":"") + "输入文字中"+res.length+"处包含违禁词"+this.forbiddenWordsReg;
268
306
  }
269
- this.valid = flag;
307
+ if(this.valid) this.valid = flag;
270
308
  }
271
309
  return flag;
272
310
  },
@@ -121,6 +121,12 @@ const Base = function (source) {
121
121
  set paramName(v) {
122
122
  source.paramName1 = v;
123
123
  },
124
+ get paramName2() {
125
+ return source.paramName2;
126
+ },
127
+ set paramName2(v) {
128
+ source.paramName2 = v;
129
+ },
124
130
  get click() {
125
131
  return source.onClick;
126
132
  },
@@ -181,6 +187,9 @@ const Base = function (source) {
181
187
  get width() {
182
188
  return source.width;
183
189
  },
190
+ get width1() {
191
+ return source.width1;
192
+ },
184
193
  get listBind() {
185
194
  let bind = {};
186
195
  bind = {
@@ -0,0 +1,11 @@
1
+ import base from '../../index';
2
+ import Base from './Base';
3
+ const Image = function (source) {
4
+ var rtn = {
5
+
6
+ };
7
+ rtn = base.copy(Base(source), rtn);
8
+ return rtn;
9
+ };
10
+
11
+ export default Image;
@@ -271,6 +271,11 @@ const Enum = {
271
271
  /// </summary>
272
272
  HtmlLabel: 54,
273
273
 
274
+ /// <summary>
275
+ /// 图片控件
276
+ /// </summary>
277
+ Image: 55,
278
+
274
279
  },
275
280
 
276
281
  //返回状态码
@@ -38,6 +38,7 @@ import DragSort from '../DragSort';
38
38
  import Container from '../Container';
39
39
  import Contact from '../Contact';
40
40
  import LH from '../LH';
41
+ import Image from '../Image';
41
42
 
42
43
  const LibFunction = {
43
44
  install(Vue) {},
@@ -335,6 +336,10 @@ const LibFunction = {
335
336
  item = PhotoSelect(field, files, router, source.parameterAction,files);
336
337
  item.is = 'ct-photoselect';
337
338
  break;
339
+ case Enum.ControlType.Image://图片
340
+ item = Image(field);
341
+ item.is = 'ct-image';
342
+ break;
338
343
  case Enum.ControlType.RichText: //富文本框
339
344
  var router = {};
340
345
  if (source.actionRouters) {
@@ -45,6 +45,7 @@ const loader = {
45
45
  Container: require("./ctl/Container.js").default,
46
46
  Canlendar: require("./ctl/Canlendar.js").default,
47
47
  LH: require("./ctl/LH.js").default,
48
+ Image: require("./ctl/Image.js").default,
48
49
  };
49
50
 
50
51
  export default loader;
package/src/main.js CHANGED
@@ -15,8 +15,8 @@ Vue.use(ElementUI, { size: 'mini'});
15
15
  Vue.config.productionTip = false;
16
16
  Vue.use(centaline, {
17
17
  baseUrl: "http://10.88.22.46:17070/max-uplink-api/",
18
- baseUrl: "http://10.88.22.13:6060/onecard-api/",
19
- // baseUrl: "http://10.88.22.13:17070/max-uplink-api/",
18
+ // baseUrl: "http://10.88.22.13:6060/onecard-api/",
19
+ baseUrl: "http://10.88.22.13:17070/max-uplink-api/",
20
20
  // baseUrl: "http://10.6.1.163:9000/max-uplink-api/v1/form/router",
21
21
  // baseUrl: "http://10.25.10.63:22026/service-api/v1/form/router",
22
22
  // baseUrl: "http://10.25.10.67:8080/",
@@ -24,7 +24,7 @@ Vue.use(centaline, {
24
24
  // baseUrl: "http://10.88.22.69:8080/api/",
25
25
  // baseUrl: "http://10.88.22.40:8080/api/",
26
26
  // baseUrl: "http://10.58.2.108:8080/",
27
- baseUrl: "http://tjcptest.centaline.com.cn/",
27
+ // baseUrl: "http://tjcptest.centaline.com.cn/",
28
28
  // baseUrl: "http://tjcpuat.centaline.com.cn:9090/",
29
29
  flagRouterSelf: true,
30
30
  zindex: 999,
@@ -56,13 +56,13 @@ Vue.use(centaline, {
56
56
  return {
57
57
  oldToken: 'd411bad1-491a-4beb-9a96-4811fc20229d',
58
58
  // token:'aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjjsOwjAQRO_iOiv5s1570zn-NBwiIuBIoUIkkUCIuxMEdPRMMRq95s1dzOsgWmHIccikIFr0gKQsMJYCURKxKdKYlHr-BH7UNz26yCFkByg7Aiw2A-tYwLDtEubgUibRiHo9i1aRRy-dtdSIab-8gdNKvcA618uu3v5x7rRMm3YkOZAfR6BtAWp_3LQHBNI8KHbkqlHi8QQAAP__.RrBgBqaFlp478oO3g5k_EEtjPt_o8qpJBkzgSP78Wa4',
59
- // authObject: '{token:"16-1718866654626189312"}',
59
+ authObject: '{token:"aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjjsOwjAQRO-ydVbyZ22v08V20nCIKLYcKVSIJBIIcXeCBB09r5jiFTPzgHXP0ELiTlAcNMZeGaTkDHaDYwyRWQTlNAUe_Qf8EV9GKck7aXvsvItIljSyjIyRbKQh9TqGBA3U2wVa6YQQUgpFDSzTdgh7VCiyb7Gv9Xqq93-cO2_LMau5FGPmCY3milSKR_ZM6E3OdSZBM2V4vgAAAP__.U-_EIyQ35Ti1_oTUkXGpSl8xpsf6-ikHqlIB8kyeFYk"}',
60
60
 
61
61
  // originalRequestURL: 'http://10.88.22.67:8080',
62
62
  // EstateInfo: '{"estateId":"201806071109550C867184E8BCA56EC3","estateName":"C%E5%BE%A1%E6%9E%97%E5%B1%B1%E6%99%AF%E6%A5%BC"}',
63
63
  // estateId: '201806071109550C867184E8BCA56EC3',
64
64
 
65
- authObject: '{"currentEstate":{},"platform":1,"osVersion":"","clientVersion":"","machineCode":"5ef835681759e8f03f1b0575f89b6395","token":"","random":"LXytrk","time":1699411683024,"sign":"58681c540225cca828714e80c27dee93"}',
65
+ // authObject: '{"currentEstate":{},"platform":1,"osVersion":"","clientVersion":"","machineCode":"5ef835681759e8f03f1b0575f89b6395","token":"","random":"LXytrk","time":1699411683024,"sign":"58681c540225cca828714e80c27dee93"}',
66
66
  AuthorizationCode:'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImYyOTI5ZTRlLThhMTQtNDQ3MC1hOTg3LTkzMmQ3MDhhMmQ5MSJ9.OkwHos3cukPp7PxDLBL0rB_ETrmd7IOvrUOvckBixSwmI7uYPyKph-3QdQmaqSZv_0LZs-oFxvPAQE-Nh7j2Wg',
67
67
  };
68
68
  },