centaline-data-driven 1.2.21 → 1.2.24
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/SearchList.vue +4 -4
- package/src/centaline/api/index.js +8 -0
- package/src/centaline/css/common.css +9 -1
- package/src/centaline/dynamicDetail/src/dynamicContactList.vue +953 -0
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +17 -112
- package/src/centaline/dynamicPhotoSelectList/src/dynamicPhotoSelectList.vue +2 -1
- package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +3 -3
- package/src/centaline/loader/src/ctl/ContactList.js +86 -0
- package/src/centaline/loader/src/ctl/Detail.js +19 -1
- package/src/centaline/loader/src/ctl/Router.js +4 -0
- package/src/centaline/loader/src/ctl/SearchTable.js +2 -2
- package/src/centaline/loader/src/ctl.js +1 -0
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
|
@@ -135,52 +135,11 @@
|
|
|
135
135
|
</div>
|
|
136
136
|
</div>
|
|
137
137
|
<div class="open-mero" @click="allInfo=!allInfo">{{allInfo?'收起全部':'查看全部'}}
|
|
138
|
-
<!-- <img src="../../../assets/mero.png" alt="" class="mero" > :class="allInfo?'more-colose':'more-open'" -->
|
|
139
138
|
<i :class="allInfo?'more-colose':'mero-open'"></i>
|
|
140
139
|
</div>
|
|
141
140
|
</div>
|
|
142
141
|
<div class="contacts-info base-box">
|
|
143
|
-
|
|
144
|
-
<div class="contacts-head">
|
|
145
|
-
<div class="title-l">联系人信息</div>
|
|
146
|
-
<button type="button" v-if="!codeOwner" @click="lookOwner" class="el-button contacts-but el-button--info el-button--mini max-info">查看业主</button>
|
|
147
|
-
<div class="contacts-tips" v-else>
|
|
148
|
-
<button class="el-button el-button--primary el-button--mini max-btn-add">新增联系人</button>
|
|
149
|
-
<button class="el-button el-button--primary el-button--mini max-btn-add">通话记录</button>
|
|
150
|
-
<button class="el-button el-button--primary el-button--mini max-btn-add">查看历史号码</button>
|
|
151
|
-
</div>
|
|
152
|
-
|
|
153
|
-
</div>
|
|
154
|
-
<!-- 表格 -->
|
|
155
|
-
<div class="contacts-table" v-show="codeOwner">
|
|
156
|
-
<el-table
|
|
157
|
-
:data="tableData"
|
|
158
|
-
stripe
|
|
159
|
-
fit
|
|
160
|
-
style="width: 100%"
|
|
161
|
-
:header-cell-style="{background:'#f3f3f3',color:'#333333'}">
|
|
162
|
-
<el-table-column
|
|
163
|
-
v-for="(item,index) in columnList"
|
|
164
|
-
:key="index"
|
|
165
|
-
:property="item.prop"
|
|
166
|
-
:label="item.label"
|
|
167
|
-
:min-width="item.width"
|
|
168
|
-
>
|
|
169
|
-
<template slot-scope="scope">
|
|
170
|
-
<span v-if="scope.column.property=='phone'">{{ scope.row.phone }}
|
|
171
|
-
|
|
172
|
-
</span>
|
|
173
|
-
<span v-else-if="scope.column.property=='tel'">
|
|
174
|
-
{{scope.row.tel}}
|
|
175
|
-
|
|
176
|
-
</span>
|
|
177
|
-
<span v-else>
|
|
178
|
-
{{scope.row[scope.column.property]}}
|
|
179
|
-
</span>
|
|
180
|
-
</template>
|
|
181
|
-
</el-table-column>
|
|
182
|
-
</el-table>
|
|
183
|
-
</div>
|
|
142
|
+
<ct-contactList v-if="model.contactApiRouter!==null" :apiRouter="model.contactApiRouter" ></ct-contactList>
|
|
184
143
|
</div>
|
|
185
144
|
<div class="tablist-info base-box">
|
|
186
145
|
<div class="details-tabs-box">
|
|
@@ -230,6 +189,17 @@
|
|
|
230
189
|
<div>该房源共<span class="red-text">{{model.fields1Dic.LookCustomerCount.value}}</span>位客户看房</div>
|
|
231
190
|
<div>最近7天带看<span class="red-text">{{model.fields1Dic.CustomerLookCount7.value}}</span>次,总带看<span class="red-text">{{model.fields1Dic.CustomerLookCountAll.value}}</span>次。</div>
|
|
232
191
|
</div>
|
|
192
|
+
<div v-if="model.operationList!==null" :key="model.operationKey" class="operation-table base-box">
|
|
193
|
+
<div v-for="(col, index) in model.operationList" :key="index" class="table-box">
|
|
194
|
+
<div class="t-item">
|
|
195
|
+
<span class="i">{{col.operationName}}</span>
|
|
196
|
+
</div>
|
|
197
|
+
<div class="t-item"><span class="i" :class="'operation'+col.flagKey">{{col.desc}}</span></div>
|
|
198
|
+
<div class="t-item" style="height: 50px;">
|
|
199
|
+
<component class="el-button t-but el-button--info max-info" v-if="col.router && col.router.show" :is="col.router.is" :vmodel="col.router" :api="model.optionApi" @click="fieldClickHandler(col.router,$event)"></component>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
233
203
|
<div class="staff-info base-box">
|
|
234
204
|
<el-tabs :value="model.activeIndex2" @tab-click="handleClick">
|
|
235
205
|
<el-tab-pane v-for="(col, index) in model.tags2" :key="col.appID"
|
|
@@ -262,17 +232,6 @@
|
|
|
262
232
|
</el-tab-pane>
|
|
263
233
|
</el-tabs>
|
|
264
234
|
</div>
|
|
265
|
-
<div v-if="model.operationList!==null" :key="model.operationKey" class="operation-table base-box">
|
|
266
|
-
<div v-for="(col, index) in model.operationList" :key="index" class="table-box">
|
|
267
|
-
<div class="t-item">
|
|
268
|
-
<span class="i">{{col.operationName}}</span>
|
|
269
|
-
</div>
|
|
270
|
-
<div class="t-item"><span class="i" :class="'operation'+col.flagKey">{{col.desc}}</span></div>
|
|
271
|
-
<div class="t-item" style="height: 50px;">
|
|
272
|
-
<component class="el-button t-but el-button--info max-info" v-if="col.router && col.router.show" :is="col.router.is" :vmodel="col.router" :api="model.optionApi" @click="fieldClickHandler(col.router,$event)"></component>
|
|
273
|
-
</div>
|
|
274
|
-
</div>
|
|
275
|
-
</div>
|
|
276
235
|
<div class="customer">
|
|
277
236
|
<div class="customer-title">
|
|
278
237
|
匹配客户
|
|
@@ -346,11 +305,13 @@
|
|
|
346
305
|
<script>
|
|
347
306
|
import dynamicElement from '../../mixins/dynamicElement';
|
|
348
307
|
import dynamicSearchList from '../../dynamicSearchList/src/dynamicSearchList.vue';
|
|
308
|
+
import dynamicContactList from './dynamicContactList.vue';
|
|
349
309
|
export default {
|
|
350
310
|
name: 'ct-PropertyDetailRET',
|
|
351
311
|
mixins: [dynamicElement],
|
|
352
312
|
components: {
|
|
353
313
|
'ct-searchlist': dynamicSearchList,
|
|
314
|
+
'ct-contactList': dynamicContactList,
|
|
354
315
|
},
|
|
355
316
|
props: {
|
|
356
317
|
vmodel: Object,
|
|
@@ -365,66 +326,10 @@
|
|
|
365
326
|
{ name: '餐厅', url: 'http://10.5.10.44:13031/Images/20210705/112124_4f83c6d5-36bd-444f-9ea1-fa4e3f4de5e0.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'img' },
|
|
366
327
|
{ name: '户型图', url: 'http://10.5.10.44:13031/Images/20210705/112505_6a3cb2d4-c773-4aba-91af-df6721eadb34.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'video' },
|
|
367
328
|
{ name: '其它', url: 'http://10.5.10.44:13031/Images/20210705/112133_b62d7a78-96b3-4801-b94c-47b83263a001.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'video' },
|
|
368
|
-
|
|
369
|
-
allInfo: false,
|
|
370
|
-
allIn:false,
|
|
371
|
-
codeOwner: false,
|
|
372
|
-
columnList: [
|
|
373
|
-
{
|
|
374
|
-
prop: 'name',
|
|
375
|
-
label: '联系人',
|
|
376
|
-
width: '80'
|
|
329
|
+
],
|
|
377
330
|
},
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
label: '类型',
|
|
381
|
-
width: '60'
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
prop: 'phone',
|
|
385
|
-
label: '手机',
|
|
386
|
-
width: '125'
|
|
387
|
-
},
|
|
388
|
-
{
|
|
389
|
-
prop: 'tel',
|
|
390
|
-
label: '座机',
|
|
391
|
-
width: '170'
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
prop: 'wx',
|
|
395
|
-
label: '微信',
|
|
396
|
-
width: '150'
|
|
397
|
-
},
|
|
398
|
-
{
|
|
399
|
-
prop: 'entTime',
|
|
400
|
-
label: '录入时间',
|
|
401
|
-
width: '150'
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
prop: 'entUser',
|
|
405
|
-
label: '录入人',
|
|
406
|
-
width: '80'
|
|
407
|
-
},
|
|
408
|
-
{
|
|
409
|
-
prop: 'remarks',
|
|
410
|
-
label: '操作',
|
|
411
|
-
// width:'180'
|
|
412
|
-
},
|
|
413
|
-
],
|
|
414
|
-
tableData: [
|
|
415
|
-
{
|
|
416
|
-
name: '王建国先生',
|
|
417
|
-
type: '业主',
|
|
418
|
-
phone: '13866668888',
|
|
419
|
-
tel: '0275-55556666-5896',
|
|
420
|
-
wx: '555566665896',
|
|
421
|
-
entTime: '2021-10-26 29:27:25',
|
|
422
|
-
entUser: '王天',
|
|
423
|
-
remarks: '删除',
|
|
424
|
-
isIcon: true,
|
|
425
|
-
},
|
|
426
|
-
],
|
|
427
|
-
opening:'first',
|
|
331
|
+
allInfo: false,
|
|
332
|
+
allIn:false,
|
|
428
333
|
}
|
|
429
334
|
},
|
|
430
335
|
mounted() {
|
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
});
|
|
108
108
|
self.FlagPhoto = true;
|
|
109
109
|
self.imageList = sourceRows;
|
|
110
|
+
//self.imageList=[{thumbnailUrl:'lmg.jj20.com/up/allimg/tp01/1ZZH250054149-0-lp.jpg',mediaUrl:'lmg.jj20.com/up/allimg/tp01/1ZZH250054149-0-lp.jpg'}];
|
|
110
111
|
} catch (e) {
|
|
111
112
|
self.$message.warning(e);
|
|
112
113
|
}
|
|
@@ -139,7 +140,7 @@
|
|
|
139
140
|
if (this.chooseList && this.chooseList.length > 0) {
|
|
140
141
|
this.$emit('handlePhoto', this.chooseList);
|
|
141
142
|
} else {
|
|
142
|
-
|
|
143
|
+
this.$message.warning("请选择至少一张图片");
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
},
|
|
@@ -719,7 +719,7 @@
|
|
|
719
719
|
},
|
|
720
720
|
on: {
|
|
721
721
|
submit(ev) {
|
|
722
|
-
if (!field.flagFreshCurrentRow) {
|
|
722
|
+
if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
|
|
723
723
|
self.model.doAction(ev);
|
|
724
724
|
}
|
|
725
725
|
self.$forceUpdate();
|
|
@@ -790,7 +790,7 @@
|
|
|
790
790
|
self.operationLoading = true;
|
|
791
791
|
field.doAction(submitData, (data) => {
|
|
792
792
|
self.operationLoading = false;
|
|
793
|
-
if (!field.flagFreshCurrentRow) {
|
|
793
|
+
if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
|
|
794
794
|
self.model.doAction({ responseData: data });
|
|
795
795
|
}
|
|
796
796
|
self.$forceUpdate();
|
|
@@ -867,7 +867,7 @@
|
|
|
867
867
|
},
|
|
868
868
|
updateCurrentRow(router,data) {
|
|
869
869
|
let self = this;
|
|
870
|
-
if (router.flagFreshCurrentRow) {
|
|
870
|
+
if (router.flagFreshCurrentRow || router.flagAddRowAfterAction) {
|
|
871
871
|
self.tableComplate = true;
|
|
872
872
|
self.model.getCurrentRowApiData(function () {
|
|
873
873
|
self.$forceUpdate();
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import base from '../../index';
|
|
2
|
+
import Base from './Base';
|
|
3
|
+
import Enum from './lib/Enum';
|
|
4
|
+
import common from '../../../common';
|
|
5
|
+
import Router from './Router';
|
|
6
|
+
import Vue from 'vue';
|
|
7
|
+
const ContactList = function (source,para ,callBack) {
|
|
8
|
+
var init = function (data) {
|
|
9
|
+
var rtn = {
|
|
10
|
+
$vue: null,
|
|
11
|
+
_buttons: null,
|
|
12
|
+
_actionRouter: null,
|
|
13
|
+
_rowRouter: null,
|
|
14
|
+
get buttons() {
|
|
15
|
+
if (rtn._buttons !== null) {
|
|
16
|
+
return rtn._buttons;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
if (source.content.toolButtons) {
|
|
20
|
+
rtn._buttons = [];
|
|
21
|
+
source.content.toolButtons.forEach((v) => {
|
|
22
|
+
var button = Router(v);
|
|
23
|
+
button.is = "ct-btn";
|
|
24
|
+
button.attrs = { size: "mini", class: 'max-btn-gray' }
|
|
25
|
+
rtn._buttons.push(button);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return rtn._buttons;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
get actionRouter() {
|
|
32
|
+
if (rtn._actionRouter !== null) {
|
|
33
|
+
return rtn._actionRouter;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
rtn._actionRouter = [];
|
|
37
|
+
if (source.content.actionRouters) {
|
|
38
|
+
source.content.actionRouters.forEach((v) => {
|
|
39
|
+
var router = Router(v);
|
|
40
|
+
//router.is = "ct-btn";
|
|
41
|
+
//router.attrs = { size: "mini" }
|
|
42
|
+
rtn._actionRouter.push(router);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return rtn._actionRouter;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
get rowRouter() {
|
|
49
|
+
if (rtn._rowRouter !== null) {
|
|
50
|
+
return rtn._rowRouter;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
rtn._rowRouter = [];
|
|
54
|
+
if (rtn.actionRouter) {
|
|
55
|
+
rtn.actionRouter.forEach((v) => {
|
|
56
|
+
if (v.show) {
|
|
57
|
+
rtn._rowRouter.push(v);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return rtn._rowRouter;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
return rtn;
|
|
66
|
+
}
|
|
67
|
+
if (typeof source === 'string') {
|
|
68
|
+
Vue.prototype.$api.postHandler(common.globalUri(), { action: source,para:para}).then(
|
|
69
|
+
function (response) {
|
|
70
|
+
if (response.rtnCode === Enum.ReturnCode.Successful) {
|
|
71
|
+
var rtn = init(response.content);
|
|
72
|
+
if (callBack) {
|
|
73
|
+
callBack(rtn);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
var rtn = init(source);
|
|
81
|
+
if (callBack) {
|
|
82
|
+
callBack(rtn);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export default ContactList;
|
|
@@ -14,6 +14,7 @@ const Detail = function (source,para ,callBack) {
|
|
|
14
14
|
_otherTradeActionRouter: null,//对应另外种交易的 router 如:本盘出售 则可能对应的出租的交易,没有则为空
|
|
15
15
|
_actionRouters:null,//页面上的动作行为
|
|
16
16
|
_actionRoutersMoreList:null,//页面上的更多动作行为
|
|
17
|
+
_contactApiRouter:null,//查看联系人
|
|
17
18
|
detailHeight:750,
|
|
18
19
|
activeIndex1:'0',
|
|
19
20
|
activeIndex2:'0',
|
|
@@ -130,6 +131,20 @@ const Detail = function (source,para ,callBack) {
|
|
|
130
131
|
}
|
|
131
132
|
return rtn._otherTradeActionRouter;
|
|
132
133
|
}
|
|
134
|
+
},
|
|
135
|
+
get contactApiRouter() {
|
|
136
|
+
if (rtn._contactApiRouter !== null) {
|
|
137
|
+
return rtn._contactApiRouter;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
if (data.contactApiRouter) {
|
|
141
|
+
var router = Router(data.contactApiRouter);
|
|
142
|
+
router.is = "ct-btn";
|
|
143
|
+
router.attrs = { size: "mini" }
|
|
144
|
+
rtn._contactApiRouter=router;
|
|
145
|
+
}
|
|
146
|
+
return rtn._contactApiRouter;
|
|
147
|
+
}
|
|
133
148
|
},
|
|
134
149
|
get actionRouters() {
|
|
135
150
|
if (rtn._actionRouters !== null) {
|
|
@@ -295,7 +310,7 @@ const Detail = function (source,para ,callBack) {
|
|
|
295
310
|
}
|
|
296
311
|
if(field.id=='Follow'
|
|
297
312
|
|| field.id=='Trust' || field.id=='TrustZJJ' || field.id=='TrustDJ' || field.id=='TrustPT'
|
|
298
|
-
|| field.id=='RealLook'
|
|
313
|
+
|| field.id=='RealLook' || field.id=='RealLookVR'
|
|
299
314
|
|| field.id=='StatusAdjust'
|
|
300
315
|
|| field.id=='OperationKey' || field.id=='OperationKeyCommon' || field.id=='OperationKeyPassword'
|
|
301
316
|
|| field.id=='Key'){
|
|
@@ -306,6 +321,9 @@ const Detail = function (source,para ,callBack) {
|
|
|
306
321
|
else if(field.id=='TrustZJJ' || field.id=='TrustDJ' || field.id=='TrustPT'){
|
|
307
322
|
id='Trust';
|
|
308
323
|
}
|
|
324
|
+
else if(field.id=='RealLookVR'){
|
|
325
|
+
id='RealLook';
|
|
326
|
+
}
|
|
309
327
|
var advIndex = rtn.tags1.findIndex((v) => {
|
|
310
328
|
return v.appID === id;
|
|
311
329
|
});
|
|
@@ -183,6 +183,10 @@ const Router = function (source) {
|
|
|
183
183
|
get flagFreshCurrentRow() {
|
|
184
184
|
return source.flagFreshCurrentRow;
|
|
185
185
|
},
|
|
186
|
+
//路由操作完成后是根据返回ID读取数据新增行
|
|
187
|
+
get flagAddRowAfterAction() {
|
|
188
|
+
return source.flagAddRowAfterAction;
|
|
189
|
+
},
|
|
186
190
|
get textColor() {
|
|
187
191
|
return source.textColor || '';
|
|
188
192
|
},
|
|
@@ -563,7 +563,7 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
563
563
|
groupName: self.primaryKey,
|
|
564
564
|
operation: 2,
|
|
565
565
|
searchDataType: 3,
|
|
566
|
-
searchValue1: router.
|
|
566
|
+
searchValue1: router.flagAddRowAfterAction? rtnData.responseData.content: rtn.listData[rtn.selectIndex][self.primaryKey],
|
|
567
567
|
});
|
|
568
568
|
}
|
|
569
569
|
Vue.prototype.$api.postHandler(common.globalUri(), {
|
|
@@ -577,7 +577,7 @@ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSe
|
|
|
577
577
|
.then(function (response) {
|
|
578
578
|
if (response.rtnCode === Enum.ReturnCode.Successful) {
|
|
579
579
|
if (response.content.rows.length > 0) {
|
|
580
|
-
if(router.
|
|
580
|
+
if(router.flagAddRowAfterAction){
|
|
581
581
|
rtn.setStyleRow(response.content.rows);
|
|
582
582
|
response.content.rows.forEach((nr) => {
|
|
583
583
|
rtn.listData.unshift(nr);
|
|
@@ -36,6 +36,7 @@ const loader = {
|
|
|
36
36
|
PhotoSelect: require("./ctl/PhotoSelect.js").default,
|
|
37
37
|
PhotoSelectList: require("./ctl/PhotoSelectList.js").default,
|
|
38
38
|
QuickInputSos: require("./ctl/QuickInputSos.js").default,
|
|
39
|
+
ContactList: require("./ctl/ContactList.js").default,
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
export default loader;
|