centaline-data-driven 1.3.31 → 1.3.34
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 -6
- package/src/SearchList.vue +4 -4
- package/src/centaline/api/index.js +10 -2
- package/src/centaline/dynamicForm/src/dynamicForm.vue +70 -3
- package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +2 -1
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +130 -49
- package/src/centaline/dynamicSearchList/src/dynamicTableToolbar.vue +2 -2
- package/src/centaline/loader/src/ctl/FormList.js +58 -22
- package/src/centaline/loader/src/ctl/SearchScreen.js +33 -15
- package/src/centaline/loader/src/ctl/SearchTable.js +31 -8
- package/src/centaline/progress/src/progress.vue +31 -9
- package/src/main.js +1 -1
- 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,7 +2,7 @@
|
|
|
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/
|
|
5
|
+
<ct-form :api="'/api/third-dept-tran/transaction/task'" :apiParam="apiParam"></ct-form>
|
|
6
6
|
<!--<ct-form :api="'api/Form/formdata'"></ct-form>-->
|
|
7
7
|
<ct-dialog-list></ct-dialog-list>
|
|
8
8
|
</div>
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
data() {
|
|
15
15
|
return {
|
|
16
16
|
apiParam:{
|
|
17
|
-
actionType:
|
|
18
|
-
|
|
19
|
-
pageOnly: true,
|
|
20
|
-
pageStyle: 2,
|
|
21
|
-
|
|
17
|
+
actionType: "1",
|
|
18
|
+
businessId: "1550013042447081473",
|
|
19
|
+
pageOnly: "true",
|
|
20
|
+
pageStyle: "2",
|
|
21
|
+
stepId: "1550014106894327810"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
},
|
package/src/SearchList.vue
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
:searchCategoryApi="'/ProfileWorklistList/getLayoutOfSearchCategory'"
|
|
9
9
|
:searchDataApi="'/ProfileWorklistList/getListOfSearchModel'" :apiParam="para"></ct-searchlist> -->
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<ct-searchlist :searchConditionApi="'/PropertyContactImportList/getLayoutOfSearch'"
|
|
12
12
|
:searchDataApi="'/PropertyContactImportList/getListOfSearchModel'">
|
|
13
|
-
</ct-searchlist>
|
|
13
|
+
</ct-searchlist>
|
|
14
14
|
|
|
15
|
-
<ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
|
|
15
|
+
<!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
|
|
16
16
|
:searchDataApi="'/PropertyRETList/getListOfSearchModel'"
|
|
17
17
|
:searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"
|
|
18
18
|
:searchStatsApi="'/exampleList/getListStats'">
|
|
19
|
-
</ct-searchlist>
|
|
19
|
+
</ct-searchlist> -->
|
|
20
20
|
|
|
21
21
|
<ct-dialog-list></ct-dialog-list>
|
|
22
22
|
</div>
|
|
@@ -200,12 +200,20 @@ const api = {
|
|
|
200
200
|
attrs: {
|
|
201
201
|
progressAction: data.content.action,
|
|
202
202
|
progressKey: data.content.key,
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
progressType:'export',
|
|
204
|
+
width: '350px',
|
|
205
|
+
height: '165px'
|
|
205
206
|
},
|
|
206
207
|
on: {
|
|
207
208
|
finished() {
|
|
208
209
|
Vue.prototype.$common.closeDialog(dialogOption.dialog);
|
|
210
|
+
},
|
|
211
|
+
error(data) {
|
|
212
|
+
Vue.prototype.$common.closeDialog(dialogOption.dialog);
|
|
213
|
+
Vue.prototype.$message({
|
|
214
|
+
message: data.rtnMsg,
|
|
215
|
+
type: 'info'
|
|
216
|
+
});
|
|
209
217
|
}
|
|
210
218
|
}
|
|
211
219
|
}]
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
<component v-for="(btn, index) in model.buttons" :key="index" :is="btn.is" :vmodel="btn" @click="clickHandler" v-if="btn.show"></component>
|
|
75
75
|
</el-col>
|
|
76
76
|
</el-row>
|
|
77
|
+
<div v-if="isScroll" style="height: 34px;"></div>
|
|
77
78
|
</component>
|
|
78
79
|
</div>
|
|
79
80
|
<div style="min-height:200px" v-if="loading"></div>
|
|
@@ -426,6 +427,36 @@
|
|
|
426
427
|
});
|
|
427
428
|
}
|
|
428
429
|
}
|
|
430
|
+
else if (field.flagAsync) {
|
|
431
|
+
field.doAction(submitData, (res) => {
|
|
432
|
+
if(res.content && res.content.action){
|
|
433
|
+
var dialogOption = {
|
|
434
|
+
title: field.pageTitle == undefined ? field.label : field.pageTitle,
|
|
435
|
+
content: [{
|
|
436
|
+
component: 'ct-progress',
|
|
437
|
+
attrs: {
|
|
438
|
+
progressAction: res.content.action,
|
|
439
|
+
progressKey: res.content.key,
|
|
440
|
+
progressType:'import',
|
|
441
|
+
width: '350px',
|
|
442
|
+
height: '165px'
|
|
443
|
+
},
|
|
444
|
+
on: {
|
|
445
|
+
finished() {
|
|
446
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
447
|
+
self.getPage(1);
|
|
448
|
+
},
|
|
449
|
+
error(data) {
|
|
450
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
451
|
+
self.$message.warning(data.rtnMsg);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}]
|
|
455
|
+
};
|
|
456
|
+
self.$common.openDialog(dialogOption);
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
}
|
|
429
460
|
else {
|
|
430
461
|
submitData = field.getActionPara(submitData).para;
|
|
431
462
|
field.doAction(submitData, (data) => {
|
|
@@ -484,11 +515,47 @@
|
|
|
484
515
|
}
|
|
485
516
|
},
|
|
486
517
|
importComplete(res,field) {
|
|
487
|
-
|
|
488
|
-
|
|
518
|
+
var self=this;
|
|
519
|
+
if(field.flagAsync){
|
|
520
|
+
if(res.content && res.content.action){
|
|
521
|
+
var dialogOption = {
|
|
522
|
+
title: "导入",
|
|
523
|
+
content: [{
|
|
524
|
+
component: 'ct-progress',
|
|
525
|
+
attrs: {
|
|
526
|
+
progressAction: res.content.action,
|
|
527
|
+
progressKey: res.content.key,
|
|
528
|
+
progressType:'import',
|
|
529
|
+
width: '350px',
|
|
530
|
+
height: '165px'
|
|
531
|
+
},
|
|
532
|
+
on: {
|
|
533
|
+
finished(data) {
|
|
534
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
535
|
+
if(field && field.changeCallBackFunName){
|
|
536
|
+
self.changeCallBackHandler(field, field.changeCallBackFunName, data.content);
|
|
537
|
+
}
|
|
538
|
+
else{
|
|
539
|
+
self.model.doAction(data);
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
error(data) {
|
|
543
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
544
|
+
self.$message.warning(data.rtnMsg);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}]
|
|
548
|
+
};
|
|
549
|
+
self.$common.openDialog(dialogOption);
|
|
550
|
+
}
|
|
489
551
|
}
|
|
490
552
|
else{
|
|
491
|
-
|
|
553
|
+
if(field && field.changeCallBackFunName){
|
|
554
|
+
this.changeCallBackHandler(field, field.changeCallBackFunName, res.content);
|
|
555
|
+
}
|
|
556
|
+
else{
|
|
557
|
+
this.model.doAction(res);
|
|
558
|
+
}
|
|
492
559
|
}
|
|
493
560
|
},
|
|
494
561
|
changeHandler(field) {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
var ctSpan = {//临时的span组件对象,用于vue双向绑定,强制更新
|
|
72
72
|
props: {
|
|
73
73
|
vmodel: Object,
|
|
74
|
-
rowNum:
|
|
74
|
+
rowNum: String,
|
|
75
75
|
},
|
|
76
76
|
data: function () {
|
|
77
77
|
return {
|
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
created() {
|
|
108
|
+
|
|
108
109
|
let self = this;
|
|
109
110
|
this.model = this.vmodel;
|
|
110
111
|
this.model.OptApi = this.api;
|
|
@@ -843,11 +843,22 @@ export default {
|
|
|
843
843
|
self.$common.browseVideo(field, submitData);
|
|
844
844
|
}
|
|
845
845
|
else if (field.isBrowseAttachment) {//浏览附件
|
|
846
|
-
var MediaAlbum = [
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
846
|
+
var MediaAlbum = [
|
|
847
|
+
{ albumName: self.model.title || "媒体", medias: [] },
|
|
848
|
+
];
|
|
849
|
+
if (field.action) {
|
|
850
|
+
var callback = function (data) {
|
|
851
|
+
MediaAlbum[0].medias = data;
|
|
852
|
+
self.$common.viewerfile(field, MediaAlbum, 0, 0);
|
|
853
|
+
}
|
|
854
|
+
self.model.getAction(field.action, submitData, callback);
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
submitData.mediaData.forEach((v) => {
|
|
858
|
+
MediaAlbum[0].medias.push(v);
|
|
859
|
+
});
|
|
860
|
+
self.$common.viewerfile(field, MediaAlbum, 0, 0);
|
|
861
|
+
}
|
|
851
862
|
}
|
|
852
863
|
else if (field.isUrlInLayer) {//URL页面(弹层)
|
|
853
864
|
var dialogOption = {
|
|
@@ -902,13 +913,52 @@ export default {
|
|
|
902
913
|
self.model.export(field, submitData);
|
|
903
914
|
}
|
|
904
915
|
else{
|
|
905
|
-
field.
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
916
|
+
if(field.action.indexOf("http://")===0 || field.action.indexOf("https://")===0){
|
|
917
|
+
window.open(field.action, "_blank");
|
|
918
|
+
}
|
|
919
|
+
else{
|
|
920
|
+
field.doAction(submitData, (data) => {
|
|
921
|
+
if(data.content){
|
|
922
|
+
if(data.content.indexOf("http://")===0 || data.content.indexOf("https://")===0){
|
|
923
|
+
window.open(data.content, "_blank");
|
|
924
|
+
}
|
|
925
|
+
else{
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
});
|
|
929
|
+
}
|
|
910
930
|
}
|
|
911
931
|
}
|
|
932
|
+
else if (field.flagAsync) {
|
|
933
|
+
field.doAction(submitData, (res) => {
|
|
934
|
+
if(res.content && res.content.action){
|
|
935
|
+
var dialogOption = {
|
|
936
|
+
title: field.pageTitle == undefined ? field.label : field.pageTitle,
|
|
937
|
+
content: [{
|
|
938
|
+
component: 'ct-progress',
|
|
939
|
+
attrs: {
|
|
940
|
+
progressAction: res.content.action,
|
|
941
|
+
progressKey: res.content.key,
|
|
942
|
+
progressType:'import',
|
|
943
|
+
width: '350px',
|
|
944
|
+
height: '165px'
|
|
945
|
+
},
|
|
946
|
+
on: {
|
|
947
|
+
finished() {
|
|
948
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
949
|
+
self.getPage(1);
|
|
950
|
+
},
|
|
951
|
+
error(data) {
|
|
952
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
953
|
+
self.$message.warning(data.rtnMsg);
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
}]
|
|
957
|
+
};
|
|
958
|
+
self.$common.openDialog(dialogOption);
|
|
959
|
+
}
|
|
960
|
+
});
|
|
961
|
+
}
|
|
912
962
|
else {
|
|
913
963
|
//self.operationLoading = true;
|
|
914
964
|
|
|
@@ -932,42 +982,40 @@ export default {
|
|
|
932
982
|
submit(ev) {
|
|
933
983
|
if (ev.responseData.notification == 24) {
|
|
934
984
|
//更新列
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
}
|
|
985
|
+
self.model.selectIndex=0;
|
|
986
|
+
if (self.currentRow !== null) {
|
|
987
|
+
for (var i = 0; i < self.currentRow.children.length; i++) {
|
|
988
|
+
self.currentRow.children[i].classList.remove("select");
|
|
940
989
|
}
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
990
|
+
}
|
|
991
|
+
if (typeof self.$refs.tableParent !== "undefined") {
|
|
992
|
+
self.$refs.tableParent.scrollTop = 0;
|
|
993
|
+
self.$refs.tableParent.scrollLeft = 0;
|
|
994
|
+
self.scrollTop = 0;
|
|
995
|
+
self.scrollLeft = 0;
|
|
996
|
+
}
|
|
997
|
+
self.$forceUpdate();
|
|
998
|
+
self.$nextTick(() => {
|
|
999
|
+
if (
|
|
1000
|
+
self.$refs.tableParent.scrollHeight <=
|
|
1001
|
+
self.$refs.tableParent.offsetHeight
|
|
1002
|
+
) {
|
|
1003
|
+
self.tableLoading = true;
|
|
1004
|
+
self.model.nextPage(next);
|
|
1005
|
+
} else {
|
|
1006
|
+
self.tableLoading = false;
|
|
1007
|
+
self.rowColorChange();
|
|
1008
|
+
self.resetScroll();
|
|
1009
|
+
self.calculatingRowHeight();
|
|
1010
|
+
self.getScrollAttr();
|
|
1011
|
+
}
|
|
1012
|
+
self.setfixedSize();
|
|
1013
|
+
});
|
|
964
1014
|
self.loaderObj.SearchTable(self.api,self.load,self.model.searchModel,true);
|
|
965
1015
|
self.$common.closeDialog(dialogOption.dialog);
|
|
966
|
-
}
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
!field.flagAddRowAfterAction
|
|
970
|
-
) {
|
|
1016
|
+
}
|
|
1017
|
+
else {
|
|
1018
|
+
if (!field.flagFreshCurrentRow &&!field.flagAddRowAfterAction) {
|
|
971
1019
|
self.model.doAction(ev);
|
|
972
1020
|
}
|
|
973
1021
|
self.$forceUpdate();
|
|
@@ -1043,10 +1091,7 @@ export default {
|
|
|
1043
1091
|
self.operationLoading = true;
|
|
1044
1092
|
field.doAction(submitData, (data) => {
|
|
1045
1093
|
self.operationLoading = false;
|
|
1046
|
-
if (
|
|
1047
|
-
!field.flagFreshCurrentRow &&
|
|
1048
|
-
!field.flagAddRowAfterAction
|
|
1049
|
-
) {
|
|
1094
|
+
if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
|
|
1050
1095
|
self.model.doAction({ responseData: data });
|
|
1051
1096
|
self.$emit("refreshRowHandle");
|
|
1052
1097
|
}
|
|
@@ -1389,8 +1434,44 @@ export default {
|
|
|
1389
1434
|
);
|
|
1390
1435
|
}
|
|
1391
1436
|
},
|
|
1392
|
-
importComplete(res) {
|
|
1393
|
-
this
|
|
1437
|
+
importComplete(res,field) {
|
|
1438
|
+
var self=this;
|
|
1439
|
+
if(field.flagAsync){
|
|
1440
|
+
if(res.content && res.content.action){
|
|
1441
|
+
var dialogOption = {
|
|
1442
|
+
title: "导入",
|
|
1443
|
+
content: [{
|
|
1444
|
+
component: 'ct-progress',
|
|
1445
|
+
attrs: {
|
|
1446
|
+
progressAction: res.content.action,
|
|
1447
|
+
progressKey: res.content.key,
|
|
1448
|
+
progressType:'import',
|
|
1449
|
+
width: '350px',
|
|
1450
|
+
height: '165px'
|
|
1451
|
+
},
|
|
1452
|
+
on: {
|
|
1453
|
+
finished() {
|
|
1454
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
1455
|
+
self.getPage(1);
|
|
1456
|
+
},
|
|
1457
|
+
error(data) {
|
|
1458
|
+
self.$common.closeDialog(dialogOption.dialog);
|
|
1459
|
+
self.$message.warning(data.rtnMsg);
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
}]
|
|
1463
|
+
};
|
|
1464
|
+
self.$common.openDialog(dialogOption);
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
else{
|
|
1468
|
+
if(field && field.changeCallBackFunName){
|
|
1469
|
+
this.changeCallBackHandler(field, field.changeCallBackFunName, res.content);
|
|
1470
|
+
}
|
|
1471
|
+
else{
|
|
1472
|
+
this.model.doAction(res);
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1394
1475
|
},
|
|
1395
1476
|
tdRowspan(column, row) {
|
|
1396
1477
|
if (!column.show) {
|
|
@@ -116,9 +116,10 @@ const FormList = function (source, master) {
|
|
|
116
116
|
this._rows = [];
|
|
117
117
|
//遍历每一行
|
|
118
118
|
source.rows.forEach((r) => {
|
|
119
|
+
var gid = rtn.guid();
|
|
120
|
+
r.$sourceIndex = gid;
|
|
119
121
|
var row = rtn.initRow(r);
|
|
120
|
-
this._rows.push(row);
|
|
121
|
-
rtn._rows[rtn._rows.length - 1].$sourceIndex = rtn._rows.length - 1;
|
|
122
|
+
this._rows.push(row);
|
|
122
123
|
});
|
|
123
124
|
return this._rows;
|
|
124
125
|
}
|
|
@@ -135,6 +136,8 @@ const FormList = function (source, master) {
|
|
|
135
136
|
},
|
|
136
137
|
get deleted() {//是否已删除
|
|
137
138
|
return r.flagDeleted === true;
|
|
139
|
+
}, get deleted() {//是否已删除
|
|
140
|
+
return r.flagDeleted === true;
|
|
138
141
|
},
|
|
139
142
|
set deleted(v) {
|
|
140
143
|
if (v) {
|
|
@@ -143,7 +146,13 @@ const FormList = function (source, master) {
|
|
|
143
146
|
else {
|
|
144
147
|
r.flagDeleted = false;
|
|
145
148
|
}
|
|
149
|
+
}, get $sourceIndex() {//GID
|
|
150
|
+
return r.$sourceIndex||"";
|
|
151
|
+
},
|
|
152
|
+
set $sourceIndex(v) {//GID
|
|
153
|
+
return r.$sourceIndex=v;
|
|
146
154
|
}
|
|
155
|
+
,
|
|
147
156
|
};
|
|
148
157
|
//遍历每一列
|
|
149
158
|
let rowIndex = 0;
|
|
@@ -179,8 +188,8 @@ const FormList = function (source, master) {
|
|
|
179
188
|
var row = {};
|
|
180
189
|
for (let i = 1; i < rows.length; i++) {//遍历每一行
|
|
181
190
|
if (!rows[i].deleted) {
|
|
182
|
-
row = {};
|
|
183
|
-
Vue.set(row, '$sourceIndex', i);
|
|
191
|
+
row = {};
|
|
192
|
+
Vue.set(row, '$sourceIndex', rows[i].$sourceIndex);
|
|
184
193
|
for (let j = 0; j < rows[i].field.length; j++) {//遍历每一列
|
|
185
194
|
Vue.set(row, field[j].id, rows[i].field[j]);
|
|
186
195
|
}
|
|
@@ -208,12 +217,20 @@ const FormList = function (source, master) {
|
|
|
208
217
|
},
|
|
209
218
|
getCloneRowData(index) {
|
|
210
219
|
let row = {};
|
|
211
|
-
let sourceRow =
|
|
220
|
+
let sourceRow = {};
|
|
221
|
+
if (typeof index == "number") {
|
|
222
|
+
sourceRow = source.rows[index];
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
let i = source.rows.findIndex(v => v.$sourceIndex ===index);
|
|
226
|
+
sourceRow = source.rows[i];
|
|
227
|
+
}
|
|
228
|
+
|
|
212
229
|
let rowData = rtn.initRow(JSON.parse(JSON.stringify(sourceRow)));
|
|
213
230
|
for (let j = 0; j < rowData.field.length; j++) {//遍历每一列
|
|
214
231
|
row[rowData.field[j].id] = rowData.field[j];
|
|
215
232
|
}
|
|
216
|
-
row.$sourceIndex =
|
|
233
|
+
row.$sourceIndex = sourceRow.$sourceIndex+"";
|
|
217
234
|
return row;
|
|
218
235
|
},
|
|
219
236
|
fieldsToTableData(fields) {
|
|
@@ -235,7 +252,11 @@ const FormList = function (source, master) {
|
|
|
235
252
|
updateListField(refs, rowNum, fiedlId) {
|
|
236
253
|
if (refs) {
|
|
237
254
|
let ref = refs.find((v) => {
|
|
238
|
-
|
|
255
|
+
try {
|
|
256
|
+
return v.rowNum === rowNum && v.vmodel.id === fiedlId;
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
}
|
|
239
260
|
});
|
|
240
261
|
if (ref) {
|
|
241
262
|
ref.$forceUpdate();
|
|
@@ -250,12 +271,11 @@ const FormList = function (source, master) {
|
|
|
250
271
|
//是否是复制的
|
|
251
272
|
isDuplicated(row, index) {
|
|
252
273
|
let isDuplicated = false;
|
|
253
|
-
|
|
254
274
|
if (rtn.primaryKeys && rtn.primaryKeys.length > 0) {
|
|
255
275
|
for (let i = 1; i < source.rows.length; i++) {//遍历数据源的每一行
|
|
256
276
|
let srow = source.rows[i].columns;
|
|
257
277
|
if (!source.rows[i].flagDeleted) {//该行已删除,跳过
|
|
258
|
-
if (index === -1 || i !== index) {
|
|
278
|
+
if (index === -1 || source.rows[i].$sourceIndex !== index) {
|
|
259
279
|
let temp = 0;
|
|
260
280
|
let tempLabel = '';
|
|
261
281
|
for (let j = 0; j < srow.length; j++) {//遍历数据源每一列
|
|
@@ -358,7 +378,7 @@ const FormList = function (source, master) {
|
|
|
358
378
|
setValueByFieldName:function(id, attrKey, attrValue){
|
|
359
379
|
return self.$self.parentModel.setValueByFieldName(id, attrKey, attrValue);
|
|
360
380
|
},
|
|
361
|
-
getListFieldValue:function(tableName, rowNum, fiedlId, attrName, defaultValue){
|
|
381
|
+
getListFieldValue: function (tableName, rowNum, fiedlId, attrName, defaultValue) {
|
|
362
382
|
return self.$self.parentModel.getListFieldValue(tableName, rowNum, fiedlId, attrName, defaultValue);
|
|
363
383
|
},
|
|
364
384
|
}
|
|
@@ -367,18 +387,20 @@ const FormList = function (source, master) {
|
|
|
367
387
|
common.openDialog(dialogOption);
|
|
368
388
|
},
|
|
369
389
|
addSourceRow(row) {
|
|
390
|
+
var gid = rtn.guid();
|
|
370
391
|
let sourceRow = JSON.parse(JSON.stringify(source.rows[0]));
|
|
371
392
|
for (let k in sourceRow.columns) {
|
|
372
393
|
sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
|
|
373
394
|
};
|
|
395
|
+
sourceRow.$sourceIndex = gid;
|
|
374
396
|
source.rows.push(sourceRow);
|
|
375
397
|
let iRow = this.initRow(sourceRow);
|
|
376
398
|
iRow.isNewFlag = true;
|
|
377
|
-
rtn._rows.push(iRow);
|
|
378
|
-
rtn._rows[rtn._rows.length - 1].$sourceIndex = rtn._rows.length - 1;
|
|
399
|
+
rtn._rows.push(iRow);
|
|
379
400
|
Vue.set(row, 'edit', iRow.edit);
|
|
380
401
|
Vue.set(row, 'delete', iRow.delete);
|
|
381
|
-
row.$sourceIndex =
|
|
402
|
+
row.$sourceIndex =gid;
|
|
403
|
+
|
|
382
404
|
},
|
|
383
405
|
addRow(callback) {
|
|
384
406
|
var self = this;
|
|
@@ -419,8 +441,9 @@ const FormList = function (source, master) {
|
|
|
419
441
|
if (!isRepeat) {
|
|
420
442
|
source.rows.push(row);
|
|
421
443
|
rtn.rows.push(rowItem);
|
|
422
|
-
|
|
423
|
-
|
|
444
|
+
var gid = rtn.guid();
|
|
445
|
+
rtn._rows[rtn._rows.length - 1].$sourceIndex =gid;
|
|
446
|
+
rowData.$sourceIndex =gid;
|
|
424
447
|
rowData.edit = rowItem.edit;
|
|
425
448
|
rowData.delete = rowItem.delete;
|
|
426
449
|
rowItem.isNewFlag = true;
|
|
@@ -435,7 +458,7 @@ const FormList = function (source, master) {
|
|
|
435
458
|
setValueByFieldName:function(id, attrKey, attrValue){
|
|
436
459
|
return self.$self.parentModel.setValueByFieldName(id, attrKey, attrValue);
|
|
437
460
|
},
|
|
438
|
-
getListFieldValue:function(tableName, rowNum, fiedlId, attrName, defaultValue){
|
|
461
|
+
getListFieldValue: function (tableName, rowNum, fiedlId, attrName, defaultValue) {
|
|
439
462
|
return self.$self.parentModel.getListFieldValue(tableName, rowNum, fiedlId, attrName, defaultValue);
|
|
440
463
|
},
|
|
441
464
|
}
|
|
@@ -472,11 +495,12 @@ const FormList = function (source, master) {
|
|
|
472
495
|
rtn._rows.push(iRow);
|
|
473
496
|
Vue.set(r, 'edit', iRow.edit);
|
|
474
497
|
Vue.set(r, 'delete', iRow.delete);
|
|
475
|
-
|
|
476
|
-
|
|
498
|
+
var gid = rtn.guid();
|
|
499
|
+
rtn._rows[rtn._rows.length - 1].$sourceIndex = gid;
|
|
500
|
+
r.$sourceIndex = gid;
|
|
477
501
|
|
|
478
502
|
let rowData = rtn.rowsItemToTableData(iRow)
|
|
479
|
-
rowData.$sourceIndex =
|
|
503
|
+
rowData.$sourceIndex = gid;
|
|
480
504
|
rowData.edit = iRow.edit;
|
|
481
505
|
rowData.delete = iRow.delete;
|
|
482
506
|
rtn._tableData.push(rowData);
|
|
@@ -484,7 +508,7 @@ const FormList = function (source, master) {
|
|
|
484
508
|
}
|
|
485
509
|
},
|
|
486
510
|
insertOrUpdateRow(row) {
|
|
487
|
-
if(row){
|
|
511
|
+
if (row) {
|
|
488
512
|
if(rtn.primaryKeys && rtn.primaryKeys.length>0){
|
|
489
513
|
let iRow = rtn.initRow(row);
|
|
490
514
|
let flagAdd=true;
|
|
@@ -520,13 +544,18 @@ const FormList = function (source, master) {
|
|
|
520
544
|
}
|
|
521
545
|
else{
|
|
522
546
|
let rowData = rtn.rowsItemToTableData(iRow)
|
|
523
|
-
iRow.$sourceIndex=r.$sourceIndex;
|
|
547
|
+
iRow.$sourceIndex = r.$sourceIndex;
|
|
548
|
+
row.$sourceIndex = r.$sourceIndex;
|
|
524
549
|
rowData.$sourceIndex=r.$sourceIndex;
|
|
525
550
|
rowData.edit = iRow.edit;
|
|
526
551
|
rowData.delete = iRow.delete;
|
|
527
552
|
source.rows.splice(i, 1,row);
|
|
528
553
|
rtn._rows.splice(i, 1,iRow);
|
|
529
|
-
rtn.
|
|
554
|
+
rtn.tableData.forEach((d,index) => {
|
|
555
|
+
if(d.$sourceIndex===r.$sourceIndex){
|
|
556
|
+
rtn.tableData.splice(index, 1,rowData);
|
|
557
|
+
}
|
|
558
|
+
});
|
|
530
559
|
}
|
|
531
560
|
}
|
|
532
561
|
}
|
|
@@ -577,6 +606,13 @@ const FormList = function (source, master) {
|
|
|
577
606
|
});
|
|
578
607
|
}
|
|
579
608
|
},
|
|
609
|
+
guid() {
|
|
610
|
+
return (rtn.S4() + rtn.S4() + '-' + rtn.S4() + '-' + rtn.S4() + '-' + rtn.S4() + '-' + rtn.S4() + rtn.S4() + rtn.S4()
|
|
611
|
+
);
|
|
612
|
+
},
|
|
613
|
+
S4() {
|
|
614
|
+
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
615
|
+
}
|
|
580
616
|
};
|
|
581
617
|
return rtn;
|
|
582
618
|
};
|