centaline-data-driven 1.3.35 → 1.3.38
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/src/Form.vue +6 -9
- package/src/centaline/common/index.js +12 -6
- package/src/centaline/dialogList/src/dialog.vue +6 -3
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailOFI.vue +20 -2
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +36 -10
- package/src/centaline/dynamicForm/src/dynamicForm.vue +38 -2
- package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +37 -20
- package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +2 -2
- package/src/centaline/dynamicL/src/dynamicL.vue +15 -2
- package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchList.vue +14 -5
- package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchListTable.vue +1 -3
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +20 -34
- package/src/centaline/dynamicT/src/dynamicT.vue +4 -3
- package/src/centaline/loader/src/ctl/Detail.js +39 -2
- package/src/centaline/loader/src/ctl/Form.js +8 -7
- package/src/centaline/loader/src/ctl/FormList.js +41 -25
- package/src/centaline/loader/src/ctl/Tags.js +8 -0
- package/src/centaline/validate/index.js +4 -2
- package/src/main.js +7 -7
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
package/package.json
CHANGED
package/src/Form.vue
CHANGED
|
@@ -2,24 +2,21 @@
|
|
|
2
2
|
<div id="form-app" class="data-driven" style="width:100%;height:100%;overflow:auto">
|
|
3
3
|
<!-- <ct-form :api="'/PropertyRET/getLayoutOfNew'" :apiParam="apiParam"></ct-form> -->
|
|
4
4
|
<!-- <ct-form :source="formdata.content" :apiParam="apiParam"></ct-form> -->
|
|
5
|
-
<ct-form :api="'/api/third-dept-tran/transaction/
|
|
6
|
-
|
|
5
|
+
<ct-form :api="'/api/third-dept-tran/transaction/detail'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
|
|
6
|
+
<!-- <ct-form :api="'/api/third-dept-tran/transaction/detail'" :apiParam="apiParam"></ct-form> -->
|
|
7
7
|
<ct-dialog-list></ct-dialog-list>
|
|
8
8
|
</div>
|
|
9
9
|
</template>
|
|
10
10
|
|
|
11
11
|
<script>
|
|
12
12
|
export default {
|
|
13
|
-
name: '
|
|
13
|
+
name: 'DataDrivenForm',
|
|
14
14
|
data() {
|
|
15
15
|
return {
|
|
16
16
|
apiParam:{
|
|
17
|
-
actionType: "
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
pageStyle: "2",
|
|
21
|
-
stepId: "1550014106894327810"
|
|
22
|
-
}
|
|
17
|
+
originalTraId: "1552573734835798018", actionType: 3, pageStyle: 2, pageTitle: "成交报告", pageOnly: true
|
|
18
|
+
},
|
|
19
|
+
topHeight:10,
|
|
23
20
|
}
|
|
24
21
|
},
|
|
25
22
|
activated(){
|
|
@@ -328,15 +328,20 @@ const common = {
|
|
|
328
328
|
if (parent) {
|
|
329
329
|
if (parent.$options.name === 'ElTabPane') {
|
|
330
330
|
return parent;
|
|
331
|
-
}
|
|
331
|
+
}
|
|
332
|
+
else if (evControl.$options.name === 'ctDialog') {
|
|
332
333
|
return evControl.vmodel.pane;
|
|
333
|
-
}
|
|
334
|
+
}
|
|
335
|
+
else if (parent.$options.name === 'DataDrivenSearch') {
|
|
334
336
|
return parent;
|
|
335
|
-
}
|
|
337
|
+
}
|
|
338
|
+
else if (parent.$options.name === 'DataDrivenForm') {
|
|
336
339
|
return parent;
|
|
337
|
-
}
|
|
340
|
+
}
|
|
341
|
+
else if (parent.$options.name === 'DataDrivendetail') {
|
|
338
342
|
return parent;
|
|
339
|
-
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
340
345
|
return this.getParentPane(parent);
|
|
341
346
|
}
|
|
342
347
|
}
|
|
@@ -364,7 +369,8 @@ const common = {
|
|
|
364
369
|
if (window.attachEvent && !window.opera) {
|
|
365
370
|
//ie
|
|
366
371
|
execScript(code);
|
|
367
|
-
}
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
368
374
|
//not ie
|
|
369
375
|
window.eval(code);
|
|
370
376
|
}
|
|
@@ -146,13 +146,14 @@
|
|
|
146
146
|
mySelf.close();
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
|
|
149
|
+
//此行代码是为了防止弹出的窗口高度 大于父级页面的高度
|
|
150
|
+
//暂时注释 高度由接口控制
|
|
150
151
|
var ph=0;
|
|
151
152
|
if(item.attrs.height){
|
|
152
153
|
ph=parseInt(item.attrs.height.replace('px',''));
|
|
153
154
|
}
|
|
154
|
-
if(self.vmodel.pane && self.vmodel.pane.$el.clientHeight<ph){
|
|
155
|
-
item.attrs.height=(self.vmodel.pane.$el.clientHeight-
|
|
155
|
+
if(self.vmodel.pane && self.vmodel.pane.$el && self.vmodel.pane.$el.clientHeight<ph){
|
|
156
|
+
item.attrs.height=(self.vmodel.pane.$el.clientHeight-60)+'px';
|
|
156
157
|
}
|
|
157
158
|
|
|
158
159
|
return h('div', {
|
|
@@ -170,6 +171,8 @@
|
|
|
170
171
|
]);
|
|
171
172
|
}
|
|
172
173
|
else {
|
|
174
|
+
//此行代码是为了防止弹出的窗口高度 大于父级页面的高度
|
|
175
|
+
//暂时注释 高度由接口控制
|
|
173
176
|
var ph=0;
|
|
174
177
|
if(item.attrs.height){
|
|
175
178
|
ph=parseInt(item.attrs.height.replace('px',''));
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<span>{{ model.fields1Dic.EstateName.value }}</span>
|
|
11
11
|
<span> {{ model.fields1Dic.BuildingName.value }}</span>
|
|
12
12
|
<span>{{ model.fields1Dic.RoomNo.value }}</span>
|
|
13
|
-
<img :src="model.
|
|
13
|
+
<img :src="model.actionRouterFavorite.imgUrl" alt="" @click="fieldClickHandler(model.actionRouterFavorite, $event)" class="collection" />
|
|
14
14
|
</div>
|
|
15
15
|
<div class="title-other">
|
|
16
16
|
<span>{{ model.fields1Dic.PropertyNo.label }}{{ model.fields1Dic.PropertyNo.value }}</span>
|
|
@@ -646,6 +646,9 @@ export default {
|
|
|
646
646
|
loadBaseInfo() {
|
|
647
647
|
this.model.loadBaseInfo();
|
|
648
648
|
},
|
|
649
|
+
loadFavorite() {
|
|
650
|
+
this.model.loadFavorite();
|
|
651
|
+
},
|
|
649
652
|
handleClick(tab, event) {
|
|
650
653
|
let i = tab.index;
|
|
651
654
|
if (this.model.tags2 && this.model.tags2[i]) {
|
|
@@ -697,7 +700,11 @@ export default {
|
|
|
697
700
|
});
|
|
698
701
|
callBack = "loadOperation";
|
|
699
702
|
}
|
|
700
|
-
|
|
703
|
+
if (router == undefined && this.model.actionRouterFavorite) {
|
|
704
|
+
if (field.id === this.model.actionRouterFavorite.id) {
|
|
705
|
+
router = this.model.actionRouterFavorite;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
701
708
|
if (router) {
|
|
702
709
|
if (field.isSubmitDataFromSelf) {
|
|
703
710
|
router.submitFormField.forEach((v) => {
|
|
@@ -712,6 +719,9 @@ export default {
|
|
|
712
719
|
if(router.id=="PropertyEdit"){
|
|
713
720
|
callBack="loadBaseInfo"
|
|
714
721
|
}
|
|
722
|
+
else if (router.id == "Favorite") {
|
|
723
|
+
callBack = "loadFavorite"
|
|
724
|
+
}
|
|
715
725
|
}
|
|
716
726
|
|
|
717
727
|
if (callBack) {
|
|
@@ -721,6 +731,9 @@ export default {
|
|
|
721
731
|
else if(callBack=='loadBaseInfo'){
|
|
722
732
|
this.routerClickHandler(router, submitData, self.loadBaseInfo);
|
|
723
733
|
}
|
|
734
|
+
else if (callBack == 'loadFavorite') {
|
|
735
|
+
this.routerClickHandler(router, submitData, self.loadFavorite);
|
|
736
|
+
}
|
|
724
737
|
}
|
|
725
738
|
else {
|
|
726
739
|
this.routerClickHandler(router, submitData);
|
|
@@ -794,6 +807,11 @@ export default {
|
|
|
794
807
|
});
|
|
795
808
|
self.$common.closeDialog(dialogOption.dialog);
|
|
796
809
|
},
|
|
810
|
+
closeDialog(ev) {
|
|
811
|
+
if (field.id == "Favorite" && callBack) {
|
|
812
|
+
callBack();
|
|
813
|
+
}
|
|
814
|
+
}
|
|
797
815
|
},
|
|
798
816
|
},
|
|
799
817
|
],
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<span>{{ model.fields1Dic.EstateName.value }}</span>
|
|
11
11
|
<span> {{ model.fields1Dic.BuildingName.value }}</span>
|
|
12
12
|
<span>{{ model.fields1Dic.RoomNo.value }}</span>
|
|
13
|
-
<img :src="model.
|
|
13
|
+
<img :src="model.actionRouterFavorite.imgUrl" alt="" @click="fieldClickHandler(model.actionRouterFavorite, $event)" class="collection" />
|
|
14
14
|
</div>
|
|
15
15
|
<div class="title-other">
|
|
16
16
|
<span>{{ model.fields1Dic.PropertyNo.label }}{{ model.fields1Dic.PropertyNo.value }}</span>
|
|
@@ -235,8 +235,9 @@
|
|
|
235
235
|
</el-tabs>
|
|
236
236
|
<div class="more-dropdown">
|
|
237
237
|
<el-dropdown trigger="click" placement="bottom">
|
|
238
|
-
<span class="el-dropdown-link">
|
|
239
|
-
<div class="my-icon-more"></div>
|
|
238
|
+
<span class="el-dropdown-link svgIcon">
|
|
239
|
+
<!-- <div class="my-icon-more"></div> -->
|
|
240
|
+
<img :src="iconSort" alt="" width="100%" />
|
|
240
241
|
</span>
|
|
241
242
|
<el-dropdown-menu slot="dropdown" class="tabsMore">
|
|
242
243
|
<el-dropdown-item
|
|
@@ -579,6 +580,7 @@ export default {
|
|
|
579
580
|
showData: [],
|
|
580
581
|
FlagStatistics: false,
|
|
581
582
|
dropDownSelected: false,
|
|
583
|
+
iconSort: require("../../../assets/sort.png"),
|
|
582
584
|
};
|
|
583
585
|
},
|
|
584
586
|
mounted() {
|
|
@@ -761,6 +763,9 @@ export default {
|
|
|
761
763
|
loadBaseInfo() {
|
|
762
764
|
this.model.loadBaseInfo();
|
|
763
765
|
},
|
|
766
|
+
loadFavorite() {
|
|
767
|
+
this.model.loadFavorite();
|
|
768
|
+
},
|
|
764
769
|
handleClick(tab, event) {
|
|
765
770
|
let i = tab.index;
|
|
766
771
|
if (this.model.tags2 && this.model.tags2[i]) {
|
|
@@ -828,31 +833,42 @@ export default {
|
|
|
828
833
|
});
|
|
829
834
|
callBack = "loadOperation";
|
|
830
835
|
}
|
|
836
|
+
if (router == undefined && this.model.actionRouterFavorite) {
|
|
837
|
+
if (field.id === this.model.actionRouterFavorite.id) {
|
|
838
|
+
router = this.model.actionRouterFavorite;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
831
841
|
|
|
832
842
|
if (router) {
|
|
833
843
|
if (field.isSubmitDataFromSelf) {
|
|
834
844
|
router.submitFormField.forEach((v) => {
|
|
835
845
|
submitData[v] = field.list[field.listIndex].code;
|
|
836
846
|
});
|
|
837
|
-
}
|
|
847
|
+
}
|
|
838
848
|
else {
|
|
839
849
|
router.submitFormField.forEach((v) => {
|
|
840
850
|
submitData[v] = self.model.fields1Dic[v].value;
|
|
841
851
|
});
|
|
842
852
|
}
|
|
843
|
-
if(router.id=="PropertyEdit"){
|
|
844
|
-
callBack="loadBaseInfo"
|
|
853
|
+
if (router.id == "PropertyEdit") {
|
|
854
|
+
callBack = "loadBaseInfo"
|
|
855
|
+
}
|
|
856
|
+
else if (router.id == "Favorite") {
|
|
857
|
+
callBack = "loadFavorite"
|
|
845
858
|
}
|
|
846
859
|
}
|
|
847
860
|
|
|
848
861
|
if (callBack) {
|
|
849
|
-
if(callBack=='loadOperation'){
|
|
862
|
+
if (callBack == 'loadOperation') {
|
|
850
863
|
this.routerClickHandler(router, submitData, self.loadOperation);
|
|
851
864
|
}
|
|
852
|
-
else if(callBack=='loadBaseInfo'){
|
|
865
|
+
else if (callBack == 'loadBaseInfo') {
|
|
853
866
|
this.routerClickHandler(router, submitData, self.loadBaseInfo);
|
|
854
867
|
}
|
|
855
|
-
|
|
868
|
+
else if (callBack == 'loadFavorite') {
|
|
869
|
+
this.routerClickHandler(router, submitData, self.loadFavorite);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
856
872
|
else {
|
|
857
873
|
this.routerClickHandler(router, submitData);
|
|
858
874
|
}
|
|
@@ -925,6 +941,11 @@ export default {
|
|
|
925
941
|
});
|
|
926
942
|
self.$common.closeDialog(dialogOption.dialog);
|
|
927
943
|
},
|
|
944
|
+
closeDialog(ev) {
|
|
945
|
+
if (field.id == "Favorite" && callBack) {
|
|
946
|
+
callBack();
|
|
947
|
+
}
|
|
948
|
+
}
|
|
928
949
|
},
|
|
929
950
|
},
|
|
930
951
|
],
|
|
@@ -1805,7 +1826,7 @@ export default {
|
|
|
1805
1826
|
height: 20px;
|
|
1806
1827
|
text-align: left;
|
|
1807
1828
|
top: 13px;
|
|
1808
|
-
right: -
|
|
1829
|
+
right: -1px;
|
|
1809
1830
|
}
|
|
1810
1831
|
.el-dropdown-menu--mini .el-dropdown-menu__item {
|
|
1811
1832
|
font-size: 14px;
|
|
@@ -1830,6 +1851,11 @@ export default {
|
|
|
1830
1851
|
>>> .el-tabs--top .el-tabs__item.is-top:last-child {
|
|
1831
1852
|
padding-right: 15px;
|
|
1832
1853
|
}
|
|
1854
|
+
.svgIcon {
|
|
1855
|
+
width: 16px;
|
|
1856
|
+
text-align: center;
|
|
1857
|
+
cursor: pointer;
|
|
1858
|
+
}
|
|
1833
1859
|
</style>
|
|
1834
1860
|
|
|
1835
1861
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-loading="loading" :style="{width:pageWidth?pageWidth+'px':'100%',margin:'auto'}">
|
|
2
|
+
<div v-loading="loading" :style="{width:pageWidth?pageWidth+'px':'100%',margin:'auto','min-height': minHeight}">
|
|
3
3
|
<div v-if="model !== null && !loading" class="ct-form" :class="{'domDisabled':model.pageDisabled}" :key="formKey">
|
|
4
4
|
<!--可根据场景判断显示el-card还是el-main-->
|
|
5
5
|
<component :is="model.showTitle?'el-main':'el-card'">
|
|
@@ -98,6 +98,10 @@
|
|
|
98
98
|
apiParam: Object,
|
|
99
99
|
parentModel: Object,
|
|
100
100
|
pageWidth: Number,
|
|
101
|
+
topHeight: {
|
|
102
|
+
type: Number,
|
|
103
|
+
default: -1
|
|
104
|
+
},
|
|
101
105
|
showTitle: {
|
|
102
106
|
type: Boolean,
|
|
103
107
|
default: false
|
|
@@ -112,11 +116,15 @@
|
|
|
112
116
|
collapse: [],//分组数组
|
|
113
117
|
collapseActiveNames: [],//默认展开的分组name
|
|
114
118
|
collapseFieldsRow: [],//分组数组对应的行列布局
|
|
115
|
-
independentItem: []
|
|
119
|
+
independentItem: [],//最后一个独立分组的行列布局
|
|
120
|
+
minHeight:'auto'
|
|
116
121
|
};
|
|
117
122
|
},
|
|
118
123
|
mounted() {
|
|
119
124
|
this.init();
|
|
125
|
+
if(this.topHeight>-1){
|
|
126
|
+
this.minHeight=(document.documentElement.clientHeight-this.topHeight-20)+'px';
|
|
127
|
+
}
|
|
120
128
|
},
|
|
121
129
|
updated(){
|
|
122
130
|
if(this.$el.parentElement.scrollHeight>this.$el.parentElement.clientHeight
|
|
@@ -628,11 +636,36 @@
|
|
|
628
636
|
popupSearchListHandler(singleSelectio, field, router, callBack) {
|
|
629
637
|
var self = this;
|
|
630
638
|
var submitData = {};
|
|
639
|
+
var verified = true;
|
|
631
640
|
var tempFormData = self.model.getFormObj();
|
|
632
641
|
|
|
633
642
|
var check = true;
|
|
634
643
|
var checkMsg;
|
|
635
644
|
router.submitFormField.forEach((v) => {
|
|
645
|
+
self.$refs.Fields.forEach((f) => {
|
|
646
|
+
if(f.model && f.model.id===v){
|
|
647
|
+
if (typeof f.validExcute !== 'undefined'){
|
|
648
|
+
if (!f.validExcute()){
|
|
649
|
+
if(f.validMessage){
|
|
650
|
+
if(f.validMessage=='必填'){
|
|
651
|
+
self.$message.error('【'+f.model.label+'】'+f.validMessage);
|
|
652
|
+
}
|
|
653
|
+
else{
|
|
654
|
+
self.$message.error(f.validMessage);
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
else{
|
|
658
|
+
self.$message.error('【'+f.model.label+'】不能为空!');
|
|
659
|
+
}
|
|
660
|
+
verified=false;
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
if(!verified){
|
|
667
|
+
return;
|
|
668
|
+
}
|
|
636
669
|
submitData[v] = self.$common.getDataOfUpperLower(tempFormData,v);
|
|
637
670
|
if (typeof tempFormData[v] === "undefined") {
|
|
638
671
|
if (self.model.fieldsDic[v]) {
|
|
@@ -645,6 +678,9 @@
|
|
|
645
678
|
}
|
|
646
679
|
});
|
|
647
680
|
|
|
681
|
+
if(!verified){
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
648
684
|
if (!check) {
|
|
649
685
|
self.$message.warning(checkMsg);
|
|
650
686
|
return;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<h5>{{model.title}}</h5>
|
|
5
5
|
</div>
|
|
6
6
|
<div class="list-button">
|
|
7
|
+
<component v-if="model.selectRouter !== null" :is="model.selectRouter.is" :vmodel="model.selectRouter" @click="popupSearchListHandle" ></component>
|
|
7
8
|
<el-button v-if="model.create" type="success" class=" max-btn-add" size="mini" icon="el-icon-circle-plus-outline" @click="addRow">
|
|
8
9
|
新增
|
|
9
10
|
</el-button>
|
|
@@ -12,7 +13,8 @@
|
|
|
12
13
|
<div id="listTable">
|
|
13
14
|
<el-row>
|
|
14
15
|
<el-col :span="24">
|
|
15
|
-
<el-table size="mini" class="max-table--border" :data="model.tableData" :key="itemKey" border
|
|
16
|
+
<el-table size="mini" class="max-table--border" :data="model.tableData" :key="itemKey" border
|
|
17
|
+
style="width: 100%" highlight-current-row :show-summary="model.showSummary" :summary-method="getSummaries">
|
|
16
18
|
<!--数据列-->
|
|
17
19
|
<el-table-column v-for="(v,i) in model.rows[0].field" :key="i" :prop="v.id" :label="v.label" v-if="v.show !== false">
|
|
18
20
|
<template slot="header" slot-scope="scope">
|
|
@@ -23,7 +25,7 @@
|
|
|
23
25
|
<template slot-scope="scope">
|
|
24
26
|
<span v-if="scope.row.isSet">
|
|
25
27
|
<component ref="Fields" :is="model.currentRow.data[v.id].locked || model.currentRow.data[v.id].is!==v.is?model.currentRow.data[v.id].is:v.is"
|
|
26
|
-
:vmodel="model.currentRow.data[v.id]" :api="model.OptApi"
|
|
28
|
+
:vmodel="model.currentRow.data[v.id]" :api="model.OptApi" :key="model.currentRow.data[v.id].rowKey"
|
|
27
29
|
@change="changeHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"
|
|
28
30
|
@input="inputHandler(model.currentRow.data[v.id], model.currentRow.data.$sourceIndex)"></component>
|
|
29
31
|
</span>
|
|
@@ -41,7 +43,7 @@
|
|
|
41
43
|
</el-table-column>
|
|
42
44
|
|
|
43
45
|
<!--操作列-->
|
|
44
|
-
<el-table-column label="操作" v-if="model.rows[0].edit || model.rows[0].delete || model.buttons.length > 0">
|
|
46
|
+
<el-table-column label="操作" v-if="model.rows[0].edit || model.rows[0].delete || model.buttons.length > 0" fixed="right">
|
|
45
47
|
<template slot-scope="scope">
|
|
46
48
|
<span v-if="scope.row.edit || scope.row.isSet" class="el-tag el-tag--info el-tag--mini" style="cursor: pointer;" @click="saveRow(scope.row,scope.$index,true)">
|
|
47
49
|
{{scope.row.isSet?'保存':"修改"}}
|
|
@@ -101,11 +103,10 @@
|
|
|
101
103
|
return {
|
|
102
104
|
model: null,
|
|
103
105
|
foucus: false,
|
|
104
|
-
itemKey: Math.random()
|
|
106
|
+
itemKey: Math.random(),
|
|
105
107
|
}
|
|
106
108
|
},
|
|
107
|
-
created() {
|
|
108
|
-
|
|
109
|
+
created() {
|
|
109
110
|
let self = this;
|
|
110
111
|
this.model = this.vmodel;
|
|
111
112
|
this.model.OptApi = this.api;
|
|
@@ -180,6 +181,7 @@
|
|
|
180
181
|
}
|
|
181
182
|
|
|
182
183
|
row.isSet = false;
|
|
184
|
+
app.model.rows[app.model.source.rows.findIndex(v => v.$sourceIndex === row.$sourceIndex)].edited=true;
|
|
183
185
|
app.model.currentRow.isSet = false;
|
|
184
186
|
app.itemKey = Math.random();
|
|
185
187
|
this.model.change = this.model.formListChange;
|
|
@@ -215,12 +217,12 @@
|
|
|
215
217
|
self.$emit('change');
|
|
216
218
|
});
|
|
217
219
|
},
|
|
218
|
-
editRow(
|
|
220
|
+
editRow(sourceIndex) {
|
|
219
221
|
var self = this;
|
|
220
|
-
this.model.editRow(
|
|
222
|
+
this.model.editRow(sourceIndex, () => {
|
|
221
223
|
self.$forceUpdate();
|
|
222
224
|
self.$refs.FieldsLabel.forEach((fd) => {
|
|
223
|
-
if (fd.rowNum ===
|
|
225
|
+
if (fd.rowNum === sourceIndex) {
|
|
224
226
|
fd.$forceUpdate();
|
|
225
227
|
}
|
|
226
228
|
});
|
|
@@ -259,7 +261,7 @@
|
|
|
259
261
|
changeHandler(field, index) {
|
|
260
262
|
var self = this;
|
|
261
263
|
this.model.change = field.change;
|
|
262
|
-
this.model.currentRowIndex = index;
|
|
264
|
+
this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === index);
|
|
263
265
|
this.model.currentEventField = field;
|
|
264
266
|
self.$emit('change');
|
|
265
267
|
|
|
@@ -269,7 +271,7 @@
|
|
|
269
271
|
inputHandler(field, index) {
|
|
270
272
|
var self = this;
|
|
271
273
|
this.model.input = field.input;//当前小组件事件作为大组件事件
|
|
272
|
-
this.model.currentRowIndex = index;
|
|
274
|
+
this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === index);
|
|
273
275
|
this.model.currentEventField = field;
|
|
274
276
|
|
|
275
277
|
self.$emit('input');
|
|
@@ -277,22 +279,31 @@
|
|
|
277
279
|
//如果有汇总列,触发重新计算汇总
|
|
278
280
|
this.recalculationSummary();
|
|
279
281
|
},
|
|
280
|
-
//如果有汇总列,触发重新计算汇总
|
|
281
|
-
recalculationSummary() {
|
|
282
|
-
if (this.model.showSummary) {
|
|
283
|
-
this.model.tableData.push({});
|
|
284
|
-
this.model.tableData.pop();
|
|
285
|
-
}
|
|
286
|
-
},
|
|
287
282
|
buttonClick(row, button) {
|
|
288
283
|
var submitData = {};
|
|
289
284
|
button.submitFormField.forEach((v) => {
|
|
290
285
|
submitData[v] = row[v].value;
|
|
291
286
|
});
|
|
292
|
-
this.model.currentRowIndex = row.$sourceIndex;
|
|
287
|
+
this.model.currentRowIndex = this.model.source.rows.findIndex(v => v.$sourceIndex === row.$sourceIndex);
|
|
293
288
|
|
|
294
289
|
this.$emit('tableButtonClick', button, submitData);
|
|
295
290
|
},
|
|
291
|
+
popupSearchListHandle(field) {
|
|
292
|
+
if(field.isSearchPageWithList){
|
|
293
|
+
var self = this;
|
|
294
|
+
self.$emit('popupSearchList', false, self.model, field, (data) => {
|
|
295
|
+
if (data && data.length>0) {
|
|
296
|
+
data.forEach((v) => {
|
|
297
|
+
if(v.code){
|
|
298
|
+
self.model.insertOrUpdateRow(JSON.parse(v.code),true);
|
|
299
|
+
// self.recalculationSummary();
|
|
300
|
+
// self.$emit('change');
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
},
|
|
296
307
|
rolRouterClickHandler(field, rowData,rowindex) {
|
|
297
308
|
if(this.$refs['popover'+rowindex]){
|
|
298
309
|
this.$refs['popover'+rowindex][0].doClose();
|
|
@@ -305,6 +316,13 @@
|
|
|
305
316
|
|
|
306
317
|
this.$emit('tableButtonClick', field, submitData);
|
|
307
318
|
},
|
|
319
|
+
//如果有汇总列,触发重新计算汇总
|
|
320
|
+
recalculationSummary() {
|
|
321
|
+
if (this.model.showSummary) {
|
|
322
|
+
this.model.tableData.push({});
|
|
323
|
+
this.model.tableData.pop();
|
|
324
|
+
}
|
|
325
|
+
},
|
|
308
326
|
//汇总行 计算
|
|
309
327
|
getSummaries(param) {
|
|
310
328
|
const self = this;
|
|
@@ -338,7 +356,6 @@
|
|
|
338
356
|
return Number(prev);
|
|
339
357
|
}
|
|
340
358
|
}, 0);
|
|
341
|
-
//sums[index] += ' 元';
|
|
342
359
|
if (data[0][column.property].decimals && data[0][column.property].decimals > 0) {
|
|
343
360
|
sums[index] = sums[index].toFixed(data[0][column.property].decimals);
|
|
344
361
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="field-top">
|
|
3
3
|
<div style="width:100%;display:flex;">
|
|
4
|
-
<div style="flex:1;" v-if="model !== null" class="ct-inputNumber" :class="[model.attrs.size?'ct-font-size-'+model.attrs.size:'',model.lock ? 'ct-inputNumber-lock' : ''
|
|
5
|
-
|
|
4
|
+
<div style="flex:1;" v-if="model !== null" class="ct-inputNumber" :class="[model.attrs.size?'ct-font-size-'+model.attrs.size:'',model.lock ? 'ct-inputNumber-lock' : '']"
|
|
5
|
+
@mouseover="mouseOverHandle" @mouseout="mouseOutHandle">
|
|
6
6
|
<div class="ct-flex-div" :class="[model.showLabel?'el-input-group el-input-group--prepend':'',!valid?'inputError':'']">
|
|
7
7
|
<div v-if="model.showLabel && model.label" class="el-input-group__prepend field-label-div" :class="[model.labelClass]">
|
|
8
8
|
{{model.label}}
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
<span class="el-select__tags-text">{{item}}</span>
|
|
23
23
|
</span>
|
|
24
24
|
</span>
|
|
25
|
-
<label v-else class="ct-lable">
|
|
26
|
-
|
|
25
|
+
<label v-else class="ct-lable" :class="{ isWidth: model.labelValue.length > 30 }">
|
|
26
|
+
<span :class="{ isEllipsis: model.labelValue.length > 30 }"> {{ model.labelValue }}</span>
|
|
27
27
|
</label>
|
|
28
28
|
<span slot="suffix" v-if="model.unitName" class="ct-unitnameLable">{{model.unitName}}</span>
|
|
29
29
|
<span v-if="model.sufLabel" style="width:auto" class="spanMessage">{{model.sufLabel}}</span>
|
|
@@ -52,3 +52,16 @@
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}</script>
|
|
55
|
+
<style scoped>
|
|
56
|
+
.isWidth {
|
|
57
|
+
width: 60%;
|
|
58
|
+
display: flex;
|
|
59
|
+
}
|
|
60
|
+
.isEllipsis {
|
|
61
|
+
width: auto;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
text-overflow: ellipsis;
|
|
65
|
+
-o-text-overflow: ellipsis;
|
|
66
|
+
}
|
|
67
|
+
</style>
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
<div v-if="model !== null && !loading" class="ct-form">
|
|
4
4
|
<div class="ct-ptb5 max-flex">
|
|
5
5
|
<template v-for="(col, index) in model.fields" v-if="col.show !== false">
|
|
6
|
-
|
|
7
|
-
<
|
|
6
|
+
<!-- <br v-if="col.is === 'ct-linefeed'" /> -->
|
|
7
|
+
<div v-if="col.is === 'ct-linefeed'" style="width: 100%;">
|
|
8
|
+
<el-divider></el-divider>
|
|
9
|
+
</div>
|
|
10
|
+
<component v-else ref="Fields" :is="col.is" v-bind="col.listBind" :vmodel="col" :api="model.optionApi" @click="getClickHandler(col.action)"></component>
|
|
8
11
|
</template>
|
|
9
12
|
</div>
|
|
10
13
|
<ct-popupSearchListTable ref="table" :api="searchDataApi" :jumpBtnName="jumpBtnName" :filterBtnName="filterBtnName"
|
|
@@ -67,7 +70,6 @@
|
|
|
67
70
|
this.$refs.table.searchComplate(this.model,this.model.flagSearch);
|
|
68
71
|
});
|
|
69
72
|
this.loading = false;
|
|
70
|
-
|
|
71
73
|
//通知父组件加载完成
|
|
72
74
|
this.$emit('loaded');
|
|
73
75
|
},
|
|
@@ -146,12 +148,19 @@
|
|
|
146
148
|
}
|
|
147
149
|
}
|
|
148
150
|
</script>
|
|
149
|
-
<style>
|
|
151
|
+
<style scoped>
|
|
150
152
|
.max-flex{
|
|
151
153
|
display: flex;
|
|
152
|
-
|
|
154
|
+
flex-wrap: wrap;
|
|
153
155
|
}
|
|
154
156
|
.max-flex .field-top{
|
|
155
157
|
margin-right: 10px;
|
|
156
158
|
}
|
|
159
|
+
.el-divider {
|
|
160
|
+
background-color: #fff;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.el-divider--horizontal {
|
|
164
|
+
margin: 5px 0;
|
|
165
|
+
}
|
|
157
166
|
</style>
|