centaline-data-driven 1.3.26 → 1.3.29
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 -2
- package/src/SearchList.vue +2 -3
- package/src/centaline/css/ccai.css +4 -1
- package/src/centaline/css/max.css +0 -1
- package/src/centaline/dynamicDragSort/src/dynamicDragSort.vue +30 -16
- package/src/centaline/dynamicForm/src/dynamicForm.vue +6 -4
- package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +5 -4
- package/src/centaline/dynamicSearchList/src/dynamicTableToolbar.vue +76 -41
- package/src/centaline/loader/src/ctl/Form.js +20 -13
- package/src/centaline/loader/src/ctl/FormList.js +42 -39
- package/src/centaline/loader/src/ctl/Router.js +3 -0
- package/src/main.js +2 -2
- package/wwwroot/static/centaline/centaline-data-driven.js +2 -2
- 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="'/
|
|
5
|
+
<ct-form :api="'/api/third-dept-tran/transaction/detail'" :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,7 +14,11 @@
|
|
|
14
14
|
data() {
|
|
15
15
|
return {
|
|
16
16
|
apiParam:{
|
|
17
|
-
|
|
17
|
+
actionType: 3,
|
|
18
|
+
originalTraId: "1547488795469586434",
|
|
19
|
+
pageOnly: true,
|
|
20
|
+
pageStyle: 2,
|
|
21
|
+
pageTitle: "成交报告"
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
},
|
package/src/SearchList.vue
CHANGED
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
:searchCategoryApi="'/ProfileWorklistList/getLayoutOfSearchCategory'"
|
|
9
9
|
:searchDataApi="'/ProfileWorklistList/getListOfSearchModel'" :apiParam="para"></ct-searchlist> -->
|
|
10
10
|
|
|
11
|
-
<ct-searchlist :searchConditionApi="'/
|
|
12
|
-
:
|
|
13
|
-
:searchDataApi="'/ProfileWorklistList/getListOfSearchModel'">
|
|
11
|
+
<ct-searchlist :searchConditionApi="'/PropertyContactImportList/getLayoutOfSearch'"
|
|
12
|
+
:searchDataApi="'/PropertyContactImportList/getListOfSearchModel'">
|
|
14
13
|
</ct-searchlist>
|
|
15
14
|
|
|
16
15
|
<!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
|
|
@@ -269,7 +269,6 @@
|
|
|
269
269
|
}
|
|
270
270
|
#dragAll .el-checkbox__input.is-checked+.el-checkbox__label{
|
|
271
271
|
font-weight: 700;
|
|
272
|
-
font-size: 16px;
|
|
273
272
|
}
|
|
274
273
|
/* .dragItem .el-checkbox__input.is-checked .el-checkbox__inner,
|
|
275
274
|
.dragItem .el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
<!--使用draggable组件-->
|
|
3
3
|
<div class="dragCol" ref="dragCol">
|
|
4
4
|
<div class="dragItem dragHeader" ref="dragHeader">
|
|
5
|
-
<el-checkbox id="dragAll" v-model="checkAll"
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
<el-checkbox id="dragAll" v-model="checkAll" :indeterminate="isIndeterminate" @change="handleAllChecked"
|
|
6
|
+
class="checkbox-common">{{
|
|
7
|
+
this.vmodel.label
|
|
8
|
+
}}
|
|
8
9
|
</el-checkbox>
|
|
9
10
|
<span class="svgIcon">
|
|
10
11
|
<!-- <svg-icon icon-class="sort" style="cursor: pointer"></svg-icon> -->
|
|
@@ -12,8 +13,9 @@
|
|
|
12
13
|
</div>
|
|
13
14
|
<!-- <div class="dragMain" style="height:dragMainHeight;"> -->
|
|
14
15
|
<div class="dragMain" ref="dragMain" :style="{ height: mainHeight }">
|
|
15
|
-
<draggable v-model="testList"
|
|
16
|
-
|
|
16
|
+
<draggable v-model="testList"
|
|
17
|
+
:options="{ group: { name: 'itxst', pull: 'clone' }, sort: true }" animation="300"
|
|
18
|
+
:move="onMove" dragClass="dragClass" ghostClass="ghostClass" chosenClass="chosenClass"
|
|
17
19
|
@input="handleListChange($event)">
|
|
18
20
|
<transition-group>
|
|
19
21
|
<div class="dragItem canDragon" v-for="(item, index) in testList" :key="index" ref="dragItem">
|
|
@@ -51,7 +53,8 @@ export default {
|
|
|
51
53
|
checkAll: true,
|
|
52
54
|
//定义要被拖拽对象的数组
|
|
53
55
|
testList: [],
|
|
54
|
-
mainHeight: 500
|
|
56
|
+
mainHeight: 500,
|
|
57
|
+
isIndeterminate: true
|
|
55
58
|
};
|
|
56
59
|
},
|
|
57
60
|
watch: {
|
|
@@ -65,8 +68,14 @@ export default {
|
|
|
65
68
|
}
|
|
66
69
|
if (i === this.testList.length) {
|
|
67
70
|
this.checkAll = true;
|
|
71
|
+
this.isIndeterminate = false
|
|
68
72
|
} else {
|
|
69
73
|
this.checkAll = false;
|
|
74
|
+
if (i > 0 && i < this.testList.length) {
|
|
75
|
+
this.isIndeterminate = true
|
|
76
|
+
} else {
|
|
77
|
+
this.isIndeterminate = false
|
|
78
|
+
}
|
|
70
79
|
}
|
|
71
80
|
});
|
|
72
81
|
},
|
|
@@ -74,12 +83,16 @@ export default {
|
|
|
74
83
|
}
|
|
75
84
|
},
|
|
76
85
|
created() {
|
|
77
|
-
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
this.$nextTick(function () {
|
|
87
|
+
if (typeof this.vmodel === 'undefined') {
|
|
88
|
+
this.model = this.loaderObj.DragSort(this.source);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.model = this.vmodel;
|
|
92
|
+
this.testList = this.vmodel.dragList;
|
|
93
|
+
// console.log('this.testList', this.testList);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
83
96
|
|
|
84
97
|
this.testList.forEach(item => {
|
|
85
98
|
// 处理后端传过来的数据,如果没有可以判断是否勾选复选框的字段,则需给数据作处理,加上一个isChecked字段,判断复选框勾选
|
|
@@ -99,16 +112,17 @@ export default {
|
|
|
99
112
|
let screenHeight = document.body.clientHeight;
|
|
100
113
|
let dragHeaderHeight = this.$refs.dragHeader.offsetHeight;
|
|
101
114
|
let dragMainHeight = this.$refs.dragMain.style.height;
|
|
102
|
-
let num = this.testList.length
|
|
103
|
-
let dragItemAll = 44.68 * num;
|
|
104
115
|
dragMainHeight =
|
|
105
116
|
screenHeight - dragHeaderHeight - 26 - 8 - 44 - 40;
|
|
117
|
+
this.mainHeight = dragMainHeight + "px";
|
|
118
|
+
let num = this.testList.length
|
|
119
|
+
let dragItemAll = 44.68 * num;
|
|
106
120
|
if (dragMainHeight > dragItemAll) {
|
|
107
121
|
this.mainHeight = dragItemAll + "px";
|
|
108
122
|
this.$refs.dragMain.style.overflowY = 'hidden'
|
|
109
123
|
} else {
|
|
110
124
|
this.mainHeight = dragMainHeight + "px";
|
|
111
|
-
this.$refs.dragMain.style.overflowY = '
|
|
125
|
+
this.$refs.dragMain.style.overflowY = 'overlay'
|
|
112
126
|
}
|
|
113
127
|
|
|
114
128
|
});
|
|
@@ -217,7 +231,7 @@ export default {
|
|
|
217
231
|
.dragHeader {}
|
|
218
232
|
|
|
219
233
|
.dragMain {
|
|
220
|
-
overflow-y:
|
|
234
|
+
overflow-y: overlay;
|
|
221
235
|
overflow-x: hidden;
|
|
222
236
|
}
|
|
223
237
|
|
|
@@ -68,7 +68,8 @@
|
|
|
68
68
|
<component v-for="(btn, index) in model.links" :key="index" :is="btn.is" :vmodel="btn" @click="clickHandler" v-if="btn.show"></component>
|
|
69
69
|
</el-col>
|
|
70
70
|
</el-row>
|
|
71
|
-
<el-row v-if="model.buttons.findIndex((v)=>{return v.show}) > -1" :class="isScroll?'button-absolute':'button-initial'"
|
|
71
|
+
<el-row v-if="model.buttons.findIndex((v)=>{return v.show}) > -1" :class="isScroll?'ccai button-absolute':'button-initial'"
|
|
72
|
+
:style="{'max-width':pageWidth?(pageWidth-20)+'px':'100%'}">
|
|
72
73
|
<el-col :span="24" style="text-align:center">
|
|
73
74
|
<component v-for="(btn, index) in model.buttons" :key="index" :is="btn.is" :vmodel="btn" @click="clickHandler" v-if="btn.show"></component>
|
|
74
75
|
</el-col>
|
|
@@ -116,7 +117,8 @@
|
|
|
116
117
|
this.init();
|
|
117
118
|
},
|
|
118
119
|
updated(){
|
|
119
|
-
if(this.$el.parentElement.scrollHeight>this.$el.parentElement.clientHeight
|
|
120
|
+
if(this.$el.parentElement.scrollHeight>this.$el.parentElement.clientHeight
|
|
121
|
+
&& !this.model.isHorizontalLayout){
|
|
120
122
|
this.isScroll=true;
|
|
121
123
|
}
|
|
122
124
|
},
|
|
@@ -592,6 +594,7 @@
|
|
|
592
594
|
var rtnBool = true;
|
|
593
595
|
var jump = false;
|
|
594
596
|
var i=0;
|
|
597
|
+
|
|
595
598
|
self.$refs.Fields.forEach((f) => {
|
|
596
599
|
if (f.model && typeof f.validExcute !== 'undefined') {
|
|
597
600
|
if (!f.validExcute()) {
|
|
@@ -617,7 +620,7 @@
|
|
|
617
620
|
|
|
618
621
|
if (!jump) {
|
|
619
622
|
if (this.model.isHorizontalLayout) {//水平布局
|
|
620
|
-
this.activeName = f.model.collapseName.toString();
|
|
623
|
+
this.activeName = f.model.collapseName.toString()==='-1'?self.activeName:f.model.collapseName.toString();
|
|
621
624
|
jump = true;
|
|
622
625
|
}
|
|
623
626
|
else {//垂直布局
|
|
@@ -716,7 +719,6 @@
|
|
|
716
719
|
background-color: #fff;
|
|
717
720
|
width: 100%;
|
|
718
721
|
margin: auto;
|
|
719
|
-
max-width: 800px;
|
|
720
722
|
box-shadow: 0 2px 20px 0 rgb(0 0 0 / 10%);
|
|
721
723
|
margin-left: -20px;
|
|
722
724
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<!--数据列-->
|
|
17
17
|
<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
18
|
<template slot="header" slot-scope="scope">
|
|
19
|
-
<div
|
|
19
|
+
<div :class="[{'ct-table-required':v.required&&model.rows[0].edit&& model.rows[0].delete&&!model.tableDisabled},getHeadClass(v)]">
|
|
20
20
|
{{v.label}}
|
|
21
21
|
</div>
|
|
22
22
|
</template>
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
</span>
|
|
33
33
|
<!--可点击的列-->
|
|
34
34
|
<span v-else-if="v.router" :class="'cell'" style="display: flex;">
|
|
35
|
-
<
|
|
36
|
-
|
|
35
|
+
<span>{{scope.row.isSet}}</span>
|
|
36
|
+
<ct-tablecurrency :router="v.router" :colValue="scope.row[v.id].code1" :rowData="scope.row" @click="rolRouterClickHandler">
|
|
37
37
|
</ct-tablecurrency>
|
|
38
38
|
</span>
|
|
39
39
|
<ct-span v-else :vmodel="scope.row[v.id]" :rowNum="scope.row.$sourceIndex" ref="FieldsLabel"></ct-span>
|
|
@@ -191,7 +191,8 @@
|
|
|
191
191
|
app.model.currentRow.isNew = false;
|
|
192
192
|
app.model.currentRow.index = index;
|
|
193
193
|
app.model.currentRow.isSet = true;
|
|
194
|
-
row.isSet = true;
|
|
194
|
+
row.isSet = true;
|
|
195
|
+
app.itemKey = Math.random();
|
|
195
196
|
}
|
|
196
197
|
},
|
|
197
198
|
//删除
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="ct-tableToolbar" style="width:100%;" v-if="buttons && buttons.length > 0">
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
<div v-if="buttonsLeft&&buttonsLeft.length>0" class="bool_btn_l">
|
|
5
|
+
<ul>
|
|
6
|
+
<li v-for="btn in buttonsLeft" class="ct-ToolbarButton max-ToolbarButton" :class="{btn_r:btn.isRight}">
|
|
5
7
|
<component :is="btn.is" :vmodel="btn"
|
|
6
8
|
@click="clickHandler(btn,$event)"
|
|
7
9
|
@importComplete="importComplete"
|
|
@@ -9,53 +11,86 @@
|
|
|
9
11
|
:optionApi="optionApi"
|
|
10
12
|
:fileData="getFileData(btn)"></component>
|
|
11
13
|
</li>
|
|
12
|
-
|
|
14
|
+
</ul>
|
|
15
|
+
</div>
|
|
16
|
+
<div v-if="buttonsright&&buttonsright.length>0" class="bool_btn_r">
|
|
17
|
+
<ul>
|
|
18
|
+
<li v-for="btn in buttonsright" class="ct-ToolbarButton max-ToolbarButton" :class="{btn_r:btn.isRight}">
|
|
19
|
+
<component :is="btn.is" :vmodel="btn"
|
|
20
|
+
@click="clickHandler(btn,$event)"
|
|
21
|
+
@importComplete="importComplete"
|
|
22
|
+
v-if="btn.show"
|
|
23
|
+
:optionApi="optionApi"
|
|
24
|
+
:fileData="getFileData(btn)"></component>
|
|
25
|
+
</li>
|
|
26
|
+
</ul>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
|
|
13
30
|
</div>
|
|
14
31
|
</template>
|
|
15
32
|
<script>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
33
|
+
export default {
|
|
34
|
+
name: "ctTableToolbar",
|
|
35
|
+
props: {
|
|
36
|
+
buttons: Array,
|
|
37
|
+
searchModel: Object,
|
|
38
|
+
optionApi: String
|
|
39
|
+
},
|
|
40
|
+
data() {
|
|
41
|
+
return {
|
|
42
|
+
buttonsLeft: [],
|
|
43
|
+
buttonsright: []
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
created() {
|
|
47
|
+
this.buttons.forEach(v => {
|
|
48
|
+
if (v.isRight) {
|
|
49
|
+
this.buttonsright.push(v);
|
|
50
|
+
} else {
|
|
51
|
+
this.buttonsLeft.push(v);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
methods: {
|
|
56
|
+
clickHandler(btn, ev) {
|
|
57
|
+
this.$emit("click", btn);
|
|
25
58
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.$emit('click', btn);
|
|
29
|
-
},
|
|
30
|
-
getFileData(btn) {
|
|
31
|
-
if (btn.flagAttachSearchCondition) {
|
|
32
|
-
return this.searchModel ? this.searchModel.searchData : {};
|
|
33
|
-
}
|
|
59
|
+
getFileData(btn) {
|
|
60
|
+
if (btn.flagAttachSearchCondition) {
|
|
34
61
|
return this.searchModel ? this.searchModel.searchData : {};
|
|
35
|
-
},
|
|
36
|
-
importComplete(res) {
|
|
37
|
-
this.$emit('importComplete', res);
|
|
38
62
|
}
|
|
63
|
+
return this.searchModel ? this.searchModel.searchData : {};
|
|
64
|
+
},
|
|
65
|
+
importComplete(res) {
|
|
66
|
+
this.$emit("importComplete", res);
|
|
39
67
|
}
|
|
40
68
|
}
|
|
69
|
+
};
|
|
41
70
|
</script>
|
|
42
71
|
<style>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
.ct-tableToolbar {
|
|
73
|
+
width: 100%;
|
|
74
|
+
position: relative;
|
|
75
|
+
float: left;
|
|
76
|
+
padding: 0 5px 10px 0px;
|
|
77
|
+
background-color: #fff;
|
|
78
|
+
border-radius: 6px;
|
|
79
|
+
}
|
|
80
|
+
.ct-tableToolbar ul {
|
|
81
|
+
list-style: none; /* 去掉ul前面的符号 */
|
|
82
|
+
margin: 0px; /* 与外界元素的距离为0 */
|
|
83
|
+
padding: 0px; /* 与内部元素的距离为0 */
|
|
84
|
+
width: auto; /* 宽度根据元素内容调整 */
|
|
85
|
+
}
|
|
86
|
+
.ct-tableToolbar ul li {
|
|
87
|
+
margin-right: 5px;
|
|
88
|
+
float: left; /* 向左漂移,将竖排变为横排 */
|
|
89
|
+
}
|
|
90
|
+
.bool_btn_l {
|
|
91
|
+
float: left !important;
|
|
92
|
+
}
|
|
93
|
+
.bool_btn_r {
|
|
94
|
+
float: right !important;
|
|
95
|
+
}
|
|
61
96
|
</style>
|
|
@@ -295,8 +295,8 @@ const Form = function (source, callBack, apiParam, failCallBack, isFormList) {
|
|
|
295
295
|
}
|
|
296
296
|
//正在编辑的行
|
|
297
297
|
else if (rowNum === null && listData.currentRowIndex === 0) {
|
|
298
|
-
|
|
299
|
-
|
|
298
|
+
let fields = listData.currentRow.data;
|
|
299
|
+
field = fields[fiedlId];
|
|
300
300
|
}
|
|
301
301
|
//源数据
|
|
302
302
|
else {
|
|
@@ -306,17 +306,18 @@ const Form = function (source, callBack, apiParam, failCallBack, isFormList) {
|
|
|
306
306
|
|
|
307
307
|
if (rowNum === 0 || (rowNum && fiedlId)) {
|
|
308
308
|
try {
|
|
309
|
-
|
|
309
|
+
let fields = listData.rows[rowNum].field;
|
|
310
310
|
field = fields.find((v) => {
|
|
311
311
|
return v.id === fiedlId;
|
|
312
|
-
|
|
313
|
-
}
|
|
314
|
-
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
catch (e) {
|
|
315
|
+
if (listData.rows.length <= rowNum) {
|
|
315
316
|
var checkMsg = "获取列表行索引超出界限";
|
|
316
317
|
this.message(checkMsg);
|
|
317
|
-
|
|
318
|
-
}
|
|
318
|
+
}
|
|
319
319
|
}
|
|
320
|
+
}
|
|
320
321
|
}
|
|
321
322
|
|
|
322
323
|
return { listData: listData, field: field };
|
|
@@ -350,13 +351,19 @@ const Form = function (source, callBack, apiParam, failCallBack, isFormList) {
|
|
|
350
351
|
//若该行正在编辑,则取编辑状态的。
|
|
351
352
|
if (data && data.listData && data.listData.currentRow.data && data.listData.currentRow.data[fiedlId]
|
|
352
353
|
&& data.listData.currentRow.data.$sourceIndex === rowNum && data.listData.currentRow.isSet) {
|
|
353
|
-
|
|
354
|
+
if(fiedlId=='deleted' || fiedlId=='flagDeleted'){
|
|
355
|
+
return data.listData.currentRow.data.deleted || false;
|
|
356
|
+
}
|
|
357
|
+
return data.listData.currentRow.data[fiedlId].source[attrName];
|
|
354
358
|
}
|
|
355
359
|
else if (data && data.field) {
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
+
if (typeof defaultValue !== 'undefined' && data.listData.rows[rowNum].deleted) {//若该行被删除时,则直接返回默认值
|
|
361
|
+
return defaultValue;
|
|
362
|
+
}
|
|
363
|
+
return data.field.source[attrName];
|
|
364
|
+
}
|
|
365
|
+
else if (data && (fiedlId=='deleted' || fiedlId=='flagDeleted')) {
|
|
366
|
+
return data.listData.rows[rowNum].deleted || false;
|
|
360
367
|
}
|
|
361
368
|
},
|
|
362
369
|
getListFieldValueFromParent(tableName, rowNum, fiedlId, attrName, defaultValue) {
|
|
@@ -180,13 +180,10 @@ const FormList = function (source, master) {
|
|
|
180
180
|
for (let i = 1; i < rows.length; i++) {//遍历每一行
|
|
181
181
|
if (!rows[i].deleted) {
|
|
182
182
|
row = {};
|
|
183
|
-
//row['$sourceIndex'] = i;
|
|
184
183
|
Vue.set(row, '$sourceIndex', i);
|
|
185
184
|
for (let j = 0; j < rows[i].field.length; j++) {//遍历每一列
|
|
186
|
-
//row[field[j].id] = rows[i].field[j];
|
|
187
185
|
Vue.set(row, field[j].id, rows[i].field[j]);
|
|
188
186
|
}
|
|
189
|
-
//row.isSet = false;
|
|
190
187
|
Vue.set(row, 'isSet', false);
|
|
191
188
|
Vue.set(row, 'edit', rows[i].edit);
|
|
192
189
|
Vue.set(row, 'delete', rows[i].delete);
|
|
@@ -372,8 +369,6 @@ const FormList = function (source, master) {
|
|
|
372
369
|
addSourceRow(row) {
|
|
373
370
|
let sourceRow = JSON.parse(JSON.stringify(source.rows[0]));
|
|
374
371
|
for (let k in sourceRow.columns) {
|
|
375
|
-
//sourceRow.Row[k] = row.field[k].source;
|
|
376
|
-
sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
|
|
377
372
|
sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
|
|
378
373
|
};
|
|
379
374
|
source.rows.push(sourceRow);
|
|
@@ -425,9 +420,7 @@ const FormList = function (source, master) {
|
|
|
425
420
|
source.rows.push(row);
|
|
426
421
|
rtn.rows.push(rowItem);
|
|
427
422
|
rtn._rows[rtn._rows.length - 1].$sourceIndex = rtn._rows.length - 1;
|
|
428
|
-
|
|
429
|
-
rowData.$sourceIndex = source.rows.length - 1;
|
|
430
|
-
|
|
423
|
+
rowData.$sourceIndex = source.rows.length - 1;
|
|
431
424
|
rowData.edit = rowItem.edit;
|
|
432
425
|
rowData.delete = rowItem.delete;
|
|
433
426
|
rowItem.isNewFlag = true;
|
|
@@ -473,13 +466,14 @@ const FormList = function (source, master) {
|
|
|
473
466
|
insertRow(rows) {
|
|
474
467
|
if(rows && rows.length>0){
|
|
475
468
|
rows.forEach((r) => {
|
|
476
|
-
|
|
477
|
-
let iRow = this.initRow(r);
|
|
469
|
+
let iRow = rtn.initRow(r);
|
|
478
470
|
iRow.isNewFlag = true;
|
|
471
|
+
source.rows.push(r);
|
|
479
472
|
rtn._rows.push(iRow);
|
|
480
473
|
Vue.set(r, 'edit', iRow.edit);
|
|
481
474
|
Vue.set(r, 'delete', iRow.delete);
|
|
482
475
|
rtn._rows[rtn._rows.length - 1].$sourceIndex = rtn._rows.length - 1;
|
|
476
|
+
r.$sourceIndex = rtn._rows.length - 1;
|
|
483
477
|
|
|
484
478
|
let rowData = rtn.rowsItemToTableData(iRow)
|
|
485
479
|
rowData.$sourceIndex = rtn._rows.length - 1;
|
|
@@ -492,43 +486,52 @@ const FormList = function (source, master) {
|
|
|
492
486
|
insertOrUpdateRow(row) {
|
|
493
487
|
if(row){
|
|
494
488
|
if(rtn.primaryKeys && rtn.primaryKeys.length>0){
|
|
495
|
-
let iRow =
|
|
489
|
+
let iRow = rtn.initRow(row);
|
|
496
490
|
let flagAdd=true;
|
|
497
491
|
rtn.rows.forEach((r,i) => {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
492
|
+
if(i>0){
|
|
493
|
+
let countKey=0;
|
|
494
|
+
rtn.primaryKeys.forEach((k) => {
|
|
495
|
+
let fieldOld=r.field.find((v) => {
|
|
496
|
+
return v.id === k;
|
|
497
|
+
});
|
|
498
|
+
let fieldNew=iRow.field.find((v) => {
|
|
499
|
+
return v.id === k;
|
|
500
|
+
});
|
|
501
|
+
if(fieldOld.code1===fieldNew.code1){
|
|
502
|
+
countKey++;
|
|
503
|
+
}
|
|
504
|
+
})
|
|
505
|
+
if(countKey===rtn.primaryKeys.length){
|
|
506
|
+
flagAdd=false;
|
|
507
|
+
if(iRow.deleted){
|
|
508
|
+
rtn.tableData.forEach((d,index) => {
|
|
509
|
+
if(d.$sourceIndex===r.$sourceIndex){
|
|
510
|
+
rtn.tableData.splice(index, 1);
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
if (r.isNewFlag) {
|
|
514
|
+
rtn.rows.splice(i, 1);
|
|
515
|
+
source.rows.splice(i, 1);
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
rtn.rows[i].deleted = true;
|
|
516
519
|
}
|
|
517
|
-
});
|
|
518
|
-
if (r.isNewFlag) {
|
|
519
|
-
rtn.rows.splice(i, 1);
|
|
520
|
-
source.rows.splice(i, 1);
|
|
521
520
|
}
|
|
522
|
-
else
|
|
523
|
-
|
|
521
|
+
else{
|
|
522
|
+
let rowData = rtn.rowsItemToTableData(iRow)
|
|
523
|
+
iRow.$sourceIndex=r.$sourceIndex;
|
|
524
|
+
rowData.$sourceIndex=r.$sourceIndex;
|
|
525
|
+
rowData.edit = iRow.edit;
|
|
526
|
+
rowData.delete = iRow.delete;
|
|
527
|
+
source.rows.splice(i, 1,row);
|
|
528
|
+
rtn._rows.splice(i, 1,iRow);
|
|
529
|
+
rtn._tableData.splice(i-1, 1,rowData);
|
|
524
530
|
}
|
|
525
531
|
}
|
|
526
|
-
else{
|
|
527
|
-
rtn.rows.splice(i, 1,iRow);
|
|
528
|
-
}
|
|
529
532
|
}
|
|
530
533
|
});
|
|
531
|
-
if(flagAdd){
|
|
534
|
+
if(flagAdd){
|
|
532
535
|
let rows=[];
|
|
533
536
|
rows.push(row);
|
|
534
537
|
rtn.insertRow(rows)
|
package/src/main.js
CHANGED
|
@@ -14,8 +14,8 @@ Vue.config.productionTip = false;
|
|
|
14
14
|
Vue.use(centaline, {
|
|
15
15
|
baseUrl: "http://10.88.22.46:7070/v1/form/router",
|
|
16
16
|
// baseUrl: "http://10.88.23.22:9999/v1/form/router",
|
|
17
|
-
// baseUrl: "http://10.88.22.69:8080/",
|
|
18
17
|
// baseUrl: "http://tjcptest.centaline.com.cn/",
|
|
18
|
+
// baseUrl: "http://10.88.22.69:8080/",
|
|
19
19
|
// flagRouterSelf: true,
|
|
20
20
|
zindex: 999,
|
|
21
21
|
showRequestSuccessMessage: true,
|
|
@@ -41,7 +41,7 @@ Vue.use(centaline, {
|
|
|
41
41
|
// 获取请求头
|
|
42
42
|
getRequestHeaders: function () {
|
|
43
43
|
return {
|
|
44
|
-
oldToken: '
|
|
44
|
+
oldToken: '0e5e2554-abe0-4538-8520-e024f82389b3',
|
|
45
45
|
originalRequestURL: 'http://10.88.22.67:8080',
|
|
46
46
|
EstateInfo: ' {"estateId":"201703020943128D8A8FCF463E4016D6","estateName":"%E4%B8%87%E7%A7%91%E4%BA%91%E5%9F%8E"}',
|
|
47
47
|
Authorization:'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjYzMzZiMDJiLTZjOGEtNDIzNC05MGQ5LTliYWI2MTIyNTQzNyJ9.hOxMvGLm03QMPu9C4lgRzkEHC7ECqxJ_L6mfqQRqv39xJ42I8gzSRO-E68vWp-A99ewnxnqvTZ6H_6fOQ9DljQ',
|