|
|
@@ -1,98 +1,108 @@ |
|
|
|
<template> |
|
|
|
<div class="box-center"> |
|
|
|
<div class="app-top"> |
|
|
|
|
|
|
|
<div class="app-titel" v-if="role!=3" style="margin-bottom:10px;"> |
|
|
|
<div class="app-titel" v-if="role != 3" style="margin-bottom: 10px"> |
|
|
|
<div class="titel-text">项目选择:</div> |
|
|
|
<div style="margin-left: 26px"> |
|
|
|
<el-select v-model="houseId" placeholder="请选择" filterable @change="houseChange"> |
|
|
|
<el-select |
|
|
|
v-model="houseId" |
|
|
|
placeholder="请选择" |
|
|
|
filterable |
|
|
|
@change="houseChange" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in houseList" |
|
|
|
:key="item.id" |
|
|
|
:label="item.propertyName" |
|
|
|
:value="item.id"> |
|
|
|
:value="item.id" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="app-titel"> |
|
|
|
<div style="text-indent: 30px;">接待时间:</div> |
|
|
|
<div class="toptimeqhuan"> |
|
|
|
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> |
|
|
|
近7天 |
|
|
|
<div class="app-titel"> |
|
|
|
<div style="text-indent: 30px">接待时间:</div> |
|
|
|
<div class="toptimeqhuan"> |
|
|
|
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> |
|
|
|
近7天 |
|
|
|
</div> |
|
|
|
<div :class="{ tophove: dateType == 5 }" @click="tabtimetap(5)"> |
|
|
|
近15天 |
|
|
|
</div> |
|
|
|
<div :class="{ tophove: dateType == 6 }" @click="tabtimetap(6)"> |
|
|
|
近30天 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div :class="{ tophove: dateType == 5 }" @click="tabtimetap(5)"> |
|
|
|
近15天 |
|
|
|
</div> |
|
|
|
<div :class="{ tophove: dateType == 6 }" @click="tabtimetap(6)"> |
|
|
|
近30天 |
|
|
|
<div style="margin-left: 26px"> |
|
|
|
<el-date-picker |
|
|
|
v-model="customtime" |
|
|
|
@change="confirmtime()" |
|
|
|
type="daterange" |
|
|
|
range-separator="-" |
|
|
|
:default-time="['00:00:00', '23:59:59']" |
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
start-placeholder="开始日期" |
|
|
|
end-placeholder="结束日期" |
|
|
|
> |
|
|
|
</el-date-picker> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="margin-left: 26px"> |
|
|
|
<el-date-picker |
|
|
|
v-model="customtime" |
|
|
|
@change="confirmtime()" |
|
|
|
type="daterange" |
|
|
|
range-separator="-" |
|
|
|
:default-time="['00:00:00', '23:59:59']" |
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
start-placeholder="开始日期" |
|
|
|
end-placeholder="结束日期" |
|
|
|
> |
|
|
|
</el-date-picker> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="app-titel" style="margin-top: 15px"> |
|
|
|
<div class="div-lab"> |
|
|
|
<div style="margin-right: 20px" class="label">团队:</div> |
|
|
|
<el-select |
|
|
|
v-model="deptId" |
|
|
|
filterable |
|
|
|
@change="deptChange" |
|
|
|
placeholder="请选择" |
|
|
|
class="div-inp" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in options" |
|
|
|
:key="item.deptId" |
|
|
|
:label="item.name" |
|
|
|
:value="item.deptId" |
|
|
|
<div class="app-titel" style="margin-top: 15px"> |
|
|
|
<div class="div-lab"> |
|
|
|
<div style="margin-right: 20px" class="label">团队:</div> |
|
|
|
<el-select |
|
|
|
v-model="deptId" |
|
|
|
filterable |
|
|
|
@change="deptChange" |
|
|
|
placeholder="请选择" |
|
|
|
class="div-inp" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<div style="margin-left: 26px" class="div-lab"> |
|
|
|
<div style="margin-right: 20px" class="label">置业顾问:</div> |
|
|
|
<el-select |
|
|
|
v-model="accountId" |
|
|
|
filterable |
|
|
|
@change="repChange" |
|
|
|
placeholder="请选择" |
|
|
|
class="div-inp" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in repList" |
|
|
|
:key="item.accountId" |
|
|
|
:label="item.name" |
|
|
|
:value="item.accountId" |
|
|
|
<el-option |
|
|
|
v-for="item in options" |
|
|
|
:key="item.deptId" |
|
|
|
:label="item.name" |
|
|
|
:value="item.deptId" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<div style="margin-left: 26px" class="div-lab"> |
|
|
|
<div style="margin-right: 20px" class="label">置业顾问:</div> |
|
|
|
<el-select |
|
|
|
v-model="accountId" |
|
|
|
filterable |
|
|
|
@change="repChange" |
|
|
|
placeholder="请选择" |
|
|
|
class="div-inp" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<div style="margin-left: 20px"> |
|
|
|
<el-button type="primary" size="small" @click="screen()" |
|
|
|
>查询</el-button |
|
|
|
<el-option |
|
|
|
v-for="item in repList" |
|
|
|
:key="item.accountId" |
|
|
|
:label="item.name" |
|
|
|
:value="item.accountId" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</div> |
|
|
|
<div style="margin-left: 20px"> |
|
|
|
<el-button type="primary" size="small" @click="screen()" |
|
|
|
>查询</el-button |
|
|
|
> |
|
|
|
<el-button type="primary" size="small" @click="reset()" |
|
|
|
>清空</el-button |
|
|
|
> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
style="margin-left: auto; margin-right: 10px" |
|
|
|
v-if="sta_rec_downLoad" |
|
|
|
> |
|
|
|
<el-button type="primary" size="small" @click="reset()">清空</el-button> |
|
|
|
</div> |
|
|
|
<div style="margin-left: auto;margin-right:10px;" v-if="sta_rec_downLoad"> |
|
|
|
<el-button @click="downLoad">导出</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<!-- 表格 --> |
|
|
|
<div class="cen-tab"> |
|
|
|
<el-table :data="tableData" style="width: 100%"> |
|
|
|
<el-table :data="tableData" style="width: 100%"> |
|
|
|
<el-table-column prop="batchId" label="序号" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ |
|
|
@@ -102,7 +112,12 @@ |
|
|
|
}} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column width='90px' prop="accountName" label="日期" align="center"> |
|
|
|
<el-table-column |
|
|
|
width="90px" |
|
|
|
prop="accountName" |
|
|
|
label="日期" |
|
|
|
align="center" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ |
|
|
|
scope.$index == tableData.length - 1 |
|
|
@@ -111,18 +126,30 @@ |
|
|
|
}} |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="receptionCount" label="接待量" align="center" sortable> |
|
|
|
<template slot-scope="{row}"> |
|
|
|
{{row.receptionCount}}次 |
|
|
|
</template> |
|
|
|
<el-table-column |
|
|
|
prop="receptionCount" |
|
|
|
label="接待量" |
|
|
|
align="center" |
|
|
|
sortable |
|
|
|
> |
|
|
|
<template slot-scope="{ row }"> {{ row.receptionCount }}次 </template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="accountNum" label="接待顾问" align="center" sortable width="100"> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
prop="accountNum" |
|
|
|
label="接待顾问" |
|
|
|
align="center" |
|
|
|
sortable |
|
|
|
width="100" |
|
|
|
> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="activeCustomer" label="有效接待" align="center" sortable width="100"> |
|
|
|
<template slot-scope="{row}"> |
|
|
|
{{row.activeCustomer}}次 |
|
|
|
</template> |
|
|
|
<el-table-column |
|
|
|
prop="activeCustomer" |
|
|
|
label="有效接待" |
|
|
|
align="center" |
|
|
|
sortable |
|
|
|
width="100" |
|
|
|
> |
|
|
|
<template slot-scope="{ row }"> {{ row.activeCustomer }}次 </template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
prop="prohibitedCustomer" |
|
|
@@ -132,7 +159,13 @@ |
|
|
|
width="120" |
|
|
|
> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="sumDuration" label="接待时长(分)" align="center" sortable width="120"> |
|
|
|
<el-table-column |
|
|
|
prop="sumDuration" |
|
|
|
label="接待时长(分)" |
|
|
|
align="center" |
|
|
|
sortable |
|
|
|
width="120" |
|
|
|
> |
|
|
|
<template slot-scope="{ row }"> |
|
|
|
{{ Math.floor(row.sumDuration / 60) }}分钟 |
|
|
|
</template> |
|
|
@@ -144,14 +177,16 @@ |
|
|
|
width="150" |
|
|
|
sortable |
|
|
|
> |
|
|
|
<template slot-scope="{row}"> |
|
|
|
{{row.prohibitedZb}}% |
|
|
|
</template> |
|
|
|
<template slot-scope="{ row }"> {{ row.prohibitedZb }}% </template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="fraction" label="平均执行率" align="center" sortable width="110"> |
|
|
|
<template slot-scope="{row}"> |
|
|
|
{{row.fraction}}% |
|
|
|
</template> |
|
|
|
<el-table-column |
|
|
|
prop="fraction" |
|
|
|
label="平均执行率" |
|
|
|
align="center" |
|
|
|
sortable |
|
|
|
width="110" |
|
|
|
> |
|
|
|
<template slot-scope="{ row }"> {{ row.fraction }}% </template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
v-for="(item, idx) in tablist" |
|
|
@@ -162,9 +197,7 @@ |
|
|
|
sortable |
|
|
|
width="100" |
|
|
|
> |
|
|
|
<template slot-scope="{row}"> |
|
|
|
{{row[item.props]}}% |
|
|
|
</template> |
|
|
|
<template slot-scope="{ row }"> {{ row[item.props] }}% </template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="操作" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
@@ -192,12 +225,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-dialog |
|
|
|
title="详情" |
|
|
|
:visible.sync="dialogVisible" |
|
|
|
width="80%" |
|
|
|
|
|
|
|
> |
|
|
|
<el-dialog title="详情" :visible.sync="dialogVisible" width="80%"> |
|
|
|
<div class="cen-tab"> |
|
|
|
<el-table |
|
|
|
max-height="300" |
|
|
@@ -271,14 +299,13 @@ |
|
|
|
</el-pagination> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
import { exportMethodPost} from "@/util/util"; |
|
|
|
import { exportMethodPost } from "@/util/util"; |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
@@ -315,52 +342,54 @@ export default { |
|
|
|
teamAllLeve2: [], |
|
|
|
statDate: "", |
|
|
|
dialogVisible: false, |
|
|
|
houseList:[], |
|
|
|
role:'' |
|
|
|
houseList: [], |
|
|
|
role: "", |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
...mapGetters(["permissions"]), |
|
|
|
}, |
|
|
|
created() { |
|
|
|
|
|
|
|
this.sta_rec_downLoad = this.permissions["sta_rec_downLoad"]; |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.role=localStorage.getItem("orgType"); |
|
|
|
if(this.role==3){ |
|
|
|
this.role = localStorage.getItem("orgType"); |
|
|
|
if (this.role == 3) { |
|
|
|
this.houseId = localStorage.getItem("houseId"); |
|
|
|
this.tabtimetap(4); |
|
|
|
this.deptFindList(); |
|
|
|
}else{ |
|
|
|
this.zkhousePage() |
|
|
|
} else { |
|
|
|
this.zkhousePage(); |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
downLoad(){ |
|
|
|
downLoad() { |
|
|
|
let obj = { |
|
|
|
houseId: this.houseId, |
|
|
|
statDateStart: this.statDateStart, |
|
|
|
statDateEnd: this.statDateEnd, |
|
|
|
// current: this.current, |
|
|
|
// size: this.size, |
|
|
|
deptId: this.deptId, |
|
|
|
accountId: this.accountId, |
|
|
|
dateType: this.dateType == 7 ? null : this.dateType, |
|
|
|
type:1 |
|
|
|
houseId: this.houseId, |
|
|
|
statDateStart: this.statDateStart, |
|
|
|
statDateEnd: this.statDateEnd, |
|
|
|
type: 1, |
|
|
|
current: 1, |
|
|
|
size: 1, |
|
|
|
deptId: this.deptId, |
|
|
|
accountId: this.accountId, |
|
|
|
dateType: this.dateType == 7 ? null : this.dateType, |
|
|
|
}; |
|
|
|
exportMethodPost('autoSR/cusStageStatistics/receptionStatisticsExport','接待统计',obj) |
|
|
|
exportMethodPost( |
|
|
|
"autoSR/cusStageStatistics/receptionStatisticsExport", |
|
|
|
"接待统计", |
|
|
|
obj |
|
|
|
); |
|
|
|
}, |
|
|
|
houseChange(){ |
|
|
|
this.customtime=[]; |
|
|
|
this.TimetoAhoose=4; |
|
|
|
this.statDateStart= ''; |
|
|
|
this.deptId='' |
|
|
|
this.accountId='' |
|
|
|
this.statDateEnd= ''; |
|
|
|
this.tabtimetap(4); |
|
|
|
houseChange() { |
|
|
|
this.customtime = []; |
|
|
|
this.TimetoAhoose = 4; |
|
|
|
this.statDateStart = ""; |
|
|
|
this.deptId = ""; |
|
|
|
this.accountId = ""; |
|
|
|
this.statDateEnd = ""; |
|
|
|
this.tabtimetap(4); |
|
|
|
this.deptFindList(); |
|
|
|
|
|
|
|
}, |
|
|
|
zkhousePage() { |
|
|
|
this.$api.api |
|
|
@@ -370,8 +399,8 @@ export default { |
|
|
|
.then((res) => { |
|
|
|
this.houseList = res.data; |
|
|
|
this.houseId = res.data[0].id; |
|
|
|
this.tabtimetap(4); |
|
|
|
this.deptFindList(); |
|
|
|
this.tabtimetap(4); |
|
|
|
this.deptFindList(); |
|
|
|
}); |
|
|
|
}, |
|
|
|
toDetail(row) { |
|
|
@@ -390,7 +419,7 @@ export default { |
|
|
|
size: this.size, |
|
|
|
deptId: this.deptId, |
|
|
|
accountId: this.accountId, |
|
|
|
type:2 |
|
|
|
type: 2, |
|
|
|
}) |
|
|
|
.then((res) => { |
|
|
|
this.detailData = res.data.records; |
|
|
@@ -419,27 +448,27 @@ export default { |
|
|
|
}, |
|
|
|
deptFindList() { |
|
|
|
// 获取团队 |
|
|
|
this.$api.http.overviewfindList({ |
|
|
|
this.$api.http |
|
|
|
.overviewfindList({ |
|
|
|
houseId: this.houseId, |
|
|
|
}) |
|
|
|
.then((res) => { |
|
|
|
let userinfo=JSON.parse(sessionStorage.getItem("zk-userInfo")) |
|
|
|
if(userinfo.content.deptType==1){ |
|
|
|
this.options.push(...res.data); |
|
|
|
this.deptId= this.options[0].deptId |
|
|
|
}else{ |
|
|
|
this.options = [ |
|
|
|
let userinfo = JSON.parse(sessionStorage.getItem("zk-userInfo")); |
|
|
|
if (userinfo.content.deptType == 1) { |
|
|
|
this.options.push(...res.data); |
|
|
|
this.deptId = this.options[0].deptId; |
|
|
|
} else { |
|
|
|
this.options = [ |
|
|
|
{ |
|
|
|
name: "全部", |
|
|
|
deptId: "", |
|
|
|
}, |
|
|
|
]; |
|
|
|
this.options.push(...res.data); |
|
|
|
this.deptId='' |
|
|
|
this.deptId = ""; |
|
|
|
} |
|
|
|
this.receptionStatisticsAllAccount(); |
|
|
|
this.accountRank(); |
|
|
|
|
|
|
|
}); |
|
|
|
}, |
|
|
|
deptChange() { |
|
|
@@ -474,7 +503,7 @@ export default { |
|
|
|
deptId: this.deptId, |
|
|
|
accountId: this.accountId, |
|
|
|
dateType: this.dateType == 7 ? null : this.dateType, |
|
|
|
type:1 |
|
|
|
type: 1, |
|
|
|
}) |
|
|
|
.then((res) => { |
|
|
|
this.tableData = res.data.records; |
|
|
@@ -547,7 +576,7 @@ export default { |
|
|
|
this.statDateStart = ""; |
|
|
|
this.statDateEnd = ""; |
|
|
|
this.dateType = index; |
|
|
|
this.customtime=[]; |
|
|
|
this.customtime = []; |
|
|
|
this.init(); |
|
|
|
}, |
|
|
|
dealData(arr) { |
|
|
@@ -604,13 +633,13 @@ export default { |
|
|
|
// min-width: 100px; |
|
|
|
text-align: right; |
|
|
|
} |
|
|
|
.titel-text { |
|
|
|
height: 100%; |
|
|
|
font-size: 16px; |
|
|
|
font-weight: 600; |
|
|
|
color: #32363d; |
|
|
|
text-indent: 30px; |
|
|
|
} |
|
|
|
.titel-text { |
|
|
|
height: 100%; |
|
|
|
font-size: 16px; |
|
|
|
font-weight: 600; |
|
|
|
color: #32363d; |
|
|
|
text-indent: 30px; |
|
|
|
} |
|
|
|
.toptimeqhuan { |
|
|
|
height: 30px; |
|
|
|
background: #ffffff; |
|
|
|