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 +1 -1
- package/release-log.md +23 -0
- package/src/Form.vue +2 -2
- package/src/SearchList.vue +6 -1
- package/src/centaline/dynamicForm/src/dynamicForm.vue +102 -24
- package/src/centaline/dynamicGp/src/dynamicGp.vue +6 -1
- package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +1 -1
- package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +14 -17
- package/src/centaline/dynamicSearchList/src/dynamicSearchScreen.vue +75 -7
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +37 -6
- package/src/centaline/loader/src/ctl/Base.js +3 -0
- package/src/centaline/loader/src/ctl/SearchTable.js +5 -0
- package/src/centaline/validate/index.js +12 -2
- package/src/main.js +9 -9
- package/wwwroot/static/centaline/centaline-data-driven.js +663 -458
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
package/package.json
CHANGED
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="'/
|
|
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
|
-
|
|
15
|
+
chanceID: "10149009", actionType: 3
|
|
16
16
|
},
|
|
17
17
|
topHeight:10,
|
|
18
18
|
}
|
package/src/SearchList.vue
CHANGED
|
@@ -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
|
-
<
|
|
13
|
-
<
|
|
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
|
-
|
|
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
|
-
<
|
|
28
|
-
<
|
|
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
|
-
|
|
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
|
-
<
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
<
|
|
62
|
-
<
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
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" />
|
|
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
|
-
|
|
55
|
-
|
|
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
|
-
},
|
|
82
|
+
},
|
|
83
|
+
dragStartItem:{
|
|
83
84
|
String,
|
|
84
85
|
default: '',
|
|
85
|
-
},
|
|
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
|
-
|
|
381
|
-
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
-
<
|
|
26
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
1602
|
-
|
|
1603
|
-
|
|
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
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
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
|
}
|
|
@@ -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
|
-
}
|
|
131
|
+
}
|
|
132
|
+
else if ((v.value === '' || reg.test(v.value)) && (v.value1 === '' || reg.test(v.value1))) {
|
|
124
133
|
return true;
|
|
125
|
-
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
126
136
|
v.value = o;
|
|
127
137
|
v.value1 = o1;
|
|
128
138
|
return true;
|