centaline-data-driven 1.6.2 → 1.6.3

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.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
package/release-log.md CHANGED
@@ -1,3 +1,26 @@
1
+ # v1.6.3
2
+ 2024-04-11
3
+
4
+ bug
5
+
6
+ 列表右侧隐藏再打开时,右侧页面数据查询传值错误处理
7
+
8
+ 优化
9
+
10
+ 列表点击弹出表单,表单保存后返回新Router关闭弹层,执行Router打开新的表单弹层
11
+
12
+ 列表行操作支持202
13
+
14
+ 数字插件删除rowKey的显示
15
+
16
+ 列表查询添加必填验证
17
+
18
+ 修改分割线的上下间距
19
+
20
+ Field添加属性:重启一行
21
+
22
+ 导出路由 在附带查询条件的时候 也把 PageAttribute 带过去
23
+
1
24
  # v1.6.2
2
25
  2024-03-13
3
26
 
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="'/salemanage/ContractByPoint/readDetail'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
4
+ <ct-form :api="'/PropertyRET/getLayoutOfEdit'" :apiParam="apiParam" :topHeight="topHeight" :documentHeight="'600px'"></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
- "estateId":"2403121157406A5CD9C9DDD445A6B665","propertyId":"24031213282778E215D9738F41D88246","actionType":2,"commissionMode":"2"
15
+ chanceID: "10149009", actionType: 3
16
16
  },
17
17
  topHeight:10,
18
18
  }
@@ -106,6 +106,8 @@
106
106
 
107
107
  <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/ReportMonthAttendanceList/getLayoutOfSearch'" :searchDataApi="'/ReportMonthAttendanceList/getListOfSearchModel'"></ct-searchlist> -->
108
108
 
109
+ <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/ReportAttendanceExceptionList/getLayoutOfSearch'" :searchDataApi="'/ReportAttendanceExceptionList/getListOfSearchModel'"></ct-searchlist> -->
110
+
109
111
  <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/PersonHolidayList/getLayoutOfSearch'" :searchDataApi="'/PersonHolidayList/getListOfSearchModel'"></ct-searchlist> -->
110
112
 
111
113
  <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/EmployeeAttendanceBillList/getLayoutOfSearch'" :searchDataApi="'/EmployeeAttendanceBillList/getListOfSearchModel'"></ct-searchlist> -->
@@ -116,8 +118,11 @@
116
118
 
117
119
  <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/AttendanceBalanceAlertList/getLayoutOfSearch'" :searchDataApi="'/AttendanceBalanceAlertList/getListOfSearchModel'"></ct-searchlist> -->
118
120
 
119
- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/ReportWorkQuantifyList/getLayoutOfSearch'" :searchDataApi="'/ReportWorkQuantifyList/getListOfSearchModel'"></ct-searchlist>
121
+ <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/ReportWorkQuantifyList/getLayoutOfSearch'" :searchDataApi="'/ReportWorkQuantifyList/getListOfSearchModel'"></ct-searchlist> -->
122
+
123
+ <!-- <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/OvertimeList/getLayoutOfSearch'" :searchDataApi="'/OvertimeList/getListOfSearchModel'"></ct-searchlist> -->
120
124
 
125
+ <ct-searchlist :appRootUrl="appRootUrl" :searchConditionApi="'/TrainingAllowanceTotalList/getLayoutOfSearch'" :searchDataApi="'/TrainingAllowanceTotalList/getListOfSearchModel'"></ct-searchlist>
121
126
 
122
127
  <ct-dialog-list></ct-dialog-list>
123
128
  </div>
@@ -9,14 +9,29 @@
9
9
 
10
10
  <!--头部元素-->
11
11
  <el-row v-if="collapseFieldsRow.length > 0">
12
- <el-col v-for="(col, index) in collapseFieldsRow[0]" :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
13
- <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
12
+ <template v-for="(col, index) in collapseFieldsRow[0]">
13
+ <template v-if="col.show !== false && col.lineFeed">
14
+ <br/>
15
+ <el-col :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
16
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
14
17
  :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
15
18
  @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
16
19
  @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
17
20
  @popupSearchList="popupSearchListHandler"
18
21
  @tableButtonClick="clickHandler"></component>
19
- </el-col>
22
+ </el-col>
23
+ </template>
24
+ <template v-else>
25
+ <el-col :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
26
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
27
+ :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
28
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
29
+ @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
30
+ @popupSearchList="popupSearchListHandler"
31
+ @tableButtonClick="clickHandler"></component>
32
+ </el-col>
33
+ </template>
34
+ </template>
20
35
  </el-row>
21
36
 
22
37
  <!--tabs-->
@@ -24,14 +39,29 @@
24
39
  <el-tab-pane :label="item.label" :name="index.toString()"
25
40
  v-for="(item, index) in collapse" v-if="item.show !== false" :key="index">
26
41
  <el-row>
27
- <el-col v-for="(col, index) in collapseFieldsRow[index + 1]" :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
28
- <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
42
+ <template v-for="(col, index) in collapseFieldsRow[index + 1]">
43
+ <template v-if="col.show !== false && col.lineFeed">
44
+ <br/>
45
+ <el-col :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
46
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
29
47
  :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
30
48
  @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
31
49
  @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
32
50
  @popupSearchList="popupSearchListHandler"
33
51
  @tableButtonClick="clickHandler"></component>
34
- </el-col>
52
+ </el-col>
53
+ </template>
54
+ <template v-else>
55
+ <el-col :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
56
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
57
+ :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
58
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
59
+ @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
60
+ @popupSearchList="popupSearchListHandler"
61
+ @tableButtonClick="clickHandler"></component>
62
+ </el-col>
63
+ </template>
64
+ </template>
35
65
  </el-row>
36
66
  </el-tab-pane>
37
67
  </el-tabs>
@@ -44,28 +74,58 @@
44
74
  <span :class="[item.labelClass]">{{item.label}}</span>
45
75
  </template>
46
76
  <el-row>
47
- <el-col v-for="(col, index) in collapseFieldsRow[index + 1]" :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
48
- <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
49
- :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
50
- @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
51
- @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
52
- @popupSearchList="popupSearchListHandler"
53
- @tableButtonClick="clickHandler"></component>
54
- </el-col>
77
+ <template v-for="(col, index) in collapseFieldsRow[index + 1]">
78
+ <template v-if="col.show !== false && col.lineFeed">
79
+ <br/>
80
+ <el-col :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
81
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
82
+ :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
83
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
84
+ @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
85
+ @popupSearchList="popupSearchListHandler"
86
+ @tableButtonClick="clickHandler"></component>
87
+ </el-col>
88
+ </template>
89
+ <template v-else>
90
+ <el-col :key="index" :span="col.colspan" v-if="col.show !== false" style="padding:5px">
91
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
92
+ :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
93
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
94
+ @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
95
+ @popupSearchList="popupSearchListHandler"
96
+ @tableButtonClick="clickHandler"></component>
97
+ </el-col>
98
+ </template>
99
+ </template>
55
100
  </el-row>
56
101
  </el-collapse-item>
57
102
  </el-collapse>
58
103
 
59
104
  <!--尾部元素-->
60
105
  <el-row v-if="independentItem.length > 0" style="margin-top: 20px;">
61
- <el-col v-for="(col, index) in independentItem" :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
62
- <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
106
+ <template v-for="(col, index) in independentItem">
107
+ <template v-if="col.show !== false && col.lineFeed">
108
+ <br/>
109
+ <el-col :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
110
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
63
111
  :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
64
112
  @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
65
113
  @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
66
114
  @popupSearchList="popupSearchListHandler"
67
115
  @tableButtonClick="clickHandler"></component>
68
- </el-col>
116
+ </el-col>
117
+ </template>
118
+ <template v-else>
119
+ <el-col :key="index" v-if="col.show !== false" :span="col.colspan" style="padding:5px">
120
+ <component ref="Fields" :is="col.is" :vmodel="col" :api="model.optionApi" :parentModel="model" v-bind="col.bindPara"
121
+ :fileData="getFileData(col)" :from="'form'" :documentHeight="documentHeight" :documentWidth="documentWidth"
122
+ @click="fieldClickHandler(col,$event)" @change="changeHandler(col,$event)" @enter="enterHandler(col,$event)"
123
+ @input="inputHandler(col,$event)" @importComplete="importComplete" @blur="blurHandler(col,$event)"
124
+ @popupSearchList="popupSearchListHandler"
125
+ @tableButtonClick="clickHandler"></component>
126
+ </el-col>
127
+ </template>
128
+ </template>
69
129
  </el-row>
70
130
  <el-row v-if="model.links.findIndex((v)=>{return v.show}) > -1" style="margin-top: 8px;">
71
131
  <el-col :span="24" style="text-align:left">
@@ -358,7 +418,12 @@
358
418
  });
359
419
  }
360
420
  if (data.notification === 17) {
361
- self.clickHandler(self.model.getRtnRouter(data.content), null)
421
+ if(self.$common.dialogList && self.$common.dialogList.List.length > 0
422
+ && (data.content.pageStyle===1 || data.content.pageStyle===3)){
423
+ }
424
+ else{
425
+ self.clickHandler(self.model.getRtnRouter(data.content), null)
426
+ }
362
427
  }
363
428
  self.$emit('submit', { formData: self.model, responseData: data });
364
429
  },
@@ -411,7 +476,12 @@
411
476
  });
412
477
  }
413
478
  if (data.notification === 17) {
414
- self.clickHandler(self.model.getRtnRouter(data.content), null)
479
+ if(self.$common.dialogList && self.$common.dialogList.List.length > 0
480
+ && (data.content.pageStyle===1 || data.content.pageStyle===3)){
481
+ }
482
+ else{
483
+ self.clickHandler(self.model.getRtnRouter(data.content), null)
484
+ }
415
485
  }
416
486
  self.$emit('submit', { formData: self.model, responseData: data });
417
487
  },
@@ -445,7 +515,12 @@
445
515
  self.model.pageDisabled = false;
446
516
  if (data.rtnCode === 200) {
447
517
  if (data.notification === 17) {
448
- self.clickHandler(self.model.getRtnRouter(data.content), null)
518
+ if(self.$common.dialogList && self.$common.dialogList.List.length > 0
519
+ && (data.content.pageStyle===1 || data.content.pageStyle===3)){
520
+ }
521
+ else{
522
+ self.clickHandler(self.model.getRtnRouter(data.content), null)
523
+ }
449
524
  }
450
525
  if (self.model.flagAlertClose) {
451
526
  self.$common.confirm('操作成功,是否关闭本页面?', '提示', {
@@ -487,11 +562,14 @@
487
562
  field.doAction(self.getFormObj({ flagHaveAlert: '1' }), (res) => {
488
563
  if (res.rtnCode === 200) {
489
564
  if (res.notification === 17) {
490
- self.clickHandler(self.model.getRtnRouter(res.content), null)
491
- }
492
- else {
493
- self.$emit('submit', { formData: self.model, responseData: res });
565
+ if(self.$common.dialogList && self.$common.dialogList.List.length > 0
566
+ && (res.content.pageStyle===1 || res.content.pageStyle===3)){
567
+ }
568
+ else{
569
+ self.clickHandler(self.model.getRtnRouter(res.content), null)
570
+ }
494
571
  }
572
+ self.$emit('submit', { formData: self.model, responseData: res });
495
573
  }
496
574
  });
497
575
  }).catch(() => {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div style="width:100%">
2
+ <div style="width:100%" class="ctGroupLine">
3
3
  <el-divider>{{model.label}}</el-divider>
4
4
  </div>
5
5
  </template>
@@ -25,3 +25,8 @@
25
25
  }
26
26
  }
27
27
  }</script>
28
+ <style scoped>
29
+ .ctGroupLine .el-divider--horizontal {
30
+ margin: 9px 0;
31
+ }
32
+ </style>
@@ -14,7 +14,7 @@
14
14
  <input style="text-align:left;width:100%" class="el-range-input" :placeholder="model.attrs.placeholder1"
15
15
  v-model="model.value" @change="onChangeHandler($event)" @input="onInputHandler($event);isShowClear()"
16
16
  @blur="onBlurHandler($event)"
17
- :class="model.lock ? 'ct-is-disabled' : ''" :disabled="model.lock" />{{model.rowKey}}
17
+ :class="model.lock ? 'ct-is-disabled' : ''" :disabled="model.lock" />
18
18
  <span class="el-input__suffix el-input--mini" v-if="showClear">
19
19
  <span class="el-input__suffix-inner ct-close">
20
20
  <i class="el-select__caret el-input__icon el-icon-circle-close is-show-close" @click="clearClickHandle($event)"></i>
@@ -51,8 +51,8 @@
51
51
  'ct-SearchSideMenu': dynamicSearchSideMenu,
52
52
  'ct-Detail': ()=>import('../../dynamicDetail/src/dynamicDetail.vue'),
53
53
  },
54
- props: {
55
- appID:String,
54
+ props: {
55
+ appID:String,
56
56
  vmodel: Object,
57
57
  searchCategoryApi: String,
58
58
  searchConditionApi: String,
@@ -79,10 +79,12 @@
79
79
  flagPopupSearchlist:{
80
80
  Boolean,
81
81
  default:false,
82
- }, dragStartItem:{
82
+ },
83
+ dragStartItem:{
83
84
  String,
84
85
  default: '',
85
- }, dragStartName:{
86
+ },
87
+ dragStartName:{
86
88
  String,
87
89
  default: '',
88
90
  },
@@ -190,8 +192,7 @@
190
192
  this.reloadKey = this.reloadKey+1;
191
193
  this.reloadKeyScreen='s'+this.reloadKey;
192
194
  this.reloadKeyTable='t'+this.reloadKey;
193
- },
194
-
195
+ },
195
196
  reload() {
196
197
  this.screenPara=this.apiParam;
197
198
  let self = this;
@@ -201,7 +202,6 @@
201
202
  })
202
203
  },
203
204
  search() {
204
-
205
205
  this.selectIndex=-1;
206
206
  if (this.$refs.table.model) {
207
207
  this.pageDisabled=true;
@@ -371,26 +371,23 @@
371
371
  rowClickHandle() {
372
372
  var self = this;
373
373
  if (self.selectIndex !== self.$refs.table.model.selectIndex && self.$refs.table.model.rowSelectRouter) {
374
- self.selectIndex = self.$refs.table.model.selectIndex;
375
374
  self.rowCount = self.$refs.table.model.listData.length;
376
375
  if (this.sideBarStatus && this.sideBarStatus == "open") {
376
+ self.selectIndex = self.$refs.table.model.selectIndex;
377
377
  self.sideBarApiParam = {};
378
378
  if (self.$refs.table.model.rowSelectRouter.submitListField) {
379
- self.$refs.table.model.rowSelectRouter.submitListField.forEach(
380
- (k) => {
381
- self.sideBarApiParam[k] = self.$refs.table.model.listData[self.selectIndex][k];
382
- }
383
- );
379
+ self.$refs.table.model.rowSelectRouter.submitListField.forEach((k) => {
380
+ self.sideBarApiParam[k] = self.$refs.table.model.listData[self.selectIndex][k];
381
+ });
384
382
  }
385
383
  self.sideBarApiParam.actionType = self.$refs.table.model.rowSelectRouter.actionType;
386
384
  self.detailKey = self.detailKey + 1;
387
385
  }
388
386
  try {
389
387
  let ApiParam = {};
390
- if (self.$refs.table.model.rowSelectRouter.submitListField&&self.$refs.table.model.listData.length>0) {
391
- self.$refs.table.model.rowSelectRouter.submitListField.forEach((k) => {
392
-
393
- ApiParam[k] = self.$refs.table.model.listData[self.selectIndex][k];
388
+ if (self.$refs.table.model.rowSelectRouter.submitListField && self.$refs.table.model.listData.length>0) {
389
+ self.$refs.table.model.rowSelectRouter.submitListField.forEach((k) => {
390
+ ApiParam[k] = self.$refs.table.model.listData[self.$refs.table.model.selectIndex][k];
394
391
  });
395
392
  }
396
393
  this.$emit("rowClickHandle", ApiParam, self.appID);
@@ -4,16 +4,22 @@
4
4
  <div :class="isLayout === true ? 'ct-ptl0 max-ptb5' : 'ct-ptb5 max-ptb5'" v-if="showScreen">
5
5
  <template v-for="(col, index) in model.screen" v-if="col.show !== false">
6
6
  <br v-if="col.is === 'ct-linefeed'" />
7
- <component v-else class="list-field max-list-field" v-bind="col.listBind" :is="col.is" :vmodel="col" :api="model.optionApi" :key="col.keyScreen" :actionRouters="model.actionRouters"
7
+ <template v-else>
8
+ <br v-if="col.lineFeed" />
9
+ <component ref="Fields" class="list-field max-list-field" v-bind="col.listBind" :is="col.is" :vmodel="col" :api="model.optionApi" :key="col.keyScreen" :actionRouters="model.actionRouters"
8
10
  @click="clickHandler(col)" @change="changeHandler(col,$event)"></component>
11
+ </template>
9
12
  </template>
10
13
  <template v-for="(col, index) in model.btnScreen" v-if="col.show !== false">
11
14
  <component v-if="col.type===16 || col.type===17 || col.type===18" :key="index" :is="col.is" :vmodel="col" :api="model.optionApi" :actionRouters="model.actionRouters"
12
15
  @click="clickHandler(col)" @change="changeHandler(col,$event)" @SaveSearchWhere="SaveSearchWhere" @SearchWhereManage="SearchWhereManage" @clichSearchWhere="clichSearchWhere"></component>
13
16
  <br v-else-if="col.is === 'ct-linefeed'" />
14
- <component v-else class="list-field max-list-field" v-bind="col.listBind" :is="col.is" :vmodel="col" :api="model.optionApi" :key="col.keyScreen" :actionRouters="model.actionRouters"
17
+ <template v-else>
18
+ <br v-if="col.lineFeed" />
19
+ <component class="list-field max-list-field" v-bind="col.listBind" :is="col.is" :vmodel="col" :api="model.optionApi" :key="col.keyScreen" :actionRouters="model.actionRouters"
15
20
  @click="clickHandler(col)" @change="changeHandler(col,$event)"></component>
16
- </template>
21
+ </template>
22
+ </template>
17
23
  </div>
18
24
  <div class="shortcutFollow max-shortcutFollow" style="padding-left: 20px;" v-if="model.shortcutForm">
19
25
  <ct-form :source="model.shortcutForm.code1" @submit="saveShortcut" :openType="'detail'"></ct-form>
@@ -22,8 +28,11 @@
22
28
  <div style="width:100%">
23
29
  <template v-for="(col, index) in highScreenRow" v-if="col.show !== false">
24
30
  <br v-if="col.is === 'ct-linefeed'" />
25
- <component v-else class="list-field" v-bind="col.listBind" :key="col.keyScreen" :is="col.is" :vmodel="col" :api="model.optionApi" :actionRouters="model.actionRouters"
26
- @click="clickHandler(col)" @change="changeHandler(col,$event)"></component>
31
+ <template v-else>
32
+ <br v-if="col.lineFeed" />
33
+ <component ref="Fields" class="list-field" v-bind="col.listBind" :key="col.keyScreen" :is="col.is" :vmodel="col" :api="model.optionApi" :actionRouters="model.actionRouters"
34
+ @click="clickHandler(col)" @change="changeHandler(col,$event)"></component>
35
+ </template>
27
36
  </template>
28
37
  </div>
29
38
  </div>
@@ -96,12 +105,16 @@ import dynamicElement from '../../mixins/dynamicElement';
96
105
  }
97
106
  break;
98
107
  case 'search':
99
- this.$emit('search', this.model);
108
+ if(this.validExcute()){
109
+ this.$emit('search', this.model);
110
+ }
100
111
  this.$set(this, 'highScreen', false);
101
112
  break;
102
113
  case 'reset':
103
114
  this.model.reset();
104
- this.$emit('resetSearch', this.model);
115
+ if(this.validExcute()){
116
+ this.$emit('resetSearch', this.model);
117
+ }
105
118
  break;
106
119
  default:
107
120
  if (model.type === 15) {
@@ -738,6 +751,61 @@ import dynamicElement from '../../mixins/dynamicElement';
738
751
 
739
752
  self.$forceUpdate();
740
753
  },
754
+ validExcute() {
755
+ var self = this;
756
+ var rtnBool = true;
757
+ var i = 0;
758
+
759
+ self.$refs.Fields.forEach((f) => {
760
+ if (f.model && typeof f.validExcute !== 'undefined') {
761
+ if (!f.validExcute()) {
762
+ if (i === 0) {
763
+ if (f.model.is == "ct-file"||f.model.is == "ct-repeat"||f.model.is == "ct-form-list-table") {
764
+ self.$message({
765
+ message: f.validMessage,
766
+ type: 'error',
767
+ showClose:true,
768
+ });
769
+ }
770
+ else {
771
+ if (f.validMessage) {
772
+ if (f.validMessage == '必填' && (f.model.label || (f.model.attrs && f.model.attrs.placeholder))) {
773
+ let m=f.model.label;
774
+ if(!m && f.model.attrs && f.model.attrs.placeholder){
775
+ m=f.model.attrs.placeholder;
776
+ }
777
+ self.$message({
778
+ message: '【' + m + '】' + f.validMessage,
779
+ type: 'error',
780
+ showClose:true,
781
+ });
782
+ }
783
+ else {
784
+ self.$message({
785
+ message: f.validMessage,
786
+ type: 'error',
787
+ showClose:true,
788
+ });
789
+ }
790
+ }
791
+ else {
792
+ if (f.model.label) {
793
+ self.$message({
794
+ message: '【' + f.model.label + '】不能为空!',
795
+ type: 'error',
796
+ showClose:true,
797
+ });
798
+ }
799
+ }
800
+ }
801
+ }
802
+ i++;
803
+ rtnBool = false;
804
+ }
805
+ }
806
+ });
807
+ return rtnBool;
808
+ },
741
809
  }
742
810
  }
743
811
  </script>
@@ -1114,6 +1114,7 @@ export default {
1114
1114
 
1115
1115
  if (field.flagAttachSearchCondition) {
1116
1116
  submitData["searchFields"] = self.model.getSearchData();
1117
+ submitData["pageAttribute"] = self.model.pageData;
1117
1118
  }
1118
1119
 
1119
1120
  this.routerClickHandler(field, submitData, action);
@@ -1149,6 +1150,7 @@ export default {
1149
1150
 
1150
1151
  if (field.flagAttachSearchCondition) {
1151
1152
  submitData["searchFields"] = self.model.getSearchData();
1153
+ submitData["pageAttribute"] = self.model.pageData;
1152
1154
  }
1153
1155
 
1154
1156
  if (field.isCallTel) {
@@ -1518,6 +1520,11 @@ export default {
1518
1520
  }
1519
1521
  self.$common.closeDialog(dialogOption.dialog);
1520
1522
  self.updateCurrentRow(field, ev);
1523
+ if(ev.responseData && ev.responseData.notification === 17){
1524
+ setTimeout(() => {
1525
+ self.routerClickHandler(self.model.getRtnRouter(ev.responseData.content), {});
1526
+ });
1527
+ }
1521
1528
  }
1522
1529
  },
1523
1530
  refreshParent() {
@@ -1598,13 +1605,37 @@ export default {
1598
1605
  self.$refs['router' + field.id + field.rowindex][0].callTelClick(data);
1599
1606
  }
1600
1607
  else {
1601
- if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
1602
- self.model.doAction({ responseData: data });
1603
- self.$emit("refreshRowHandle");
1608
+ if (data.rtnCode === 200) {
1609
+ if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
1610
+ self.model.doAction({ responseData: data });
1611
+ self.$emit("refreshRowHandle");
1612
+ }
1613
+ self.$forceUpdate();
1614
+ self.$refs.footer.$forceUpdate();
1615
+ self.updateCurrentRow(field, data);
1604
1616
  }
1605
- self.$forceUpdate();
1606
- self.$refs.footer.$forceUpdate();
1607
- self.updateCurrentRow(field, data);
1617
+ else if (data.rtnCode === 202) {
1618
+ self.$common.confirm(data.rtnMsg, '提示', {
1619
+ confirmButtonText: '确定',
1620
+ cancelButtonText: '取消',
1621
+ type: 'warning'
1622
+ }).then(() => {
1623
+ submitData.flagHaveAlert='1';
1624
+ field.doAction(submitData, (res) => {
1625
+ if (res.rtnCode === 200) {
1626
+ if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
1627
+ self.model.doAction({ responseData: res });
1628
+ self.$emit("refreshRowHandle");
1629
+ }
1630
+ self.$forceUpdate();
1631
+ self.$refs.footer.$forceUpdate();
1632
+ self.updateCurrentRow(field, res);
1633
+ }
1634
+ });
1635
+ }).catch(() => {
1636
+ });
1637
+ }
1638
+
1608
1639
  }
1609
1640
  });
1610
1641
  }
@@ -399,6 +399,9 @@ const Base = function (source) {
399
399
  set searchTick(v) {
400
400
  source.searchTick = v;
401
401
  },
402
+ get lineFeed() {
403
+ return source.lineFeed;
404
+ },
402
405
  };
403
406
 
404
407
  return rtn;
@@ -1054,6 +1054,11 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
1054
1054
  get selectedRowBackColor() {
1055
1055
  return source.content.selectedRowBackColor;
1056
1056
  },
1057
+ getRtnRouter(v){
1058
+ var button = Router(v);
1059
+ button.is = "ct-btn";
1060
+ return button;
1061
+ },
1057
1062
  };
1058
1063
  if (rtn.template) {
1059
1064
  var tempLoader = template.loader(rtn.template).default;
@@ -25,6 +25,14 @@ const actions = {
25
25
  },
26
26
  requiredArea(v, o) {
27
27
  if (v.value === undefined || v.value === null || v.value === '' || v.value1 === undefined || v.value1 === null || v.value1 === '') {
28
+ if(v.isScreen){
29
+ if(v.value!=undefined && v.value!=null && v.value!=''){
30
+ return true;
31
+ }
32
+ else if(v.value1!=undefined && v.value1!=null && v.value1!=''){
33
+ return true;
34
+ }
35
+ }
28
36
  return false;
29
37
  }
30
38
  else {
@@ -120,9 +128,11 @@ const actions = {
120
128
  }
121
129
  if (v.value === '' && v.value1 === '') {
122
130
  return true;
123
- } else if ((v.value === '' || reg.test(v.value)) && (v.value1 === '' || reg.test(v.value1))) {
131
+ }
132
+ else if ((v.value === '' || reg.test(v.value)) && (v.value1 === '' || reg.test(v.value1))) {
124
133
  return true;
125
- } else {
134
+ }
135
+ else {
126
136
  v.value = o;
127
137
  v.value1 = o1;
128
138
  return true;