|
|
@@ -13,222 +13,224 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 简报 --> |
|
|
|
<view class="briefing"> |
|
|
|
<view class="briefing-title"> |
|
|
|
简报 |
|
|
|
</view> |
|
|
|
<!-- 简报表格部分 --> |
|
|
|
<view class="briefing-box"> |
|
|
|
<block v-for="(data, index) in numlist" :key="index"> |
|
|
|
<view class="briefing-box-item" @click="toAuthPage(data)"> |
|
|
|
<view class="tops" :class="[data.class || '']"> |
|
|
|
{{ data.name }} |
|
|
|
</view> |
|
|
|
<view class="middle" :class="[data.class || '']"> |
|
|
|
{{ data.num || 0 }} |
|
|
|
</view> |
|
|
|
<view class="bottom"> |
|
|
|
对比上周: {{ data.preNum || 0 }} |
|
|
|
<text class="b-text" |
|
|
|
:class="{up: data.percent > 0, down: data.percent < 0}">{{ data.percent || '0' }}</text> |
|
|
|
<template v-if="data.percent != 0"> |
|
|
|
<text style="margin-left: 8rpx;font-size: 34rpx;font-weight: bold;" |
|
|
|
:class="{up: data.percent > 0, down: data.percent < 0}">{{ data.percent > 0 ? '↑' : '↓' }}</text> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
<view class="nodata-box" v-if="nodata" style="background: url(../../static/images/nodata.png)no-repeat;background-size: contain;" > |
|
|
|
此项目本周还没有接待量哦~ |
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 销讲场景执行排名 --> |
|
|
|
<view class="execution-ranking"> |
|
|
|
<view class="execution-ranking-title"> |
|
|
|
销讲场景执行排名 |
|
|
|
</view> |
|
|
|
<template v-if="isShowXJTop1List"> |
|
|
|
<view class="execution-ranking-desc" v-if="false"> |
|
|
|
<text>销讲场景平均执行对比上周</text> |
|
|
|
<text>{{ rankTop('fractionPKName') }}</text> |
|
|
|
<text>{{ rankTop('fractionPK') }}</text> |
|
|
|
<text>%</text> |
|
|
|
<template v-if="rankTop('fractionBastValue') > 0"> |
|
|
|
<text>,其中【{{ rankTop('fractionBastName') }}】最强为</text> |
|
|
|
<text class="up">{{ rankTop('fractionBastValue') }}</text> |
|
|
|
<text>%</text> |
|
|
|
</template> |
|
|
|
<template v-if="rankTop('fractionLastValue') < 0"> |
|
|
|
<text>,【{{ rankTop('fractionLastName') }}】执行最弱为</text> |
|
|
|
<text class="down">{{ rankTop('fractionLastValue') }}</text> |
|
|
|
<text>%;</text> |
|
|
|
</template> |
|
|
|
<view v-if="!nodata" > |
|
|
|
<!-- 简报 --> |
|
|
|
<view class="briefing"> |
|
|
|
<view class="briefing-title"> |
|
|
|
简报 |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box" @click="toTrendAnalysis('销讲数据')"> |
|
|
|
<block v-for="(percent, index) in weekObj.XJTop1List" :key="index"> |
|
|
|
<view class="ranking-item"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.value"> |
|
|
|
</u-line-progress> |
|
|
|
<!-- 简报表格部分 --> |
|
|
|
<view class="briefing-box"> |
|
|
|
<block v-for="(data, index) in numlist" :key="index"> |
|
|
|
<view class="briefing-box-item" @click="toAuthPage(data)"> |
|
|
|
<view class="tops" :class="[data.class || '']"> |
|
|
|
{{ data.name }} |
|
|
|
</view> |
|
|
|
<view class="middle" :class="[data.class || '']"> |
|
|
|
{{ data.num || 0 }} |
|
|
|
</view> |
|
|
|
<view class="bottom"> |
|
|
|
对比上周: {{ data.preNum || 0 }} |
|
|
|
<text class="b-text" |
|
|
|
:class="{up: data.percent > 0, down: data.percent < 0}">{{ data.percent || '0' }}</text> |
|
|
|
<template v-if="data.percent != 0"> |
|
|
|
<text style="margin-left: 8rpx;font-size: 34rpx;font-weight: bold;" |
|
|
|
:class="{up: data.percent > 0, down: data.percent < 0}">{{ data.percent > 0 ? '↑' : '↓' }}</text> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} %</view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 接待统计 --> |
|
|
|
<view class="statistics"> |
|
|
|
<view class="statistics-title"> |
|
|
|
接待统计 |
|
|
|
</view> |
|
|
|
<template v-if="isShowStatistics"> |
|
|
|
<view class="statistics-desc" v-if="false"> |
|
|
|
<text> |
|
|
|
顾问平均执行率对比上周 |
|
|
|
</text> |
|
|
|
<text> |
|
|
|
{{ rankTop('ranktype') || '' }} |
|
|
|
</text> |
|
|
|
<text :class="[rankTop('class')]">{{ rankTop('people') || '' }}</text> |
|
|
|
<text class=""> |
|
|
|
人,其中{{ rankTop('topName') || '' }}上升 |
|
|
|
</text> |
|
|
|
<text class="up">{{ rankTop('topPk') || '0' }}</text> |
|
|
|
<text class=""> |
|
|
|
%为最高,{{ rankTop('lastName') || '' }}下降 |
|
|
|
</text> |
|
|
|
<text class="down">{{ rankTop('lastPk') || '0' }}</text> |
|
|
|
<text class=""> |
|
|
|
%降幅最大。 |
|
|
|
</text> |
|
|
|
|
|
|
|
<!-- 销讲场景执行排名 --> |
|
|
|
<view class="execution-ranking"> |
|
|
|
<view class="execution-ranking-title"> |
|
|
|
销讲场景执行排名 |
|
|
|
</view> |
|
|
|
<view class="table"> |
|
|
|
<view class="thead"> |
|
|
|
<block v-for="(head, headIndex) in tableHead" :key="headIndex"> |
|
|
|
<view class="thead-item" :style="[head.style]"> |
|
|
|
{{ head.title }} |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
<template v-if="isShowXJTop1List"> |
|
|
|
<view class="execution-ranking-desc" v-if="false"> |
|
|
|
<text>销讲场景平均执行对比上周</text> |
|
|
|
<text>{{ rankTop('fractionPKName') }}</text> |
|
|
|
<text>{{ rankTop('fractionPK') }}</text> |
|
|
|
<text>%</text> |
|
|
|
<template v-if="rankTop('fractionBastValue') > 0"> |
|
|
|
<text>,其中【{{ rankTop('fractionBastName') }}】最强为</text> |
|
|
|
<text class="up">{{ rankTop('fractionBastValue') }}</text> |
|
|
|
<text>%</text> |
|
|
|
</template> |
|
|
|
<template v-if="rankTop('fractionLastValue') < 0"> |
|
|
|
<text>,【{{ rankTop('fractionLastName') }}】执行最弱为</text> |
|
|
|
<text class="down">{{ rankTop('fractionLastValue') }}</text> |
|
|
|
<text>%;</text> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="tbody" @click="toEmployeesstatistics('顾问排名')"> |
|
|
|
<block v-for="(data, index) in weekObj.customerInfo1" :key="index"> |
|
|
|
<view class="tbody-item"> |
|
|
|
<view class="tbody-items name">{{ data.name }}</view> |
|
|
|
<view class="tbody-items nums">{{ data.activeCustomer }}</view> |
|
|
|
<view class="tbody-items time">{{ data.avgDuration }}m</view> |
|
|
|
<view class="tbody-items percent">{{ data.fraction }}%</view> |
|
|
|
<view class="tbody-items week" :class="{up: data.pk > 0, down: data.pk < 0}"> |
|
|
|
{{ data.pk > 0 ? `+${data.pk}` : data.pk }}% |
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box" @click="toTrendAnalysis('销讲数据')"> |
|
|
|
<block v-for="(percent, index) in weekObj.XJTop1List" :key="index"> |
|
|
|
<view class="ranking-item"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.value"> |
|
|
|
</u-line-progress> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} %</view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
|
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
<!-- 接待统计 --> |
|
|
|
<view class="statistics"> |
|
|
|
<view class="statistics-title"> |
|
|
|
接待统计 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
<template v-if="isShowStatistics"> |
|
|
|
<view class="statistics-desc" v-if="false"> |
|
|
|
<text> |
|
|
|
顾问平均执行率对比上周 |
|
|
|
</text> |
|
|
|
<text> |
|
|
|
{{ rankTop('ranktype') || '' }} |
|
|
|
</text> |
|
|
|
<text :class="[rankTop('class')]">{{ rankTop('people') || '' }}</text> |
|
|
|
<text class=""> |
|
|
|
人,其中{{ rankTop('topName') || '' }}上升 |
|
|
|
</text> |
|
|
|
<text class="up">{{ rankTop('topPk') || '0' }}</text> |
|
|
|
<text class=""> |
|
|
|
%为最高,{{ rankTop('lastName') || '' }}下降 |
|
|
|
</text> |
|
|
|
<text class="down">{{ rankTop('lastPk') || '0' }}</text> |
|
|
|
<text class=""> |
|
|
|
%降幅最大。 |
|
|
|
</text> |
|
|
|
</view> |
|
|
|
<view class="table"> |
|
|
|
<view class="thead"> |
|
|
|
<block v-for="(head, headIndex) in tableHead" :key="headIndex"> |
|
|
|
<view class="thead-item" :style="[head.style]"> |
|
|
|
{{ head.title }} |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 顾问销讲执行率排名 --> |
|
|
|
<view class="guwen-ranking"> |
|
|
|
<view class="guwen-ranking-title"> |
|
|
|
顾问销讲执行率排名(TOP10) |
|
|
|
</view> |
|
|
|
<template v-if="isShowZXLTopList"> |
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box"> |
|
|
|
<block v-for="(percent, index) in weekObj.ZXLTopList" :key="index"> |
|
|
|
<view class="ranking-item" @click="toStaffAnalysis('销讲数据', percent)"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.value"> |
|
|
|
</u-line-progress> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} %</view> |
|
|
|
<view class="tbody" @click="toEmployeesstatistics('顾问排名')"> |
|
|
|
<block v-for="(data, index) in weekObj.customerInfo1" :key="index"> |
|
|
|
<view class="tbody-item"> |
|
|
|
<view class="tbody-items name">{{ data.name }}</view> |
|
|
|
<view class="tbody-items nums">{{ data.activeCustomer }}</view> |
|
|
|
<view class="tbody-items time">{{ data.avgDuration }}m</view> |
|
|
|
<view class="tbody-items percent">{{ data.fraction }}%</view> |
|
|
|
<view class="tbody-items week" :class="{up: data.pk > 0, down: data.pk < 0}"> |
|
|
|
{{ data.pk > 0 ? `+${data.pk}` : data.pk }}% |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 顾问销讲执行率排名 --> |
|
|
|
<view class="guwen-ranking"> |
|
|
|
<view class="guwen-ranking-title"> |
|
|
|
顾问销讲执行率排名(TOP10) |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
<template v-if="isShowZXLTopList"> |
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box"> |
|
|
|
<block v-for="(percent, index) in weekObj.ZXLTopList" :key="index"> |
|
|
|
<view class="ranking-item" @click="toStaffAnalysis('销讲数据', percent)"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.value"> |
|
|
|
</u-line-progress> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} %</view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<!-- 顾问接待量排名 --> |
|
|
|
<view class="guwen-ranking"> |
|
|
|
<view class="guwen-ranking-title"> |
|
|
|
顾问接待量排名(TOP10) |
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
|
|
|
|
<template v-if="isShowJDLTopList"> |
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box"> |
|
|
|
<block v-for="(percent, index) in weekObj.JDLTopList" :key="index"> |
|
|
|
<view class="ranking-item" @click="toStaffAnalysis('销讲数据', percent)"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.values"> |
|
|
|
</u-line-progress> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} </view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
<!-- 顾问接待量排名 --> |
|
|
|
<view class="guwen-ranking"> |
|
|
|
<view class="guwen-ranking-title"> |
|
|
|
顾问接待量排名(TOP10) |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
<template v-if="isShowJDLTopList"> |
|
|
|
<!-- 排名百分比列表 --> |
|
|
|
<view class="ranking-box"> |
|
|
|
<block v-for="(percent, index) in weekObj.JDLTopList" :key="index"> |
|
|
|
<view class="ranking-item" @click="toStaffAnalysis('销讲数据', percent)"> |
|
|
|
<view class="left">{{ percent.title }}</view> |
|
|
|
<view class="middle"> |
|
|
|
<u-line-progress :active-color="$options.filters.setColor(index)" |
|
|
|
inactive-color="#F2F2F2" :show-percent="false" :percent="percent.values"> |
|
|
|
</u-line-progress> |
|
|
|
</view> |
|
|
|
<view class="right"> {{ percent.value || '0' }} </view> |
|
|
|
</view> |
|
|
|
</block> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
|
<!-- 使用建议 --> |
|
|
|
<view class="proposal" v-if="weekObj.suggest"> |
|
|
|
<view class="proposal-title"> |
|
|
|
使用建议 |
|
|
|
<template v-else> |
|
|
|
<view class="empity"> |
|
|
|
暂无数据 |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
</view> |
|
|
|
<!-- 建议的文字 --> |
|
|
|
<view class="proposal-box"> |
|
|
|
<u-parse class="ql-editor" :content="weekObj.suggest" /> |
|
|
|
|
|
|
|
<!-- 使用建议 --> |
|
|
|
<view class="proposal" v-if="weekObj.suggest"> |
|
|
|
<view class="proposal-title"> |
|
|
|
使用建议 |
|
|
|
</view> |
|
|
|
<!-- 建议的文字 --> |
|
|
|
<view class="proposal-box"> |
|
|
|
<u-parse class="ql-editor" :content="weekObj.suggest" /> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 底部按钮 --> |
|
|
|
<view class="nav-footer"> |
|
|
|
<!-- 底部按钮 --> |
|
|
|
<view class="nav-footer"> |
|
|
|
|
|
|
|
<view class="footer-item" @click="toHome"> |
|
|
|
回到管理端 |
|
|
|
</view> |
|
|
|
<view class="footer-item" @click="toHome"> |
|
|
|
回到管理端 |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="footer-item full" style="margin-left: 24rpx;"> |
|
|
|
<button open-type="share" class="fulls"> |
|
|
|
一键转发 |
|
|
|
</button> |
|
|
|
<view class="footer-item full" style="margin-left: 24rpx;"> |
|
|
|
<button open-type="share" class="fulls"> |
|
|
|
一键转发 |
|
|
|
</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@@ -243,6 +245,7 @@ |
|
|
|
}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
nodata: false, |
|
|
|
tableHead: [{ |
|
|
|
title: '顾问', |
|
|
|
style: { |
|
|
@@ -570,18 +573,28 @@ |
|
|
|
this.$u.get('/zkMessage/findByProjectId', { |
|
|
|
id: this.id |
|
|
|
}).then(res => { |
|
|
|
console.log(res) |
|
|
|
let data = JSON.parse(res.zkMessage.content) |
|
|
|
console.log(data) |
|
|
|
// console.log(res) |
|
|
|
let data = {} |
|
|
|
if(res.zkMessage.content){ |
|
|
|
data = JSON.parse(res.zkMessage.content) |
|
|
|
}else{ |
|
|
|
this.nodata = true |
|
|
|
this.weekObj = { |
|
|
|
...res.zkMessage, |
|
|
|
} |
|
|
|
} |
|
|
|
this.bubbleSort(data.customerInfo1, 'pk') |
|
|
|
this.bubbleSort(data.customerInfo2, 'pk') |
|
|
|
data.customerInfo1.reverse() |
|
|
|
data.customerInfo2.reverse() |
|
|
|
|
|
|
|
this.weekObj = { |
|
|
|
...res.zkMessage, |
|
|
|
...data |
|
|
|
if(res.zkMessage.content){ |
|
|
|
data = JSON.parse(res.zkMessage.content) |
|
|
|
this.weekObj = { |
|
|
|
...res.zkMessage, |
|
|
|
...data |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
this.weekObj.createTimeName = this.getTimeLines(this.weekObj.weekDate, 1) |
|
|
|
console.log(this.weekObj, 'this.weekObj') |
|
|
|
this.projectName = res.projectName |
|
|
@@ -811,7 +824,18 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.nodata-box{ |
|
|
|
width: 400rpx; |
|
|
|
height: 400rpx; |
|
|
|
font-size: 28rpx; |
|
|
|
font-family: PingFangSC-Regular, PingFang SC; |
|
|
|
font-weight: 400; |
|
|
|
color: #666666; |
|
|
|
line-height: 40rpx; |
|
|
|
padding-top: 360rpx; |
|
|
|
margin: 0 auto; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
.briefing { |
|
|
|
background: #fff; |
|
|
|