centaline-data-driven 1.5.21 → 1.5.22

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 (35) hide show
  1. package/build/centaline/centaline.path.js +1 -0
  2. package/package.json +1 -1
  3. package/release-log.md +36 -0
  4. package/src/Form.vue +2 -2
  5. package/src/SearchList.vue +12 -2
  6. package/src/centaline/css/common.css +2 -2
  7. package/src/centaline/dynamicCb/src/dynamicCb.vue +5 -1
  8. package/src/centaline/dynamicContainer/index.js +14 -0
  9. package/src/centaline/dynamicContainer/src/dynamicContainer.vue +151 -0
  10. package/src/centaline/dynamicDetail/src/dynamicAlbums.vue +5 -5
  11. package/src/centaline/dynamicDetail/src/dynamicDetail.vue +19 -2
  12. package/src/centaline/dynamicDetail/src/dynamicEstateBuildingDetail.vue +16 -219
  13. package/src/centaline/dynamicDetail/src/dynamicEstateSimpleDetail.vue +41 -19
  14. package/src/centaline/dynamicDetail/src/dynamicPropertySimpleDetailRET.vue +30 -11
  15. package/src/centaline/dynamicForm/src/dynamicForm.vue +19 -4
  16. package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +5 -1
  17. package/src/centaline/dynamicLayout/src/dynamicLayout.vue +1 -2
  18. package/src/centaline/dynamicLayout/src/dynamicLayoutLabel.vue +2 -2
  19. package/src/centaline/dynamicPhotoSelect/src/dynamicPhotoSelect.vue +3 -2
  20. package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +64 -30
  21. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +25 -13
  22. package/src/centaline/dynamicSeg/src/dynamicSeg.vue +5 -1
  23. package/src/centaline/loader/src/ctl/CellLayout.js +20 -3
  24. package/src/centaline/loader/src/ctl/Container.js +208 -0
  25. package/src/centaline/loader/src/ctl/Form.js +12 -0
  26. package/src/centaline/loader/src/ctl/FormList.js +5 -3
  27. package/src/centaline/loader/src/ctl/Router.js +3 -0
  28. package/src/centaline/loader/src/ctl/SearchTable.js +14 -6
  29. package/src/centaline/loader/src/ctl/lib/Enum.js +7 -0
  30. package/src/centaline/loader/src/ctl/lib/LibFunction.js +5 -1
  31. package/src/centaline/loader/src/ctl.js +1 -0
  32. package/src/centaline/validate/index.js +4 -2
  33. package/src/main.js +5 -5
  34. package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
  35. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div ref="main" style="width: 100%;height: 100%;display: flex;" :class="{'domDisabled':pageDisabled}">
3
- <div class="ct-search-list" :style="{'height': pageHeight? pageHeight:'100%','width':searchWidth?searchWidth+'px':'100%'}" >
3
+ <div class="ct-search-list" :style="{'height': pageHeightReal? pageHeightReal:'100%','width':searchWidth?searchWidth+'px':'100%'}" >
4
4
  <div slot="header" class="clearfix" v-if="typeof title !== 'undefined' && showTitle">
5
5
  <span style="font-weight:bold">{{title}}</span>
6
6
  </div>
@@ -22,6 +22,7 @@
22
22
  :style="{'height': pageHeight? pageHeight:'100%','width':sideBarWidth+'px',right:sideBarRight+'px'}"
23
23
  class="sidebar">
24
24
  <ct-Detail ref="detail" :api="sideBarApi" :apiParam="sideBarApiParam" :pageType="sideBarPageType"
25
+ :searchConditionApi="sideBarSearchConditionApi" :searchStatsApi="sideBarSearchStatsApi" :searchDataApi="sideBarSearchDataApi" :listHeight="listHeight"
25
26
  :selectIndex="selectIndex" :rowCount="rowCount" :key="detailKey" :drowerClose="drowerClose"
26
27
  @clickNextHandler="clickNextHandler" @clickPrevHandler="clickPrevHandler" @simpleRouterclickHandler="simpleRouterclickHandler"
27
28
  @closeSideHandler="closeSideHandler"></ct-Detail>
@@ -77,35 +78,6 @@
77
78
  default:false,
78
79
  },
79
80
  },
80
- data() {
81
- return {
82
- drowerClose:'',
83
- }
84
- },
85
- created() {
86
- this.model = this.vmodel;
87
- this.screenPara=this.apiParam;
88
- if(this.searchCategoryApi){
89
- this.loaded.categoryLoaded=false;
90
- }
91
- if(this.apiParam && this.apiParam.isIframe && this.apiParam.isIframe=='true'){
92
- this.isIframe=true;
93
- }
94
- },
95
- computed: {
96
- },
97
- activated() {
98
- this.$nextTick(() => {
99
- if(this.$refs.detail){
100
- if(this.$refs.detail.$children && this.$refs.detail.$children.length>0){
101
- this.$refs.detail.$children[0].refreshPage();
102
- }
103
- }
104
- if(this.$refs.table){
105
- this.$refs.table.resetScrollActivated();
106
- }
107
- })
108
- },
109
81
  data() {
110
82
  return {
111
83
  loaded: {
@@ -138,7 +110,49 @@
138
110
  rowCount:0,
139
111
  detailKey:0,
140
112
  isIframe: false,
113
+
114
+ drowerClose:'',
115
+ listHeight:0,
116
+ pageHeightReal: '',
117
+ }
118
+ },
119
+ created() {
120
+ this.model = this.vmodel;
121
+ this.screenPara=this.apiParam;
122
+ if(this.pageHeight) {
123
+ this.pageHeightReal=this.pageHeight;
141
124
  }
125
+ if(this.searchCategoryApi){
126
+ this.loaded.categoryLoaded=false;
127
+ }
128
+ if(this.apiParam && this.apiParam.isIframe && this.apiParam.isIframe=='true'){
129
+ this.isIframe=true;
130
+ }
131
+ },
132
+ computed: {
133
+ },
134
+ mounted() {
135
+ var self=this;
136
+ this.$nextTick(() => {
137
+ if(this.$refs.main){
138
+ this.listHeight=this.$refs.main.offsetHeight;
139
+ }
140
+ })
141
+ },
142
+ activated() {
143
+ this.$nextTick(() => {
144
+ if(this.$refs.main){
145
+ this.listHeight=this.$refs.main.offsetHeight;
146
+ }
147
+ if(this.$refs.detail){
148
+ if(this.$refs.detail.$children && this.$refs.detail.$children.length>0){
149
+ this.$refs.detail.$children[0].refreshPage(this.listHeight);
150
+ }
151
+ }
152
+ if(this.$refs.table){
153
+ this.$refs.table.resetScrollActivated();
154
+ }
155
+ })
142
156
  },
143
157
  methods: {
144
158
  screenLoaded(defaultSearch) {
@@ -210,6 +224,14 @@
210
224
  this.searchWidth=this.$refs.main.clientWidth-this.sideBarWidth;
211
225
  }
212
226
  }
227
+ if(this.$refs.main){
228
+ this.listHeight=this.$refs.main.offsetHeight;
229
+ if(this.$refs.detail){
230
+ if(this.$refs.detail.$children && this.$refs.detail.$children.length>0){
231
+ this.$refs.detail.$children[0].refreshPage(this.listHeight);
232
+ }
233
+ }
234
+ }
213
235
  },
214
236
  showTitleHandler() {
215
237
  if (this.$refs.table.model && this.$refs.table.model.flagShowTitle) {
@@ -235,6 +257,9 @@
235
257
 
236
258
  if(this.$refs.table.model.rowSelectRouter){
237
259
  this.sideBarApi=this.$refs.table.model.rowSelectRouter.action;
260
+ this.sideBarSearchConditionApi=this.$refs.table.model.rowSelectRouter.actionForSearchLayout;
261
+ this.sideBarSearchStatsApi=this.$refs.table.model.rowSelectRouter.actionForSearchStats;
262
+ this.sideBarSearchDataApi=this.$refs.table.model.rowSelectRouter.actionForSearch;
238
263
  this.sideBarPageType=this.$refs.table.model.rowSelectRouter.actionSource;
239
264
  }
240
265
  else{
@@ -273,6 +298,7 @@
273
298
  this.searchWidth=0;
274
299
  }
275
300
  this.$emit('tableLoaded', this.$refs.table.model);
301
+ this.$emit('loaded', this.$refs.table.model);
276
302
  },
277
303
  rowClickHandle() {
278
304
  var self = this;
@@ -326,6 +352,14 @@
326
352
  window.localStorage.setItem(this.sideBarPageType+"key", this.sideBarStatus);
327
353
  this.$refs.table.setTableHeight();
328
354
  },
355
+ refreshPage(pageHeight) {
356
+ if(pageHeight){
357
+ this.pageHeightReal=pageHeight+'px';
358
+ }
359
+ if(this.$refs.table){
360
+ this.$refs.table.setTableHeight();
361
+ }
362
+ },
329
363
  closeSideHandler() {
330
364
  this.$refs.sideMenu.clickHandler();
331
365
  },
@@ -458,6 +458,8 @@ export default {
458
458
  {
459
459
  var submitData={'columnName':col.id,columnWidth:col.width}
460
460
  self.model.getAction(self.model.columnWidthSaveAction, submitData);
461
+ }else if(!self.model.columnWidthSaveAction){
462
+ window.localStorage.setItem(self.model.title+"_"+ col.id, col.width);
461
463
  }
462
464
 
463
465
  //如果是高度可变的列,重新计算整个表的高度
@@ -512,7 +514,7 @@ export default {
512
514
  document.addEventListener("mousemove", MouseMoveHandle, false);
513
515
  }
514
516
  },
515
- getPage(index) {
517
+ getPage(index,flagRefreshRowHandle) {
516
518
  var self = this;
517
519
  if (typeof self.$refs.tableParent !== "undefined") {
518
520
  self.$refs.tableParent.scrollTop = 0;
@@ -522,6 +524,9 @@ export default {
522
524
  }
523
525
  var next = function (rtn) {
524
526
  if (rtn) {
527
+ if(flagRefreshRowHandle){
528
+ self.$emit('refreshRowHandle');
529
+ }
525
530
  self.$forceUpdate();
526
531
  self.$nextTick(() => {
527
532
  if (self.$refs.tableParent && self.$refs.tableParent.scrollHeight <= self.$refs.tableParent.offsetHeight) {
@@ -693,7 +698,7 @@ export default {
693
698
  var h6 = this.$refs.listFooter.$el.offsetHeight | 0;
694
699
  var h7 = this.$refs.tableStats ? (this.$refs.tableStats.$el.offsetHeight + 7) | 0 : 0;
695
700
  var h8 = this.$refs.popupButton ? this.$refs.popupButton.offsetHeight + 21 : 0;
696
- let tableHeight = h1 - h2 - h3 - h4 - h5 - h6 - h7 - h8 - 22;
701
+ let tableHeight = h1 - h2 - h3 - h4 - h5 - h6 - h7 - h8 - 8;
697
702
  this.model.tableHeight = tableHeight < 40 ? 350 : tableHeight;
698
703
  this.$nextTick(() => {
699
704
  self.getScrollAttr();
@@ -733,6 +738,8 @@ export default {
733
738
  let tableHeight = h1 - h2 - h3 - h4 - h5 - h6 - h7 - h8 - 290 -7;
734
739
  if(this.flagAppMode){
735
740
  tableHeight = tableHeight + 40;
741
+ }else{
742
+ tableHeight = tableHeight - 40;
736
743
  }
737
744
  if (h2 == 0) {
738
745
  tableHeight = tableHeight + 15;
@@ -1186,6 +1193,7 @@ export default {
1186
1193
  height: field.dialogHeight + "px",
1187
1194
  documentHeight: self.documentHeight,
1188
1195
  documentWidth: self.documentWidth,
1196
+ flagScroll:true,
1189
1197
  },
1190
1198
  on: {
1191
1199
  submit(ev) {
@@ -1368,7 +1376,6 @@ export default {
1368
1376
  routerCellClickHandler(field, submitData, action, rowindex, forname, forrowindex) {
1369
1377
  let self = this;
1370
1378
  action = action || field.action;
1371
-
1372
1379
  var clickAcion = function () {
1373
1380
  //若不是客户端方法,则直接访问接口
1374
1381
  if (!field.isClientFuntion) {
@@ -1486,6 +1493,7 @@ export default {
1486
1493
  showTitle: false,
1487
1494
  width: field.dialogWidth + "px",
1488
1495
  height: field.dialogHeight + "px",
1496
+ flagScroll:true,
1489
1497
  },
1490
1498
  on: {
1491
1499
  submit(ev) {
@@ -1573,6 +1581,16 @@ export default {
1573
1581
  self.model.currentCallTelrouter = "router" + forname + forrowindex;
1574
1582
  self.callTelClick(self.$refs["layout" + rowindex][0], data, forname, forrowindex);
1575
1583
  }
1584
+ else {
1585
+ if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
1586
+ self.model.doAction({ responseData: data });
1587
+ self.$emit("refreshRowHandle");
1588
+ }
1589
+ self.$forceUpdate();
1590
+ self.tableComplate = true;
1591
+ self.updateCurrentRow(field, data);
1592
+ self.tableComplate = false;
1593
+ }
1576
1594
  });
1577
1595
  }
1578
1596
  }
@@ -1732,10 +1750,7 @@ export default {
1732
1750
  }
1733
1751
 
1734
1752
  //合并行
1735
- if (
1736
- row.$rowspan !== 0 &&
1737
- this.model.rowMergedColumns.indexOf(column.id) > -1
1738
- ) {
1753
+ if ( row.$rowspan !== 0 && this.model.rowMergedColumns.indexOf(column.id) > -1 ) {
1739
1754
  return row.$rowspan;
1740
1755
  }
1741
1756
 
@@ -1747,10 +1762,7 @@ export default {
1747
1762
  }
1748
1763
 
1749
1764
  //合并行
1750
- if (
1751
- row.$rowspan === 0 &&
1752
- this.model.rowMergedColumns.indexOf(column.id) > -1
1753
- ) {
1765
+ if ( row.$rowspan === 0 && this.model.rowMergedColumns.indexOf(column.id) > -1) {
1754
1766
  return false;
1755
1767
  }
1756
1768
 
@@ -1774,7 +1786,7 @@ export default {
1774
1786
  self.model.searchStats = m;
1775
1787
  if (flagRefreshTable) {
1776
1788
  self.disabledStats=true;
1777
- self.getPage(1);
1789
+ self.getPage(1,true);
1778
1790
  }
1779
1791
  },
1780
1792
  getRowRouterShow(row) {
@@ -2108,7 +2120,7 @@ export default {
2108
2120
  border-color: #faecd8;
2109
2121
  width: 100%;
2110
2122
  box-shadow: 0 2px 10px 0 rgb(0 0 0 / 10%);
2111
- margin-bottom: 8px;
2123
+ margin-bottom: 4px;
2112
2124
  }
2113
2125
  .theadLine {
2114
2126
  position: relative;
@@ -2,7 +2,7 @@
2
2
  <div class="field-top">
3
3
  <div style="width:100%;display:flex" v-if="model !== null" class="ct-Seg" :class="[model.attrs.size?'ct-Seg-'+model.attrs.size:'']">
4
4
  <div style="flex:1;" :class="[model.showLabel?'el-input-group el-input-group--prepend':'',!valid?'inputError':'']">
5
- <div v-if="model.showLabel && model.label" class="el-input-group__prepend" :class="[model.labelClass]">
5
+ <div v-if="model.showLabel && model.label" class="el-input-group__prepend Seg-line-feed" :class="[model.labelClass]">
6
6
  {{model.label}}
7
7
  </div>
8
8
  <div class="ct-radios" :class="[model.showLabel?'showLabel':'',model.value !== ''?'hasValue':'']">
@@ -132,4 +132,8 @@
132
132
  .ct-Seg .ct-radios .ct-Seg-label {
133
133
  margin-right: 15px;
134
134
  }
135
+ .ct-form .ct-Seg .Seg-line-feed {
136
+ word-wrap: break-word;
137
+ white-space: normal;
138
+ }
135
139
  </style>
@@ -30,6 +30,26 @@ const CellLayout = function (source, actionRouter,rowdata, forname, forrowindex)
30
30
  return '0';
31
31
  }
32
32
  else {
33
+ if (typeof source.visibility !== "undefined") {
34
+ if (source.visibility.indexOf('!=') > -1) {
35
+ var str = source.visibility.split('!=')
36
+ if ((',' + str[1] + ',').indexOf(',' + str[0] + ',') > -1) {
37
+ return '0';
38
+ }
39
+ else {
40
+ return '1';
41
+ }
42
+ }
43
+ else if (source.visibility.indexOf('=') > -1) {
44
+ var str = source.visibility.split('=')
45
+ if ((',' + str[1] + ',').indexOf(',' + str[0] + ',') > -1) {
46
+ return '1';
47
+ }
48
+ else {
49
+ return '0';
50
+ }
51
+ }
52
+ }
33
53
  return source.visibility;
34
54
  }
35
55
  },
@@ -191,9 +211,6 @@ const CellLayout = function (source, actionRouter,rowdata, forname, forrowindex)
191
211
  self._styleObject.backgroundImage = 'linear-gradient(' + source.gradientColor.replace(/-/g, ",") + ')';
192
212
  }
193
213
  }
194
- if (typeof source.visibility !== 'undefined') {
195
- self._styleObject.visibility = source.visibility;
196
- }
197
214
  if (typeof source.weight !== 'undefined') {
198
215
  self._styleObject.flex = source.weight;
199
216
  }
@@ -0,0 +1,208 @@
1
+ import base from '../../index';
2
+ import Base from './Base';
3
+ import LibFunction from './lib/LibFunction';
4
+ import Router from './Router';
5
+ import Enum from './lib/Enum';
6
+
7
+ const Container = function (source, sourceParent) {
8
+ var rtn = {
9
+ get label() {
10
+ let l = '';
11
+ if (source.controlLabel) {
12
+ l = source.controlLabel;
13
+ }
14
+ if (source.labelDelimiter) {
15
+ l = l + source.labelDelimiter;
16
+ }
17
+ return l;
18
+ },
19
+ isChanged: false,
20
+ set label(v) {
21
+ source.controlLabel = v;
22
+ },
23
+ _buttons: null,
24
+ get buttons() {
25
+ if (rtn._buttons !== null) {
26
+ return rtn._buttons;
27
+ }
28
+ else {
29
+ rtn._buttons = [];
30
+ if (sourceParent.buttons) {
31
+ sourceParent.buttons.forEach((v) => {
32
+ var button = Router(v);
33
+ button.is = "ct-btn";
34
+ rtn._buttons.push(button);
35
+ });
36
+ }
37
+ return rtn._buttons;
38
+ }
39
+ },
40
+ _links: null,
41
+ get links() {
42
+ if (rtn._links !== null) {
43
+ return rtn._links;
44
+ }
45
+ else {
46
+ rtn._links = [];
47
+ if (sourceParent.links) {
48
+ sourceParent.links.forEach((v) => {
49
+ var button = Router(v);
50
+ button.is = "ct-btn";
51
+ if (button.show) {
52
+ rtn._links.push(button);
53
+ }
54
+ });
55
+ }
56
+ return rtn._links;
57
+ }
58
+ },
59
+ _actionRouters: null,
60
+ get actionRouters() {
61
+ if (rtn._actionRouters !== null) {
62
+ return rtn._actionRouters;
63
+ }
64
+ else {
65
+ rtn._actionRouters = [];
66
+ if (sourceParent.actionRouters) {
67
+ sourceParent.actionRouters.forEach((v) => {
68
+ var button = Router(v);
69
+ button.is = "ct-btn";
70
+ rtn._actionRouters.push(button);
71
+ });
72
+ }
73
+ return rtn._actionRouters;
74
+ }
75
+ },
76
+ getFormObj() {
77
+ var rtnFormObj = {};
78
+ rtn.fields.forEach((f) => {
79
+ if (typeof f.id !== 'undefined') {
80
+ Object.assign(rtnFormObj, f.getFormObj());
81
+ }
82
+ });
83
+ return rtnFormObj;
84
+ },
85
+ _compoundfieldsDic: null,//字典,方便取值
86
+ get compoundfieldsDic() {
87
+ if (rtn._compoundfieldsDic !== null) {
88
+ return rtn._compoundfieldsDic;
89
+ }
90
+ rtn._compoundfieldsDic = {};
91
+ if (source.compoundFields) {
92
+ source.compoundFields.forEach((f) => {
93
+ let item = LibFunction.GetControl(f, sourceParent, false, false);
94
+ rtn._compoundfieldsDic[item.id] = item;
95
+ });
96
+ }
97
+ return rtn._compoundfieldsDic;
98
+ },
99
+ _fields: null,//数组,方便遍历
100
+ get fields() {
101
+ if (rtn._fields !== null) {
102
+ return rtn._fields;
103
+ }
104
+ let Index = 0;
105
+ rtn._fields = [];
106
+ source.compoundFields.forEach((v) => {
107
+ Index++;
108
+ let showLabel = true;
109
+ let item = LibFunction.GetControl(v, sourceParent, showLabel, false);
110
+ if (item instanceof Object) {
111
+ item.width = v.width;
112
+ item.form = rtn;
113
+ if (Index == 1 && item.label == "") {
114
+ item.label = rtn.label;
115
+ }
116
+ rtn.hiddenHandle(item);//是否隐藏关联组件
117
+ rtn._fields.push(item);
118
+ }
119
+ });
120
+ rtn.allRequiredHandle();//必填关联组件
121
+ return rtn._fields;
122
+ },
123
+ //隐藏关联组件
124
+ hiddenHandle(item, update) {
125
+ if (item.id) {
126
+ let sign = false;
127
+ let field = null;
128
+
129
+ for (var i in source.compoundFields) {
130
+ if (source.compoundFields[i].hiddenRelationField === item.id) {
131
+ field = source.compoundFields[i];
132
+ if (field) {
133
+ let hiddenValueArr = field.hiddenRelationFieldValue.split(',');
134
+ if (hiddenValueArr.indexOf(item.code1) > -1) {
135
+ field.show = false;
136
+ }
137
+ else {
138
+ field.show = true;
139
+ }
140
+ sign = true;
141
+
142
+ if (update && rtn.self && sign) {
143
+ rtn.self.$forceUpdate();
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ }
150
+ },
151
+ //验证必填关联组件
152
+ validMrf(item) {
153
+ let field = rtn.fields[item.mrf];
154
+
155
+ if (field && field.self) {
156
+ if (field.type === Enum.ControlType.List) {
157
+ //f.required = '0';
158
+ }
159
+ else {
160
+ field.self.validExcute();
161
+ }
162
+ }
163
+ },
164
+ allRequiredHandle() {
165
+ rtn.fields.forEach(v => {
166
+ rtn.requiredHandle(v, null, false);
167
+ });
168
+ },
169
+ //处理必填关联组件
170
+ requiredHandle(item, update, doMrf) {
171
+ if (item.id) {
172
+ let field = null;
173
+ for (var i in source.compoundFields) {
174
+ if (source.compoundFields[i].requiredRelationField === item.id) {
175
+ field = source.compoundFields[i];
176
+ let f = rtn.compoundfieldsDic[field.fieldName1];
177
+
178
+ if (field) {
179
+ let hiddenValueArr = field.requiredRelationFieldValue.split(',');
180
+ if (hiddenValueArr.indexOf(item.value) > -1) {
181
+ field.required = true;
182
+ }
183
+ else {
184
+ field.required = false;
185
+ }
186
+
187
+ if (f && f.self && f.self.$forceUpdate) {
188
+ f.self.$forceUpdate();
189
+ }
190
+
191
+ if (update && rtn.self) {
192
+ rtn.self.$forceUpdate();
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+ if (doMrf !== false) {
199
+ rtn.validMrf(item);
200
+ }
201
+ }
202
+ },
203
+
204
+ };
205
+ rtn = base.copy(Base(source), rtn);
206
+ return rtn;
207
+ };
208
+ export default Container;
@@ -55,6 +55,13 @@ const Form = function (source, callBack, apiParam, failCallBack, isFormList) {
55
55
  });
56
56
  }
57
57
  }
58
+ // else if (f.type == Enum.ControlType.ContainerControl) {
59
+ // if (f.compoundFields) {
60
+ // f.compoundFields.forEach((v) => {
61
+ // rtn._fieldsDic[v.id] = v;
62
+ // });
63
+ // }
64
+ // }
58
65
  rtn._fieldsDic[f.id] = f;
59
66
  });
60
67
  }
@@ -774,6 +781,11 @@ const Form = function (source, callBack, apiParam, failCallBack, isFormList) {
774
781
  parentFieldNameArr.forEach((v) => {
775
782
  let vs=v.split('.');
776
783
  submitData[vs[vs.length-1]] = tempFormData[v];
784
+ if(submitData[vs[vs.length-1]]==undefined){
785
+ if(rtn.self && rtn.self.parentModelForm){
786
+ submitData[vs[vs.length-1]] = rtn.self.parentModelForm.getFormObj()[v];
787
+ }
788
+ }
777
789
  });
778
790
 
779
791
  if(JSON.stringify(submitData) == "{}"){
@@ -376,10 +376,11 @@ const FormList = function (source, master) {
376
376
  "text": "提交",
377
377
  "buttonType": Enum.ButtonType.Submit
378
378
  }
379
- ]
379
+ ],
380
380
  },
381
381
  width: rtn.pageWidth+'px',
382
- height: rtn.pageHeight+'px'
382
+ height: rtn.pageHeight+'px',
383
+ parentModelForm:self.$self.parentModel,
383
384
  },
384
385
  on: {
385
386
  submit: function (ev) {
@@ -452,7 +453,8 @@ const FormList = function (source, master) {
452
453
  ]
453
454
  },
454
455
  width: rtn.pageWidth+'px',
455
- height: rtn.pageHeight+'px'
456
+ height: rtn.pageHeight+'px',
457
+ parentModelForm:self.$self.parentModel,
456
458
  },
457
459
  on: {
458
460
  submit: function (ev) {
@@ -23,6 +23,9 @@ const Router = function (source) {
23
23
  get actionForSearch() {
24
24
  return source.actionForSearch;
25
25
  },
26
+ get actionForSearchStats() {
27
+ return source.actionForSearchStats;
28
+ },
26
29
  get actionSource() {
27
30
  return source.actionSource;
28
31
  },
@@ -56,6 +56,14 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
56
56
 
57
57
  source.content.columns.forEach((v) => {
58
58
  v.columnWidth = v.columnWidth ? v.columnWidth : 'auto';
59
+ var colWidth ;
60
+ if (!self.columnWidthSaveAction) {
61
+ colWidth =window.localStorage.getItem(self.title+"_"+ common.initialsToLowerCase(v.fieldName)) ;
62
+ colWidth =colWidth ? colWidth : v.columnWidth;
63
+ v.columnWidth = colWidth;
64
+ }
65
+
66
+
59
67
  var col = {
60
68
  fixedSize: 0,
61
69
  get source() {
@@ -788,7 +796,8 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
788
796
  let rowMerged = rtn.rowMergedColumns[j];
789
797
  if (row[rowMerged] === rtn._lastRowspan[rowMerged]) {
790
798
  equalNum++;
791
- } else {
799
+ }
800
+ else {
792
801
  break;
793
802
  }
794
803
  }
@@ -797,11 +806,13 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
797
806
  if (equalNum === rtn.rowMergedColumns.length) {
798
807
  row.$rowspan = 0;
799
808
  rtn._lastRowspan.$rowspan++;
800
- } else {
809
+ }
810
+ else {
801
811
  row.$rowspan = 1;
802
812
  rtn._lastRowspan = row;
803
813
  }
804
- } else {
814
+ }
815
+ else {
805
816
  row.$rowspan = 1;
806
817
  rtn._lastRowspan = row;
807
818
  }
@@ -845,9 +856,6 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
845
856
  }
846
857
 
847
858
  source.page.rows = source.page.rows - deleteRow.length;
848
- if (rtn.cellLayout) {
849
- rtn.$vue.$delete(rtn.listData, rtn.selectIndex);
850
- }
851
859
  break;
852
860
 
853
861
  case Enum.ActionType.New: //新增
@@ -240,15 +240,22 @@ const Enum = {
240
240
  /// 表单
241
241
  /// </summary>
242
242
  From: 49,
243
+
243
244
  /// <summary>
244
245
  /// 列表的的自定义列
245
246
  /// </summary>
246
247
  CustomizeColumns: 50,
248
+
247
249
  /// <summary>
248
250
  /// 分片上传
249
251
  /// </summary>
250
252
  SliceUpload: 51,
251
253
 
254
+ /// <summary>
255
+ /// 容器控件(包含一组 Field ,显示容器样式 布局遵循表单的几列布局模式)
256
+ /// </summary>
257
+ ContainerControl: 52,
258
+
252
259
  },
253
260
 
254
261
  //返回状态码
@@ -36,7 +36,7 @@ import Repeat from '../Repeat';
36
36
  import Compound from '../Compound';
37
37
  import RichText from '../RichText';
38
38
  import DragSort from '../DragSort';
39
-
39
+ import Container from '../Container';
40
40
 
41
41
 
42
42
  const LibFunction = {
@@ -237,6 +237,10 @@ const LibFunction = {
237
237
  item = Compound(field, source);
238
238
  item.is = 'ct-compound';
239
239
  break;
240
+ case Enum.ControlType.ContainerControl: //容器控件
241
+ item = Container(field, source);
242
+ item.is = 'ct-container';
243
+ break;
240
244
  case Enum.ControlType.Hidden: //隐藏控件
241
245
  item = Hd(field);
242
246
  break;