lancer před 3 roky
rodič
revize
6f8f97a668
7 změnil soubory, kde provedl 475 přidání a 112 odebrání
  1. +15
    -20
      src/page/wel.vue
  2. +1
    -1
      src/views/Receive/index.vue
  3. +111
    -5
      src/views/Statistics/ConsultantBrand.vue
  4. +160
    -42
      src/views/Statistics/MentoringAbility.vue
  5. +52
    -3
      src/views/Statistics/ReceptionStatistical.vue
  6. +87
    -38
      src/views/Statistics/TheTeamCompared.vue
  7. +49
    -3
      src/views/Statistics/TrendAnalysis.vue

+ 15
- 20
src/page/wel.vue Zobrazit soubor

@@ -1,20 +1,6 @@
<template>
<div class="box-center">
<div v-if="role==3">
<!-- <div class="app-titel">
<div class="titel-text">楼盘选择</div>
<div style="margin-left: 26px">
<el-select v-model="houseId" @change="houseChange" placeholder="请选择">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div> -->
<div class="app-titel">
<div class="titel-text">时间</div>
<div class="toptimeqhuan">
@@ -185,9 +171,11 @@
<div>暂无数据</div>
</div>
<div v-else class="tabbox" style="display:flex;flex-wrap: wrap;height: 290px;overflow-y: auto;width: 90%;margin:0 auto;">
<div v-for="(item,index) in indexZxllist" :key="index" style="width:33.3%;margin-top: 10px;">
<div v-for="(item,index) in indexZxllist" :key="index" style="width:33.3%;margin-top: 10px;cursor: pointer;">
<div style="width:130px;height:100px;margin:0 auto;"><el-progress :stroke-width="12" :width='130' type="dashboard" :percentage="item.zxl" ></el-progress></div>
<div style="width:100%;text-align: center;">{{item.name.substring(0,3)}}</div>
<div style="width:100%;text-align: center;">
{{item.name.substring(0,3)}}
</div>
</div>
</div>
</div>
@@ -206,7 +194,7 @@
</div>
<div class="sanbox1" style="width: 25%;">
<div class="text1-1">平均执行</div>
<div class="text1-2">{{employeeExecutionRatelist.fraction || ''}}</div>
<div class="text1-2">{{employeeExecutionRatelist.fraction || ''}}%</div>
</div>
</div>
<div class="tabbox" v-if="employeeExecutionRatelist.list.length!=0">
@@ -287,7 +275,11 @@
label="电话"
align="center">
</el-table-column>

<el-table-column
prop="imei"
label="设备号"
align="center">
</el-table-column>
<el-table-column
prop="address"
label="录音状态"
@@ -316,13 +308,16 @@
label="顾问"
align="center">
</el-table-column>

<el-table-column
prop="accPhone"
label="电话"
align="center">
</el-table-column>

<el-table-column
prop="imei"
label="设备号"
align="center">
</el-table-column>
<el-table-column
prop="updateTime"
label="离线时间"


+ 1
- 1
src/views/Receive/index.vue Zobrazit soubor

@@ -371,7 +371,7 @@
<div class="topyou">
<div class="pingfenbox" >
<div :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{userinformationlist.fraction|| 0}}%</div>
<div v-if="info.userRoleType==6" :class="{ activecllasscet: zhixingcenterindex == 1 }" @click="recordclick(1)">禁忌执行</div>
<div v-if="info.userRoleType!=6" :class="{ activecllasscet: zhixingcenterindex == 1 }" @click="recordclick(1)">禁忌执行</div>
</div>
<div v-if="zhixingcenterindex==0">
<div style="width: 100%;height: 44px;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;">


+ 111
- 5
src/views/Statistics/ConsultantBrand.vue Zobrazit soubor

@@ -1,5 +1,20 @@
<template>
<div class="box-center">

<div class="app-top">
<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="请选择" @change="houseChange">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
@@ -45,10 +60,10 @@
</el-select>
</div>
</div>
</div>
<!-- 表格 -->
<div class="cen-tab">
<div class="app-titel">
<div class="app-titel1">
<div class="toptimeqhuan">
<div :class="{ tophove: tabFlag == 0 }" @click="tabFlagChange(0)">
销讲统计
@@ -343,15 +358,66 @@ export default {
sum4:'',
avg4:'',
num4:'',
houseList:[],
role:''
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
this.role=localStorage.getItem("orgType");
if(this.role==3){
this.houseId = localStorage.getItem("houseId");
this.tabtimetap(4);
this.deptFindList();
this.teamAllLeve()
}else{
this.zkhousePage()
}

},
methods: {
houseChange(){
this.customtime=[];
this.TimetoAhoose=4;
this.statDateStart= '';
this.statDateEnd= '';
this.sum1='';
this.avg1='';
this.num1='';

this.sum2='';
this.avg2='';
this.num2='';

this.sum3='';
this.avg3='';
this.num3='';

this.sum4='';
this.avg4='';
this.num4='';
this.tableData=[];
this.tabFlag=0;
this.echarlist= [];
this.echarlist1= [];
this.echarlist2=[];
this.echarlist3=[];
this.tabtimetap(4);
this.deptFindList();
this.teamAllLeve()
},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.tabtimetap(4);
this.deptFindList();
this.teamAllLeve()
});
},
deptChange() {
this.init();
},
@@ -431,6 +497,7 @@ export default {
this['num'+type]=res.data.num || 0;
this['avg'+type]=res.data.avg || 0;
let arr=[]
if(arr.length!=0){
res.data.list.map(item=>{
let obj={}
if(type==1){
@@ -451,7 +518,7 @@ export default {
arr.push(obj)
}
})
}
if(type==3){
arr=arr
console.log(this.avg3)
@@ -629,7 +696,7 @@ export default {
color: #ffffff;
background: #2671e2;
}
.app-titel {
.app-titel1 {
width: 100%;
height: 70px;
background: #ffffff;
@@ -666,6 +733,45 @@ export default {
}
}

.app-top{
width: 100%;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 4px;
padding-top: 15px;
padding-bottom: 15px;
.app-titel {
width: 100%;
display: flex;
align-items: center;
.titel-text {
height: 100%;
font-size: 16px;
font-weight: 600;
color: #32363d;
text-indent: 30px;
}
.toptimeqhuan {
width: 190px;
height: 32px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #e0e0e0;
display: flex;
align-items: center;
overflow: hidden;
margin-left: 20px;
cursor: pointer;
}
.toptimeqhuan div {
flex: 1;
text-align: center;
line-height: 32px;
font-size: 14px;
}
}
}

.app-box-san {
width: 100%;
height: 400px;


+ 160
- 42
src/views/Statistics/MentoringAbility.vue Zobrazit soubor

@@ -1,6 +1,22 @@
<template>
<div class="box-center">
<!-- 头 -->


<div class="app-top">
<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="请选择" @change="houseChange">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
@@ -53,7 +69,7 @@
</el-select>
</div>
</div>
</div>
<div class="app-box-san">
<div class="zuo">
<div class="title">
@@ -199,7 +215,7 @@

<!-- 表格 -->
<div class="cen-tab">
<div class="app-titel">
<div class="app-titel1">
<div class="toptimeqhuan">
<div :class="{ tophove: tabFlag == 0 }" @click="tabFlagChange(0)">
销讲统计
@@ -362,29 +378,43 @@ export default {
listA:[],
listB:[],
},
tablist:[
// {
// label:'1',
// props:'1'
// },
// {
// label:'2',
// props:'1'
// },
]
tablist:[],
houseList:[],
role:''
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
// this.prohibitedStatistics()
// return
this.init()
this.role=localStorage.getItem("orgType");
if(this.role==3){
this.houseId = localStorage.getItem("houseId");
this.init()
}else{
this.zkhousePage()
}
},
methods: {
init(){
this.getAccount()
this.teamAllLeve()

},
houseChange(){
this.customtime=[];
this.TimetoAhoose=4;
this.statDateStart='';
this.statDateEnd='';
this.init()
},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.init()
});
},
accountData1(){
let pamaet={
@@ -739,34 +769,82 @@ export default {
pamaet.dateType=this.TimetoAhoose
}
this.$api.http.getAccount(pamaet).then((res) => {
this.consultantlist=res.data;
this.consultantlistid=res.data[0].createUser;
this.consultantname=res.data[0].accountName;
let arr=[
{
accountName:"案场平均",
createUser:''
}
];
res.data.forEach(element => {
arr.push({
accountName:element.accountName,
createUser:element.createUser
})
})
this.Pklist=arr;
this.Pklistid='';
this.Packname=this.Pklist[0].accountName;
this.accountData1()
this.accountData2()
this.accountData3()
this.accountData4()
this.accountData5()
this.accountData6()
this.prohibitedStatistics()
let list=res.data || [];

if(list.length==0){
this.datalistobj1={
avgA:'',
avgB:'',
listA:[],
listB:[],
}
this.datalistobj2={
avgA:'',
avgB:'',
listA:[],
listB:[],
}
this.datalistobj3={
avgA:'',
avgB:'',
listA:[],
listB:[],
}
this.datalistobj4={
listA:[],
listB:[],
}
this.datalistobj5={
avgA:'',
avgB:'',
listA:[],
listB:[],
}
this.datalistobj6={
listA:[],
listB:[],
}
this.SwitchCARDSsha('data4')
this.SwitchCARDSsha('data6')
this.SwitchCARDSsha('data1')
this.SwitchCARDSsha('data2')
this.SwitchCARDSsha('data3')
this.SwitchCARDSsha('data5')

this.tablist=[];
}else{
this.consultantlist=list;
this.consultantlistid=list[0].createUser;
this.consultantname=list[0].accountName;
let arr=[
{
accountName:"案场平均",
createUser:''
}
];
list.forEach(element => {
arr.push({
accountName:element.accountName,
createUser:element.createUser
})
})
this.Pklist=arr;
this.Pklistid='';
this.Packname=this.Pklist[0].accountName;
this.accountData1()
this.accountData2()
this.accountData3()
this.accountData4()
this.accountData5()
this.accountData6()
this.prohibitedStatistics()
}
// 代码绝了
})
},
SwitchCARDSsha(data1){
echarts.init(document.getElementById(data1)).dispose();
},
SwitchCARDS1(arr1,arr2,timelist,data1) {
echarts.init(document.getElementById(data1)).dispose();
var chartDom = document.getElementById(data1);
@@ -940,7 +1018,7 @@ export default {
color: #ffffff;
background: #2671e2;
}
.app-titel {
.app-titel1 {
width: 100%;
height: 70px;
background: #ffffff;
@@ -976,6 +1054,46 @@ export default {
}
}

.app-top{
width: 100%;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 4px;
padding-top: 15px;
padding-bottom: 15px;
.app-titel {
width: 100%;
display: flex;
align-items: center;
.titel-text {
height: 100%;
font-size: 16px;
font-weight: 600;
color: #32363d;
text-indent: 30px;
}
.toptimeqhuan {
width: 190px;
height: 32px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #e0e0e0;
display: flex;
align-items: center;
overflow: hidden;
margin-left: 20px;
cursor: pointer;
}
.toptimeqhuan div {
flex: 1;
text-align: center;
line-height: 32px;
font-size: 14px;
}
}
}


.app-box-san {
width: 100%;
// height: 400px;


+ 52
- 3
src/views/Statistics/ReceptionStatistical.vue Zobrazit soubor

@@ -1,6 +1,20 @@
<template>
<div class="box-center">
<div class="app-top">

<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="请选择" @change="houseChange">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
@@ -279,14 +293,42 @@ export default {
teamAllLeve2: [],
statDate: "",
dialogVisible: false,
houseList:[],
role:''
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
this.tabtimetap(4);
this.deptFindList();
this.role=localStorage.getItem("orgType");
if(this.role==3){
this.houseId = localStorage.getItem("houseId");
this.tabtimetap(4);
this.deptFindList();
}else{
this.zkhousePage()
}
},
methods: {
houseChange(){
this.customtime=[];
this.TimetoAhoose=4;
this.statDateStart= '';
this.statDateEnd= '';
this.tabtimetap(4);
this.deptFindList();

},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.tabtimetap(4);
this.deptFindList();
});
},
toDetail(row) {
console.log(row);
this.statDate = row.statDate.substring(0, 10);
@@ -513,6 +555,13 @@ export default {
// min-width: 100px;
text-align: right;
}
.titel-text {
height: 100%;
font-size: 16px;
font-weight: 600;
color: #32363d;
text-indent: 30px;
}
.toptimeqhuan {
height: 30px;
background: #ffffff;


+ 87
- 38
src/views/Statistics/TheTeamCompared.vue Zobrazit soubor

@@ -1,35 +1,50 @@
<template>
<div class="box-center">
<!-- 头 -->
<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
<div :class="{ tophove: TimetoAhoose == 4 }" @click="tabtimetap(4)">
近7天
</div>
<div :class="{ tophove: TimetoAhoose == 5 }" @click="tabtimetap(5)">
近15天
</div>
<div :class="{ tophove: TimetoAhoose == 6 }" @click="tabtimetap(6)">
近30天
<div class="app-top">
<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="请选择" @change="houseChange">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id">
</el-option>
</el-select>
</div>
</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>
</div>
</div>

<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
<div :class="{ tophove: TimetoAhoose == 4 }" @click="tabtimetap(4)">
近7天
</div>
<div :class="{ tophove: TimetoAhoose == 5 }" @click="tabtimetap(5)">
近15天
</div>
<div :class="{ tophove: TimetoAhoose == 6 }" @click="tabtimetap(6)">
近30天
</div>
</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>
</div>
</div>
</div>
<!-- 表格 -->
<div class="cen-tab">
<div style="overflow: auto;">
@@ -235,14 +250,40 @@ export default {
teamAllLevelid:'',
teamAllLeve2:[],
teamAllLeve2id:'',
ceratelist:[]
ceratelist:[],
role:'',
houseList:[]
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
this.role=localStorage.getItem("orgType");
if(this.role==3){
this.houseId = localStorage.getItem("houseId");
this.allhttp()
}else{
this.zkhousePage()
}
},
methods: {
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.allhttp()
});
},
houseChange(){
this.customtime=[];
this.TimetoAhoose=4;
this.statDateStart=''
this.statDateEnd=''
this.allhttp()

},
allhttp(){
this.teamteamTable()
this.teamData1()
@@ -446,6 +487,8 @@ export default {
let datalist=[];
let newlinename=[];
let arr=res.data.list||[];

if(arr.length!=0){
arr.map(item=>{
namelist.push(item.deptName)
datalist.push({
@@ -453,7 +496,7 @@ export default {
value:[]
})
})
arr[0].resultsList.map(item=>{
arr[0].resultsList.map(item=>{
newlinename.push({
name:item.name,max:100
})
@@ -467,6 +510,8 @@ export default {
}
})
})
}

this.initecah(namelist,datalist,newlinename)
})
},
@@ -489,7 +534,8 @@ export default {
let datalist=[];
let newlinename=[];
let arr=res.data.list||[];
arr.map(item=>{
if(arr.length!=0){
arr.map(item=>{
namelist.push(item.deptName)
datalist.push({
name:item.deptName,
@@ -510,7 +556,7 @@ export default {
}
})
})
console.log(arr,namelist,datalist,newlinename)
}
this.initecah2(namelist,datalist,newlinename)
})
},
@@ -695,39 +741,42 @@ tbody tr {
color: #ffffff;
background: #2671e2;
}
.app-titel {
.app-top{
width: 100%;
height: 70px;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 4px;
padding-top: 15px;
padding-bottom: 15px;
}
.app-titel {
width: 100%;
display: flex;
align-items: center;
.titel-text {
height: 100%;
font-size: 18px;
font-size: 16px;
font-weight: 600;
color: #32363d;
line-height: 70px;
margin-left: 30px;
text-indent: 30px;
}
.toptimeqhuan {
width: 190px;
height: 32px;
background: #ffffff;
border-radius: 4px;
margin-left: 20px;
border: 1px solid #e0e0e0;
display: flex;
align-items: center;
overflow: hidden;
margin-left: 20px;
cursor: pointer;
}
.toptimeqhuan div {
flex: 1;
text-align: center;
line-height: 32px;
font-size: 16px;
font-size: 14px;
}
}



+ 49
- 3
src/views/Statistics/TrendAnalysis.vue Zobrazit soubor

@@ -2,6 +2,20 @@
<div class="box-center">
<!-- 头 -->
<div class="app-top">
<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="请选择" @change="houseChange">
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>

<div class="app-titel">
<div style="text-indent: 30px;">接待时间:</div>
<div class="toptimeqhuan">
@@ -269,15 +283,47 @@ export default {
Level1:[],
Level2:[],
Level1id:'',
Level2id:''
Level2id:'',
houseList:[],
role:''
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
this.tabtimetap(4);
this.role=localStorage.getItem("orgType");
if(this.role==3){
this.houseId = localStorage.getItem("houseId");
this.tabtimetap(4);
this.overviewfindList()

}else{
this.zkhousePage()
}
},
methods: {
houseChange(){
this.customtime=[];
this.TimetoAhoose=4;
this.selectTime1= "";//对比时间
this.selectTime= "";//对比时间
this.aliasclass= 1;//tab下标
this.page.openTime='';
this.page.closeTime='';
this.checked=false;
this.tabtimetap(4);
this.overviewfindList()
},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.tabtimetap(4);
this.overviewfindList()
});
},
//销讲二级
trendAnalysisLevel2(){
let pamaet={


Načítá se…
Zrušit
Uložit