centaline-data-driven 1.3.99 → 1.4.0
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/Detail.vue +2 -2
- package/src/Form.vue +1 -1
- package/src/SearchList.vue +4 -4
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailOFI.vue +6 -4
- package/src/centaline/dynamicDragSort/src/dynamicDragSort.vue +0 -2
- package/src/centaline/dynamicForm/src/dynamicForm.vue +14 -5
- package/src/centaline/dynamicIti/src/dynamicIti.vue +0 -1
- package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchListTable.vue +0 -1
- package/src/centaline/dynamicSearchList/src/dynamicTableTip.vue +45 -36
- package/src/centaline/dynamicT/src/dynamicT.vue +5 -1
- package/src/centaline/loader/src/ctl/Detail.js +0 -1
- package/src/centaline/loader/src/ctl/PhotoSelectList.js +0 -1
- package/src/centaline/loader/src/ctl/Repeat.js +0 -1
- package/src/centaline/loader/src/ctl/SearchStats.js +0 -1
- package/src/centaline/loader/src/ctl/SearchTable.js +28 -15
- package/src/centaline/loader/src/ctl/Tree.js +0 -1
- package/src/centaline/validate/index.js +23 -0
- package/src/main.js +4 -4
- 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/Detail.vue
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div id="appDetail" style="height:100%;">
|
|
3
|
-
<ct-Detail :api="'
|
|
3
|
+
<ct-Detail :api="'PropertyOFI/readDetailForBrowse'" :apiParam="apiParam" :pageType="'PropertyDetailOFI'"></ct-Detail>
|
|
4
4
|
<ct-dialog-list></ct-dialog-list>
|
|
5
5
|
</div>
|
|
6
6
|
</template>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
name: 'DataDrivendetail',
|
|
11
11
|
data() {
|
|
12
12
|
return {
|
|
13
|
-
apiParam: {actionType: 1,chanceID: "
|
|
13
|
+
apiParam: {actionType: 1,chanceID: "1583031531402825728"} ,
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
mounted() {
|
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="'/externalincomemanage/externalincomeimport/readDetail'" :apiParam="apiParam" :topHeight="topHeight"></ct-form>
|
|
5
5
|
<ct-dialog-list></ct-dialog-list>
|
|
6
6
|
</div>
|
|
7
7
|
</template>
|
package/src/SearchList.vue
CHANGED
|
@@ -4,23 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
<!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'" :searchDataApi="'/PropertyRETList/getListOfSearchModel'" :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"></ct-searchlist> -->
|
|
6
6
|
|
|
7
|
-
<ct-searchlist :apiParam="para"
|
|
7
|
+
<!-- <ct-searchlist :apiParam="para"
|
|
8
8
|
:searchConditionApi="'/ProfileWorklistList/getLayoutOfSearch'"
|
|
9
9
|
:searchCategoryApi="'/ProfileWorklistList/getLayoutOfSearchCategory'"
|
|
10
10
|
:searchDataApi="'/ProfileWorklistList/getListOfSearchModel'"
|
|
11
11
|
:searchStatsApi="'/ProfileWorklistList/getListStats'">
|
|
12
|
-
</ct-searchlist>
|
|
12
|
+
</ct-searchlist> -->
|
|
13
13
|
|
|
14
14
|
<!-- <ct-searchlist
|
|
15
15
|
:searchConditionApi="'/report/monthly/region/layout'"
|
|
16
16
|
:searchDataApi="'/report/monthly/region/list'">
|
|
17
17
|
</ct-searchlist> -->
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
<ct-searchlist
|
|
20
20
|
:searchCategoryApi="'/PropertyPublishList/getLayoutOfSearchCategory'"
|
|
21
21
|
:searchConditionApi="'/PropertyPublishList/getLayoutOfSearchForRET'"
|
|
22
22
|
:searchDataApi="'/PropertyPublishList/getListOfSearchModelForRET'">
|
|
23
|
-
</ct-searchlist>
|
|
23
|
+
</ct-searchlist>
|
|
24
24
|
|
|
25
25
|
<!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
|
|
26
26
|
:searchDataApi="'/PropertyRETList/getListOfSearchModel'"
|
|
@@ -345,8 +345,9 @@
|
|
|
345
345
|
</el-tab-pane>
|
|
346
346
|
</el-tabs>
|
|
347
347
|
</div>
|
|
348
|
-
<div class="customer">
|
|
349
|
-
<
|
|
348
|
+
<div ref="MatchCustomer" v-if="model.matchCustomerApiRouter !== null" class="customer">
|
|
349
|
+
<ct-MatchCustomer :apiRouter="model.matchCustomerApiRouter"></ct-MatchCustomer>
|
|
350
|
+
<!-- <div class="customer-title">匹配客户</div>
|
|
350
351
|
<div class="mt10 clearfix">
|
|
351
352
|
<div class="customre-line"></div>
|
|
352
353
|
<div class="match-customre rel">
|
|
@@ -397,7 +398,6 @@
|
|
|
397
398
|
</div>
|
|
398
399
|
</div>
|
|
399
400
|
</div>
|
|
400
|
-
|
|
401
401
|
<div class="clearfix">
|
|
402
402
|
<div class="customre-line"></div>
|
|
403
403
|
<div class="match-customre rel">
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
</div>
|
|
448
448
|
</div>
|
|
449
449
|
</div>
|
|
450
|
-
</div>
|
|
450
|
+
</div> -->
|
|
451
451
|
</div>
|
|
452
452
|
</div>
|
|
453
453
|
</div>
|
|
@@ -460,6 +460,7 @@ import dynamicElement from "../../mixins/dynamicElement";
|
|
|
460
460
|
import dynamicSearchList from "../../dynamicSearchList/src/dynamicSearchList.vue";
|
|
461
461
|
import dynamicContactList from "./dynamicContactList.vue";
|
|
462
462
|
import dynamicAlbums from "./dynamicAlbums.vue";
|
|
463
|
+
import dynamicMatchCustomer from "./dynamicMatchCustomer.vue";
|
|
463
464
|
export default {
|
|
464
465
|
name: "ct-PropertyDetailOFI",
|
|
465
466
|
mixins: [dynamicElement],
|
|
@@ -467,6 +468,7 @@ export default {
|
|
|
467
468
|
"ct-searchlist": dynamicSearchList,
|
|
468
469
|
"ct-contactList": dynamicContactList,
|
|
469
470
|
"ct-albums": dynamicAlbums,
|
|
471
|
+
"ct-MatchCustomer": dynamicMatchCustomer,
|
|
470
472
|
},
|
|
471
473
|
props: {
|
|
472
474
|
vmodel: Object,
|
|
@@ -90,7 +90,6 @@ export default {
|
|
|
90
90
|
else {
|
|
91
91
|
this.model = this.vmodel;
|
|
92
92
|
this.testList = this.vmodel.dragList;
|
|
93
|
-
// console.log('this.testList', this.testList);
|
|
94
93
|
}
|
|
95
94
|
});
|
|
96
95
|
|
|
@@ -130,7 +129,6 @@ export default {
|
|
|
130
129
|
|
|
131
130
|
// 更新位置
|
|
132
131
|
handleListChange(event) {
|
|
133
|
-
console.log(event);
|
|
134
132
|
this.testList = event;
|
|
135
133
|
|
|
136
134
|
this.testList.forEach((item, i) => {
|
|
@@ -486,11 +486,20 @@
|
|
|
486
486
|
});
|
|
487
487
|
}
|
|
488
488
|
else{
|
|
489
|
-
field.
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
489
|
+
if (field.action.indexOf("http://") === 0 || field.action.indexOf("https://") === 0) {
|
|
490
|
+
window.open(field.action, "_blank");
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
field.doAction(submitData, (data) => {
|
|
494
|
+
if(data.content){
|
|
495
|
+
if (data.content.indexOf("http://") === 0 || data.content.indexOf("https://") === 0) {
|
|
496
|
+
window.open(data.content, "_blank");
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
}
|
|
494
503
|
}
|
|
495
504
|
}
|
|
496
505
|
else {
|
|
@@ -1,46 +1,55 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="ct-table-tip ct-table-tip-mini" v-html="tip"></div>
|
|
2
|
+
<div class="ct-table-tip ct-table-tip-mini ct-table-tip-tag" v-html="tip"></div>
|
|
3
3
|
</template>
|
|
4
4
|
<script>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
5
|
+
export default {
|
|
6
|
+
name: 'ct-tabletip',
|
|
7
|
+
props: {
|
|
8
|
+
tip: String,
|
|
9
|
+
size: String
|
|
10
|
+
},
|
|
11
|
+
data() {
|
|
12
|
+
return {}
|
|
14
13
|
}
|
|
14
|
+
}
|
|
15
15
|
</script>
|
|
16
16
|
<style>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
.ct-table-tip {
|
|
18
|
+
color: #606266;
|
|
19
|
+
font-size: 18px;
|
|
20
|
+
line-height: 40px;
|
|
21
|
+
min-height: 40px;
|
|
22
|
+
padding-left: 15px;
|
|
23
|
+
display: table
|
|
24
|
+
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.ct-table-tip-mini {
|
|
30
|
-
font-size: 12px;
|
|
31
|
-
line-height: 26px;
|
|
32
|
-
min-height: 0px;
|
|
33
|
-
}
|
|
26
|
+
.ct-table-tip img {
|
|
27
|
+
vertical-align: middle;
|
|
28
|
+
}
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
.ct-table-tip-mini {
|
|
31
|
+
font-size: 12px;
|
|
32
|
+
line-height: 26px;
|
|
33
|
+
min-height: 0px;
|
|
34
|
+
}
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
.ct-table-tip-small {
|
|
37
|
+
font-size: 14px;
|
|
38
|
+
line-height: 32px;
|
|
39
|
+
min-height: 32px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ct-table-tip-medium {
|
|
43
|
+
font-size: 16px;
|
|
44
|
+
line-height: 36px;
|
|
45
|
+
min-height: 36px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ct-table-tip-tag {
|
|
49
|
+
margin-bottom: 10px;
|
|
50
|
+
background-color: #fdf6ec;
|
|
51
|
+
border-color: #faecd8;
|
|
52
|
+
width: 100%;
|
|
53
|
+
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
54
|
+
}
|
|
46
55
|
</style>
|
|
@@ -164,8 +164,12 @@
|
|
|
164
164
|
let joinChar=self.model.joinChar || ',';
|
|
165
165
|
self.model.forbiddenWords.split(joinChar).forEach(w => {
|
|
166
166
|
let reg1=new RegExp(w,'g');
|
|
167
|
-
self.forbiddenWordsValue=self.forbiddenWordsValue.replace(reg1,'<span style="background-color:
|
|
167
|
+
self.forbiddenWordsValue=self.forbiddenWordsValue.replace(reg1,'<span style="background-color: #ffff00;color: transparent;">'+w+'</span>');
|
|
168
168
|
});
|
|
169
|
+
// let h=this.$refs.input.$el.children[0].offsetHeight;
|
|
170
|
+
// let hs=this.$refs.input.$el.children[0].scrollHeight;
|
|
171
|
+
// let ht=this.$refs.input.$el.children[0].scrollTop;
|
|
172
|
+
// console.log(ht+','+h+','+hs)
|
|
169
173
|
let appoint='\n';
|
|
170
174
|
let strat=self.forbiddenWordsValue.length-appoint.length;
|
|
171
175
|
let char=self.forbiddenWordsValue.substr(strat,appoint.length);
|
|
@@ -571,7 +571,6 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
571
571
|
if (self.searchModel) {
|
|
572
572
|
// self.searchModel.setBtnLoading(false);
|
|
573
573
|
}
|
|
574
|
-
console.error(error);
|
|
575
574
|
});
|
|
576
575
|
},
|
|
577
576
|
getSearchData(){
|
|
@@ -806,7 +805,6 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
806
805
|
}
|
|
807
806
|
})
|
|
808
807
|
.catch((error) => {
|
|
809
|
-
console.error(error);
|
|
810
808
|
if (typeof callback !== 'undefined') {
|
|
811
809
|
callback();
|
|
812
810
|
}
|
|
@@ -835,37 +833,52 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
835
833
|
rtn.$vue.$delete(rtn.listData, rtn.selectIndex);
|
|
836
834
|
}
|
|
837
835
|
break;
|
|
836
|
+
|
|
838
837
|
case Enum.ActionType.New: //新增
|
|
839
838
|
case Enum.ActionType.CloseTabThenNew: //新增
|
|
839
|
+
if(response.content && Array.isArray(response.content)){
|
|
840
|
+
rtn.setStyleRow(response.content);
|
|
841
|
+
response.content.forEach((nr) => {
|
|
842
|
+
rtn.listData.unshift(nr);
|
|
843
|
+
});
|
|
844
|
+
rtn.dataDictionary = response.content;
|
|
840
845
|
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
source.page.rows = source.page.rows + response.content.length;
|
|
848
|
-
rtn.$vue.calculatingRowHeight()
|
|
846
|
+
source.page.rows = source.page.rows + response.content.length;
|
|
847
|
+
rtn.$vue.calculatingRowHeight()
|
|
848
|
+
}
|
|
849
|
+
else{
|
|
850
|
+
rtn.$vue.updateCurrentRow({flagAddRowAfterAction:true},{responseData:response});
|
|
851
|
+
}
|
|
849
852
|
break;
|
|
853
|
+
|
|
850
854
|
case Enum.ActionType.Update: //修改
|
|
851
855
|
case Enum.ActionType.CloseTabThenUpdate: //修改
|
|
852
|
-
response.content.
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
856
|
+
if(response.content && Array.isArray(response.content)){
|
|
857
|
+
response.content.forEach((row) => {
|
|
858
|
+
for (var vkey in row) {
|
|
859
|
+
rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
|
|
860
|
+
}
|
|
861
|
+
});
|
|
862
|
+
}
|
|
863
|
+
else{
|
|
864
|
+
rtn.$vue.updateCurrentRow({flagFreshCurrentRow:true},{responseData:response});
|
|
865
|
+
}
|
|
857
866
|
break;
|
|
867
|
+
|
|
858
868
|
case Enum.ActionType.Export: //导出
|
|
859
869
|
var fileName = response.content.fieldName1;
|
|
860
870
|
var fileContent = window.atob(response.content.code1);
|
|
861
871
|
common.saveFile(fileName, fileContent);
|
|
862
872
|
break;
|
|
873
|
+
|
|
863
874
|
case Enum.ActionType.Refersh: //刷新
|
|
864
875
|
rtn.$vue.getPage(1);
|
|
865
876
|
break;
|
|
877
|
+
|
|
866
878
|
case Enum.ActionType.RefreshParent: //刷新父页面
|
|
867
879
|
rtn.$vue.$emit('refreshParent');
|
|
868
880
|
break;
|
|
881
|
+
|
|
869
882
|
default:
|
|
870
883
|
break;
|
|
871
884
|
}
|
|
@@ -157,6 +157,20 @@ const actions = {
|
|
|
157
157
|
return true;
|
|
158
158
|
}
|
|
159
159
|
},
|
|
160
|
+
forbiddenWords(model) {
|
|
161
|
+
var flag=true;
|
|
162
|
+
if (model.value) {
|
|
163
|
+
let joinChar= model.joinChar || ',';
|
|
164
|
+
model.forbiddenWords.split(joinChar).forEach(w => {
|
|
165
|
+
let reg1=new RegExp(w,'g');
|
|
166
|
+
if(reg1.test(model.value)){
|
|
167
|
+
flag=false;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return flag;
|
|
173
|
+
},
|
|
160
174
|
};
|
|
161
175
|
|
|
162
176
|
const valid = {
|
|
@@ -229,6 +243,12 @@ const valid = {
|
|
|
229
243
|
type: 'validateLenMin',
|
|
230
244
|
ticker: 'input'
|
|
231
245
|
},
|
|
246
|
+
forbiddenWords: {
|
|
247
|
+
action: actions.forbiddenWords,
|
|
248
|
+
message: '输入文字中包含违禁词',
|
|
249
|
+
type: 'forbiddenWords',
|
|
250
|
+
ticker: 'input'
|
|
251
|
+
},
|
|
232
252
|
Init(model) {
|
|
233
253
|
return {
|
|
234
254
|
//废弃 todo 删除
|
|
@@ -303,6 +323,9 @@ const valid = {
|
|
|
303
323
|
if(model.min && model.min>0){
|
|
304
324
|
rtnValidate.push(valid.validateLenMin);
|
|
305
325
|
}
|
|
326
|
+
if(model.forbiddenWords){
|
|
327
|
+
rtnValidate.push(valid.forbiddenWords);
|
|
328
|
+
}
|
|
306
329
|
break;
|
|
307
330
|
default:
|
|
308
331
|
break;
|
package/src/main.js
CHANGED
|
@@ -43,19 +43,19 @@ Vue.use(centaline, {
|
|
|
43
43
|
getRequestHeaders: function () {
|
|
44
44
|
return {
|
|
45
45
|
oldToken: '854e91e2-3a5e-42af-a522-c51a0f5c09bc',
|
|
46
|
-
token:'aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.
|
|
46
|
+
token:'aplus eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNrEjjEOgkAQRe8yNZPssMPMDp0u2HgIsuqaYGUEEo3x7mqEjt5XvOI1_z9hmA5Qg87gihY6m8EVLXREbErS4sY0Igt7DBQDRpbIu6b1cdtAAfl-hZpEtPIlGRXQp_EXmCv9hmnIt31-_OPcZew_s2cV59QlrMokyGyC4UiM5imcUmavOcHrDQAA__8.UYFAmH-EyzlQ5Z7PVk1zwypPlLjm84H3Benfnmna9WU',
|
|
47
47
|
|
|
48
48
|
originalRequestURL: 'http://10.88.22.67:8080',
|
|
49
49
|
EstateInfo: '{"estateId":"FAF029E8-EC28-4297-83CF-B8FFD826DB91","estateName":"AABBCC"}',
|
|
50
50
|
estateId: '20210729104021C49F04B55C50F6AF58',
|
|
51
51
|
|
|
52
|
-
authObject: '{"currentEstate":{
|
|
53
|
-
Authorization:'Bearer eyJhbGciOiJIUzUxMiJ9.
|
|
52
|
+
authObject: '{"currentEstate":{},"platform":1,"OSVersion":"","clientVersion":"","machineCode":""}',
|
|
53
|
+
Authorization:'Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjcyYzkxMzRlLTc5ODItNDFiYi04NDZjLWRhNmE0YTAwNGUzZSJ9.Dqw228vC10bapkK7Rnz_REvV_1x3igpsmFVHfeSIMFPHkMSpeh6py61NJ7HtkYnTTrSeRr2IjXvH9EoHLH3T3Q',
|
|
54
54
|
};
|
|
55
55
|
},
|
|
56
56
|
// 请求完成事件,可判断是否登录过期执行响应操作
|
|
57
57
|
requestComplete: function (response) {
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
}
|
|
60
60
|
}});
|
|
61
61
|
|