@ -6,7 +6,7 @@
< / div >
< div v-else class = "webHeadWrap" : style = "'justify-content:'+(isZd==1 ? 'space-between':'center')" >
< div class = "empty" v-if = "isZd==1" > < / div >
< div class = "title" > KPI . 数据看板 < span v-if = "isZd!=1" > - - {{ current }} 月 < / span > < / div >
< div class = "title" > KPI . 数据看板 < span v-if = "isZd==1">--中道救援</span><span v-if="isZd !=1" > - - {{ current }} 月 < / span > < / div >
< ! - - 只有中道账号才显示搜索框 - - >
< div class = "searchWrap" v-if = "isZd==1" >
< span class = "month" > { { current } } 月 < / span >
@ -15,6 +15,7 @@
filterable
remote
reserve -keyword
clearable
placeholder = "请输入后选择"
:remote-method = "remoteMethod"
@change ="selectSupplierNameHanldle"
@ -26,11 +27,13 @@
:value = "item.id" >
< / el-option >
< / el-select >
< i class = "el-icon-search" @click ="searchHandle" > < / i >
<!-- < i class = "el-icon-search" @click ="searchHandle" > < / i > - - >
< / div >
< / div >
< van-tabs v-model = "active" sticky @click="onClick" >
< van -tab v-for = "(item,index) in tabArr" :key="index" :title="item.name" > < / van -tab >
< div v-if = "isMobile && !([0,1,2,3].includes(active))" class="tipArrow left" > {{ leftArr }} < / div >
< div v-if = "isMobile && !([8,9].includes(active))" class="tipArrow right" > > >> < / div >
< / van-tabs >
< div v-loading = "loadingData" :class="{'contentWrap':true,'webcontentWrap':!isMobile}" v-if="active===0" >
< div :class = "{'reciceOrder':true,'webCom':!isMobile}" >
@ -42,11 +45,11 @@
< / div >
< div class = "center common" @click ="clickJumpHandle(5)" >
< div class = "num" > { { indexData && indexData . refuseOrderRate } } % < / div >
< div class = "itemTitle" > 拒单率 > < / div >
< div class = "itemTitle" style = "cursor: pointer" > 拒单率 > < / div >
< / div >
< div class = "right common" @click ="clickJumpHandle(6)" >
< div class = "num" > { { indexData && indexData . timeoutOrderRate } } % < / div >
< div class = "itemTitle" > 超时率 > < / div >
< div class = "itemTitle" style = "cursor: pointer" > 超时率 > < / div >
< / div >
< / div >
< / div >
@ -83,20 +86,62 @@
< div class = "line" > < / div >
< div class = "center common" >
< div class = "num" > { { indexData && indexData . polymerizationSuccessArriving } } < / div >
< div class = "itemTitle" > 集合成功到达时效 < / div >
< div class = "itemTitle" > 集合成功到达时效 ( 分 ) </ div >
< / div >
< div class = "line" > < / div >
< div class = "right common" >
< div class = "num" > { { indexData && indexData . arriving } } < / div >
< div class = "itemTitle" > 到达时效 < / div >
< div class = "itemTitle" > 到达时效 ( 分 ) </ div >
< / div >
< / div >
< / div >
< div :class = "{'reciceOrder':true,'webCom':!isMobile,'store':isMobile}" >
< div class = "t itle" > 综合打分 < / div >
< div class = "storeWrap" v-if = "indexData" >
< circle -char ref = "Doughnut7" : data = "indexData && indexData.score" :bg-color = "'#00D273'" :is-store = "true" > < / circle-char >
< div class = "scoreT itle" >
< span class = "title" > 综合打分 < / span >
< i class = "el-icon-question" @click.prevent ="showScoreChart = !showScoreChart" > < / i >
< / div >
< div class = "storeWrap" v-if = "indexData" >
< circle -char v-if = "showScoreChart" ref="Doughnut7" :data="indexData && indexData.score" :bg-color="'#00D273'" :is-store="true" > < / circle -char >
< div v-else class = "detailScore" >
< div class = "left" >
< div >
< span class = "defen" > 接单得分 : < / span >
< / div >
< div >
< span class = "defen" > 接单时效得分 : < / span >
< / div >
< div >
< span class = "defen" > 到达时效得分 : < / span >
< / div >
< div > < span class = "defen" > 聚合成功率得分 : < / span >
< / div >
< div > < span class = "defen" > APP使用率得分 : < / span >
< / div >
< div > < span class = "defen" > 催促率得分 : < / span >
< / div >
< div > < span class = "defen" > 投诉率得分 : < / span >
< / div >
< / div >
< div class = "right" >
< div >
< span > { { indexData . orderScore } } < / span >
< / div >
< div >
< span > { { indexData . orderAgeingScore } } < / span >
< / div >
< div >
< span > { { indexData . arriveAgeingScore } } < / span >
< / div >
< div > < span > { { indexData . polymerizationSuccessScore } } < / span > < / div >
< div > < span > { { indexData . appUseScore } } < / span > < / div >
< div > < span > { { indexData . urgeScore } } < / span > < / div >
< div > < span > { { indexData . complainScore } } < / span > < / div >
< / div >
< / div >
< / div >
< / div >
< div >
< / div >
< div v-if = "isMobile" style="padding: 20px" > < / div >
< / div >
@ -111,7 +156,7 @@
< div v-if = "active==1" style="width: 100%" >
< div id = "chartWrap" style = "width: 100%;height:300px" > < / div >
< / div >
< div v-if = "isMobile && activeIndex==3" class="selectWrap" >
< div v-if = "activeIndex==3" class="selectWrap" >
< el -select v-model = "value" @change="changeHandle" >
< el -option
v-for = "item in options"
@ -143,12 +188,31 @@
< / template >
< / div >
< div :class = "{'webTab':!isMobile,}" >
< noFit-table : is -mobile = ' isMobile' :table-data= "d etailList" :label-list= "l abelList" > < / noFit-table>
< / div >
< noFit-table v-if = "isMobile" :active='active' :is-mobile=' isMobile' :table-data="etlD etailList" :label-list="etlL abelList"> < / noFit -table >
< noFit-table v-else : active = 'active' : is -mobile = ' isMobile ' :table-data = "detailList" :label-list = "labelList" > < / noFit-table >
< / div >
< / div >
< div v-loading = "loadingData" class="contentWrap monthTotal" v-if="[2,3,4].includes(active)" >
< div class = "searchDriverName" v-if = "[3,4].includes(active)" >
< el -input placeholder = "请输入师傅名称" v -model .trim = " driverName " @change ="getData" / >
< el -select
v-model = "driverName"
filterable
remote
clearable
reserve -keyword
placeholder = "请输入后选择"
:remote-method = "driverremoteMethod"
@change ="getData"
:loading = "driverselectLoading"
: style = "isMobile ? 'width:100%' : 'width:50%'"
>
< el-option
v-for = "item in driverselectOption"
:key = "item.id"
:label = "item.name"
:value = "item.name" >
< / el-option >
< / el-select >
< / div >
< div :class = "{'tabWrap':true,'webTabWrap':!isMobile,'mobileTab':isMobile}" >
< div v-for = "(item,index) in (active===3 ? driverList : list)" :class="activeIndex===index ? 'active' : ''"
@ -157,10 +221,26 @@
< / div >
< / div >
< div :class = "{'comTab':true}" >
< noFit-table : is -mobile = ' isMobile ' :table-data = "detailList" :label-list = "labelList" > < / noFit-table >
< noFit-table : active = 'active' : is-mobile = ' isMobile ' :table-data = "detailList" :label-list = "labelList" > < / noFit-table >
< / div >
< el-pagination
small
v-if = "active !== 2"
: page -sizes = " [ 20 , 50 , 100 ] "
:current-page.sync = "pageNum"
:page-size.sync = "pageSize"
@ current -change = " getKpiData "
@ size -change = " getKpiData "
layout = "prev, pager, next,sizes"
:total = "total" >
< / el-pagination >
< / div >
< div v-loading = "loadingData" class="contentWrap monthTotal" v-if="[5,6,7,8,9].includes(active)" >
< div :class = "{'comTab':true,'detailTable':isMobile}" >
< noFit-table : active = 'active' : is -mobile = ' isMobile ' :table-data = "detailList" :label-list = "labelList"
> < / noFit-table >
< / div >
<!-- < el-pagination
small
:current-page.sync = "pageNum"
:page-size.sync = "pageSize"
@ -168,21 +248,16 @@
@ size -change = " getKpiData "
layout = "prev, pager, next"
:total = "total" >
< / el-pagination >
< / div >
< div v-loading = "loadingData" class="contentWrap monthTotal" v-if="[5,6,7,8,9].includes(active)" >
< div :class = "{'comTab':true,'detailTable':isMobile}" >
< noFit-table : is -mobile = ' isMobile ' :table-data = "detailList" :label-list = "labelList"
:loading = "loading" > < / noFit-table >
< / div >
< / el-pagination > -- >
< el-pagination
v-if = "active !== 9"
small
: page -sizes = " [ 20 , 50 , 100 ] "
:current-page.sync = "pageNum"
:page-size.sync = "pageSize"
@ current -change = " getKpiData "
@ size -change = " getKpiData "
layout = "prev, pager, next"
layout = "prev, pager, next,sizes "
:total = "total" >
< / el-pagination >
< / div >
@ -197,7 +272,8 @@ import {
getStatisticsKpiByMonth ,
getStatisticsKpi ,
getDriverStatisticsKpi ,
getSupplierId
getSupplierId ,
getDriverName
} from "@/api/kpi.js"
import { myMixins } from "@/utils/myMixins"
import CircleChar from "@/views/kpi/components/circleChar.vue" ;
@ -224,6 +300,8 @@ export default {
indexData : { } ,
detailList : [ ] ,
labelList : [ ] ,
etlDetailList : [ ] ,
etlLabelList : [ ] ,
loading : false ,
loadingData : false ,
v1 : [ ] ,
@ -243,14 +321,18 @@ export default {
{ value : '2' , label : '到达时效' } ,
] ,
pageNum : 1 ,
pageSize : 1 0,
pageSize : 2 0,
total : 0 ,
swithVal : true ,
supplierId : '' , //1128
supplierId : '' ,
selectLoading : false ,
selectOption : [ ] ,
driverId : '' , //68517
driverName : '' ,
driverselectLoading : false ,
driverselectOption : [ ] ,
leftArr : '<<<' ,
showScoreChart : true
}
} ,
async mounted ( ) {
@ -262,6 +344,9 @@ export default {
this . checkMobile ( ) ;
const urlParams = new URLSearchParams ( window . location . search ) ;
this . isZd = urlParams ? . get ( 'isZd' ) || ''
/* if(!this.isMobile && this.isZd && this.isZd==1){
this.supplierId='1127'
}*/
} ,
async activated ( ) {
} ,
@ -276,7 +361,7 @@ export default {
this . $refs . Doughnut5 . initCircle ( )
this . $refs . Doughnut6 . initCircle ( )
this . $refs . Doughnut7 . initCircle ( )
} , 500 )
} , 1 500)
} ,
async remoteMethod ( query ) {
if ( query !== '' ) {
@ -294,11 +379,28 @@ export default {
this . selectOption = [ ] ;
}
} ,
async driverremoteMethod ( query ) {
if ( query !== '' ) {
this . driverselectLoading = true ;
try {
const result = await getDriverName ( query ) ;
this . driverselectOption = result . data || [ ]
} catch ( error ) {
this . driverselectOption = [ ] ;
} finally {
this . driverselectLoading = false ;
}
} else {
this . driverselectOption = [ ] ;
}
} ,
async searchHandle ( ) { //web端服务商搜索操作
console . log ( "搜索按钮" )
} ,
async changeHandle ( ) {
await this . getData ( ) ;
this . v1 = [ ]
this . v2 = [ ]
await this . twoTabHanldeData ( ) ;
await this . drawLine ( ) ;
} ,
async switchHandle ( ) {
@ -318,6 +420,8 @@ export default {
this . v5 = [ ]
this . v6 = [ ]
this . xAxisArr = [ ]
this . etlDetailList = [ ]
this . etlLabelList = [ ]
await this . getKpiData ( )
this . loadingData = false
} finally {
@ -333,6 +437,7 @@ export default {
this . activeIndex = 0 ;
this . detailList = [ ] ;
this . labelList = [ ] ;
this . driverName = ''
this . getData ( ) ;
if ( this . active === 1 ) {
setTimeout ( ( ) => {
@ -401,9 +506,11 @@ export default {
type : 'line' ,
data : this . v1 ,
smooth : true ,
yAxisIndex : 0 ,
label : {
show : true , // 显示标签
position : 'top' , // 标签位置在柱形顶部
formatter : '{c}%'
}
} ,
{
@ -411,6 +518,7 @@ export default {
type : "line" ,
data : this . v3 ,
smooth : true ,
yAxisIndex : 0 ,
label : {
show : true ,
position : 'top' ,
@ -422,6 +530,7 @@ export default {
type : 'line' ,
smooth : true ,
data : this . v2 ,
yAxisIndex : 0 ,
label : {
show : true ,
position : 'top' ,
@ -748,14 +857,38 @@ export default {
} ) ;
this . indexData = res . data ;
this . supplierName = res . data ? . supplierName
this . indexData . refuseOrderRate = this . indexData . refuseOrderRate * 100 ? . toFixed ( 2 )
this . indexData . timeoutOrderRate = this . indexData . timeout OrderRate* 100 ? . toFixed ( 2 )
this . indexData . complain OrderRate= this . indexData . complain OrderRate* 100 ? . toFixed ( 2 )
this . indexData . customerSatisfaction = this . indexData . customerSatisfaction * 100 ? . toFixed ( 2 )
this . indexData . threeMinutesContact Rate = this . indexData . threeMinutesContactRate * 100 ? . toFixed ( 2 )
this . indexData . urgeRate = this . indexData . urgeRate * 100 ? . toFixed ( 2 )
this . indexData . app Rate= this . indexData . appRate * 100 ? . toFixed ( 2 )
this . indexData . polymerizationSuccessRate = this . indexData . polymerizationSuccessRate * 100 ? . toFixed ( 2 )
this . indexData . refuseOrderRate = this . indexData . refuseOrderRate * 100
if ( this . indexData . refuse OrderRate % 1 !== 0 ) {
this . indexData . refuse OrderRate = this . indexData . refuse OrderRate. toFixed ( 2 ) ;
}
this . indexData . timeoutOrder Rate = this . indexData . timeoutOrderRate * 100
if ( this . indexData . timeoutOrderRate % 1 !== 0 ) {
this . indexData . timeoutOrder Rate = this . indexData . timeoutOrderRate . toFixed ( 2 ) ;
}
this . indexData . complainOrderRate = this . indexData . complainOrderRate * 100
if ( this . indexData . complainOrderRate % 1 !== 0 ) {
this . indexData . complainOrderRate = this . indexData . complainOrderRate . toFixed ( 2 ) ;
}
this . indexData . customerSatisfaction = this . indexData . customerSatisfaction * 100
if ( this . indexData . customerSatisfaction % 1 !== 0 ) {
this . indexData . customerSatisfaction = this . indexData . customerSatisfaction . toFixed ( 2 ) ;
}
this . indexData . threeMinutesContactRate = this . indexData . threeMinutesContactRate * 100
if ( this . indexData . threeMinutesContactRate % 1 !== 0 ) {
this . indexData . threeMinutesContactRate = this . indexData . threeMinutesContactRate . toFixed ( 2 ) ;
}
this . indexData . urgeRate = this . indexData . urgeRate * 100
if ( this . indexData . urgeRate % 1 !== 0 ) {
this . indexData . urgeRate = this . indexData . urgeRate . toFixed ( 2 ) ;
}
this . indexData . appRate = this . indexData . appRate * 100
if ( this . indexData . appRate % 1 !== 0 ) {
this . indexData . appRate = this . indexData . appRate . toFixed ( 2 ) ;
}
this . indexData . polymerizationSuccessRate = this . indexData . polymerizationSuccessRate * 100
if ( this . indexData . polymerizationSuccessRate % 1 !== 0 ) {
this . indexData . polymerizationSuccessRate = this . indexData . polymerizationSuccessRate . toFixed ( 2 ) ;
}
} else if ( [ 1 , 2 ] . includes ( this . active ) ) {
let res = await getStatisticsKpi ( {
startTime : this . active === 1 ? this . startMonthTime : this . startTime ,
@ -764,21 +897,23 @@ export default {
supplierId : this . supplierId ,
} )
this . detailList = res . data ? . map ( item => {
item . refuseOrderRate = item . refuseOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . timeoutOrderRate = item . timeoutOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . cancelRate = item . cancelRate * 100 ? . toFixed ( 2 ) + '%'
item . urgeRate = item . urgeRate * 100 ? . toFixed ( 2 ) + '%'
item . complainOrderRate = item . complainOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . customerEvaluateRate = item . customerEvaluateRate * 100 ? . toFixed ( 2 ) + '%'
item . appRate = item . appRate * 100 ? . toFixed ( 2 ) + '%'
item . threeMinutesContactRate = item . threeMinutesContactRate * 100 ? . toFixed ( 2 ) + '%'
item . pinganPolymerizationSuccessRate = item . pinganPolymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . zhonghuaPolymerizationSuccessRate = item . zhonghuaPolymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . zdPolymerizationSuccessRate = item . zdPolymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . polymerizationSuccessRate = item . polymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . threeMinutesReceivingRate = item . threeMinutesReceivingRate * 100 ? . toFixed ( 2 ) + '%'
item . fortyMinutesArrivalRate = item . fortyMinutesArrivalRate * 100 ? . toFixed ( 2 ) + '%'
item . customerSatisfaction = item . customerSatisfaction * 100 ? . toFixed ( 2 ) + '%'
item . refuseOrderRate = this . formatPercentage ( item . refuseOrderRate ) ;
item . timeoutOrderRate = this . formatPercentage ( item . timeoutOrderRate ) ;
item . cancelRate = this . formatPercentage ( item . cancelRate ) ;
item . urgeRate = this . formatPercentage ( item . urgeRate ) ;
item . complainOrderRate = this . formatPercentage ( item . complainOrderRate ) ;
item . customerEvaluateRate = this . formatPercentage ( item . customerEvaluateRate ) ;
item . appRate = this . formatPercentage ( item . appRate ) ;
item . threeMinutesContactRate = this . formatPercentage ( item . threeMinutesContactRate ) ;
item . pinganPolymerizationSuccessRate = this . formatPercentage ( item . pinganPolymerizationSuccessRate ) ;
item . zhonghuaPolymerizationSuccessRate = this . formatPercentage ( item . zhonghuaPolymerizationSuccessRate ) ;
item . zdPolymerizationSuccessRate = this . formatPercentage ( item . zdPolymerizationSuccessRate ) ;
item . polymerizationSuccessRate = this . formatPercentage ( item . polymerizationSuccessRate ) ;
item . threeMinutesReceivingRate = this . formatPercentage ( item . threeMinutesReceivingRate ) ;
item . fortyMinutesArrivalRate = this . formatPercentage ( item . fortyMinutesArrivalRate ) ;
item . customerSatisfaction = this . formatPercentage ( item . customerSatisfaction ) ;
item . trailFortyMinutesArrivalRate = this . formatPercentage ( item . trailFortyMinutesArrivalRate ) ;
item . minorFortyMinutesArrivalRate = this . formatPercentage ( item . minorFortyMinutesArrivalRate ) ;
let formatVal = dayjs ( item . statisticsDate ) . format ( 'DD' ) ;
let formatVal1 = dayjs ( item . statisticsDate ) . format ( 'M' ) ;
return { ... item , date : formatVal , month : ( formatVal1 == this . current ) ? '本月' : ( formatVal1 + '月' ) } ;
@ -794,6 +929,7 @@ export default {
startTime : this . startTime ,
endTime : this . endTime ,
statisticsType : this . active === 3 ? 1 : 2 ,
supplierId : this . supplierId ,
driverId : this . driverId ,
driverName : this . driverName ,
pageNum : this . pageNum ,
@ -802,26 +938,29 @@ export default {
// this.detailList = res.data
this . total = res . total
this . detailList = res . data ? . map ( item => {
item . refuseOrderRate = item . refuseOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . timeoutOrderRate = item . timeoutOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . cancelRate = item . cancelRate * 100 ? . toFixed ( 2 ) + '%'
item . complainOrderRate = item . complainOrderRate * 100 ? . toFixed ( 2 ) + '%'
item . customerEvaluateRate = item . customerEvaluateRate * 100 ? . toFixed ( 2 ) + '%'
item . appRate = item . appRate * 100 ? . toFixed ( 2 ) + '%'
item . threeMinutesContactRate = item . threeMinutesContactRate * 100 ? . toFixed ( 2 ) + '%'
item . pinganPolymerizationSuccessRate = item . pinganPolymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . zhonghua PolymerizationSuccessRate= item . zhonghua PolymerizationSuccessRate* 100 ? . toFixed ( 2 ) + '%'
item . zd PolymerizationSuccessRate = item . zd PolymerizationSuccessRate * 100 ? . toFixed ( 2 ) + '%'
item . p olymerizationSuccessRate= item . p olymerizationSuccessRate* 100 ? . toFixed ( 2 ) + '%'
item . threeMinutesReceivingRate = item . threeMinutesReceivingRate * 100 ? . toFixed ( 2 ) + '%'
item . forty MinutesArrivalRate = item . forty MinutesArrivalRate * 100 ? . toFixed ( 2 ) + '%'
item . trailF ortyMinutesArrivalRate= item . trailFortyMinutesArrivalRate * 100 ? . toFixed ( 2 ) + '%'
item . minorFortyMinutesArrivalRate = item . minorFortyMinutesArrivalRate * 100 ? . toFixed ( 2 ) + '%'
item . customerSatisfaction = item . customerSatisfaction * 100 ? . toFixed ( 2 ) + '%'
item . refuseOrderRate = this . formatPercentage ( item . refuseOrderRate ) ;
item . timeoutOrderRate = this . formatPercentage ( item . timeoutOrderRate ) ;
item . cancelRate = this . formatPercentage ( item . cancelRate ) ;
// item.urgeRate=this.formatPercentage(item.urgeRate) ;
item . complainOrderRate = this . formatPercentage ( item . complainOrderRate ) ;
item . customerEvaluateRate = this . formatPercentage ( item . customerEvaluateRate ) ;
item . appRate = this . formatPercentage ( item . appRate ) ;
item . threeMinutesContactRate = this . formatPercentage ( item . threeMinutesContactRate ) ;
item . pingan PolymerizationSuccessRate= this . formatPercentage ( item . pingan PolymerizationSuccessRate) ;
item . zhonghua PolymerizationSuccessRate = this . formatPercentage ( item . zhonghua PolymerizationSuccessRate ) ;
item . zdP olymerizationSuccessRate= this . formatPercentage ( item . zdP olymerizationSuccessRate) ;
item . polymerizationSuccessRate = this . formatPercentage ( item . polymerizationSuccessRate ) ;
item . three MinutesReceivingRate = this . formatPercentage ( item . three MinutesReceivingRate ) ;
item . f ortyMinutesArrivalRate= this . formatPercentage ( item . fortyMinutesArrivalRate ) ;
item . customerSatisfaction = this . formatPercentage ( item . customerSatisfaction ) ;
let formatVal = dayjs ( item . statisticsDate ) . format ( 'DD' ) ;
return { ... item , date : formatVal } ;
} ) ;
this . loading = false ;
if ( this . active === 4 && ! this . driverName ) {
this . detailList = [ ]
this . total = 0
}
await this . twoTabHanldeData ( ) ;
} else if ( [ 5 , 6 , 7 , 8 , 9 ] . includes ( this . active ) ) {
this . detailList = [ ]
@ -831,11 +970,12 @@ export default {
endTime : this . endTime ,
searchType : this . setType ( this . active ) ,
pageNum : this . pageNum ,
pageSize : this . pageSize
pageSize : this . pageSize ,
supplierId : this . supplierId
} ) ;
this . total = result . total
this . detailList = result . data ? . map ( item => {
let formatVal = dayjs ( item . createTime ) . format ( 'DD' ) ;
let formatVal = item . createTime ? dayjs ( item . createTime ) . format ( 'DD' ) : '' ;
return { ... item , date : formatVal } ;
} ) ;
this . loading = false
@ -866,8 +1006,8 @@ export default {
{ label : '服务内容' , prop : 'serviceName' } ,
{ label : '接单车号' , prop : 'plateNumber' } ,
{ label : '接单师傅' , prop : 'driverName' } ,
{ label : '手机号 ' , prop : 'driverPhon e' } ,
{ label : '客户投诉内容 ' , prop : 'reason ' } ,
{ label : '投诉时间 ' , prop : 'complainCreateTim e' } ,
{ label : '投诉类型 ' , prop : 'complainTypeString ' } ,
]
} else if ( this . active === 8 ) { //不使用App案件明细
// console.log("不使用App案件明细")
@ -875,11 +1015,19 @@ export default {
{ label : '案件编号' , prop : 'orderCode' } ,
{ label : '服务内容' , prop : 'serviceName' } ,
{ label : '接单师傅手机号' , prop : 'driverPhone' } ,
{ label : '工单创建时间' , prop : 'orderCreateTime' } ,
{ label : '事发地' , prop : 'vehiclePointAddress' } ,
]
} else if ( this . active === 9 ) { //车辆在线情况
this . labelList = [
{ label : '日期' , prop : 'date' } ,
{ label : '在线车辆数量' , prop : 'v ehicleCount' } ,
{ label : '0点 在线车辆数量' , prop : 'zeroClockV ehicleCount' } ,
{ label : '8点在线车辆数量' , prop : 'eightClockVehicleCount' } ,
{ label : '12点在线车辆数量' , prop : 'twelveClockVehicleCount' } ,
{ label : '16点在线车辆数量' , prop : 'sixteenClockVehicleCount' } ,
{ label : '20点在线车辆数量' , prop : 'twentyClockVehicleCount' } ,
{ label : '22点在线车辆数量' , prop : 'twentyTwoClockVehicleCount' } ,
]
}
}
@ -887,6 +1035,14 @@ export default {
this . loading = false
}
} ,
formatPercentage ( value ) {
let result = value * 100 ;
if ( Number . isInteger ( result ) ) {
return result . toString ( ) + '%' ;
} else {
return result . toFixed ( 2 ) + '%' ;
}
} ,
checkMobile ( ) {
const userAgent = navigator . userAgent || navigator . vendor || window . opera ;
this . isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i . test ( userAgent ) ;
@ -945,13 +1101,31 @@ export default {
} ,
// 二级tab切可不调接口, 需再次处理数据,1,2,3,4
twoTabHanldeData ( ) {
this . etlDetailList = [ ]
this . etlLabelList = [ ]
if ( this . active === 1 ) {
const columnObj = { } //创建标题数组中第一个对象
columnObj . label = 'KPI' //第一个标题名称
columnObj . prop = 'month' //第一个标题名称对应的字段
this . etlLabelList . push ( columnObj )
if ( this . activeIndex === 0 ) { //接单指标
this . d etailList? . map ( item => {
this . etlD etailList= [ { 'month' : '派遣量' } , { 'month' : '承接量' } , { 'month' : '完成量' } ,
{ 'month' : '拒单量' } , { 'month' : '拒单率(%)' } , { 'month' : '超时接单量' } , { 'month' : '超时率(%)' } , { 'month' : '客户取消率(%)' } ]
let props = 'prop' //自定义字段名称
this . detailList ? . map ( ( item , index ) => {
this . v1 . push ( item . dispatchOrderCount )
this . v2 . push ( item . refuseOrderRate )
this . v3 . push ( item . timeoutOrderRate )
this . v4 . push ( item . cancelrate )
this . v2 . push ( item . refuseOrderRate . replace ( '%' , '' ) )
this . v3 . push ( item . timeoutOrderRate . replace ( '%' , '' ) )
this . v4 . push ( item . cancelRate . replace ( '%' , '' ) )
const columnObj = { }
columnObj . label = item . month // 每一列的标题的名称
columnObj . prop = props + index //自定义每一列标题字段名称
this . etlLabelList . push ( columnObj )
let mappings = [ 'dispatchOrderCount' , 'receiveOrderCount' , 'finishOrderCount' , 'refuseOrderCount' ,
'refuseOrderRate' , 'timeoutOrderCount' , 'timeoutOrderRate' , 'cancelRate' ] ;
for ( let i = 0 ; i < mappings . length ; i ++ ) {
this . $set ( this . etlDetailList [ i ] , columnObj . prop , item [ mappings [ i ] ] ) ;
}
} )
this . labelList = [
{ label : '月' , prop : 'month' } ,
@ -959,82 +1133,117 @@ export default {
{ label : '承接量' , prop : 'receiveOrderCount' } ,
{ label : '完成量' , prop : 'finishOrderCount' } ,
{ label : '拒单量' , prop : 'refuseOrderCount' } ,
{ label : '拒单率( %) ' , prop : 'refuseOrderRate' } ,
{ label : '拒单率(%) ' , prop : 'refuseOrderRate' } ,
{ label : '超时接单量' , prop : 'timeoutOrderCount' } ,
{ label : '超时率( %) ' , prop : 'timeoutOrderRate' } ,
{ label : '取消率( %) ' , prop : 'cancelr ate' } ,
{ label : '超时率(%) ' , prop : 'timeoutOrderRate' } ,
{ label : '取消率(%) ' , prop : 'cancelR ate' } ,
]
} else if ( this . activeIndex === 1 ) {
this . d etailList? . map ( item => {
this . v1 . push ( item . customerEvaluateRate )
this . v2 . push ( item . customerSatisfaction )
this . v3 . push ( item . complainOrderRate )
this . etlD etailList= [ { 'month' : '投诉量' } , { 'month' : '投诉率(%)' } , { 'month' : '客户满意度(%)' } , { 'month' : '客户评价率(%)' } ]
let props = 'prop' //自定义字段名称
this . detailList ? . map ( ( item , index ) => {
this . v1 . push ( item . customerEvaluateRate . replace ( '%' , '' ) )
this . v2 . push ( item . customerSatisfaction . replace ( '%' , '' ) )
this . v3 . push ( item . complainOrderRate . replace ( '%' , '' ) )
const columnObj = { }
columnObj . label = item . month // 每一列的标题的名称
columnObj . prop = props + index //自定义每一列标题字段名称
this . etlLabelList . push ( columnObj )
let mappings = [ 'complainOrderCount' , 'complainOrderRate' , 'customerSatisfaction' , 'customerEvaluateRate' ] ;
for ( let i = 0 ; i < mappings . length ; i ++ ) {
this . $set ( this . etlDetailList [ i ] , columnObj . prop , item [ mappings [ i ] ] ) ;
}
} )
this . labelList = [
{ label : '月' , prop : 'month' } ,
{ label : '投诉量' , prop : 'complainOrderCount' } ,
{ label : '投诉率( %) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度( %) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率( %) ' , prop : 'customerEvaluateRate' } ,
{ label : '投诉率(%) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度(%) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率(%) ' , prop : 'customerEvaluateRate' } ,
]
} else if ( this . activeIndex === 2 ) {
this . d etailList? . map ( item => {
this . v1 . push ( item . appRate )
this . v2 . push ( item . threeMinutesContactRate )
this . v3 . push ( item . p inganPolymerizationSuccessRate )
this . v4 . push ( item . zhonghuaPolymerizationSuccessRate )
this . v5 . push ( item . zdPolymerizationSuccessRate )
this . v6 . push ( item . polymerizationSuccessRate )
this . etlD etailList= [ { 'month' : '使用率(%)' } , { 'month' : '3′ 联系客户率(%)' } , { 'month' : '平安聚合成功率(%)' } , { 'month' : '中华聚合成功率(%)' }
, { 'month' : '中道聚合成功率(%' } , { 'month' : '总聚合成功率(%)' } ]
let props = 'prop' //自定义字段名称
this . detailList ? . map ( ( item , index ) => {
this . v1 . push ( item . appRate . replace ( '%' , '' ) )
this . v2 . push ( item . threeMinutesContactRate . replace ( '%' , '' ) )
this . v3 . push ( item . pinganP olymerizationSuccessRate . replace ( '%' , '' ) )
this . v4 . push ( item . zhonghuaPolymerizationSuccessRate . replace ( '%' , '' ) )
this . v5 . push ( item . zdPolymerizationSuccessRate . replace ( '%' , '' ) )
this . v6 . push ( item . polymerizationSuccessRate . replace ( '%' , '' ) )
const columnObj = { }
columnObj . label = item . month // 每一列的标题的名称
columnObj . prop = props + index //自定义每一列标题字段名称
this . etlLabelList . push ( columnObj )
let mappings = [ 'appRate' , 'threeMinutesContactRate' , 'pinganPolymerizationSuccessRate' , 'zhonghuaPolymerizationSuccessRate' , 'zdPolymerizationSuccessRate' , 'polymerizationSuccessRate' ] ;
for ( let i = 0 ; i < mappings . length ; i ++ ) {
this . $set ( this . etlDetailList [ i ] , columnObj . prop , item [ mappings [ i ] ] ) ;
}
} )
this . labelList = [
{ label : '月' , prop : 'month' } ,
{ label : '使用率( %) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率( %) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率( %) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率( %) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率( %) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率( %) ' , prop : 'polymerizationSuccessRate' } ,
{ label : '使用率(%) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率(%) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率(%) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率(%) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率(%) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率(%) ' , prop : 'polymerizationSuccessRate' } ,
]
} else if ( this . activeIndex === 3 ) {
this . etlDetailList = [ { 'month' : '接单时效(分)' } , { 'month' : '3′ 接单率(%)' } , { 'month' : '到达时效(分)' } , { 'month' : '40′ 到达率(%)' } , { 'month' : '聚合成功到达时效(分)' } ]
let props = 'prop' //自定义字段名称
if ( this . isMobile ) {
if ( this . value == 1 ) {
this . detailList ? . map ( item => {
this . v1 . push ( item . receiving )
this . v2 . push ( item . threeMinutesReceivingRate )
this . v2 . push ( item . threeMinutesReceivingRate . replace ( '%' , '' ) )
} )
} else {
console . log ( " this.detailList师傅接单时效" , this . detailList )
this . detailList ? . map ( item => {
this . v1 . push ( item . arriving )
this . v2 . push ( item . polymerizationSuccessArriving )
this . v3 . push ( item . fortyMinutesArrivalRate )
this . v3 . push ( item . fortyMinutesArrivalRate . replace ( '%' , '' ) )
} )
console . log ( "this.v1" , this . v1 , this . v2 , this . v3 )
}
this . detailList ? . map ( ( item , index ) => {
const columnObj = { }
columnObj . label = item . month // 每一列的标题的名称
columnObj . prop = props + index //自定义每一列标题字段名称
this . etlLabelList . push ( columnObj )
let mappings = [ 'receiving' , 'threeMinutesReceivingRate' , 'arriving' , 'fortyMinutesArrivalRate' , 'polymerizationSuccessArriving' ] ;
for ( let i = 0 ; i < mappings . length ; i ++ ) {
this . $set ( this . etlDetailList [ i ] , columnObj . prop , item [ mappings [ i ] ] ) ;
}
} )
} else {
this . detailList ? . map ( item => {
this . v1 . push ( item . receiving )
this . v2 . push ( item . threeMinutesReceivingRate )
this . v2 . push ( item . threeMinutesReceivingRate . replace ( '%' , '' ) )
} )
if ( this . swithVal ) {
this . detailList ? . map ( item => {
this . v3 . push ( item . trailArriving )
this . v4 . push ( item . trailPolymerizationSuccessArriving )
this . v5 . push ( item . trailFortyMinutesArrivalRate )
this . v4 . push ( item . trailPolymerizationSuccessArs riving )
this . v5 . push ( item . trailFortyMinutesArrivalRate ? item . trailFortyMinutesArrivalRate . replace ( '%' , '' ) : item . trailFortyMinutesArrivalRate )
} )
} else {
this . detailList ? . map ( item => {
this . v3 . push ( item . minorArriving )
this . v4 . push ( item . minorPolymerizationSuccessArriving )
this . v5 . push ( item . minorFortyMinutesArrivalRate )
this . v5 . push ( item . minorFortyMinutesArrivalRate ? item . minorFortyMinutesArrivalRate . replace ( '%' , '' ) : item . minorFortyMinutesArrivalRate )
} )
}
}
this . labelList = [
{ label : '月' , prop : 'month' } ,
{ label : '接单时效(分)' , prop : 'receiving' } ,
{ label : '3′ 接单率( %) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '3′ 接单率(%) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '到达时效(分)' , prop : 'arriving' } ,
{ label : '40′ 到达率( %) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效' , prop : 'polymerizationSuccessArriving' } ,
{ label : '40′ 到达率(%) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效(分) ' , prop : 'polymerizationSuccessArriving' } ,
]
}
} else if ( this . active === 2 ) {
@ -1045,42 +1254,42 @@ export default {
{ label : '承接案件量' , prop : 'receiveOrderCount' } ,
{ label : '完成量' , prop : 'finishOrderCount' } ,
{ label : '拒单量' , prop : 'refuseOrderCount' } ,
{ label : '拒单率( %) ' , prop : 'refuseOrderRate' } ,
{ label : '拒单率(%) ' , prop : 'refuseOrderRate' } ,
{ label : '超时接单量' , prop : 'timeoutOrderCount' } ,
{ label : '超时率( %) ' , prop : 'timeoutOrderRate' } ,
{ label : '客户取消率( %) ' , prop : 'cancelr ate' } ,
{ label : '超时率(%) ' , prop : 'timeoutOrderRate' } ,
{ label : '客户取消率(%) ' , prop : 'cancelR ate' } ,
]
} else if ( this . activeIndex === 1 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '投诉量' , prop : 'complainOrderCount' } ,
{ label : '投诉率( %) ' , prop : 'complainOrderRate' } ,
{ label : '客户评价率( %) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率( %) ' , prop : 'urgeRate' } ,
{ label : '投诉率(%) ' , prop : 'complainOrderRate' } ,
{ label : '客户评价率(%) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率(%) ' , prop : 'urgeRate' } ,
]
} else if ( this . activeIndex === 2 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '使用率( %) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率( %) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率( %) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率( %) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率( %) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率( %) ' , prop : 'polymerizationSuccessRate' } ,
{ label : '使用率(%) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率(%) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率(%) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率(%) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率(%) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率(%) ' , prop : 'polymerizationSuccessRate' } ,
]
} else if ( this . activeIndex === 3 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '接单时效(分)' , prop : 'receiving' } ,
{ label : '3′ 接单率( %) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '3′ 接单率(%) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '小修到达时效(分)' , prop : 'minorArriving' } ,
{ label : '拖车到达时效(分)' , prop : 'trailArriving' } ,
{ label : '困境到达时效(分)' , prop : 'dilemmaArriving' } ,
{ label : '到达时效(分)' , prop : 'arriving' } ,
{ label : '40′ 到达率( %) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '40′ 到达率(%) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '小修聚合成功到达时效(分)' , prop : 'minorPolymerizationSuccessArriving' } ,
{ label : '拖车聚合成功到达时效(分)' , prop : 'trailPolymerizationSuccessArriving' } ,
{ label : '聚合成功到达时效' , prop : 'polymerizationSuccessArriving' } ,
{ label : '聚合成功到达时效(分) ' , prop : 'polymerizationSuccessArriving' } ,
]
}
} else if ( this . active === 3 ) {
@ -1089,83 +1298,87 @@ export default {
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '承接案件量' , prop : 'receiveOrderCount' } ,
{ label : '拒单量' , prop : 'refuseOrderCount' } ,
{ label : '拒单率( %) ' , prop : 'refuseOrderRate' } ,
{ label : '拒单率(%) ' , prop : 'refuseOrderRate' } ,
{ label : '超时接单量' , prop : 'timeoutOrderCount' } ,
{ label : '超时率( %) ' , prop : 'timeoutOrderRate' } ,
{ label : '超时率(%) ' , prop : 'timeoutOrderRate' } ,
]
} else if ( this . activeIndex === 1 ) {
this . labelList = [
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '承接案件量' , prop : 'receiveOrderCount' } ,
{ label : '投诉量' , prop : 'complainOrderCount' } ,
{ label : '投诉率( %) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度( %) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率( %) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率( %) ' , prop : 'urgeRate' } ,
{ label : '投诉率(%) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度(%) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率(%) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率(%) ' , prop : 'urgeRate' } ,
]
} else if ( this . activeIndex === 2 ) {
this . labelList = [
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '承接案件量' , prop : 'receiveOrderCount' } ,
{ label : 'App使用率( %) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率( %) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率( %) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率( %) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率( %) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率( %) ' , prop : 'polymerizationSuccessRate' } ,
{ label : '日均在线时长' , prop : 'onlineDuration' } ,
{ label : 'App使用率(%) ' , prop : 'appRate' } ,
{ label : '3′ 联系客户率(%) ' , prop : 'threeMinutesContactRate' } ,
{ label : '平安聚合成功率(%) ' , prop : 'pinganPolymerizationSuccessRate' } ,
{ label : '中华聚合成功率(%) ' , prop : 'zhonghuaPolymerizationSuccessRate' } ,
{ label : '中道聚合成功率(%) ' , prop : 'zdPolymerizationSuccessRate' } ,
{ label : '总聚合成功率(%) ' , prop : 'polymerizationSuccessRate' } ,
{ label : '日均在线时长(h) ' , prop : 'onlineDuration' } ,
]
} else if ( this . activeIndex === 3 ) {
this . labelList = [
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '接单时效(分)' , prop : 'receiving' } ,
{ label : '3′ 接单率( %) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '3′ 接单率(%) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '到达时效(分)' , prop : 'arriving' } ,
{ label : '40′ 到达率( %) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效' , prop : 'polymerizationSuccessArriving' } ,
{ label : '40′ 到达率(%) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效(分) ' , prop : 'polymerizationSuccessArriving' } ,
]
}
} else if ( this . active === 4 ) {
if ( this . activeIndex === 0 ) { //接单指标
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '派遣案件量' , prop : 'dispatchOrderCount' } ,
{ label : '承接案件量' , prop : 'receiveOrderCount' } ,
{ label : '完成量' , prop : 'finishOrderCount' } ,
{ label : '拒单量' , prop : 'refuseOrderCount' } ,
{ label : '拒单率( %) ' , prop : 'refuseOrderRate' } ,
{ label : '拒单率(%) ' , prop : 'refuseOrderRate' } ,
{ label : '超时接单量' , prop : 'timeoutOrderCount' } ,
{ label : '超时率( %) ' , prop : 'timeoutOrderRate' } ,
{ label : '客户取消率( %) ' , prop : 'cancelr ate' } ,
{ label : '超时率(%) ' , prop : 'timeoutOrderRate' } ,
{ label : '客户取消率(%) ' , prop : 'cancelR ate' } ,
]
} else if ( this . activeIndex === 1 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '投诉量' , prop : 'complainOrderCount' } ,
{ label : '投诉率( %) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度( %) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率( %) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率( %) ' , prop : 'urgeRate' } ,
{ label : '投诉率(%) ' , prop : 'complainOrderRate' } ,
{ label : '客户满意度(%) ' , prop : 'customerSatisfaction' } ,
{ label : '客户评价率(%) ' , prop : 'customerEvaluateRate' } ,
{ label : '催促率(%) ' , prop : 'urgeRate' } ,
]
} else if ( this . activeIndex === 2 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '使用率(%) ' , prop : 'appRat e' } ,
{ label : '3′ 联系客户率( %) ' , prop : 'threeMinutesContact Rate' } ,
{ label : '平安聚合成功率(%) ' , prop : 'pinganPolymerizationSuccess Rate' } ,
{ label : '中华 聚合成功率( %) ' , prop : 'zhonghua PolymerizationSuccessRate' } ,
{ label : '中道 聚合成功率( %) ' , prop : 'zd PolymerizationSuccessRate' } ,
{ label : '总 聚合成功率( %) ' , prop : 'p olymerizationSuccessRate' } ,
{ label : '日均在线时长 ' , prop : 'onlineDuration ' } ,
{ label : '师傅姓名 ' , prop : 'driverNam e' } ,
{ label : '使用率(%) ' , prop : 'app Rate' } ,
{ label : '3′ 联系客户率(%) ' , prop : 'threeMinutesContact Rate' } ,
{ label : '平安 聚合成功率(%) ' , prop : 'pingan PolymerizationSuccessRate' } ,
{ label : '中华 聚合成功率(%) ' , prop : 'zhonghua PolymerizationSuccessRate' } ,
{ label : '中道 聚合成功率(%) ' , prop : 'zdP olymerizationSuccessRate' } ,
{ label : '总聚合成功率(%) ' , prop : 'polymerizationSuccessRate ' } ,
{ label : '日均在线时长(h)' , prop : 'onlineDuration' } ,
]
} else if ( this . activeIndex === 3 ) {
this . labelList = [
{ label : '日' , prop : 'date' } ,
{ label : '师傅姓名' , prop : 'driverName' } ,
{ label : '接单时效(分)' , prop : 'receiving' } ,
{ label : '3′ 接单率( %) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '3′ 接单率(%) ' , prop : 'threeMinutesReceivingRate' } ,
{ label : '到达时效(分)' , prop : 'arriving' } ,
{ label : '40′ 到达率( %) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效' , prop : 'polymerizationSuccessArriving' } ,
{ label : '40′ 到达率(%) ' , prop : 'fortyMinutesArrivalRate' } ,
{ label : '聚合成功到达时效(分) ' , prop : 'polymerizationSuccessArriving' } ,
]
}
}
@ -1276,6 +1489,9 @@ export default {
: : v - deep . el - input _ _inner {
border - radius : 0 px 20 px 20 px 0 px ;
}
: : v - deep . el - input _ _suffix {
top : 4 px ; /* 给清除按钮预留空间 */
}
}
}
@ -1311,7 +1527,10 @@ export default {
border - right : 1 px solid # ccc ;
border - bottom : 1 px solid # ccc ; ;
}
: : v - deep . el - pagination . el - select . el - input {
width : 80 px ;
margin : 0
}
. contentWrap {
@ include wh ( 100 % , calc ( 100 % - 120 px ) ) ;
overflow - y : auto ;
@ -1321,10 +1540,36 @@ export default {
@ include whBg ( 375 px , 146 px , # FFFFFF ) ;
@ include sizing4Padding ( 19 px , 25 px , 38 px , 19 px ) ;
margin - bottom : 10 px ;
. scoreTitle {
@ include flexBetCen ;
i {
cursor : pointer ;
font - size : 14 px ;
}
}
. storeWrap {
width : 100 % ;
text - align : center ;
. detailScore {
display : flex ;
justify - content : center ;
}
/* .defen{
display: inline-block;
//width: 92px;
//text-align: right;
}*/
. left {
text - align : right ;
padding - right : 5 px ;
}
. right {
display : flex ;
justify - content : space - between ;
flex - direction : column ;
text - align : left ;
}
}
. title {
@ -1382,13 +1627,25 @@ export default {
. webcontentWrap {
@ include wh ( 100 % , calc ( 100 % - 86 px ) ) ;
}
. tipArrow {
position : absolute ;
top : 10 px ;
color : # FFFFFF ;
font - size : 12 px ;
}
. left {
left : 0 ;
}
. right {
right : 0 px ;
}
. tabWrap {
@ include wh ( 100 % , 22 px ) ;
@ include flexColAround ;
margin : 10 px 0 ;
div {
cursor : pointer ;
padding : 2 px 8 px ;
border - radius : 7 px ;
font - size : 12 px ;
@ -1417,12 +1674,10 @@ export default {
border - color : # F1B289 transparent transparent transparent ;
}
}
. webTabWrap {
width : 40 % ! important ;
. active : after {
margin - top : 5 px ;
margin - top : 4 px ;
}
}
@ -1463,6 +1718,10 @@ export default {
: : v - deep . el - input _ _inner {
height : 30 px ;
}
: : v - deep . el - input _ _suffix {
top : 4 px ; /* 给清除按钮预留空间 */
}
}
. comTab {
width : 100 % ;