Pārlūkot izejas kodu

提交修改

newStyle
douzhuo pirms 2 gadiem
vecāks
revīzija
094d1cfa4b
5 mainītis faili ar 987 papildinājumiem un 360 dzēšanām
  1. +39
    -0
      src/views/Statistics/BuildingContrast.vue
  2. +273
    -176
      src/views/Statistics/MentoringAbility.vue
  3. +40
    -1
      src/views/Statistics/ReceptionOverview.vue
  4. +409
    -107
      src/views/Statistics/TheTeamCompared.vue
  5. +226
    -76
      src/views/Statistics/index.vue

+ 39
- 0
src/views/Statistics/BuildingContrast.vue Parādīt failu

@@ -373,6 +373,20 @@ export default {
this.houseId = localStorage.getItem("houseId");
this.orgCode = localStorage.getItem("orgCode");
this.gethouseData();
if (this.TimetoAhoose == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

},
methods: {
getSummaries(param) {
@@ -638,6 +652,31 @@ export default {
//切换时间
tabtimetap(index) {
this.TimetoAhoose = index;
if (index == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

if (index == 6) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 30;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
this.statDateStart = "";
this.statDateEnd = "";
this.page = 1;


+ 273
- 176
src/views/Statistics/MentoringAbility.vue Parādīt failu

@@ -52,7 +52,7 @@
</div> -->
<div class="app-titel projectBackend">
<div class="titel-text">筛选日期:</div>
<div style="margin-left: 14px;">
<div style="margin-left: 14px">
<el-button
:class="{ 'el-button--primary': TimetoAhoose == 0 }"
@click="tabtimetap(0)"
@@ -70,9 +70,17 @@
>
</div>
<div style="margin-left: 26px">
<el-date-picker v-model="customtime" @change="confirmtime()" type="daterange" :clearable="false"
range-separator="-" :default-time="['00:00:00', '23:59:59']" value-format="yyyy-MM-dd"
start-placeholder="开始日期" end-placeholder="结束日期">
<el-date-picker
v-model="customtime"
@change="confirmtime()"
type="daterange"
:clearable="false"
range-separator="-"
:default-time="['00:00:00', '23:59:59']"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</div>
@@ -114,22 +122,30 @@
</div>
</div>

<div :style="{'margin-top':role != 3?'170px':'120px'}" v-if="consultantlistid">
<div
:style="{ 'margin-top': role != 3 ? '170px' : '120px' }"
v-if="consultantlistid"
>
<div class="app-box-san">
<div class="zuo">
<div class="title">
<div class="text1">接待量
<el-tooltip effect="light" content="筛选时间内,已经结束的接待条数,不包含待接单;" placement="bottom-end">
<div class="text1">
接待量
<el-tooltip
effect="light"
content="筛选时间内,已经结束的接待条数,不包含待接单;"
placement="bottom-end"
>
<i class="pop"></i>
</el-tooltip>
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ consultantname }}</div>
<div class="text1-2">{{ datalistobj1.avgA }}次</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ Packname }}</div>
<div class="text1-2">{{ datalistobj1.avgB }}次</div>
</div>
@@ -143,11 +159,11 @@
<div class="text1">接待时长</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ consultantname }}</div>
<div class="text1-2">{{ datalistobj2.avgA }}分钟</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ Packname }}</div>
<div class="text1-2">{{ datalistobj2.avgB }}分钟</div>
</div>
@@ -180,11 +196,11 @@
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ consultantname }}</div>
<div class="text1-2">{{ datalistobj3.avgA }}%</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ Packname }}</div>
<div class="text1-2">{{ datalistobj3.avgB }}%</div>
</div>
@@ -198,26 +214,43 @@
<div class="text1">销讲能力雷达图</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">&nbsp;</div>
<div class="text1-2">&nbsp;</div>
</div>
</div>
<div v-if="data4flag" style="height: 350px; width: 94%; margin: 0 auto">
<div
v-if="data4flag"
style="height: 350px; width: 94%; margin: 0 auto"
>
<div id="data4" style="height: 350px"></div>
</div>
<div v-else style="height: 350px; width: 94%; margin: 0 auto;text-align:center;color: #999999;">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
</div>
<div
v-else
style="
height: 350px;
width: 94%;
margin: 0 auto;
text-align: center;
color: #999999;
"
>
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>

<div class="app-box-san">
<div class="zuo">
<div class="title">
<div class="text1">违禁接待次数
<el-tooltip effect="light" content="筛选时间内,出现违禁的接待次数,不包含待接单/无效接待/无效违禁;" placement="bottom-end">
<div class="text1">
违禁接待次数
<el-tooltip
effect="light"
content="筛选时间内,出现违禁的接待次数,不包含待接单/无效接待/无效违禁;"
placement="bottom-end"
>
<i class="pop"></i>
</el-tooltip>
</div>
@@ -239,11 +272,11 @@
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ consultantname }}</div>
<div class="text1-2">{{ datalistobj5.avgA }}次</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">{{ Packname }}</div>
<div class="text1-2">{{ datalistobj5.avgB }}次</div>
</div>
@@ -257,19 +290,30 @@
<div class="text1">违禁话术雷达图</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">&nbsp;</div>
<div class="text1-2">&nbsp;</div>
</div>
</div>
<div v-if="data6flag" style="height: 350px; width: 94%; margin: 0 auto">
<div id="data6" style="height: 350px"></div>
<div
v-if="data6flag"
style="height: 350px; width: 94%; margin: 0 auto"
>
<div id="data6" style="height: 350px"></div>
</div>
<div
v-else
style="
height: 350px;
width: 94%;
margin: 0 auto;
text-align: center;
color: #999999;
"
>
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
<div v-else style="height: 350px; width: 94%; margin: 0 auto;text-align:center;color: #999999;">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
</div>

</div>
</div>
<!-- 表格 -->
@@ -287,44 +331,58 @@
style="margin-left: auto; margin-right: 10px"
v-if="sta_men_downLoad"
>
<el-button @click="downLoad" icon="el-icon-download">导出</el-button>
<el-button @click="downLoad" icon="el-icon-download"
>导出</el-button
>
</div>
</div>
<div style="padding:10px;background: #fff;">
<el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" stripe style="width: 100%" height="640">
<el-table-column prop="statDate" label="日期" align="center">
<template slot-scope="scope">
{{
scope.$index == tableData.length - 1
? "合计/平均"
: scope.row.statDate.substring(0, 10)
}}
<!-- {{scope.$index}} -->
</template>
</el-table-column>
<el-table-column prop="activeCustomer" label="接待量" align="center">
<template slot-scope="{ row }">
{{ row.activeCustomer }}次
</template>
</el-table-column>
<el-table-column
v-if="tabFlag == 1"
prop="prohibitedCustomer"
label="违禁接待次数"
align="center"
<div style="padding: 10px; background: #fff">
<el-table
:header-cell-style="{ background: '#F5F7FA', color: '#333333' }"
:data="tableData"
stripe
style="width: 100%"
height="640"
>
<template slot-scope="{ row }">
{{ row.prohibitedCustomer }}次
</template>
</el-table-column>
<el-table-column
v-if="tabFlag == 1"
prop="prohibitedZb"
label="违禁接待占比"
align="center"
>
<template slot-scope="{ row }"> {{ row.prohibitedZb }}% </template>
<!-- </el-table-column>
<el-table-column prop="statDate" label="日期" align="center">
<template slot-scope="scope">
{{
scope.$index == tableData.length - 1
? "合计/平均"
: scope.row.statDate.substring(0, 10)
}}
<!-- {{scope.$index}} -->
</template>
</el-table-column>
<el-table-column
prop="activeCustomer"
label="接待量"
align="center"
>
<template slot-scope="{ row }">
{{ row.activeCustomer }}次
</template>
</el-table-column>
<el-table-column
v-if="tabFlag == 1"
prop="prohibitedCustomer"
label="违禁接待次数"
align="center"
>
<template slot-scope="{ row }">
{{ row.prohibitedCustomer }}次
</template>
</el-table-column>
<el-table-column
v-if="tabFlag == 1"
prop="prohibitedZb"
label="违禁接待占比"
align="center"
>
<template slot-scope="{ row }">
{{ row.prohibitedZb }}%
</template>
<!-- </el-table-column>
<el-table-column
v-if="tabFlag == 1"
prop="receivableEquipmentCount"
@@ -338,18 +396,18 @@
label="过度保证次数"
align="center"
> -->
</el-table-column>
<el-table-column
v-if="tabFlag == 0"
prop="realityEquipmentCount"
label="接待时长"
align="center"
>
<template slot-scope="{ row }">
{{ row.sumDuration }}分钟
</template>
</el-table-column>
<!-- <el-table-column v-if="tabFlag == 0" prop="acceptanceNum" label="品牌介绍执行率" align="center">
</el-table-column>
<el-table-column
v-if="tabFlag == 0"
prop="realityEquipmentCount"
label="接待时长"
align="center"
>
<template slot-scope="{ row }">
{{ row.sumDuration }}分钟
</template>
</el-table-column>
<!-- <el-table-column v-if="tabFlag == 0" prop="acceptanceNum" label="品牌介绍执行率" align="center">
</el-table-column>
<el-table-column
v-if="tabFlag == 0"
@@ -363,40 +421,42 @@
</el-table-column>
<el-table-column prop="remark" v-if="tabFlag == 1" label="...执行性次数" align="center">
</el-table-column> -->
<el-table-column
v-if="tabFlag == 0"
prop="fraction"
label="平均执行率"
align="center"
>
<template slot-scope="{ row }"> {{ row.fraction }}% </template>
</el-table-column>
<el-table-column
v-for="(item, idx) in tablist"
:key="idx"
:prop="item.props"
:label="item.label"
align="center"
>
<template slot-scope="{ row }">
<span v-if="tabFlag == 1"> {{ row[item.props] }}次</span>
<span v-else> {{ row[item.props] }}%</span>
<!-- {{row[item.props]}}% -->
</template>
</el-table-column>
</el-table>
<div style="display: flex; justify-content: flex-end; margin-top: 10px">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="current"
:page-sizes="[10, 30, 50]"
:page-size="size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
<el-table-column
v-if="tabFlag == 0"
prop="fraction"
label="平均执行率"
align="center"
>
<template slot-scope="{ row }"> {{ row.fraction }}% </template>
</el-table-column>
<el-table-column
v-for="(item, idx) in tablist"
:key="idx"
:prop="item.props"
:label="item.label"
align="center"
>
<template slot-scope="{ row }">
<span v-if="tabFlag == 1"> {{ row[item.props] }}次</span>
<span v-else> {{ row[item.props] }}%</span>
<!-- {{row[item.props]}}% -->
</template>
</el-table-column>
</el-table>
<div
style="display: flex; justify-content: flex-end; margin-top: 10px"
>
</el-pagination>
</div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="current"
:page-sizes="[10, 30, 50]"
:page-size="size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
</div>
@@ -404,7 +464,9 @@
<div v-else class="noData">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;padding-top: 100px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px; padding-top: 100px">
暂无数据
</div>
</div>
</div>
</div>
@@ -415,7 +477,7 @@ import * as echarts from "echarts";
import { mapGetters } from "vuex";
import { exportMethodPost } from "@/util/util";

import colorTheme from "../../util/theme.color"
import colorTheme from "../../util/theme.color";
import color from "../../mixins/color";
export default {
data() {
@@ -480,8 +542,8 @@ export default {
tablist: [],
houseList: [],
role: "",
data6flag:true,
data4flag:true
data6flag: true,
data4flag: true,
};
},
computed: {
@@ -498,6 +560,19 @@ export default {
} else {
this.zkhousePage();
}

if (this.TimetoAhoose == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
},
methods: {
downLoad() {
@@ -508,7 +583,11 @@ export default {
accountId: this.consultantlistid,
dateType: this.TimetoAhoose == 7 ? null : this.TimetoAhoose,
};
exportMethodPost('autoSR/cusStageStatistics/prohibitedStatisticsExport','顾问能力',obj)
exportMethodPost(
"autoSR/cusStageStatistics/prohibitedStatisticsExport",
"顾问能力",
obj
);
},
init() {
this.getAccount();
@@ -782,7 +861,7 @@ export default {
pamaet.dateType = this.TimetoAhoose;
}
this.$api.http.accountData(pamaet).then((res) => {
console.log(res.data,'数据');
console.log(res.data, "数据");
this.datalistobj6 = {
listA: res.data.listA || [],
listB: res.data.listB || [],
@@ -884,8 +963,8 @@ export default {
let list = res.data || [];

if (list.length == 0) {
this.consultantlist = list
this.consultantlistid=''
this.consultantlist = list;
this.consultantlistid = "";
this.datalistobj1 = {
avgA: "",
avgB: "",
@@ -970,12 +1049,12 @@ export default {
legend: {
data: [this.consultantname, this.Packname],
top: "6",
icon:"roundRect"
icon: "roundRect",
},
grid: {
left: 10,
right: 10,
bottom:18,
bottom: 18,

containLabel: true,
},
@@ -1003,15 +1082,12 @@ export default {
type: "line",
smooth: true,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{ offset: 0, color: colorTheme.colorArr[0] },
{ offset: 1, color: "#fff" }
]
),
opacity: 0.1
}
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: colorTheme.colorArr[0] },
{ offset: 1, color: "#fff" },
]),
opacity: 0.1,
},
},
{
name: this.Packname,
@@ -1019,15 +1095,12 @@ export default {
type: "line",
smooth: true,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,
[
{ offset: 0, color: colorTheme.colorArr[1] },
{ offset: 1, color: "#fff" }
]
),
opacity: 0.1
}
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: colorTheme.colorArr[1] },
{ offset: 1, color: "#fff" },
]),
opacity: 0.1,
},
},
],
};
@@ -1138,7 +1211,7 @@ export default {
data: [this.consultantname, this.Packname],
right: "10",
top: "10",
icon:"roundRect"
icon: "roundRect",
},
color: ["#2671E2", "#F3787B"],
radar: {
@@ -1163,20 +1236,18 @@ export default {
},
],
};
try{
option && myChart.setOption(option);
window.addEventListener("resize", () => {
myChart.resize();
this[data1+'flag']=true
});
}
catch(err){
console.log(err,data1);
this[data1+'flag']=false
try {
option && myChart.setOption(option);
window.addEventListener("resize", () => {
myChart.resize();
this[data1 + "flag"] = true;
});
} catch (err) {
console.log(err, data1);
this[data1 + "flag"] = false;
echarts.init(document.getElementById(data1)).dispose();
console.log(this[data1+'flag']);
console.log(this[data1 + "flag"]);
}

},
handleCurrentChange(e) {
this.current = e;
@@ -1195,8 +1266,34 @@ export default {
//切换时间
tabtimetap(index) {
this.TimetoAhoose = index;
if (index == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

if (index == 6) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 30;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
this.statDateStart = "";
this.statDateEnd = "";

this.init();
},
tabFlagChange(idx) {
@@ -1263,7 +1360,7 @@ export default {
.app-top {
// width: 100%;
width: calc(100% - 270px);
position: fixed;
position: fixed;
z-index: 999;
margin-top: -16px;
background: #ffffff;
@@ -1327,8 +1424,8 @@ export default {
font-weight: 500;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
display: flex;
align-items: center;
}
.text2 {
flex: 1;
@@ -1356,8 +1453,8 @@ export default {
font-weight: 500;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
display: flex;
align-items: center;
}
.text2 {
flex: 1;
@@ -1440,40 +1537,40 @@ export default {
margin-left: 15px;
min-width: 40px;
}
.noData{
width: 100%;
// height: 60vh;
height: 500px;
background: #fff;
text-align: center;
margin-top: 20px;
overflow: hidden;
.noData {
width: 100%;
// height: 60vh;
height: 500px;
background: #fff;
text-align: center;
margin-top: 20px;
overflow: hidden;
}
.imgboxc{
.imgboxc {
margin-top: 100px;
color: #999999;
}
/deep/ .el-table__header-wrapper{
thead{
tr{
th{
background: #F5F7FA;
/deep/ .el-table__header-wrapper {
thead {
tr {
th {
background: #f5f7fa;
color: #333333;
}
}
}
}
.pop{
.pop {
display: inline-block;
width: 18px;
height: 18px;
background: url('../../../public/img/pop.png') no-repeat;
background: url("../../../public/img/pop.png") no-repeat;
background-size: 100%;
margin-left: 6px;
}

/deep/ .el-button--primary{
background: #2671E2 !important;
border: 1px solid #2671E2 !important;
/deep/ .el-button--primary {
background: #2671e2 !important;
border: 1px solid #2671e2 !important;
}
</style>

+ 40
- 1
src/views/Statistics/ReceptionOverview.vue Parādīt failu

@@ -772,6 +772,19 @@ export default {
} else {
this.zkhousePage();
}
if (this.TimetoAhoose == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
},
methods: {
// 选项卡切换事件
@@ -1661,9 +1674,35 @@ export default {
//时间选择
tabtimetap(index) {
this.TimetoAhoose = index;
if (index == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

if (index == 6) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 30;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
this.fromobj.statDateStart = "";
this.fromobj.statDateEnd = "";
this.customtime = [];
this.overviewreceptionOverview();
this.overviewreceptionData();
this.overviewteamOrAccountSellingTrends();


+ 409
- 107
src/views/Statistics/TheTeamCompared.vue Parādīt failu

@@ -5,8 +5,18 @@
<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-option v-for="item in houseList" :key="item.id" :label="item.propertyName" :value="item.id">
<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"
>
</el-option>
</el-select>
</div>
@@ -37,7 +47,7 @@
</div> -->
<div class="app-titel projectBackend">
<div class="titel-text">筛选日期:</div>
<div style="margin-left: 14px;">
<div style="margin-left: 14px">
<el-button
:class="{ 'el-button--primary': TimetoAhoose == 0 }"
@click="tabtimetap(0)"
@@ -55,20 +65,35 @@
>
</div>
<div style="margin-left: 26px">
<el-date-picker v-model="customtime" @change="confirmtime()" type="daterange" :clearable="false"
range-separator="-" :default-time="['00:00:00', '23:59:59']" value-format="yyyy-MM-dd"
start-placeholder="开始日期" end-placeholder="结束日期">
<el-date-picker
v-model="customtime"
@change="confirmtime()"
type="daterange"
:clearable="false"
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>
<!-- 表格 -->
<div class="cen-tab" :style="{'margin-top':role != 3?'110px':'70px'}">
<div
class="cen-tab"
:style="{ 'margin-top': role != 3 ? '110px' : '70px' }"
>
<div style="overflow: auto">
<table>
<tbody>
<tr style="background: #F5F7FA;color: #333333;">
<td v-for="(item, index) in tablsitdata1" :key="index" class="theadtd">
<tr style="background: #f5f7fa; color: #333333">
<td
v-for="(item, index) in tablsitdata1"
:key="index"
class="theadtd"
>
{{ item.name }}
</td>
</tr>
@@ -88,7 +113,11 @@
</td>
<td class="theadtd">{{ item.fraction || 0 }}%</td>
<td class="theadtd">{{ item.prohibitedZb || 0 }}%</td>
<td class="theadtd" v-for="(che, ind) in item.resultsList" :key="ind">
<td
class="theadtd"
v-for="(che, ind) in item.resultsList"
:key="ind"
>
{{ che.zxl }}%
</td>
</tr>
@@ -100,42 +129,97 @@
<div class="app-box-san">
<div class="zuo">
<div class="title">
<div class="text1">接待量排名
<el-tooltip effect="light" content="筛选时间内,已经结束的接待条数,不包含待接单;" placement="bottom-end">
<div class="text1">
接待量排名
<el-tooltip
effect="light"
content="筛选时间内,已经结束的接待条数,不包含待接单;"
placement="bottom-end"
>
<i class="pop"></i>
</el-tooltip>
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">团队总数</div>
<div class="text1-2">{{ teamobj1.num || 0 }}个</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">均值</div>
<div class="text1-2">{{ teamobj1.avg || 0 }}个</div>
</div>
</div>
<div v-if="teamobj1.list.length != 0" style="width: 94%; margin: 0 auto">
<div
v-if="teamobj1.list.length != 0"
style="width: 94%; margin: 0 auto"
>
<div class="jinbox" v-for="(item, i) in teamobj1.list" :key="i">
<!-- <div class="jinboxtit">{{ item.name }}</div> -->
<span class="sequenceNum" :style="{
'background': i + 1 == 1 ? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)' : i + 1 == 2 ? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)' : '#E5F0FF',
'color': i + 1 == 1 ? '#FFF' : i + 1 == 2 ? '#FFF' : i + 1 == 3 ? '#FFF' : '#333',
'box-shadow': i + 1 == 1 ? '0px 0px 6px 1px #F54D3F' : i + 1 == 2 ? '0px 0px 6px 1px #FF981E' : i + 1 == 3 ? '0px 0px 6px 1px #FFCC00' : '#E5F0FF',
'border': i + 1 == 1 ? '1px solid #FFCAC6' : i + 1 == 2 ? '1px solid #FFD6AA' : i + 1 == 3 ? '1px solid #FFEEAC' : 'none',
}">{{ i + 1 }}</span>
<span
class="sequenceNum"
:style="{
background:
i + 1 == 1
? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)'
: i + 1 == 2
? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)'
: '#E5F0FF',
color:
i + 1 == 1
? '#FFF'
: i + 1 == 2
? '#FFF'
: i + 1 == 3
? '#FFF'
: '#333',
'box-shadow':
i + 1 == 1
? '0px 0px 6px 1px #F54D3F'
: i + 1 == 2
? '0px 0px 6px 1px #FF981E'
: i + 1 == 3
? '0px 0px 6px 1px #FFCC00'
: '#E5F0FF',
border:
i + 1 == 1
? '1px solid #FFCAC6'
: i + 1 == 2
? '1px solid #FFD6AA'
: i + 1 == 3
? '1px solid #FFEEAC'
: 'none',
}"
>{{ i + 1 }}</span
>
<div class="jinboxtit">
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
<el-tooltip
class="item"
effect="dark"
:content="item.name"
placement="top-start"
>
<span class="name">{{ item.name }}</span>
</el-tooltip>
</div>
<div class="jinbox-box">
<!-- <div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div> -->
<div class="boxbaifenbi"
:style="{ 'background': i + 1 == 1 ? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)' : i + 1 == 2 ? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)' : 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)', 'width': item.zxl1 + '%' }">
</div>

<div
class="boxbaifenbi"
:style="{
background:
i + 1 == 1
? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)'
: i + 1 == 2
? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)'
: 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)',
width: item.zxl1 + '%',
}"
></div>
</div>
<div class="jinboxbott">{{ item.zxl }}个</div>
</div>
@@ -143,7 +227,7 @@
<div class="nulllist" v-if="teamobj1.list.length == 0">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -152,39 +236,90 @@
<div class="text1">接待时长排名</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">团队总数</div>
<div class="text1-2">{{ teamobj2.num || 0 }}个</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">均值</div>
<div class="text1-2">
{{ Math.floor(teamobj2.avg / 60) || 0 }}分钟
</div>
</div>
</div>
<div v-if="teamobj2.list.length != 0" style="width: 94%; margin: 0 auto">
<div
v-if="teamobj2.list.length != 0"
style="width: 94%; margin: 0 auto"
>
<div class="jinbox" v-for="(item, i) in teamobj2.list" :key="i">
<!-- <div class="jinboxtit">{{ item.name }}</div>
<div class="jinbox-box">
<div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div>
</div> -->
<span class="sequenceNum" :style="{
'background': i + 1 == 1 ? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)' : i + 1 == 2 ? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)' : '#E5F0FF',
'color': i + 1 == 1 ? '#FFF' : i + 1 == 2 ? '#FFF' : i + 1 == 3 ? '#FFF' : '#333',
'box-shadow': i + 1 == 1 ? '0px 0px 6px 1px #F54D3F' : i + 1 == 2 ? '0px 0px 6px 1px #FF981E' : i + 1 == 3 ? '0px 0px 6px 1px #FFCC00' : '#E5F0FF',
'border': i + 1 == 1 ? '1px solid #FFCAC6' : i + 1 == 2 ? '1px solid #FFD6AA' : i + 1 == 3 ? '1px solid #FFEEAC' : 'none',
}">{{ i + 1 }}</span>
<span
class="sequenceNum"
:style="{
background:
i + 1 == 1
? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)'
: i + 1 == 2
? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)'
: '#E5F0FF',
color:
i + 1 == 1
? '#FFF'
: i + 1 == 2
? '#FFF'
: i + 1 == 3
? '#FFF'
: '#333',
'box-shadow':
i + 1 == 1
? '0px 0px 6px 1px #F54D3F'
: i + 1 == 2
? '0px 0px 6px 1px #FF981E'
: i + 1 == 3
? '0px 0px 6px 1px #FFCC00'
: '#E5F0FF',
border:
i + 1 == 1
? '1px solid #FFCAC6'
: i + 1 == 2
? '1px solid #FFD6AA'
: i + 1 == 3
? '1px solid #FFEEAC'
: 'none',
}"
>{{ i + 1 }}</span
>
<div class="jinboxtit">
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
<el-tooltip
class="item"
effect="dark"
:content="item.name"
placement="top-start"
>
<span class="name">{{ item.name }}</span>
</el-tooltip>
</div>
<div class="jinbox-box">
<!-- <div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div> -->
<div class="boxbaifenbi"
:style="{ 'background': i + 1 == 1 ? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)' : i + 1 == 2 ? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)' : 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)', 'width': item.zxl1 + '%' }">
</div>
<div
class="boxbaifenbi"
:style="{
background:
i + 1 == 1
? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)'
: i + 1 == 2
? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)'
: 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)',
width: item.zxl1 + '%',
}"
></div>
</div>
<div class="jinboxbott">{{ item.zxl }}分钟</div>
</div>
@@ -192,7 +327,7 @@
<div class="nulllist" v-if="teamobj2.list.length == 0">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -203,42 +338,101 @@
<div class="title">
<div class="text1">销讲执行率</div>
<div class="text2">
<el-select @change="teamAllLevelidtap()" style="width: 90%; margin: 0 auto" v-model="teamAllLevelid"
placeholder="请选择">
<el-option v-for="item in teamAllLevel" :key="item.value" :label="item.name" :value="item.value">
<el-select
@change="teamAllLevelidtap()"
style="width: 90%; margin: 0 auto"
v-model="teamAllLevelid"
placeholder="请选择"
>
<el-option
v-for="item in teamAllLevel"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">团队总数</div>
<div class="text1-2">{{ teamobj3.num || 0 }}个</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">均值</div>
<div class="text1-2">{{ teamobj3.avg || 0 }}%</div>
</div>
</div>
<div v-if="teamobj3.list.length != 0" style="width: 94%; margin: 0 auto">
<div
v-if="teamobj3.list.length != 0"
style="width: 94%; margin: 0 auto"
>
<div class="jinbox" v-for="(item, i) in teamobj3.list" :key="i">
<span class="sequenceNum" :style="{
'background': i + 1 == 1 ? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)' : i + 1 == 2 ? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)' : '#E5F0FF',
'color': i + 1 == 1 ? '#FFF' : i + 1 == 2 ? '#FFF' : i + 1 == 3 ? '#FFF' : '#333',
'box-shadow': i + 1 == 1 ? '0px 0px 6px 1px #F54D3F' : i + 1 == 2 ? '0px 0px 6px 1px #FF981E' : i + 1 == 3 ? '0px 0px 6px 1px #FFCC00' : '#E5F0FF',
'border': i + 1 == 1 ? '1px solid #FFCAC6' : i + 1 == 2 ? '1px solid #FFD6AA' : i + 1 == 3 ? '1px solid #FFEEAC' : 'none',
}">{{ i + 1 }}</span>
<span
class="sequenceNum"
:style="{
background:
i + 1 == 1
? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)'
: i + 1 == 2
? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)'
: '#E5F0FF',
color:
i + 1 == 1
? '#FFF'
: i + 1 == 2
? '#FFF'
: i + 1 == 3
? '#FFF'
: '#333',
'box-shadow':
i + 1 == 1
? '0px 0px 6px 1px #F54D3F'
: i + 1 == 2
? '0px 0px 6px 1px #FF981E'
: i + 1 == 3
? '0px 0px 6px 1px #FFCC00'
: '#E5F0FF',
border:
i + 1 == 1
? '1px solid #FFCAC6'
: i + 1 == 2
? '1px solid #FFD6AA'
: i + 1 == 3
? '1px solid #FFEEAC'
: 'none',
}"
>{{ i + 1 }}</span
>
<div class="jinboxtit">
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
<el-tooltip
class="item"
effect="dark"
:content="item.name"
placement="top-start"
>
<span class="name">{{ item.name }}</span>
</el-tooltip>
</div>
<div class="jinbox-box">
<!-- <div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div> -->
<div class="boxbaifenbi"
:style="{ 'background': i + 1 == 1 ? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)' : i + 1 == 2 ? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)' : 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)', 'width': item.zxl + '%' }">
</div>

<div
class="boxbaifenbi"
:style="{
background:
i + 1 == 1
? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)'
: i + 1 == 2
? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)'
: 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)',
width: item.zxl + '%',
}"
></div>
</div>
<div class="jinboxbott">{{ item.zxl }}%</div>
</div>
@@ -246,7 +440,7 @@
<div class="nulllist" v-if="teamobj3.list.length == 0">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -254,11 +448,15 @@
<div class="title">
<div class="text1">销讲能力雷达图</div>
</div>
<div id="main" v-if="isshowcd2 == true" style="width: 94%; margin: 0 auto"></div>
<div
id="main"
v-if="isshowcd2 == true"
style="width: 94%; margin: 0 auto"
></div>
<div class="nulllist" v-if="isshowcd2 == false">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -267,52 +465,116 @@
<div class="app-box-san">
<div class="zuo">
<div class="title">
<div class="text1">违禁接待次数
<el-tooltip effect="light" content="筛选时间内,出现违禁的接待次数,不包含待接单/无效接待/无效违禁;" placement="bottom-end">
<div class="text1">
违禁接待次数
<el-tooltip
effect="light"
content="筛选时间内,出现违禁的接待次数,不包含待接单/无效接待/无效违禁;"
placement="bottom-end"
>
<i class="pop"></i>
</el-tooltip>
</div>
<div class="text2">
<el-select @change="teamAllLeve2tap()" style="width: 90%; margin: 0 auto" v-model="teamAllLeve2id"
placeholder="请选择">
<el-option v-for="item in teamAllLeve2" :key="item.value" :label="item.name" :value="item.value">
<el-select
@change="teamAllLeve2tap()"
style="width: 90%; margin: 0 auto"
v-model="teamAllLeve2id"
placeholder="请选择"
>
<el-option
v-for="item in teamAllLeve2"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
</div>
</div>
<div class="hejisan">
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">团队总数</div>
<div class="text1-2">{{ teamobj5.num || 0 }}个</div>
</div>
<div class="sanbox1" style="width: 50%;text-align: center;">
<div class="sanbox1" style="width: 50%; text-align: center">
<div class="text1-1">均值</div>
<div class="text1-2">{{ teamobj5.avg || 0 }}次</div>
</div>
</div>
<div v-if="teamobj5.list.length != 0" style="width: 94%; margin: 0 auto">
<div
v-if="teamobj5.list.length != 0"
style="width: 94%; margin: 0 auto"
>
<div class="jinbox" v-for="(item, i) in teamobj5.list" :key="i">
<!-- <div class="jinboxtit">{{ item.name }}</div>
<div class="jinbox-box">
<div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div>
</div> -->
<span class="sequenceNum" :style="{
'background': i + 1 == 1 ? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)' : i + 1 == 2 ? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)' : '#E5F0FF',
'color': i + 1 == 1 ? '#FFF' : i + 1 == 2 ? '#FFF' : i + 1 == 3 ? '#FFF' : '#333',
'box-shadow': i + 1 == 1 ? '0px 0px 6px 1px #F54D3F' : i + 1 == 2 ? '0px 0px 6px 1px #FF981E' : i + 1 == 3 ? '0px 0px 6px 1px #FFCC00' : '#E5F0FF',
'border': i + 1 == 1 ? '1px solid #FFCAC6' : i + 1 == 2 ? '1px solid #FFD6AA' : i + 1 == 3 ? '1px solid #FFEEAC' : 'none',
}">{{ i + 1 }}</span>
<span
class="sequenceNum"
:style="{
background:
i + 1 == 1
? 'linear-gradient(180deg, #FFA395 0%, #F54D3F 100%)'
: i + 1 == 2
? 'linear-gradient(180deg, #FFBE70 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(180deg, #FFE683 0%, #FFCC00 100%)'
: '#E5F0FF',
color:
i + 1 == 1
? '#FFF'
: i + 1 == 2
? '#FFF'
: i + 1 == 3
? '#FFF'
: '#333',
'box-shadow':
i + 1 == 1
? '0px 0px 6px 1px #F54D3F'
: i + 1 == 2
? '0px 0px 6px 1px #FF981E'
: i + 1 == 3
? '0px 0px 6px 1px #FFCC00'
: '#E5F0FF',
border:
i + 1 == 1
? '1px solid #FFCAC6'
: i + 1 == 2
? '1px solid #FFD6AA'
: i + 1 == 3
? '1px solid #FFEEAC'
: 'none',
}"
>{{ i + 1 }}</span
>
<div class="jinboxtit">
<el-tooltip class="item" effect="dark" :content="item.name" placement="top-start">
<el-tooltip
class="item"
effect="dark"
:content="item.name"
placement="top-start"
>
<span class="name">{{ item.name }}</span>
</el-tooltip>
</div>
<div class="jinbox-box">
<!-- <div class="boxbaifenbi" :style="'width:' + item.zxl1 + '%;'"></div> -->
<div class="boxbaifenbi"
:style="{ 'background': i + 1 == 1 ? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)' : i + 1 == 2 ? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)' : i + 1 == 3 ? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)' : 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)', 'width': item.zxl1 + '%' }">
</div>

<div
class="boxbaifenbi"
:style="{
background:
i + 1 == 1
? 'linear-gradient(270deg, #F88881 0%, #E6625B 100%)'
: i + 1 == 2
? 'linear-gradient(270deg, #FFC940 0%, #FF981E 100%)'
: i + 1 == 3
? 'linear-gradient(270deg, #FFE800 0%, #FFCC00 100%)'
: 'inear-gradient(270deg, #7BB1FF 0%, #618FFF 100%)',
width: item.zxl1 + '%',
}"
></div>
</div>
<div class="jinboxbott">{{ item.zxl }}次</div>
</div>
@@ -320,7 +582,7 @@
<div class="nulllist" v-if="teamobj5.list.length == 0">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -328,16 +590,19 @@
<div class="title">
<div class="text1">违禁话术雷达图</div>
</div>
<div v-if="isshowcd == true" id="main2" style="width: 94%; margin: 0 auto"></div>
<div
v-if="isshowcd == true"
id="main2"
style="width: 94%; margin: 0 auto"
></div>
<div class="nulllist" v-if="isshowcd == false">
<div class="imgboxc">
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
</div>

</div>
</template>

@@ -400,6 +665,18 @@ export default {
} else {
this.zkhousePage();
}
if (this.TimetoAhoose == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
},
methods: {
downLoad() {
@@ -762,7 +1039,7 @@ export default {
data: namelist,
right: "10",
top: "10",
icon:"roundRect"
icon: "roundRect",
},
color: ["#2671E2", "#F3787B"],
radar: {
@@ -826,7 +1103,7 @@ export default {
data: namelist,
right: "10",
top: "10",
icon:"roundRect"
icon: "roundRect",
},
color: ["#2671E2", "#F3787B"],
radar: {
@@ -900,9 +1177,34 @@ export default {
//切换时间
tabtimetap(index) {
this.TimetoAhoose = index;
if (index == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

if (index == 6) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 30;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
this.statDateStart = "";
this.statDateEnd = "";
this.customtime = [];
this.allhttp();
},
dealData(arr) {
@@ -1035,8 +1337,8 @@ tbody tr {
font-weight: 500;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
display: flex;
align-items: center;
}

.text2 {
@@ -1067,8 +1369,8 @@ tbody tr {
font-weight: 500;
font-size: 16px;
color: #333333;
display: flex;
align-items: center;
display: flex;
align-items: center;
}

.text2 {
@@ -1156,7 +1458,7 @@ tbody tr {
.theadtd {
width: 140px;
height: 48px;
border-bottom: 1px solid #E0E0E0;
border-bottom: 1px solid #e0e0e0;
text-align: center;
line-height: 48px;
font-size: 16px;
@@ -1167,26 +1469,26 @@ tbody tr {
flex: 1;
}
.sequenceNum {
display: flex;
width: 26px;
height: 24px;
justify-content: center;
align-items: center;
background: #E5F0FF;
border-radius: 15px;
color: #333333;
margin-right: 10px;
}
.pop{
display: flex;
width: 26px;
height: 24px;
justify-content: center;
align-items: center;
background: #e5f0ff;
border-radius: 15px;
color: #333333;
margin-right: 10px;
}
.pop {
display: inline-block;
width: 18px;
height: 18px;
background: url('../../../public/img/pop.png') no-repeat;
background: url("../../../public/img/pop.png") no-repeat;
background-size: 100%;
margin-left: 6px;
}
/deep/ .el-button--primary{
background: #2671E2 !important;
border: 1px solid #2671E2 !important;
/deep/ .el-button--primary {
background: #2671e2 !important;
border: 1px solid #2671e2 !important;
}
</style>

+ 226
- 76
src/views/Statistics/index.vue Parādīt failu

@@ -1,21 +1,30 @@
<template>
<div class="box-center" ref="boxcenter" style="cursor:pointer;">
<div class="box-center" ref="boxcenter" style="cursor: pointer">
<!-- 头 -->
<div class="app-top">
<div v-if="orgType != 3" class="app-titel2" style="margin-bottom: 10px">
<div class="titel-text">
项目选择: </div>
<div class="titel-text">项目选择:</div>
<div style="margin-left: 26px">
<el-select v-model="houseId" filterable @change="houseChange" placeholder="请选择">
<el-option v-for="item in buildingoptions" :key="item.value" :label="item.propertyName" :value="item.id">
<el-select
v-model="houseId"
filterable
@change="houseChange"
placeholder="请选择"
>
<el-option
v-for="item in buildingoptions"
:key="item.value"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div>

<div class="app-titel2">
<div style="text-indent: 30px;font-weight: bold;">接待时间:</div>
<div style="margin-left: 38px;">
<div style="text-indent: 30px; font-weight: bold">接待时间:</div>
<div style="margin-left: 38px">
<!-- <div :class="{ tophove: TimetoAhoose == 0 }" @click="tabtimetap(0)">
今日
</div>
@@ -42,27 +51,60 @@
>
</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
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>

<!-- 中间 -->
<div style="display: flex;justify-content: space-between" :style="{ 'margin-top': orgType != 3 ? '110px' : '70px' }">
<el-card style="width: 33%;display: flex;flex-direction: column;align-items: center;text-align: center">
<div @click="goTo(1)">{{ efficient || '-' }}</div>
<div
style="display: flex; justify-content: space-between"
:style="{ 'margin-top': orgType != 3 ? '110px' : '70px' }"
>
<el-card
style="
width: 33%;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
"
>
<div @click="goTo(1)">{{ efficient || "-" }}</div>
<div @click="goTo(1)" style="margin-top: 10px">有效接待</div>
</el-card>
<el-card style="width: 33%;display: flex;flex-direction: column;align-items: center;text-align: center">
<div @click="goTo(2)">{{ markCount || '-' }}</div>
<el-card
style="
width: 33%;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
"
>
<div @click="goTo(2)">{{ markCount || "-" }}</div>
<div @click="goTo(2)" style="margin-top: 10px">已标顾问</div>
</el-card>
<el-card style="width: 33%;display: flex;flex-direction: column;align-items: center;text-align: center">
<div @click="goTo(3)">{{ noMarkCount || '-' }}</div>
<el-card
style="
width: 33%;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
"
>
<div @click="goTo(3)">{{ noMarkCount || "-" }}</div>
<div @click="goTo(3)" style="margin-top: 10px">未标顾问</div>
</el-card>
</div>
@@ -70,20 +112,29 @@
<div class="app-box">
<div class="conbox">客群特征总览</div>
<div v-if="alllist.length > 0" class="alllistbox">
<div class="alllist" v-for="(item, index) in alllist" :key="index" @click="movePlace(index)"
style="cursor: pointer">
<div
class="alllist"
v-for="(item, index) in alllist"
:key="index"
@click="movePlace(index)"
style="cursor: pointer"
>
<div class="alllist-text1">{{ item.name }}</div>
<div class="alllist-text1">{{ item.num }}</div>
</div>
</div>
<div v-else>
<div style=" width: 100%;
height: 200px;
display: flex;
align-items: center;
justify-content: center;">
<div
style="
width: 100%;
height: 200px;
display: flex;
align-items: center;
justify-content: center;
"
>
<!-- <img class="imgboxc-img" src="/img/nullnull.png" alt="" /> -->
<div class="nulltext" style="font-size:14px;">暂无数据</div>
<div class="nulltext" style="font-size: 14px">暂无数据</div>
</div>
</div>
</div>
@@ -100,24 +151,49 @@
<div>触达占比</div>
<div>沟通记录</div>
</div>
<div v-if="item.total == 0" style="
<div
v-if="item.total == 0"
style="
width: 100%;
line-height: 300px;
text-align: center;
color: #999999;
font-size: 14px;
">
"
>
暂无数据
</div>
<div class="table-cent" v-else v-for="(itcen, inde) in item.matchKeywords" :key="inde">
<div style="
<div
class="table-cent"
v-else
v-for="(itcen, inde) in item.matchKeywords"
:key="inde"
>
<div
style="
display: flex;
align-items: center;
justify-content: center;
">
<img v-if="inde == 0" style="width: 30px; height: 30px" src="/img/ranking1.png" alt="" />
<img v-else-if="inde == 1" style="width: 30px; height: 30px" src="/img/ranking2.png" alt="" />
<img v-else-if="inde == 2" style="width: 30px; height: 30px" src="/img/ranking3.png" alt="" />
"
>
<img
v-if="inde == 0"
style="width: 30px; height: 30px"
src="/img/ranking1.png"
alt=""
/>
<img
v-else-if="inde == 1"
style="width: 30px; height: 30px"
src="/img/ranking2.png"
alt=""
/>
<img
v-else-if="inde == 2"
style="width: 30px; height: 30px"
src="/img/ranking3.png"
alt=""
/>
<div v-else class="indeclass">{{ inde + 1 }}</div>
</div>
<div v-if="index == 2">
@@ -128,22 +204,38 @@
</div>
<div v-else>{{ itcen.name }}({{ itcen.total }})</div>
<div>{{ itcen.proportion }}%</div>
<div style="color: #2671e2; cursor: pointer" @click="Toview(item, inde)">
<div
style="color: #2671e2; cursor: pointer"
@click="Toview(item, inde)"
>
查看
</div>
</div>
</div>
</div>
<div class="right">
<div :id="'ids' + item.id" class="container" style="width: 400px; height: 330px; text-align: center">
<img v-if="item.total == 0" style="width: 260px; height: 260px" src="/img/Elementcircle.png" alt="" />
<div
:id="'ids' + item.id"
class="container"
style="width: 400px; height: 330px; text-align: center"
>
<img
v-if="item.total == 0"
style="width: 260px; height: 260px"
src="/img/Elementcircle.png"
alt=""
/>
</div>
</div>
</div>
</div>

<div @click="backTop()" class="backTopbox">
<img class="backTop" src="http://121.42.63.138:9091/autoSR/static/images/system/images/backTop.png" alt="">
<img
class="backTop"
src="http://121.42.63.138:9091/autoSR/static/images/system/images/backTop.png"
alt=""
/>
</div>
</div>
</template>
@@ -152,7 +244,7 @@
import * as echarts from "echarts";
import Router from "../../router/router";

import colorTheme from "../../util/theme.color"
import colorTheme from "../../util/theme.color";
export default {
data() {
return {
@@ -173,69 +265,102 @@ export default {

efficient: "",
markCount: "",
noMarkCount: ""
noMarkCount: "",
};
},
mounted() {
this.zkhousePage();

if (this.TimetoAhoose == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
},
methods: {
goTo(i) {
if (i == 1) {
if (this.TimetoAhoose == 6) {
Router.push(`/ReceivingRecords/index?validInvalid=0&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:59&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:59&houseId=${this.houseId}`
);
} else {
if (this.TimetoAhoose == 0) {
Router.push(`/ReceivingRecords/index?validInvalid=0&dateType=0&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&dateType=0&houseId=${this.houseId}`
);
} else if (this.TimetoAhoose == 4) {
Router.push(`/ReceivingRecords/index?validInvalid=0&dateType=2&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&dateType=2&houseId=${this.houseId}`
);
} else {
Router.push(`/ReceivingRecords/index?validInvalid=0&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&houseId=${this.houseId}`
);
}
}

} else if (i == 2) {
if (this.TimetoAhoose == 6) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:59&houseId=${this.houseId}`);
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:59&houseId=${this.houseId}`
);
} else {
if (this.TimetoAhoose == 0) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&dateType=0&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&dateType=0&houseId=${this.houseId}`
);
} else if (this.TimetoAhoose == 4) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&dateType=2&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&dateType=2&houseId=${this.houseId}`
);
} else {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=1&houseId=${this.houseId}`
);
}
}

} else {
if (this.TimetoAhoose == 6) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:5'&houseId=${this.houseId}`);
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&staDate=${this.fromobj.starttime}&endDate=${this.fromobj.endoftime} 23:59:5'&houseId=${this.houseId}`
);
} else {
if (this.TimetoAhoose == 0) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&dateType=0&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&dateType=0&houseId=${this.houseId}`
);
} else if (this.TimetoAhoose == 4) {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&dateType=2&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&dateType=2&houseId=${this.houseId}`
);
} else {
Router.push(`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&houseId=${this.houseId}`)
Router.push(
`/ReceivingRecords/index?validInvalid=0&markAdvisor=0&houseId=${this.houseId}`
);
}
}
}
},
backTop() {
$('#avue-view').scrollTop(0)
$("#avue-view").scrollTop(0);
},
movePlace(index) {
if (index == 0) {
return
return;
} else {
var as55 = this.objlist[index - 1].id;
var shu = '#ids' + as55;
$('#avue-view').scrollTop(($(shu).offset().top) - 200)
var shu = "#ids" + as55;
$("#avue-view").scrollTop($(shu).offset().top - 200);
}
},


houseChange() {
this.getorgCode();
},
@@ -280,9 +405,34 @@ export default {
//切换时间
tabtimetap(index) {
this.TimetoAhoose = index;

if (index == 4) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 7;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}

if (index == 6) {
let starTime = new Date().getTime() - 24 * 60 * 60 * 1000 * 30;
let startDate = `${new Date(starTime).getFullYear()}-${
new Date(starTime).getMonth() + 1
}-${new Date(starTime).getDate()}`;
let endTime = new Date().getTime() - 24 * 60 * 60 * 1000;
let endDate = `${new Date(endTime).getFullYear()}-${
new Date(endTime).getMonth() + 1
}-${new Date(endTime).getDate()}`;

this.customtime = [startDate, endDate];
}
this.fromobj.starttime = "";
this.fromobj.endoftime = "";
this.customtime = [];
this.getorgCode();
},
//初始化
@@ -307,9 +457,9 @@ export default {
this.objlist = res.data.list;
this.alllist = [{ name: "有效接待", num: res.data.total }];

this.efficient = res.data.total
this.markCount = res.data.markCount
this.noMarkCount = res.data.noMarkCount
this.efficient = res.data.total;
this.markCount = res.data.markCount;
this.noMarkCount = res.data.noMarkCount;

res.data.list.forEach((item, index) => {
this.alllist.push({
@@ -395,7 +545,7 @@ export default {
width: 40px;
height: 40px;
border-radius: 50%;
background: #D0EDFF;
background: #d0edff;
position: fixed;
bottom: 40px;
right: 40px;
@@ -550,7 +700,7 @@ export default {
display: flex;
}

.table-tit>div:nth-of-type(1) {
.table-tit > div:nth-of-type(1) {
width: 10%;
text-align: center;
font-size: 16px;
@@ -559,7 +709,7 @@ export default {
color: #606775;
}

.table-tit>div:nth-of-type(2) {
.table-tit > div:nth-of-type(2) {
width: 40%;
text-align: center;
font-size: 16px;
@@ -568,7 +718,7 @@ export default {
color: #606775;
}

.table-tit>div:nth-of-type(3) {
.table-tit > div:nth-of-type(3) {
width: 25%;
text-align: center;
font-size: 16px;
@@ -577,7 +727,7 @@ export default {
color: #606775;
}

.table-tit>div:nth-of-type(4) {
.table-tit > div:nth-of-type(4) {
width: 25%;
text-align: center;
font-size: 16px;
@@ -594,7 +744,7 @@ export default {
margin-top: 18px;
}

.table-cent>div:nth-of-type(1) {
.table-cent > div:nth-of-type(1) {
width: 10%;
text-align: center;
font-size: 14px;
@@ -602,7 +752,7 @@ export default {
color: #32363d;
}

.table-cent>div:nth-of-type(2) {
.table-cent > div:nth-of-type(2) {
width: 40%;
text-align: center;
font-size: 14px;
@@ -610,7 +760,7 @@ export default {
color: #32363d;
}

.table-cent>div:nth-of-type(3) {
.table-cent > div:nth-of-type(3) {
width: 25%;
text-align: center;
font-size: 14px;
@@ -618,7 +768,7 @@ export default {
color: #32363d;
}

.table-cent>div:nth-of-type(4) {
.table-cent > div:nth-of-type(4) {
width: 25%;
text-align: center;
font-size: 14px;
@@ -683,8 +833,8 @@ export default {
}
}
}
/deep/ .el-button--primary{
background: #2671E2 !important;
border: 1px solid #2671E2 !important;
/deep/ .el-button--primary {
background: #2671e2 !important;
border: 1px solid #2671e2 !important;
}
</style>

Notiek ielāde…
Atcelt
Saglabāt