@@ -42,6 +42,8 @@ var config = { | |||
cmmentList:`${host}/comment/list`, | |||
// 新增评论 | |||
saveCmment:`${host}/comment/saveCmment`, | |||
// 获取客户来源列表 | |||
sourceList: `${host}/customer/sourceList`, | |||
// 新增文件评论 | |||
saveCmmentUpload:`${host}/comment/upload`, | |||
// 点赞 | |||
@@ -1,5 +1,5 @@ | |||
const ENV_PATH = { | |||
baseUrl: 'http://192.168.31.161:9999', // 长龙 | |||
baseUrl: 'http://192.168.31.160:9999', // 长龙 | |||
} | |||
module.exports = ENV_PATH |
@@ -82,7 +82,7 @@ | |||
"usingComponents" : true, | |||
"permission" : {}, | |||
"requiredBackgroundModes" : [ "audio" ], | |||
"lazyCodeLoading": "requiredComponents", | |||
"lazyCodeLoading" : "requiredComponents", | |||
"plugins" : { | |||
"WechatSI" : { | |||
"version" : "0.3.4", | |||
@@ -463,6 +463,15 @@ | |||
"enablePullDownRefresh": true | |||
} | |||
}, | |||
{ | |||
"path": "Piabodata/requireminingAnalysis", | |||
"style": { | |||
"navigationBarTitleText": "需求挖掘分析", | |||
"navigationBarBackgroundColor": "#FFFFFF", | |||
"navigationBarTextStyle": "black", | |||
"enablePullDownRefresh": true | |||
} | |||
}, | |||
{ | |||
"path": "Piabodata/StaffAnalysis", | |||
"style": { | |||
@@ -0,0 +1,751 @@ | |||
<template> | |||
<view class="box"> | |||
<!-- 选择器 --> | |||
<view class="boxtittab"> | |||
<view class="tabbox" @click="timeshow=true" style="color:#409eff"> | |||
{{ time }} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
<view class="tabbox" @click="deptshow=true" :style="dept=='部门'?'color:#666':'color:#409eff'"> | |||
{{ dept}} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
<view class="tabbox" @click="guwenshow=true" :style="guwen=='顾问'?'color:#666':'color:#409eff'"> | |||
{{ guwen}} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="boxzonglan" style="min-height: 400rpx;"> | |||
<view class="zonglantitle">简报 <text @click="showDesc=true">统计说明</text></view> | |||
<view class="zonglanbox"> | |||
<view class="grid" style="height: auto;" v-for="(item,index) in numlist" :key="index"> | |||
<view class="audonum">{{item.name}}</view> | |||
<view class="num">{{item.firstnum||0}}</view> | |||
<view class="bottom"> | |||
<view class="leftnum">对比:{{item.endnum||0}}</view> | |||
<view class="rightnum" :class="item.duibinum>0?'red':'green'">{{item.duibinum||0}} | |||
<image v-if="item.duibinum>0" src="https://static.quhouse.com/c4145f84cc3c49769ee2ec11465c085b.png" mode="" /> | |||
<image v-else src="https://static.quhouse.com/c5dbf780e09a4da0b0bab2d7fa58accd.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 统计说明 --> | |||
<view class="black-bg" v-if="showDesc"> | |||
<view class="tongjiDesc"> | |||
<view class="tongji-title">统计说明</view> | |||
<view class="text"> | |||
<view><text class="bold">平均挖掘执行率:</text>筛选时间内,有效接待中已标记顾问的挖掘执行率的平均值;</view> | |||
<view><text class="bold">未标记:</text>筛选时间内,有效接待中未标记顾问的接待数;</view> | |||
<view><text class="bold">有效接待:</text>筛选时间内,标记为有效的接待数,不包含待接单;</view> | |||
<view><text class="bold">未挖掘数:</text>筛选时间内,挖掘平均执行率为0的接待数;</view> | |||
</view> | |||
</view> | |||
<view class="close" @click="showDesc=false">X</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">平均挖掘执行率趋势</view> | |||
</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts | |||
type="line" | |||
:chartData="lineOptsect" | |||
:opts="lineOpts" | |||
background="none" | |||
:ontouch="true" | |||
canvasId="wangxiaohuaerlingilingwuyiba2" | |||
:canvas2d="true" /> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">需求挖掘分布</view> | |||
</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts | |||
type="ring" | |||
:chartData="ringChartData" | |||
:canvas2d="true" | |||
canvasId="ChartBoxIdwangxiaohuaerlingilingwuyiba1" | |||
:opts='opts' | |||
background="none" /> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">需求挖掘排名</view> | |||
</view> | |||
<view class="tabdada"> | |||
<view class="tabth"> | |||
<view>排名</view> | |||
<view>需求类型/挖掘执行接待数</view> | |||
<view>执行率</view> | |||
<view>操作</view> | |||
</view> | |||
<view v-if="total==0" style="color: #999999;width: 100%;height: 500rpx;line-height: 500rpx;text-align: center;" >暂无数据</view> | |||
<view class="tabtd" v-for="(item,i) in rankList" :key="i"> | |||
<view> | |||
<image v-if="i==0" class="ranking" src="../../../static/images/ranking1.png" mode=""></image> | |||
<image v-else-if="i==1" class="ranking" src="../../../static/images/ranking2.png" mode=""></image> | |||
<image v-else-if="i==2" class="ranking" src="../../../static/images/ranking3.png" mode=""></image> | |||
<view class="ranking1" v-else>{{i+1}}</view> | |||
</view> | |||
<view class="u-line-1">{{item.name}}({{item.selected}})</view> | |||
<view>{{max100(item.fraction)}}%</view> | |||
<view @click="Toview(item,i)">查看</view> | |||
</view> | |||
</view> | |||
</view> | |||
<u-popup v-model="timeshow" mode="bottom"> | |||
<view class="timeview" :style="{ color: activeTotal == 2 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(2, '近7天')"> | |||
近7天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 5 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(5, '近15天')"> | |||
近15天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 6 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(6, '近30天')"> | |||
近30天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(4,'自定义')"> | |||
自定义</view> | |||
</u-popup> | |||
<u-calendar v-model="calendarShow" mode="range" @change="calendarTimeChange"></u-calendar> | |||
<u-select v-model="guwenshow" :list="staffList" @confirm="guwenCallback" | |||
:default-value='selindex'></u-select> | |||
<u-select v-model="deptshow" :list="teamList" @confirm="deptCallback" | |||
:default-value='selindex'></u-select> | |||
<!-- 加载组件 --> | |||
<!-- <loading v-model="LOADING"></loading> --> | |||
</view> | |||
</template> | |||
<script> | |||
// var config = require("../../../config"); | |||
// import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
// loading | |||
}, | |||
data() { | |||
return { | |||
LOADING: true, | |||
selindex: '', | |||
guwenshow: false, | |||
timeshow: false, | |||
selectshow: false, | |||
deptshow: false, | |||
deptVal: '', | |||
huashuVal: '', | |||
guwenVal: '', | |||
// 筛选文字展示 | |||
time: '近7天', | |||
dept: '部门', | |||
guwen: '顾问', | |||
showDesc: false, | |||
rankList: [],//排名列表 | |||
ringChartData: { | |||
}, | |||
// ring图 分布图 | |||
opts: { | |||
rotate: false, | |||
rotateLock: false, | |||
color: ['#F8A12B','#07B79D','#E7483C','#2671E1'], | |||
padding: [5,5,5,5], | |||
dataLabel: true, | |||
legend: { | |||
show: true, | |||
position: "right", | |||
lineHeight: 25 | |||
}, | |||
title: { | |||
name: "", | |||
fontSize: 15, | |||
color: "#666666" | |||
}, | |||
subtitle: { | |||
name: "", | |||
fontSize: 25, | |||
color: "#7cb5ec" | |||
}, | |||
extra: { | |||
ring: { | |||
ringWidth: 60, | |||
activeOpacity: 0.5, | |||
activeRadius: 10, | |||
offsetAngle: 0, | |||
labelWidth: 15, | |||
border: false, | |||
borderWidth: 3, | |||
borderColor: "#FFFFFF" | |||
} | |||
} | |||
}, | |||
activeTotal: 2, | |||
houseId: '', | |||
staffList: [],// 员工列表 | |||
teamList: [],// 团队列表 | |||
team: { | |||
value: '', | |||
label: '' | |||
}, | |||
startDate: '', | |||
endDate: '', | |||
calendarShow: false, | |||
numlist: [{ | |||
name: '平均挖掘执行率', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'wordFraction' | |||
}, { | |||
name: '未挖掘需求', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'noFinishWord' | |||
}, | |||
{ | |||
name: '有效接待', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'activeCustomer' | |||
}, | |||
{ | |||
name: '未标记', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'markAdvisor' | |||
}, | |||
], | |||
lineOptsect: { | |||
"categories": [], | |||
"series": [{ | |||
"name": "起始时间", | |||
"data": [] | |||
},{ | |||
"name": "对比时间", | |||
"data": [] | |||
}] | |||
}, | |||
lineOpts: { | |||
// xAxis: { | |||
// rotateLabel: true | |||
// }, | |||
yAxis: { | |||
data: [{ | |||
max: 100, | |||
min: 0, | |||
}] | |||
} | |||
} | |||
}; | |||
}, | |||
onShow() { | |||
// 获取项目id | |||
// this.houseId = uni.getStorageSync('buildingID').id; | |||
// 获取员工 | |||
// this.getStaffList() | |||
// // 获取团队 | |||
// this.getSectionList() | |||
// this.getdata() | |||
}, | |||
onReady: function(){ | |||
// 获取项目id | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
// 获取员工 | |||
this.getStaffList() | |||
// 获取团队 | |||
this.getSectionList() | |||
this.getdata() | |||
}, | |||
methods: { | |||
max100(num) { | |||
if(num>100){ | |||
return 100 | |||
} else if(!num){ | |||
return 0; | |||
}else{ | |||
return num; | |||
} | |||
}, | |||
getdata(){ | |||
// 挖掘分析-简报 | |||
this.wordMiningAnalyze() | |||
//挖掘排行 | |||
this.getwordMiningRank() | |||
// 挖掘趋势图 | |||
this.getwordMiningAnalyzePercentage() | |||
// 挖掘分布图 | |||
this.getRingData() | |||
}, | |||
// 挖掘排行 | |||
getwordMiningRank(){ | |||
let dateType = 0; | |||
if (this.activeTotal == 4) {// 选择全部和自定义 | |||
dateType = null; | |||
}else { | |||
dateType = this.activeTotal; | |||
this.startDate = '' | |||
this.endDate = '' | |||
} | |||
this.$u.post('/cusLvStatistics/wordMiningRank', { | |||
"houseId": this.houseId, | |||
"deptId": this.deptVal, | |||
"createUser": this.guwenVal, | |||
"dateType":dateType, | |||
"firstStartDate":this.startDate, | |||
"firstEndDate":this.endDate | |||
}) | |||
.then(res => { | |||
// console.log(res) | |||
if(res.length){ | |||
this.rankList = res.map(item=>{ | |||
return { | |||
name: item.name, | |||
id: item.id, | |||
fraction: item.fraction, | |||
selected: item.selected, | |||
keywordsId: item.keywordsId | |||
} | |||
}) | |||
}else{ | |||
this.rankList = [] | |||
} | |||
}) | |||
}, | |||
// 挖掘分布图 | |||
getRingData(){ | |||
let dateType = 0; | |||
if (this.activeTotal == 4) {// 选择自定义 | |||
dateType = null; | |||
}else { | |||
dateType = this.activeTotal; | |||
this.startDate = '' | |||
this.endDate = '' | |||
} | |||
this.$u.post('/cusLvStatistics/wordMiningAnalyzeFenbu', { | |||
"houseId": this.houseId, | |||
"deptId": this.deptVal, | |||
"createUser": this.guwenVal, | |||
"dateType":dateType, | |||
"firstStartDate":this.startDate, | |||
"firstEndDate":this.endDate | |||
}) | |||
.then(res => { | |||
// console.log(res) | |||
this.ringChartData = { series: [ | |||
{ | |||
data: [ | |||
{"name":"30%及以下","value": res.a||0}, | |||
{"name":"31%~50%","value": res.b||0}, | |||
{"name":"51%~70%","value": res.c||0}, | |||
{"name":"71%及以上","value": res.d||0}, | |||
] | |||
} | |||
]} | |||
}) | |||
}, | |||
//跳转到接待记录 | |||
Toview(item,i){ | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh=refresh&activeTotal='+this.activeTotal+'&staTime='+ this.startDate + '&endTime='+this.endDate+'&validInvalid=0'+'&keywordsId='+item.keywordsId+'&source=wajue' | |||
}); | |||
}, | |||
// 挖掘分析-简报 | |||
wordMiningAnalyze() { | |||
let dateType = 0; | |||
if (this.activeTotal == 4) {// 选择全部和自定义 | |||
dateType = null; | |||
}else { | |||
dateType = this.activeTotal; | |||
this.startDate = '' | |||
this.endDate = '' | |||
} | |||
let params = { | |||
"houseId": this.houseId, | |||
"deptId": this.deptVal, | |||
"createUser": this.guwenVal, | |||
"dateType":dateType, | |||
"firstStartDate":this.startDate, | |||
"firstEndDate":this.endDate | |||
} | |||
this.$u.post("/cusLvStatistics/wordMiningAnalyze",params).then(res => { | |||
// console.log(res.contrast) | |||
res.contrast.wordFraction = (res.contrast.wordFraction||0) + '%' | |||
res.first.wordFraction = this.max100(res.first.wordFraction) + '%' | |||
res.end.wordFraction = this.max100(res.end.wordFraction) + '%' | |||
this.numlist.forEach(item => { | |||
item.duibinum = res.contrast[item.setName] | |||
item.endnum = res.end[item.setName] | |||
item.firstnum = res.first[item.setName] | |||
}) | |||
}) | |||
}, | |||
// 获取员工列表 | |||
getStaffList() { | |||
this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', { | |||
houseId: this.houseId | |||
}) | |||
.then(res => { | |||
// console.log(res) | |||
if(res.length){ | |||
this.staffList = res.map(item => { | |||
return { | |||
label: item.name, | |||
value: item.accountId | |||
} | |||
}) | |||
this.staffList.unshift({ | |||
label: '全部', | |||
value: '' | |||
}) | |||
} | |||
}) | |||
}, | |||
// 挖掘率趋势图 | |||
getwordMiningAnalyzePercentage() { | |||
let categories1 = [] | |||
let categories2 = [] | |||
let categories3 = [] | |||
let dateType = 0; | |||
if (this.activeTotal == 4) {// 选择全部和自定义 | |||
dateType = null; | |||
}else { | |||
dateType = this.activeTotal; | |||
this.startDate = '' | |||
this.endDate = '' | |||
} | |||
this.$u.post('/cusLvStatistics/wordMiningAnalyzePercentage', { | |||
"houseId": this.houseId, | |||
"deptId": this.deptVal, | |||
"createUser": this.guwenVal, | |||
"dateType":dateType, | |||
"firstStartDate":this.startDate, | |||
"firstEndDate":this.endDate | |||
}) | |||
.then(res => { | |||
if(res.first&&res.first.length){ | |||
categories1 = res.first.map(item=> item.statDate.substring(5,10)) | |||
this.lineOptsect.series[0].data=res.first.map(item=> item.wordFraction) | |||
}else{ | |||
categories1= [] | |||
this.lineOptsect.series[0].data = [] | |||
} | |||
if(res.end&&res.end.length){ | |||
this.lineOptsect.series[1].data=res.end.map(item=> item.wordFraction) | |||
categories2 = res.end.map(item => item.statDate.substring(5,10)) | |||
}else{ | |||
categories2 = [] | |||
this.lineOptsect.series[1].data = [] | |||
} | |||
for(let i=0;i<categories1.length;i++){ | |||
categories3.push(categories1[i]+'/'+categories2[i]) | |||
} | |||
// console.log(categories3) | |||
this.lineOptsect.categories = categories3 | |||
}) | |||
}, | |||
// 获取团队列表 | |||
getSectionList() { | |||
this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', { | |||
houseId: this.houseId | |||
}) | |||
.then(res => { | |||
this.teamList = [] | |||
if(res.length){ | |||
this.teamList = res.map(item=> { | |||
return { | |||
label: item.deptName, | |||
value: item.deptId | |||
} | |||
}) | |||
this.teamList.unshift({ | |||
label: '全部', | |||
value: '' | |||
}) | |||
} | |||
}) | |||
}, | |||
//时间切换 | |||
tabtimetap(index, text) { | |||
this.activeTotal = index; | |||
if (index == 4) { | |||
this.calendarShow = true; | |||
} else { | |||
this.endDate = '' | |||
this.startDate = '' | |||
this.time = text | |||
this.getdata() | |||
} | |||
this.timeshow = false | |||
}, | |||
// 顾问选择 | |||
guwenCallback(e){ | |||
// console.log(e) | |||
this.guwenVal = e[0].value | |||
this.guwen = e[0].label | |||
this.getdata() | |||
}, | |||
// 部门选择 | |||
deptCallback(e){ | |||
// console.log(e) | |||
this.deptVal = e[0].value | |||
this.dept = e[0].label | |||
this.getdata() | |||
}, | |||
//自定义时间 | |||
calendarTimeChange(e) { | |||
this.endDate = e.endDate | |||
this.startDate = e.startDate | |||
this.time = '自定义' | |||
this.getdata() | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.box { | |||
width: 100%; | |||
height: 100%; | |||
background: #FAFAFA; | |||
} | |||
//时间切换的样式 | |||
.boxtittab { | |||
position: sticky; | |||
top: var(--window-top); | |||
z-index: 999; | |||
width: 100; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
border: 1px solid #E0E0E0; | |||
display: flex; | |||
align-items: center; | |||
.tabbox { | |||
flex: 1; | |||
height: 100%; | |||
text-align: center; | |||
line-height: 92rpx; | |||
color: #666666; | |||
font-size: 28rpx; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
display: -webkit-box; | |||
/* 将对象作为弹性伸缩盒子模型显示 */ | |||
-webkit-line-clamp: 1; | |||
/* 控制最多显示几行 */ | |||
-webkit-box-orient: vertical; | |||
/* 设置或检索伸缩盒对象的子元素的排列方式 */ | |||
} | |||
} | |||
.timeview { | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
width: 100%; | |||
text-align: center; | |||
border-bottom: 1px solid #F8F8F8; | |||
} | |||
.black-bg{ | |||
position: fixed; | |||
background: rgba(0,0,0,0.6); | |||
left: 0; | |||
right: 0; | |||
top: 0; | |||
bottom: 0; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
z-index: 9999; | |||
.tongjiDesc{ | |||
width: 80%; | |||
background: #FFFFFF; | |||
border-radius: 12rpx; | |||
padding: 30rpx; | |||
} | |||
.close{ | |||
background: #fff; | |||
border-radius: 50%; | |||
width: 80rpx; | |||
height: 80rpx; | |||
margin-top: 30rpx; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.tongji-title{ | |||
text-align: center; | |||
font-size: 30rpx; | |||
margin-bottom: 20rpx; | |||
} | |||
.text view{ | |||
margin-bottom: 24rpx; | |||
} | |||
.bold{ | |||
font-weight: bold; | |||
} | |||
} | |||
.grid{ | |||
border: 1rpx solid #eee; | |||
} | |||
.grid:nth-child(1) { | |||
border-right: none; | |||
border-bottom: none; | |||
} | |||
.grid:nth-child(2) { | |||
border-bottom: none; | |||
} | |||
.grid:nth-child(3) { | |||
border-right: none; | |||
} | |||
.grid .bottom{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 20rpx; | |||
margin: 10rpx 0 20rpx; | |||
.leftnum{ | |||
height: 36rpx; | |||
font-size: 26rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 36rpx; | |||
margin-right: 20rpx; | |||
} | |||
.rightnum{ | |||
height: 36rpx; | |||
font-size: 26rpx; | |||
font-family: PingFangSC-Semibold, PingFang SC; | |||
font-weight: 600; | |||
color: #666; | |||
line-height: 36rpx; | |||
display: flex; | |||
align-items: center; | |||
&.red{ | |||
color: #E6273A; | |||
} | |||
&.green{ | |||
color: #43CD80; | |||
} | |||
image{ | |||
width: 18rpx; | |||
height: 14rpx; | |||
margin-left: 6rpx; | |||
} | |||
} | |||
} | |||
.zonglantitle{ | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
text{ | |||
color: #666666; | |||
} | |||
} | |||
.uchaserbox{ | |||
width: 100%; | |||
height: 500rpx; | |||
} | |||
.tabdada { | |||
width: 100%; | |||
height: auto; | |||
padding-bottom: 40rpx; | |||
.tabth { | |||
width: 100%; | |||
height: 28rpx; | |||
display: flex; | |||
font-size: 28rpx; | |||
line-height: 28rpx; | |||
color: #666666; | |||
margin-top: 28rpx; | |||
} | |||
.tabth>view:nth-of-type(1) { | |||
width: 10%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(2) { | |||
width: 46%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(3) { | |||
width: 22%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(4) { | |||
width: 22%; | |||
text-align: center; | |||
} | |||
.tabtd { | |||
width: 100%; | |||
height: 30rpx; | |||
display: flex; | |||
font-size: 26rpx; | |||
line-height: 30rpx; | |||
margin-top: 32rpx; | |||
} | |||
.tabtd>view:nth-of-type(1) { | |||
width: 10%; | |||
text-align: center; | |||
line-height: 30rpx; | |||
} | |||
.tabtd>view:nth-of-type(2) { | |||
width: 46%; | |||
max-width: 400rpx; | |||
text-align: center; | |||
color: #333333; | |||
} | |||
.tabtd>view:nth-of-type(3) { | |||
width: 22%; | |||
text-align: center; | |||
color: #333333; | |||
} | |||
.tabtd>view:nth-of-type(4) { | |||
width: 22%; | |||
text-align: center; | |||
color: #2671E2; | |||
} | |||
.ranking { | |||
width: 34rpx; | |||
height: 34rpx; | |||
} | |||
.ranking1 { | |||
width: 30rpx; | |||
height: 30rpx; | |||
background: #ECF1FF; | |||
color: #424D64; | |||
font-size: 18rpx; | |||
text-align: center; | |||
line-height: 30rpx; | |||
border-radius: 50%; | |||
margin: 0 auto; | |||
} | |||
.tabech { | |||
width: 100%; | |||
height: 600rpx; | |||
} | |||
} | |||
</style> |
@@ -11,16 +11,14 @@ | |||
<view class="img B" v-else-if="customerInfo.level==2">B</view> | |||
<view class="img C" v-else-if="customerInfo.level==3">C</view> | |||
<view class="img D" v-else-if="customerInfo.level==4">D</view> | |||
<view v-if="customerInfo.clientStageName" class="clientStageName">{{ customerInfo.clientStageName }}</view> | |||
<view v-if="customerInfo.clientStageName" class="clientStageName"> | |||
{{ customerInfo.clientStageName }} | |||
</view> | |||
</view> | |||
<view class="edit" @click="goedit()" v-if="isHavePermission"> | |||
<image class="screen-sel-img" src="../../../static/images/edit.png" mode=""></image> | |||
</view> | |||
</view> | |||
<!-- <view class="right"> | |||
<view class="point"></view> | |||
<view class="test">定金</view> | |||
</view> --> | |||
</view> | |||
<view class="content-sec"> | |||
<view class="content-sec-lab"> | |||
@@ -31,13 +29,13 @@ | |||
<view class="content-sec-lab"> | |||
顾问姓名:<view class="content-sec-lab1">{{customerInfo.agentName||'--'}}</view> | |||
</view> | |||
<view class="content-sec-lab" > | |||
客户标签: | |||
<text v-if="!customerInfo.demand.cusSemanticWordsList">暂无</text> | |||
<view v-else class="content-sec-tips" v-show="ind<=1" | |||
v-for="(che,ind) in customerInfo.demand.cusSemanticWordsList" :key='ind'>{{che.name}} | |||
</view> | |||
<view @click.stop="tipshow=true" v-if="customerInfo.demand.cusSemanticWordsList.length>1" class="content-sec-tips" style="text-decoration: underline;background: #fff">查看全部</view> | |||
<view class="content-sec-lab"> | |||
<view class="u-flex" style="flex:1"> | |||
挖掘执行:<view class="content-sec-lab1">{{customerInfo.wordFraction||0}}%</view> | |||
</view> | |||
<view class="u-flex" style="flex:1"> | |||
挖掘成功:<view class="content-sec-lab1">{{customerInfo.wordFinishFraction||0}}%</view> | |||
</view> | |||
</view> | |||
<view class="content-sec-lab"> | |||
添加时间:<view class="content-sec-lab1">{{customerInfo.createTime}}</view> | |||
@@ -45,14 +43,9 @@ | |||
<view class="content-sec-num"> | |||
<view>到访{{customerInfo.visitRecord || '--'}}次</view> | |||
<view> | |||
{{customerInfo.mm || '0'}}min/{{customerInfo.fraction || '0'}}% | |||
{{customerInfo.mm || '0'}}min/{{customerInfo.fraction || '0'}}% | |||
</view> | |||
</view> | |||
<!-- <view class="content-sec-num"> | |||
<view class="">到访{{customerInfo.visitRecord || '--'}}次</view> | |||
<view class="">{{customerInfo.fraction || '0'}}% | {{customerInfo.mm || '0'}}<text | |||
style="font-size: 24rpx;">min</text></view> | |||
</view> --> | |||
</view> | |||
<view class="content-last"> | |||
<view class="content-last-con"> | |||
@@ -71,7 +64,10 @@ | |||
<view :class="{ activecllasscet: activeTotal == 1 }" @click="tabtimetap(1)">跟进记录</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">执行率</view> | |||
<view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">销讲执行率</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">挖掘执行率</view> | |||
</view> | |||
</view> | |||
@@ -94,10 +90,6 @@ | |||
<view class="name">{{item.agentName || '--'}}</view> | |||
<view class="status" v-if="item.replaceReception==1">代接待</view> | |||
</view> | |||
<!-- <view class="right"> | |||
<view class="point"></view> | |||
<view class="">优秀案例</view> | |||
</view> --> | |||
</view> | |||
<view class="content-sec"> | |||
@@ -129,19 +121,17 @@ | |||
<view class="tab2-first-left"> | |||
<view class="img">{{item.agentName.slice(0,1) || '--'}}</view> | |||
<view class="name">{{item.agentName || '||'}}</view> | |||
<view v-if="item.clientStageName" class="clientStageName">{{ item.clientStageName }}</view> | |||
<view v-if="item.clientStageName" class="clientStageName">{{ item.clientStageName }} | |||
</view> | |||
</view> | |||
<view class="tab2-first-right">{{item.createTime}}</view> | |||
</view> | |||
<view class="tab2-first-foot">跟进内容:{{item.remarks || '暂无'}}</view> | |||
</view> | |||
<!-- <view class="tab2-sec"> | |||
<view class="tab-sec-edit">编辑记录</view> | |||
</view> --> | |||
</view> | |||
</view> | |||
<!-- 评分 --> | |||
<!-- 销讲执行率 --> | |||
<view class="ratecenter" v-if="activeTotal==2"> | |||
<view class="ratetetle">执行总览</view> | |||
<view class="rateyuanbox"> | |||
@@ -155,11 +145,11 @@ | |||
<view style="text-align: center;color: #07B79D;">{{customerInfo.fraction}}%</view> | |||
</u-circle-progress> | |||
</view> | |||
<view class="ratetetle-desc">销讲执行率</view> | |||
<view class="ratetetle-desc">销讲执行率</view> | |||
</view> | |||
<view class="rateyuanboxzuo"> | |||
<view class="boxzuoview">{{customerInfo.mm}}min</view> | |||
<view class="ratetetle-desc">接待时长</view> | |||
<view class="ratetetle-desc">接待时长</view> | |||
</view> | |||
</view> | |||
<view class="middle-title"> | |||
@@ -210,20 +200,147 @@ | |||
<view class="jiantobox"> | |||
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/no-checked.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/no-checked.png" mode="" /> | |||
</view> | |||
</view> | |||
<view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 需求挖掘执行率 --> | |||
<view class="xuqiu" v-if="activeTotal==3"> | |||
<!-- 暂无数据 --> | |||
<view v-if="KeyWordsfractionList.length==0" | |||
style="width: 100%;height: 100%;display: flex;align-items: center;"> | |||
<view style="width: 100%;padding-top: 60rpx;background: #fff;"> | |||
<view style="width: 100%;text-align: center;"> | |||
<image style="width: 220rpx;height: 200rpx;" | |||
src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image> | |||
</view> | |||
<view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view> | |||
</view> | |||
</view> | |||
<!-- 需求挖掘执行率 --> | |||
<view v-if="KeyWordsfractionList.length"> | |||
<view class="top-box"> | |||
<view style="width:50%;text-align:center">挖掘执行率:{{customerInfo.wordFraction||0}}%</view> | |||
<view style="width:50%;text-align:center">挖掘成功率:{{customerInfo.wordFinishFraction||0}}%</view> | |||
</view> | |||
<view | |||
style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #e0e0e0;display: flex;align-items: center;background: #fff;"> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 50rpx;">指标 | |||
</view> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 70rpx;">执行率 | |||
</view> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 70rpx;">挖掘成功 | |||
</view> | |||
<view style="flex: 0 0 30rpx;"></view> | |||
</view> | |||
<!-- 暂无数据 --> | |||
<view v-if="KeyWordsfractionList.length == 0" | |||
style="width: 100%; height: 100%; display: flex; align-items: center"> | |||
<view style="width: 100%; padding-top: 60rpx;background:#fff;"> | |||
<view style="width: 100%; text-align: center"> | |||
<image style="width: 220rpx; height: 200rpx" | |||
src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image> | |||
</view> | |||
<view style=" | |||
text-align: center; | |||
width: 100%; | |||
margin-top: 20rpx; | |||
color: #999999; | |||
">暂无数据</view> | |||
</view> | |||
</view> | |||
<!-- 挖掘执行话术展示 --> | |||
<view class="Level-box" v-else v-for="(item, index) in KeyWordsfractionList" :key="index"> | |||
<view class="Level1che" @click="changeshowlevel1(item, 1)"> | |||
<view class="title1" style="flex: 1">{{ item.name }}</view> | |||
<view class="Level1-middle" style="flex: 2; display: flex"> | |||
<view class="item" style="flex: 1; text-align: center">执行{{ item.fraction || 0 }}% | |||
</view> | |||
<view class="item" style="flex:1;text-align:center;color:#2671E2" | |||
v-if="item.keywordsList&&item.keywordsList.length"> | |||
已完成({{item.keywordsList.length}})</view> | |||
<view class="item" v-else style="flex:1;text-align:center;">未完成</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!item.show" class="arrow rotatearrow" src="/static/images/down.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</view> | |||
<!-- 话术在一级下 --> | |||
<view v-if="item.children&&item.children.length==0"> | |||
<view class="hhhbox" v-if="item.show" style="padding: 30rpx;"> | |||
<view class="hsnrtest" style="font-size:30rpx;color: #333;line-height: 42rpx;"> | |||
客户标签:{{ getKeywordsList(item.keywordsList) }}</view> | |||
<view class="hsnrtest">话术内容:</view> | |||
<view v-if="item.modelList.length==0">暂无话术</view> | |||
<view class="Level3che" v-for="(che,inc) in item.modelList" :key='inc'> | |||
<view class="title1" @click="clickWajue(che)" | |||
:style="che.isAskQuestions==2?'color:#FF8C13':che.isAskQuestions==0?'':'color: #666'"> | |||
{{inc+1}}.{{che.showFormatExpression}} | |||
</view> | |||
<view class="jiantobox"> | |||
<!-- 0本次选中 1未选中 2上次选中 --> | |||
<image v-if="che.isAskQuestions==0" class="arrow" | |||
src="/static/images/rate-checked.png" mode="" /> | |||
<image v-else-if="che.isAskQuestions==2" class="arrow" | |||
src="/static/images/checked-yellow.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 话术在二级下 --> | |||
<view v-if="item.children&&item.children.length"> | |||
<view class="hhhbox" v-if="item.show" v-for="(subitem, i) in item.children" :key="i"> | |||
<view class="Level2che" @click="changeshow2(subitem, 1)"> | |||
<view class="title1 u-line-1">{{ subitem.name }}</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="subitem.isAskQuestions == 0">已执行</view> | |||
<view class="zhixing2" v-else>未执行</view> | |||
</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="subitem.selected == 0">已完成</view> | |||
<view class="zhixing2" v-else>未完成</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!subitem.show" class="arrow rotatearrow" | |||
src="/static/images/down.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</view> | |||
<view v-if="subitem.show" style="padding: 30rpx 0"> | |||
<view class="hsnrtest" style="font-size: 30rpx;color: #333"> | |||
客户标签:{{ getKeywordsList(subitem.keywordsList) }}</view> | |||
<view class="hsnrtest">话术内容:</view> | |||
<view v-if="subitem.modelList.length==0">暂无话术</view> | |||
<view class="Level3che" v-for="(che, inc) in subitem.modelList" :key="inc"> | |||
<view class="title1" @click="clickWajue(che)" :style="che.isAskQuestions == 2 ? 'color:#FF8C13' : che.isAskQuestions == 0 ? '' : 'color: #666'"> | |||
{{ inc + 1 }}.{{ che.showFormatExpression }} | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="che.isAskQuestions == 0" class="arrow" | |||
src="/static/images/rate-checked.png" mode="" /> | |||
<image v-else-if="che.isAskQuestions == 2" class="arrow" | |||
src="/static/images/checked-yellow.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="pon-foot" v-if="buttonisshow"> | |||
<!-- <view class="foot-tab" @click="goRemind">添加提醒</view> --> | |||
<!-- <view class="foot-tab">拨打电话</view> --> | |||
<view class="foot-tab" @click="followRecordAdd()">写跟进</view> | |||
<!-- <view class="foot-tab" @click="goRemind">添加提醒</view> | |||
<view class="foot-tab">拨打电话</view> --> | |||
<view class="foot-tab" @click="followRecordAdd">写跟进</view> | |||
</view> | |||
<!-- closeable --> | |||
<u-popup v-model="tipshow" mode="center" width="500rpx" height="500rpx" closeable> | |||
@@ -237,17 +354,18 @@ | |||
</scroll-view> | |||
</u-popup> | |||
<!-- 加载组件 --> | |||
<u-loadings v-model="LOADING"></u-loadings> | |||
</view> | |||
</template> | |||
<script> | |||
let _this | |||
let _this; | |||
export default { | |||
data() { | |||
return { | |||
KeyWordsfractionList: [], | |||
activeTotal: 0, | |||
customerId: '', | |||
tipshow: false, | |||
@@ -287,9 +405,59 @@ | |||
} | |||
}, | |||
methods: { | |||
clickWajue(item) { | |||
if (item.isAskQuestions == 0) { | |||
uni.navigateTo({ | |||
url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&keyword=" + item | |||
.showFormatExpression + | |||
"&skpl=" + "2" + '&UpDateEvent=' | |||
}) | |||
} | |||
}, | |||
//挖掘率话术客户标签展示 | |||
getKeywordsList(list) { | |||
let keywords = []; | |||
if (list && list.length) { | |||
keywords = list.map((item) => item.name); | |||
} else { | |||
return "--"; | |||
} | |||
return keywords.join(","); | |||
}, | |||
changeshowlevel1(item, type) { | |||
console.log(item) | |||
item.show = !item.show | |||
}, | |||
// 客户详情需求挖掘话术 | |||
getfindKeyWordsBycusId() { | |||
this.$u | |||
.get("/cusLvStatistics/findKeyWordsBycusId?cusId=" + this.customerId) | |||
.then((res) => { | |||
// console.log(res) | |||
if (res.length) { | |||
res.forEach((item, index) => { | |||
item.show = false; | |||
if (index == 0) { | |||
item.show = true; | |||
} | |||
if (item.children && item.children.length) { | |||
item.children.forEach((obj, i) => { | |||
obj.show = false; | |||
if (i == 0 && index == 0) { | |||
obj.show = true; | |||
} | |||
}); | |||
} | |||
}); | |||
this.KeyWordsfractionList = res; | |||
} else { | |||
this.KeyWordsfractionList = []; | |||
} | |||
}); | |||
}, | |||
// 获取到访记录 | |||
getVisitList() { | |||
this.$u.get("/customer/findByPhoneAndProject?id=" + this.customerId, ).then(res => { | |||
this.$u.get("/customer/findByPhoneAndProject?id=" + this.customerId).then(res => { | |||
this.Thevisitingrecords = res | |||
}) | |||
}, | |||
@@ -303,17 +471,7 @@ | |||
if (res.fraction == null) { | |||
res.fraction = '0'; | |||
} | |||
if (res.demand.cusSemanticWordsList != null) { | |||
res.demand.cusSemanticWords = res.demand.cusSemanticWordsList | |||
res.demand.cusSemanticWordsList.forEach(che => { | |||
if (che.isInterval == 0) { | |||
che.name = che.name + che.unit + '-' + che.endName + che.unit; | |||
} | |||
}) | |||
res.demand.cusSemanticWordsList = res.demand.cusSemanticWordsList.slice(0, 3) | |||
} | |||
// console.log(res.demand.cusSemanticWords,'关键字') | |||
this.customerInfo = res; | |||
}).catch(e => { | |||
this.LOADING = false | |||
@@ -325,17 +483,18 @@ | |||
this.getVisitList() | |||
} else if (idx == 1) { | |||
this.getFollowList() | |||
} else { | |||
} else if (idx == 2) { | |||
this.getRatelist() | |||
} else { // 需求挖掘率 | |||
this.getfindKeyWordsBycusId() | |||
} | |||
}, | |||
tapThevisiting(item) { | |||
console.log("11111111111111") | |||
tapThevisiting(_item) { | |||
uni.showLoading({ | |||
title: '加载中', | |||
mask: true | |||
}); | |||
if (item.yon != 0) { | |||
if (_item.yon != 0) { | |||
setTimeout(function() { | |||
uni.hideLoading(); | |||
}, 2000); | |||
@@ -350,12 +509,12 @@ | |||
pageNum: 1, | |||
pageSize: 100, | |||
query: { | |||
customerId: item.id, | |||
customerId: _item.id, | |||
} | |||
} | |||
var item = { | |||
bg: 0, | |||
customerId: item.id, | |||
customerId: _item.id, | |||
id: '' | |||
} | |||
uni.setStorageSync("entrance", 1); //写入缓存 | |||
@@ -374,7 +533,7 @@ | |||
if (res[0].merge == 0) { | |||
let newobj = res[0]; | |||
uni.navigateTo({ | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}` | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}&wordFraction=${_item.wordFraction}` | |||
}) | |||
} else { | |||
let newobj = res[0]; | |||
@@ -427,10 +586,6 @@ | |||
}) | |||
} | |||
}, | |||
tipupon() { | |||
// if (!this.customerInfo.demand.cusSemanticWordsList) return | |||
this.tipshow = true | |||
}, | |||
changeshow(item, type) { | |||
item.show = !item.show | |||
}, | |||
@@ -500,9 +655,9 @@ | |||
}) | |||
}, | |||
}, | |||
filters: { | |||
// 加密手机 | |||
phoneText(mobile) { | |||
if (!mobile) return '--' | |||
@@ -633,10 +788,12 @@ | |||
.Level-box { | |||
padding-bottom: 2rpx; | |||
border-bottom: 1rpx solid #E0E0E0; | |||
.hhhbox { | |||
width: 100%; | |||
padding: 0 30rpx; | |||
background: #f8f8f8; | |||
.hsnrtest { | |||
height: 36rpx; | |||
font-size: 26rpx; | |||
@@ -737,7 +894,7 @@ | |||
display: flex; | |||
line-height: 98rpx; | |||
align-items: center; | |||
padding:0 30rpx; | |||
padding: 0 30rpx; | |||
.title1 { | |||
flex: 2; | |||
@@ -755,7 +912,8 @@ | |||
line-height: 28rpx; | |||
border-radius: 14rpx; | |||
position: relative; | |||
background: rgba(7, 183, 157, 0.2); | |||
background: rgba(7, 183, 157, 0.2); | |||
.huanxing { | |||
height: 100%; | |||
background: #07B79D; | |||
@@ -786,10 +944,12 @@ | |||
} | |||
} | |||
} | |||
.ratecenter { | |||
background-color: #FFFFFF; | |||
padding-bottom: 30rpx; | |||
width: 100%; | |||
.ratetetle { | |||
height: 42rpx; | |||
font-size: 30rpx; | |||
@@ -799,6 +959,7 @@ | |||
line-height: 42rpx; | |||
padding: 24rpx 30rpx; | |||
} | |||
.rateyuanbox { | |||
width: 100%; | |||
height: 210rpx; | |||
@@ -806,28 +967,33 @@ | |||
display: flex; | |||
padding-left: 80rpx; | |||
padding-right: 80rpx; | |||
.rateyuanboxzuo { | |||
width: 30%; | |||
height: 100%; | |||
} | |||
.rateyuanboxyou { | |||
width: 40%; | |||
height: 100%; | |||
} | |||
.boxzuoview { | |||
width: 100%; | |||
height: 140rpx; | |||
line-height: 140rpx; | |||
text-align: center; | |||
} | |||
.ratetetle-desc{ | |||
.ratetetle-desc { | |||
color: #666; | |||
font-size:30rpx; | |||
font-size: 30rpx; | |||
font-weight: 400; | |||
text-align: center; | |||
} | |||
} | |||
.middle-title{ | |||
.middle-title { | |||
height: 78rpx; | |||
line-height: 78rpx; | |||
display: flex; | |||
@@ -838,10 +1004,12 @@ | |||
font-family: PingFangSC-Medium, PingFang SC; | |||
font-weight: 500; | |||
color: #333333; | |||
.item-title1 { | |||
width: 450rpx; | |||
padding-left: 30rpx; | |||
} | |||
.item-title { | |||
flex: 1; | |||
} | |||
@@ -870,6 +1038,7 @@ | |||
font-size: 30rpx; | |||
display: flex; | |||
justify-content: center; | |||
.activecllasscet { | |||
border-bottom: 6rpx solid #2671E2; | |||
color: #2671E2; | |||
@@ -903,7 +1072,7 @@ | |||
display: flex; | |||
align-items: center; | |||
justify-content: space-between; | |||
.img { | |||
width: 48rpx; | |||
height: 48rpx; | |||
@@ -927,6 +1096,7 @@ | |||
margin-right: 16rpx; | |||
display: flex; | |||
} | |||
.clientStageName { | |||
height: 48rpx; | |||
line-height: 48rpx; | |||
@@ -946,12 +1116,13 @@ | |||
flex-shrink: 0; | |||
height: 40rpx; | |||
width: 40rpx; | |||
image { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
} | |||
.right { | |||
@@ -975,7 +1146,6 @@ | |||
.content-sec { | |||
border-top: 1px solid #E0E0E0; | |||
padding: 0 30rpx; | |||
height: 270rpx; | |||
position: relative; | |||
.content-sec-lab { | |||
@@ -1027,6 +1197,7 @@ | |||
.content-last { | |||
padding: 30rpx; | |||
margin-top: 28rpx; | |||
.content-last-con { | |||
width: 690rpx; | |||
min-height: 112rpx; | |||
@@ -1199,7 +1370,7 @@ | |||
color: #333333; | |||
margin-left: 20rpx; | |||
} | |||
.clientStageName { | |||
height: 48rpx; | |||
line-height: 48rpx; | |||
@@ -1208,7 +1379,7 @@ | |||
border: 1rpx solid #ff981e; | |||
box-sizing: border-box; | |||
font-size: 28rpx; | |||
font-family: PingFangSC-Regular,PingFang SC; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #ff981e; | |||
margin-left: 16rpx; | |||
@@ -1311,21 +1482,29 @@ | |||
height: 100%; | |||
} | |||
} | |||
.A { | |||
background: #E6625B; | |||
} | |||
background: #E6625B; | |||
} | |||
.B { | |||
background: #FF981E; | |||
} | |||
.B { | |||
background: #FF981E; | |||
} | |||
.C { | |||
background: #F6BD16; | |||
} | |||
.C { | |||
background: #F6BD16; | |||
} | |||
.D { | |||
background: #E6625B; | |||
} | |||
.D { | |||
background: #E6625B; | |||
} | |||
.top-box { | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
display: flex; | |||
color: #2671E2; | |||
border-bottom: 1rpx solid #ccc; | |||
} | |||
</style> |
@@ -56,7 +56,7 @@ | |||
</view> | |||
</view> | |||
<template v-if="recordList.length == 0"> | |||
<view v-if="recordList.length == 0" style="background:#fff;height: 100vh"> | |||
<view style="width: 100%; height: 100%; display: flex; align-items: center"> | |||
<view style="width: 100%; height: 100%; padding-top: 200rpx"> | |||
<view style="width: 100%; text-align: center"> | |||
@@ -71,7 +71,7 @@ | |||
">暂无数据</view> | |||
</view> | |||
</view> | |||
</template> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
@@ -6,7 +6,6 @@ | |||
客户信息 | |||
</view> | |||
<view class="conmsg-lab-2"> | |||
<!-- 李先生/12385945986 --> | |||
{{str}} | |||
</view> | |||
</view> | |||
@@ -35,40 +35,58 @@ | |||
bg-color="transparent" :show-bar="false" :current="current" @change="change"></u-tabs> | |||
</template> | |||
<template v-if="current == 0"> | |||
<scroll-view :scroll-top="scrollTop" lower-threshold='100px' @scrolltolower="ltolower()" | |||
upper-threshold='40px' @scrolltoupper="rolltoupper()" :scroll-into-view="scrollId" scroll-y="true" | |||
class="zhuti text scroll-Y"> | |||
<scroll-view scroll-y="true" class="zhuti text scroll-Y"> | |||
<!-- 聊天记录--> | |||
<view class="dialog-block" style="border-bottom: none;"> | |||
<block v-for="(item,index) in findTabooWordsList" :key="index"> | |||
<view class="text"> | |||
<view class="avatar"> | |||
<view :style="[SPEAKERSTYLE(item.speaker)]"> | |||
<!-- <image v-if="item.isShow && item.isShow == 0" :src="Aimg" mode="widthFix"></image> --> | |||
<text v-if="item.isShow == 0">顾</text> | |||
<text v-else>{{ item.speaker | toCapital }}</text> | |||
</view> | |||
<view class="dialog-block" v-for="(item,i) in findTabooWordsList" :key="i"> | |||
<view class="fileName">录音文件</view> | |||
<view class="text" :data-guwen="item.isShow" :data-speaker="item.speaker"> | |||
<view class="avatar"> | |||
<view> | |||
<image v-if="item.isShow == 0" | |||
src="https://static.quhouse.com/b11a7e1ccf914020b3ee23d3e4862637.png" | |||
mode="widthFix"> | |||
</image> | |||
<text v-else :style="[borderColor(item.speaker)]">{{ item.speaker | toCapital }}</text> | |||
</view> | |||
<view class="contentInfo"> | |||
<view class="info"> | |||
<!-- <text class="AudioUserName">{{ item.speaker | toCapital }}</text> --> | |||
<text class="AudioUserName" v-if="item.isShow == 0">{{item.username}}</text> | |||
<text class="AudioUserName" v-else>{{ item.speaker | toCapital }}</text> | |||
<text>{{conversionTiame(item.bg/1000)}}</text> | |||
</view> | |||
<view class="contentInfo"> | |||
<view class="info"> | |||
{{ item.speaker | toCapital }} {{conversionTiame(item.bg/1000)}} | |||
</view> | |||
<view class="contentMain" @click.stop> | |||
<view class="content"> | |||
<view v-html="item.onebest"></view> | |||
</view> | |||
<view class="contentMain"> | |||
<view class="content"> | |||
<view v-html="item.onebest"></view> | |||
<image v-if="Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow" | |||
class="play" src="https://static.quhouse.com/ce73a5225f7f44be9f313b0e4e4c2c0e.png"> | |||
</image> | |||
<image v-else @click="clickbofang(0,item, 'show')" class="play" | |||
src="https://static.quhouse.com/1b6ac53247e043a1bdc59ecfb2167eba.png"></image> | |||
</view> | |||
<!-- ----------对话下方新加话术标签标识------------ --> | |||
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 --> | |||
<view class="newmark" v-if="item.types"> | |||
<view class="mark-item" v-for="(subitem,i) in dealTypes(item.types)" :key="i"> | |||
<image v-if="dealword(subitem)[0]==1" class="markicon" | |||
src="https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==2" class="markicon" | |||
src="https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==3" class="markicon" | |||
src="https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==4" class="markicon" | |||
src="https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png"> | |||
</image> | |||
<view class="marktext" | |||
:style="dealword(subitem)[0]==3?'color:#E7483C':'color:#3E50E8'"> | |||
{{dealword(subitem)[1]}} | |||
</view> | |||
<template v-if="isShowMerge"> | |||
<image @click="clickbofang(0,item, 'show')" class="play" | |||
src="@/static/images/recordingManagement/play.png"></image> | |||
</template> | |||
</view> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
</scroll-view> | |||
</template> | |||
@@ -83,7 +101,6 @@ | |||
:is-scroll="true"> | |||
</u-tabs-swiper> | |||
</view> | |||
</view> | |||
</view> | |||
<scroll-view :scroll-top="scrollTop" lower-threshold='100px' @scrolltolower="ltolower()" | |||
@@ -93,34 +110,87 @@ | |||
<view class="dialog-block" v-for="(dialog,i) in dialogList" :key="i"> | |||
<view :id="'dialog'+i" class="fileName">录音文件</view> | |||
<block v-for="(item,index) in dialog.message" :key="index"> | |||
<view class="text" :id="'dialog'+csdFileindex+'text'+item.bg" | |||
:class="{active: item.bg < playNow && item.ed > playNow, reverse: Number(item.speaker) % 2 == 0}" | |||
:data-speaker="item.speaker"> | |||
<view class="text" | |||
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow, isGreen: item.isShow == 0}" | |||
:data-guwen="item.isShow" :data-speaker="item.speaker" | |||
:id="'dialog'+csdFileindex+'text'+item.bg"> | |||
<view class="avatar"> | |||
<view :style="[SPEAKERSTYLE(item.speaker)]"> | |||
<!-- <image v-if="item.isShow == 0" :src="Aimg" mode="widthFix"></image> --> | |||
<text v-if="item.isShow == 0">顾</text> | |||
<text v-else>{{ item.speaker | toCapital }}</text> | |||
<view> | |||
<image v-if="item.isShow == 0" | |||
src="https://static.quhouse.com/b11a7e1ccf914020b3ee23d3e4862637.png" | |||
mode="widthFix"> | |||
</image> | |||
<text v-else | |||
:style="[borderColor(item.speaker)]">{{ item.speaker | toCapital }}</text> | |||
</view> | |||
</view> | |||
<view class="contentInfo"> | |||
<view class="info"> | |||
<!-- <text class="AudioUserName">{{ item.speaker | toCapital }}</text> --> | |||
<text class="AudioUserName" v-if="item.isShow == 0">{{ item.username }}</text> | |||
<text class="AudioUserName" v-else>{{ item.speaker | toCapital }}</text> | |||
<text>{{conversionTiame(item.bg/1000)}}</text> | |||
{{ item.speaker | toCapital }} {{conversionTiame(item.bg/1000)}} | |||
</view> | |||
<view class="contentMain"> | |||
<view class="contentMain" @click.stop> | |||
<view class="content"> | |||
<view v-html="item.onebest"></view> | |||
<view v-html="item.onebest"> | |||
</view> | |||
<template v-if="item.isshow"> | |||
<view class="tankuangcss" :class="{bottoms:index == 0}"> | |||
<view class="tankuangcss-items" @click="clickcopy"> | |||
<image src="@/static/images/detail/icon1.png" mode=""></image> | |||
<text>复制</text> | |||
</view> | |||
<view v-if="permissions.commonly4" class="tankuangcss-items" | |||
@click="Oftenthewrongword"> | |||
<image src="@/static/images/detail/icon2.png" mode=""></image> | |||
<text>常错词</text> | |||
</view> | |||
<view v-if="permissions.commonly3" class="tankuangcss-items" | |||
@click="Addtheessence"> | |||
<image src="@/static/images/detail/icon3.png" mode=""></image> | |||
<text>加精华</text> | |||
</view> | |||
<view class="tankuangcss-items" @click="Modifyrole(index,item)"> | |||
<image src="@/static/images/detail/icon4.png" mode=""></image> | |||
<text>修改角色</text> | |||
</view> | |||
</view> | |||
</template> | |||
</view> | |||
<image | |||
v-if="Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow" | |||
class="play" | |||
src="https://static.quhouse.com/ce73a5225f7f44be9f313b0e4e4c2c0e.png"> | |||
</image> | |||
<image v-else @click="clickbofang(dialog.backindex,item)" class="play" | |||
src="https://static.quhouse.com/1b6ac53247e043a1bdc59ecfb2167eba.png"></image> | |||
</view> | |||
<!-- ----------对话下方新加话术标签标识------------ --> | |||
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 --> | |||
<view class="newmark" v-if="item.types"> | |||
<view class="mark-item" v-for="(subitem,i) in dealTypes(item.types)" :key="i"> | |||
<image v-if="dealword(subitem)[0]==1" class="markicon" | |||
src="https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==2" class="markicon" | |||
src="https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==3" class="markicon" | |||
src="https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png"> | |||
</image> | |||
<image v-if="dealword(subitem)[0]==4" class="markicon" | |||
src="https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png"> | |||
</image> | |||
<view class="marktext" | |||
:style="dealword(subitem)[0]==3?'color:#E7483C':'color:#3E50E8'"> | |||
{{dealword(subitem)[1]}} | |||
</view> | |||
</view> | |||
<image @click="clickbofang(dialog.backindex,item)" class="play" | |||
src="@/static/images/recordingManagement/play.png"></image> | |||
</view> | |||
</view> | |||
</view> | |||
</block> | |||
</view> | |||
</scroll-view> | |||
</template> | |||
@@ -220,7 +290,6 @@ | |||
textindex: 0, //下拉 转写文件下标 | |||
toptextindex: 0, //上拉 转写文件下标 | |||
dshfkjsdkksodofydwfkhwdfkjh: 0, // 顾问的id之类的 | |||
status: 0, // 状态(不明白是什么状态) | |||
speaker: '', // 角色身份 | |||
customerId: '', // 楼盘id吧(猜) | |||
@@ -307,10 +376,8 @@ | |||
var pages = getCurrentPages(); | |||
var currPage = pages[pages.length - 1]; //当前页面 | |||
this.infos = currPage.data.info; | |||
} | |||
!this.isPageHide && this.init(this.infos); | |||
}!this.isPageHide && this.init(this.infos); | |||
this.gituserlist() | |||
this.findTabooWords() | |||
}, | |||
onHide() { | |||
@@ -322,7 +389,7 @@ | |||
this.$zaudio.off('stop', this.ACTION); | |||
this.$zaudio.off('playing', this.ACTION); | |||
// this.$zaudio.setAudio([]) | |||
}, | |||
methods: { | |||
@@ -338,10 +405,13 @@ | |||
arr.push(item.transferContents) | |||
} | |||
}) | |||
this.findTabooWordsList = arr | |||
this.findTabooWordsList = arr.map(item => { | |||
if (item.speaker == this.speaker) { | |||
item.isShow = 0 | |||
} | |||
return item | |||
}) | |||
this.isFirstWords = arr[0].bg | |||
console.log(this.findTabooWordsList, 'findTabooWordsList') | |||
}) | |||
}, | |||
@@ -503,7 +573,7 @@ | |||
//取消标记 | |||
unmarktap() { | |||
this.roleindexbiaoji = this.dshfkjsdkksodofydwfkhwdfkjh; | |||
this.roleindexbiaoji = this.speaker; | |||
}, | |||
//确认标记 | |||
@@ -555,7 +625,7 @@ | |||
} else { | |||
this.kehuyixiangcenterindex = 1; | |||
} | |||
if (info.bg != 0) { | |||
this.luyinList = res; | |||
this.recordPath = res[0].recordPath | |||
@@ -608,20 +678,16 @@ | |||
}) | |||
} | |||
} | |||
if (data.data.data.speaker == null) { | |||
this.dshfkjsdkksodofydwfkhwdfkjh = 0; | |||
} else { | |||
// 顾问下标 | |||
this.speaker = data.data.data.speaker || 0; | |||
if (data.data.data.speaker != null) { | |||
if (data.data.data.viewNameFlag == 1) { | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data | |||
.speaker] | |||
.name; | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data.speaker].name; | |||
} else { | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data | |||
.speaker] | |||
.name + "顾问"; | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data.speaker].name + "顾问"; | |||
} | |||
this.roleindexbiaoji = data.data.data.speaker - 1; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; | |||
} | |||
if (data.data.data.viewNameFlag == 1) { | |||
@@ -633,13 +699,12 @@ | |||
} else { | |||
this.isSw = false | |||
} | |||
this.speaker = data.data.data.speaker; | |||
//上拉标记点 | |||
this.textindex = data.data.data.index; | |||
//下拉标记点 | |||
this.toptextindex = data.data.data.index; | |||
// 获取违禁话列表 | |||
this.findTabooWords() | |||
jsonInfo.forEach(item => { | |||
item.message = JSON.parse(item.onebest) | |||
item.backindex = this.csdFileindex; | |||
@@ -655,6 +720,7 @@ | |||
this.newluyinList = jsonInfo; | |||
this.dialogList.push(jsonInfo[0]); | |||
console.log(this.dialogList, '12312321') | |||
if (type == 'show') { | |||
var itc = parseInt(info.bg / 1000) | |||
this.adasdasdasd(itc) | |||
@@ -664,7 +730,6 @@ | |||
}) | |||
}, | |||
//下一页 | |||
ltolower() { | |||
var lengthcz = this.newluyinList.length - 1; | |||
@@ -681,6 +746,7 @@ | |||
this.dialogList[0].message.push(item) | |||
}) | |||
} | |||
console.log("下一页", this.textindex) | |||
}, | |||
//上一页 | |||
@@ -756,7 +822,7 @@ | |||
if (data.data.data.speaker == null) { | |||
this.roleindexbiaoji = 0; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = 0; | |||
this.speaker = 0; | |||
} else { | |||
if (data.data.data.viewNameFlag == 1) { | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data | |||
@@ -768,7 +834,7 @@ | |||
.name + "顾问"; | |||
} | |||
this.roleindexbiaoji = data.data.data.speaker - 1; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; | |||
this.speaker = data.data.data.speaker; | |||
} | |||
if (data.data.data.viewNameFlag == 1) { | |||
@@ -951,9 +1017,9 @@ | |||
//渲染第一首音频 | |||
this.$zaudio.setRender(0) | |||
console.log(this.$zaudio) | |||
if (this.isFirstWords != 0) { | |||
if (this.isFirstWords != 0) { | |||
setTimeout(() => { | |||
this.stepPlay(Math.floor(this.isFirstWords/1000)) | |||
this.stepPlay(Math.floor(this.isFirstWords / 1000)) | |||
this.isFirstWords = 0 | |||
}, 2000) | |||
} | |||
@@ -969,7 +1035,84 @@ | |||
if (this.$zaudio.paused) { | |||
this.$zaudio.operate() | |||
} | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealTypes(type) { | |||
if (type) { | |||
// let tem = type.split(',') | |||
let tem = type.substring(1).split(',') | |||
return tem | |||
} else { | |||
return [] | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealword(type) { | |||
if (type) { | |||
let a = type.split('-') | |||
let rest = type.substring(2).split('-').join(',') | |||
let arr = [a[0], rest] | |||
return arr | |||
} else { | |||
return [] | |||
} | |||
}, | |||
borderColor(index) { | |||
let obj = { | |||
color: '', | |||
borderRadius: '', | |||
border: '' | |||
} | |||
switch (index) { | |||
case 1: | |||
obj.color = '#E6625B'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #E6625B'; | |||
break; | |||
case 2: | |||
obj.color = '#FF981E'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #FF981E'; | |||
break; | |||
case 3: | |||
obj.color = '#F6BD16'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #F6BD16'; | |||
break; | |||
case 5: | |||
obj.color = '#4980C8'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #4980C8'; | |||
break; | |||
case 6: | |||
obj.color = '#60CBEC'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #60CBEC'; | |||
break; | |||
case 7: | |||
obj.color = '##FF981E'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #FF981E'; | |||
break; | |||
case 8: | |||
obj.color = '#4F861E'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #4F861E'; | |||
break; | |||
default: | |||
obj.color = '#9F61C8'; | |||
obj.borderRadius = '8rpx'; | |||
obj.border = '2rpx solid #9F61C8'; | |||
break; | |||
} | |||
return obj | |||
}, | |||
}, | |||
filters: { | |||
// violatedStatus | |||
@@ -1142,6 +1285,35 @@ | |||
} | |||
} | |||
// 违禁正则标签 | |||
.newmark { | |||
margin: 30rpx 0 10rpx 120rpx; | |||
.mark-item { | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin-bottom: 12rpx; | |||
.markicon { | |||
width: 30rpx; | |||
height: 30rpx; | |||
margin-right: 12rpx; | |||
} | |||
.marktext { | |||
font-size: 24rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #3E50E8; | |||
min-height: 30rpx; | |||
line-height: 30rpx; | |||
max-width: 420rpx; | |||
text-align: left; | |||
word-break: break-all; | |||
} | |||
} | |||
} | |||
.text { | |||
margin: 50upx 30upx; | |||
display: flex; | |||
@@ -1507,4 +1679,189 @@ | |||
/deep/.u-tab-item { | |||
border: 1rpx solid #dedede; | |||
} | |||
.dialog-block { | |||
margin: 20rpx 0; | |||
border-bottom: 1px solid #ccc; | |||
// .fileName { | |||
// max-width: 220rpx; | |||
// text-align: center; | |||
// margin: 10rpx auto; | |||
// font-size: 28rpx; | |||
// font-weight: 400; | |||
// color: #666; | |||
// height: 52rpx; | |||
// line-height: 52rpx; | |||
// background: #F8F8F8; | |||
// border-radius: 4rpx; | |||
// padding: 0 20rpx; | |||
// } | |||
} | |||
.scroll-Y { | |||
font-size: 36rpx; | |||
color: #999999; | |||
background: #FFFFFF; | |||
margin-top: 30rpx; | |||
flex: 1; | |||
overflow-y: scroll; | |||
width: 100%; | |||
} | |||
// 顾问默认在右边显示 | |||
.scroll-Y .text[data-guwen="0"] { | |||
flex-direction: row-reverse; | |||
text-align: right; | |||
.contentInfo { | |||
.info { | |||
color: #666; | |||
font-size: 22rpx; | |||
padding: 0 28rpx; | |||
height: 62rpx; | |||
} | |||
.contentMain { | |||
display: flex; | |||
flex-direction: row-reverse; | |||
align-items: center; | |||
.content { | |||
margin-left: 0; | |||
margin-right: 30rpx; | |||
} | |||
.play { | |||
width: 50rpx; | |||
height: 50rpx; | |||
margin-right: 20rpx; | |||
} | |||
} | |||
} | |||
} | |||
.scroll-Y .text[data-guwen="0"] { | |||
.contentInfo { | |||
.info { | |||
.AudioUserName { | |||
margin-left: 10rpx; | |||
} | |||
display: flex; | |||
flex-direction: row-reverse; | |||
} | |||
} | |||
} | |||
.scroll-Y .text { | |||
position: relative; | |||
margin: 30rpx; | |||
line-height: 80rpx; | |||
display: flex; | |||
.contentInfo { | |||
.info { | |||
.AudioUserName { | |||
margin-right: 10rpx; | |||
} | |||
} | |||
} | |||
} | |||
.scroll-Y .text .avatar { | |||
text { | |||
display: block; | |||
width: 72rpx; | |||
height: 72rpx; | |||
line-height: 72rpx; | |||
text-align: center; | |||
background: #FFFFFF; | |||
border-radius: 8rpx; | |||
font-size: 30rpx; | |||
font-family: PingFangSC-Medium, PingFang SC; | |||
font-weight: 500; | |||
box-sizing: border-box; | |||
} | |||
image { | |||
width: 72rpx; | |||
height: 72rpx; | |||
} | |||
} | |||
.scroll-Y .text .contentInfo .info { | |||
color: #666; | |||
font-size: 22rpx; | |||
padding: 0 28rpx; | |||
height: 50rpx; | |||
line-height: 50rpx; | |||
} | |||
.scroll-Y .text .contentInfo .contentMain { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.scroll-Y .text .contentInfo .contentMain .content { | |||
margin-left: 30rpx; | |||
line-height: 42rpx; | |||
text-align: left; | |||
padding: 15rpx 20rpx; | |||
border-radius: 8rpx; | |||
max-width: 442rpx; | |||
background: #F8F8F8; | |||
font-size: 30rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #505050; | |||
.tankuangcss { | |||
position: absolute; | |||
top: -140rpx; | |||
left: 50%; | |||
transform: translateX(-50%); | |||
z-index: 1000; | |||
min-width: 150rpx; | |||
height: 140rpx; | |||
display: flex; | |||
background: rgba(48, 48, 48, 0.8); | |||
border-radius: 15rpx; | |||
.tankuangcss-items { | |||
width: 150rpx; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
image { | |||
width: 36rpx; | |||
height: 36rpx; | |||
} | |||
text { | |||
margin: 12rpx 0 0 0; | |||
font-size: 24rpx; | |||
color: #fff; | |||
} | |||
} | |||
} | |||
.bottoms { | |||
top: unset; | |||
bottom: -140rpx; | |||
} | |||
} | |||
.scroll-Y .text .contentInfo .contentMain .play { | |||
width: 50rpx; | |||
height: 50rpx; | |||
margin-left: 20rpx; | |||
} | |||
</style> |
@@ -26,7 +26,7 @@ | |||
</view> | |||
<view class="content"> | |||
<view v-if="recordList.length==0" | |||
style="width: 100%;height: 100%;display: flex;align-items: center;background: #FFFFFF;"> | |||
style="width: 100%;height: 100vh;display: flex;background: #FFFFFF;"> | |||
<view style="width: 100%;padding-top: 200rpx;"> | |||
<view style="width: 100%;text-align: center;"> | |||
<image style="width: 220rpx;height: 200rpx;" | |||
@@ -393,14 +393,14 @@ | |||
this.$u.post("/customer/findbypage", parames).then(data => { | |||
this.LOADING = false | |||
var list = data.results || []; | |||
var list = data.records || []; | |||
if (this.isRefresh) { | |||
this.recordList = list; | |||
} else { | |||
this.recordList = [...this.recordList, ...list]; | |||
this.recordList = [].concat(this.recordList,list); | |||
} | |||
this.totalRecord = data.totalPage; | |||
this.totalRecords = data.totalRecord; | |||
this.totalRecord = data.pages; | |||
this.totalRecords = data.total; | |||
this.nextPageObj = parames.query | |||
}).catch(e => { | |||
this.LOADING = false | |||
@@ -3,12 +3,10 @@ | |||
<view style="width: 690rpx;margin: 0 auto;margin-top: 20rpx;"> | |||
<u-search @search='searchinfo()' :show-action='false' placeholder="请输入" v-model="keyword"></u-search> | |||
</view> | |||
<!-- <view @click="searchinfo()">搜索</view> --> | |||
<view class="content" style="background: #F8F8F8;"> | |||
<view class="content-tips" v-for="(item,index) in recordList" :key='index' @click="tapThevisiting(item)"> | |||
<view class="content-first"> | |||
<view class="left"> | |||
<!-- <view class="img">{{item.agentName.slice(0,1)}}</view> --> | |||
<view class="name">{{item.agentName}}</view> | |||
<view class="status" v-if="item.replaceReception==1">代接待</view> | |||
<view style="margin-left: 6rpx;margin-top: 11rpx;">{{item.receptionStatusName || ''}}</view> | |||
@@ -20,11 +18,10 @@ | |||
<text style="color: red;" v-if="item.taboo==1">违禁接待</text> | |||
<text v-if="item.taboo==1"> |</text> | |||
</view> | |||
<!-- <view class="point"></view> --> | |||
<view v-if="item.markAdvisor==0" class="">未标记</view> | |||
<view v-if="item.markAdvisor==1" class="">已标记</view> | |||
</view> | |||
<view class="right" v-else> | |||
<view class="right" v-else> | |||
<view class="">无录音</view> | |||
</view> | |||
</view> | |||
@@ -35,7 +32,6 @@ | |||
</view> | |||
<view class="right"> | |||
{{item.fraction || '0'}}% | |||
<!-- | {{item.fraction || '0'}}分 --> | |||
</view> | |||
</view> | |||
<view class="content-last"> | |||
@@ -222,15 +218,6 @@ | |||
.right{ | |||
display: flex; | |||
margin-top: 11rpx; | |||
.point{ | |||
width: 12rpx; | |||
height: 12rpx; | |||
background: #2B6EFF; | |||
border-radius: 50%; | |||
margin-right: 9rpx; | |||
margin-top: 16rpx; | |||
} | |||
} | |||
} | |||
@@ -13,7 +13,6 @@ | |||
我的工牌:{{imeiCode||'未绑定'}} | |||
</view> | |||
<view class="" style="color: #2671E2; font-weight: normal;"> | |||
<!-- 接待中 --> | |||
{{openFlag=='start'?'接待中':''}} | |||
</view> | |||
</view> | |||
@@ -65,24 +64,6 @@ | |||
</view> | |||
</view> | |||
</view> | |||
<!-- | |||
<view class="title" v-if="permissions.shebeinum">待处理</view> | |||
<view class="shebenbox" v-if="permissions.shebeinum" > | |||
<view class="shebenche" @click="indexStatus(0)"> | |||
<view class="shebenchenum">{{operation.receptionCount || 0}}</view> | |||
<view class="shebenchetext">接待即将结束</view> | |||
</view> | |||
<view class="shebenche" @click="indexStatus(1)"> | |||
<view class="shebenchenum">{{operation.accountCount || 0}}</view> | |||
<view class="shebenchetext">未标顾问</view> | |||
</view> | |||
<view class="shebenche" @click="indexStatus(3)"> | |||
<view class="shebenchenum">{{operation.forbiddenCount || 0}}</view> | |||
<view class="shebenchetext">违禁提醒</view> | |||
</view> | |||
</view> --> | |||
<!-- 设备总览 --> | |||
<view class="contbox" v-if="permissions.shebeinum"> | |||
<view class="title"> | |||
@@ -113,8 +94,7 @@ | |||
<!-- 今日工作 --> | |||
<view class="contbox" v-if="permissions.shishinum"> | |||
<view class="title"> | |||
<image class="title-icon" src="https://static.quhouse.com/bc2ec951ad9a47e5bf58f2829926e143.png" | |||
mode="" />今日工作 | |||
<image class="title-icon" src="https://static.quhouse.com/bc2ec951ad9a47e5bf58f2829926e143.png" mode="" />今日工作 | |||
</view> | |||
<view class="real-timebox"> | |||
<view class="timebox"> | |||
@@ -125,6 +105,10 @@ | |||
</view> | |||
<view class="realtext">平均执行率</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('6')"> | |||
<view class="realnum">{{realtimeobj.wordFraction|| 0}}%</view> | |||
<view class="realtext">平均挖掘执行率</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('11')"> | |||
<view class="realnum">{{realtimeobj.receptionCount || 0}}</view> | |||
<view class="realtext">接待量</view> | |||
@@ -133,12 +117,12 @@ | |||
<view class="realnum">{{realtimeobj.receivingCustomer || 0}}</view> | |||
<view class="realtext">正在接待</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('6')"> | |||
</view> | |||
<view class="timebox" > | |||
<view class="real" @click="tapjumpreception('6')"> | |||
<view class="realnum">{{realtimeobj.activeCustomer|| 0}}</view> | |||
<view class="realtext">有效接待</view> | |||
</view> | |||
</view> | |||
<view class="timebox" style="margin-bottom:0;"> | |||
<view class="real" @click="tapjumpreception('1')"> | |||
<view class="realnum">{{realtimeobj.avgDuration|| 0}}<text | |||
style="font-size: 30rpx;font-weight: 400;font-family: SimHei">min</text></view> | |||
@@ -148,16 +132,13 @@ | |||
<view class="realnum">{{realtimeobj.tagCustomer || 0}}</view> | |||
<view class="realtext">未标顾问</view> | |||
</view> | |||
<view class="real"> | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realnum" style="color: red;"> | |||
<view class="real" @click="prohibitedtap(1)" v-if="methodsisshow"> | |||
<view class="realnum" style="color: red;"> | |||
{{realtimeobj.prohibitedCustomer || 0}} | |||
</view> | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realtext">违禁预警</view> | |||
</view> | |||
<view class="real"> | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
<view class="realtext">违禁预警</view> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -172,26 +153,28 @@ | |||
{{choiceIndex}}累计<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
</view> | |||
<!-- <view class="timeshow">统计时间:2022.05.20-2022.05.27</view> --> | |||
<view class="real-timebox"> | |||
<view class="timebox"> | |||
<view class="real" @click="tapjumpreception('3')"> | |||
<view class="realnum u-flex" style="justify-content: center">{{Thisweekobj.fraction || 0}}<text | |||
style="font-weight: 400;font-family: SimHei;font-size: 30rpx;">%</text> | |||
<!-- <image class="qushi-icon" src="/static/images/qushi-up.png" mode="" /> --> | |||
</view> | |||
<view class="realtext">平均执行率</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('7')"> | |||
<view class="realnum">{{Thisweekobj.wordFraction || 0}}%</view> | |||
<view class="realtext">平均挖掘执行率</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('33')"> | |||
<view class="realnum">{{Thisweekobj.receptionCount || 0}}</view> | |||
<view class="realtext">接待量</view> | |||
</view> | |||
</view> | |||
<view class="timebox" style="margin-bottom:0;"> | |||
<view class="real" @click="tapjumpreception('7')"> | |||
<view class="realnum">{{Thisweekobj.activeCustomer|| 0}}</view> | |||
<view class="realtext">有效接待</view> | |||
</view> | |||
</view> | |||
<view class="timebox" style="margin-bottom:0;"> | |||
<view class="real" @click="tapjumpreception('3')"> | |||
<view class="realnum">{{Thisweekobj.avgDuration || 0}}<text | |||
style="font-size: 30rpx;font-weight: 400;font-family: SimHei">min</text></view> | |||
@@ -205,10 +188,6 @@ | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
</view> | |||
<view class="real"> | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -275,6 +254,13 @@ | |||
</view> | |||
<view class="commonly-text">员工分析</view> | |||
</view> | |||
<view class="commonly" @click="toRequireAnalysis()" v-if="permissions.xqwjfx"> | |||
<view class="commonly-img"> | |||
<image class="commonly-img1" | |||
src="https://static.quhouse.com/c2d3801540cf4880a68cce0e04eb59b0.png" mode=""></image> | |||
</view> | |||
<view class="commonly-text">需求挖掘分析</view> | |||
</view> | |||
</view> | |||
<view class="title" | |||
v-if="permissions.commonly11||permissions.commonly12||permissions.commonly5||permissions.commonly6"> | |||
@@ -506,7 +492,12 @@ | |||
this.updateInit() | |||
}, | |||
methods: { | |||
// 需求挖掘分析 | |||
toRequireAnalysis(){ | |||
uni.navigateTo({ | |||
url: '/pages/center/Piabodata/requireminingAnalysis' | |||
}); | |||
}, | |||
updateInit() { | |||
this.$u.get(config.service.notReadNum, { | |||
id: uni.getStorageSync('weapp_session_userInfo_data').accountId, | |||
@@ -650,16 +641,7 @@ | |||
if (data.data.data == null) { | |||
return | |||
} else { | |||
this.Thisweekobj = { | |||
sumCustomer: data.data.data.sumCustomer, | |||
receivingCustomer: data.data.data.receivingCustomer, | |||
activeCustomer: data.data.data.activeCustomer, | |||
prohibitedCustomer: data.data.data.prohibitedCustomer, | |||
avgDuration: data.data.data.avgDuration || 0, | |||
tagCustomer: data.data.data.tagCustomer, | |||
fraction: data.data.data.fraction, | |||
receptionCount: data.data.data.receptionCount | |||
} | |||
this.Thisweekobj = data.data.data | |||
} | |||
} | |||
}) | |||
@@ -681,16 +663,7 @@ | |||
if (data.data.data == null) { | |||
return | |||
} else { | |||
this.realtimeobj = { | |||
sumCustomer: data.data.data.sumCustomer, | |||
receivingCustomer: data.data.data.receivingCustomer, | |||
activeCustomer: data.data.data.activeCustomer, | |||
prohibitedCustomer: data.data.data.prohibitedCustomer, | |||
avgDuration: data.data.data.avgDuration || 0, | |||
tagCustomer: data.data.data.tagCustomer, | |||
fraction: data.data.data.fraction, | |||
receptionCount: data.data.data.receptionCount | |||
} | |||
this.realtimeobj = data.data.data | |||
} | |||
}, | |||
fail: () => { | |||
@@ -1,35 +1,43 @@ | |||
<template> | |||
<view class="translation"> | |||
<view style="display: flex;align-items: center;width: 100%;padding: 0 30rpx;"> | |||
<!-- <view class="search-input"> | |||
<view style="flex-shrink: 0;width: 10%;height: 64rpx;display: flex;align-items: center;"> | |||
<image style="width: 28rpx;height: 28rpx;margin-left: 30rpx;" src="/static/images/search.png" | |||
mode=""></image> | |||
</view> | |||
<view style="flex-grow: 1;height: 64rpx;display: flex;align-items: center;"> | |||
<input type="text" @input="searchinfo" v-model="keyword" placeholder="请输入关键字" | |||
style="flex-grow: 1;color: #999999;font-size: 24rpx;" /> | |||
</view> | |||
<view class="box"> | |||
<view style="width: 10%; height: 64rpx; display: flex; align-items: center"> | |||
<image style="width: 28rpx; height: 28rpx; margin-left: 30rpx" src="/static/images/search.png" mode=""> | |||
</image> | |||
</view> | |||
<view style="width: 90%; height: 64rpx; display: flex; align-items: center"> | |||
<input type="text" @input="searchinfo" v-model="keyword" placeholder="请输入关键字" | |||
style="width: 100%; color: #999999; font-size: 24rpx" /> | |||
</view> | |||
<view class="searchbtn" @click="searchinfo">搜索</view> --> | |||
<u-search class="search-boxs" :disabled="disabled" placeholder="请输入" v-model="keyword" action-text="搜索" :show-action="true" | |||
@search="searchinfo" @custom="searchinfo"></u-search> | |||
</view> | |||
<view style="width: 690rpx;margin: 0 auto;margin-top: 10rpx;"> | |||
<view | |||
style="width: 100%;border-bottom: 1px solid #E0E0E0;display: flex;padding-bottom: 10rpx;margin-top: 40rpx;" | |||
v-for="(item,index) in listarr" :key='index' @click="toaidoinfo(item.Content,item.corpusId,item.index)"> | |||
<view style="width: 26rpx;height: 36rpx;margin-top: 4rpx;"> | |||
<image style="width: 26rpx;height: 28rpx;" src="../../static/images/testimg.png" mode=""></image> | |||
<view class="box-list"> | |||
<view style="width: 100%; padding-bottom: 10rpx;" v-for="(item, index) in listarr" :key="index" | |||
@click="toaidoinfo(item.Content, item.corpusId, item.index)"> | |||
<view class="item-list"> | |||
<view class="icon"> | |||
<image style="width: 26rpx; height: 28rpx" src="../../static/images/testimg.png" mode=""> | |||
</image> | |||
</view> | |||
<view v-html="item.Content.text" class="text"></view> | |||
<view class="time">{{ item.Content.time }}</view> | |||
</view> | |||
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 --> | |||
<view class="newmark" v-if="item.Content.types"> | |||
<view class="mark-item" v-for="(subitem, i) in dealTypes(item.Content.types)" :key="i"> | |||
<image v-if="dealword(subitem)[0] == 1" class="markicon" | |||
src="https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png"></image> | |||
<image v-if="dealword(subitem)[0] == 2" class="markicon" | |||
src="https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png"></image> | |||
<image v-if="dealword(subitem)[0] == 3" class="markicon" | |||
src="https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png"></image> | |||
<image v-if="dealword(subitem)[0] == 4" class="markicon" | |||
src="https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png"></image> | |||
<view class="marktext" :style=" | |||
dealword(subitem)[0] == 3 ? 'color:#E7483C' : 'color:#3E50E8' | |||
">{{ dealword(subitem)[1] }}</view> | |||
</view> | |||
</view> | |||
<view v-html="item.Content.text" | |||
style="color: #666666;font-size: 28rpx;line-height: 36rpx;margin-left: 10rpx;width: 80%;"></view> | |||
<view style="font-size: 28rpx;width: 10%;width: 14%;text-align: right;">{{item.Content.time}}</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
@@ -46,6 +54,7 @@ | |||
skpl: '', | |||
disabled: false, | |||
tipsFncName: '', // 通知其他页面的方法名称 | |||
types: 0, | |||
}; | |||
}, | |||
onLoad: function(options) { | |||
@@ -53,6 +62,7 @@ | |||
this.keyword = options.keyword; | |||
this.skpl = options.skpl; | |||
if (options.UpDateEvent) this.tipsFncName = options.UpDateEvent | |||
if (options.types) this.types = options.types | |||
if (this.skpl == 2) { | |||
this.searchinfo() | |||
this.disabled = true; | |||
@@ -61,6 +71,26 @@ | |||
} | |||
}, | |||
methods: { | |||
// 对话加命中标签 | |||
dealTypes(type) { | |||
if (type) { | |||
let tem = type.substring(1).split(","); | |||
return tem; | |||
} else { | |||
return []; | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealword(type) { | |||
if (type) { | |||
let a = type.split("-"); | |||
let rest = type.substring(2).split("-").join(","); | |||
let arr = [a[0], rest]; | |||
return arr; | |||
} else { | |||
return []; | |||
} | |||
}, | |||
formatTime(num) { | |||
//格式化时间格式 | |||
num = num.toFixed(0); | |||
@@ -76,7 +106,10 @@ | |||
} else { | |||
let parames = { | |||
keyword: this.keyword, | |||
customerId: this.customerId | |||
customerId: this.customerId, | |||
} | |||
if (this.types == 1) { | |||
parames.type = 1 | |||
} | |||
this.$u.post("/corpus/keyWordsMatching", parames).then(res => { | |||
res.forEach(item => { | |||
@@ -146,7 +179,72 @@ | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.search-boxs { | |||
width: 100%; | |||
} | |||
.box { | |||
width: 690rpx; | |||
height: 64rpx; | |||
margin: 0 auto; | |||
margin-top: 30rpx; | |||
background: #f2f2f2; | |||
border-radius: 32rpx; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.box-list { | |||
width: 690rpx; | |||
margin: 30rpx auto 0; | |||
} | |||
.item-list { | |||
display: flex; | |||
border-bottom: 1px solid #e0e0e0; | |||
.icon { | |||
width: 26rpx; | |||
height: 36rpx; | |||
margin-top: 4rpx; | |||
} | |||
.text { | |||
color: #666666; | |||
font-size: 28rpx; | |||
line-height: 36rpx; | |||
margin-left: 10rpx; | |||
width: 80%; | |||
} | |||
.time { | |||
font-size: 28rpx; | |||
width: 10%; | |||
width: 14%; | |||
text-align: right; | |||
} | |||
} | |||
.newmark { | |||
margin-top: 20rpx; | |||
padding-left: 30rpx; | |||
.mark-item { | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin-bottom: 12rpx; | |||
.markicon { | |||
width: 30rpx; | |||
height: 30rpx; | |||
margin-right: 12rpx; | |||
} | |||
.marktext { | |||
flex: 1; | |||
font-size: 24rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #3e50e8; | |||
min-height: 30rpx; | |||
line-height: 30rpx; | |||
} | |||
} | |||
} | |||
</style> |
@@ -1,16 +1,31 @@ | |||
<template> | |||
<view class="translation"> | |||
<view style="width: 690rpx;margin: 0 auto;margin-top: 10rpx;"> | |||
<view style="width: 100%;border-bottom: 1px solid #E0E0E0;display: flex;padding-bottom: 10rpx;margin-top: 40rpx;" | |||
v-for="(item,index) in listarr" :key='index' @click="toaidoinfo(item.Content,item.corpusId,item.index)"> | |||
<view style="width: 26rpx;height: 36rpx;margin-top: 4rpx;"> | |||
<image style="width: 26rpx;height: 28rpx;" src="../../static/images/testimg.png" mode=""></image> | |||
<view class="cont-box" v-for="(item, index) in listarr" :key="index" | |||
@click="toaidoinfo(item.Content, item.corpusId, item.index)"> | |||
<view class="top-cont"> | |||
<view style="width: 26rpx; height: 36rpx; margin-top: 4rpx"> | |||
<image style="width: 26rpx; height: 28rpx" src="../../static/images/testimg.png" mode=""></image> | |||
</view> | |||
<view v-html="item.Content.onebest" | |||
style="color: #666666;font-size: 28rpx;line-height: 36rpx;margin-left: 10rpx;width: 80%;"></view> | |||
<view style="font-size: 28rpx; width: 10%; width: 14%; text-align: right">{{ item.Content.time }}</view> | |||
</view> | |||
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 --> | |||
<view class="newmark" v-if="item.Content.types"> | |||
<view class="mark-item" v-for="(subitem,i) in dealTypes(item.Content.types)" :key="i"> | |||
<image v-if="dealword(subitem)[0]==1" class="markicon" | |||
src="https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png"></image> | |||
<image v-if="dealword(subitem)[0]==2" class="markicon" | |||
src="https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png"></image> | |||
<image v-if="dealword(subitem)[0]==3" class="markicon" | |||
src="https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png"></image> | |||
<image v-if="dealword(subitem)[0]==4" class="markicon" | |||
src="https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png"></image> | |||
<view class="marktext" :style="dealword(subitem)[0]==3?'color:#E7483C':'color:#3E50E8'"> | |||
{{dealword(subitem)[1]}} | |||
</view> | |||
</view> | |||
<view v-html="item.Content.onebest" style="color: #666666;font-size: 28rpx;line-height: 36rpx;margin-left: 10rpx;width: 80%;"></view> | |||
<view style="font-size: 28rpx;width: 10%;width: 14%;text-align: right;">{{item.Content.time}}</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
@@ -21,23 +36,44 @@ | |||
export default { | |||
data() { | |||
return { | |||
customerId:'', | |||
listarr:[], | |||
id:'', | |||
type:'', | |||
customerId: '', | |||
listarr: [], | |||
id: '', | |||
type: '', | |||
tipsFncName: '', // 提醒页面变更的值 | |||
from: '', // 标记需要刷新的来源 | |||
}; | |||
}, | |||
onLoad(options) { | |||
this.customerId = options.customerId; | |||
this.id=options.id; | |||
this.type=options.type; | |||
this.id = options.id; | |||
this.type = options.type; | |||
if (options.UpDateEvent) this.tipsFncName = options.UpDateEvent | |||
if (options.from) this.from = options.from | |||
this.searchinfo() | |||
}, | |||
methods: { | |||
// 对话加命中标签 | |||
dealTypes(type) { | |||
if (type) { | |||
let tem = type.substring(1).split(',') | |||
return tem | |||
} else { | |||
return [] | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealword(type) { | |||
if (type) { | |||
let a = type.split('-') | |||
let rest = type.substring(2).split('-').join(',') | |||
let arr = [a[0], rest] | |||
return arr | |||
} else { | |||
return [] | |||
} | |||
}, | |||
formatTime(num) { | |||
//格式化时间格式 | |||
num = num.toFixed(0); | |||
@@ -48,35 +84,35 @@ | |||
return min + ":" + second; | |||
}, | |||
//搜索 | |||
searchinfo(){ | |||
let parames={ | |||
marketingId:this.id, | |||
customerId:this.customerId, | |||
type:this.type | |||
searchinfo() { | |||
let parames = { | |||
marketingId: this.id, | |||
customerId: this.customerId, | |||
type: this.type | |||
} | |||
this.$u.post("/corpus/pinWordMatching", parames).then(res => { | |||
res.forEach(item=>{ | |||
item.Content=JSON.parse(item.transferContent) | |||
res.forEach(item => { | |||
item.Content = JSON.parse(item.transferContent) | |||
}) | |||
res.forEach(cet=>{ | |||
cet.Content.time=this.formatTime(cet.Content.bg/1000) | |||
res.forEach(cet => { | |||
cet.Content.time = this.formatTime(cet.Content.bg / 1000) | |||
}) | |||
this.listarr=res; | |||
this.listarr = res; | |||
}) | |||
}, | |||
//跳转 | |||
toaidoinfo(item,id,index){ | |||
item.customerId=this.customerId; | |||
item.id=id; | |||
item.index=index; | |||
toaidoinfo(item, id, index) { | |||
item.customerId = this.customerId; | |||
item.id = id; | |||
item.index = index; | |||
this.infostust(item) | |||
}, | |||
//只有一条的时候 | |||
infostust(item){ | |||
infostust(item) { | |||
console.log("zobudao") | |||
let d = JSON.parse(JSON.stringify([item])) | |||
d[0].onebest=""; | |||
console.log(d) | |||
d[0].onebest = ""; | |||
console.log(d) | |||
const parames = { | |||
pageNum: 1, | |||
pageSize: 100, | |||
@@ -87,7 +123,7 @@ | |||
this.$u.post("/corpus/findByPage", parames).then(res => { | |||
uni.setStorageSync("entrance", 2); //写入缓存 | |||
uni.setStorageSync("searchobj", d[0]); //写入缓存 | |||
if(res[0].merge==0){ | |||
if (res[0].merge == 0) { | |||
let newobj = res[0]; | |||
if (this.tipsFncName) { | |||
uni.$emit(this.tipsFncName, d[0]) | |||
@@ -100,11 +136,11 @@ | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&itemobj=${JSON.stringify(d[0])}&stateisshow=${'2'}&refresh=true` | |||
}) | |||
} | |||
uni.navigateTo({ | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&itemobj=${JSON.stringify(d[0])}&stateisshow=${'2'}` | |||
}) | |||
}else{ | |||
} else { | |||
let newobj = res[0]; | |||
uni.navigateTo({ | |||
url: `/pages/mine/details?customerId=${newobj.customerId}&status=${newobj.status}&itemobj=${JSON.stringify(d[0])}&stateisshow=${'2'}` | |||
@@ -112,10 +148,50 @@ | |||
} | |||
}) | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.translation { | |||
width: 100%; | |||
padding: 0 30rpx; | |||
.cont-box { | |||
width: 100%; | |||
margin-bottom: 20rpx; | |||
.top-cont { | |||
display: flex; | |||
border-bottom: 1px solid #e0e0e0; | |||
} | |||
.newmark { | |||
margin-top: 20rpx; | |||
padding-left: 30rpx; | |||
.mark-item { | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin-bottom: 12rpx; | |||
.markicon { | |||
width: 30rpx; | |||
height: 30rpx; | |||
margin-right: 12rpx; | |||
} | |||
.marktext { | |||
flex: 1; | |||
font-size: 24rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #3E50E8; | |||
min-height: 30rpx; | |||
line-height: 30rpx; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -79,6 +79,7 @@ | |||
let param = { | |||
keywordIds:'', | |||
id: this.customerId, | |||
projectId: uni.getStorageSync("buildingID").id | |||
} | |||
let str = [] | |||
this.allList.map(item => { | |||
@@ -80,6 +80,23 @@ | |||
<image v-else @click="clickbofang(dialog.backindex,item)" class="play" | |||
src="https://static.quhouse.com/1b6ac53247e043a1bdc59ecfb2167eba.png"></image> | |||
</view> | |||
<!-- ----------对话下方新加话术标签标识------------ --> | |||
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 --> | |||
<view class="newmark" v-if="item.types"> | |||
<view class="mark-item" v-for="(subitem,i) in dealTypes(item.types)" :key="i"> | |||
<image v-if="dealword(subitem)[0]==1" class="markicon" | |||
src="https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png"></image> | |||
<image v-if="dealword(subitem)[0]==2" class="markicon" | |||
src="https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png"></image> | |||
<image v-if="dealword(subitem)[0]==3" class="markicon" | |||
src="https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png"></image> | |||
<image v-if="dealword(subitem)[0]==4" class="markicon" | |||
src="https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png"></image> | |||
<view class="marktext" :style="dealword(subitem)[0]==3?'color:#E7483C':'color:#3E50E8'"> | |||
{{dealword(subitem)[1]}} | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</block> | |||
@@ -287,10 +304,12 @@ | |||
</view> | |||
</view> | |||
<view class="pingfenbox"> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{totalRate}}% | |||
<view style="overflow: hidden;" :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{totalRate}}% | |||
</view> | |||
<view v-if="permissions.commonly6" :class="{ activecllasscet: zhixingcenterindex == 1 }" | |||
@click="recordclick(1)">禁忌执行</view> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 2 }" | |||
@click="recordclick(2)">需求挖掘率</view> | |||
</view> | |||
<view v-if="zhixingcenterindex == 0" class="cenisbox"> | |||
<view | |||
@@ -345,6 +364,107 @@ | |||
<view v-if="prohibitedlist.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">暂无数据 | |||
</view> | |||
</view> | |||
<!-- 需求挖掘率 --> | |||
<view v-if="zhixingcenterindex == 2" class="cenisbox"> | |||
<view class="top-box"> | |||
<view style="width:50%;text-align:center">挖掘执行:{{wordFraction||0}}%</view> | |||
<view style="width:50%;text-align:center">挖掘成功:{{percent||0}}%</view> | |||
</view> | |||
<view | |||
style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;"> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 28rpx;">指标 | |||
</view> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-align:center">执行率 | |||
</view> | |||
<view style="flex: 1;color: #333333;font-weight: 600;text-align:center;text-indent:28rpx">挖掘成功 | |||
</view> | |||
<view style="flex: 0 0 30rpx"></view> | |||
</view> | |||
<view class="Level-box" v-for="(item,index) in KeyWordsfractionList" :key="index"> | |||
<view class="Level1che" @click="hangeshow2(item,1)"> | |||
<view class="title1" style="flex:1">{{item.name}}</view> | |||
<view class="Level1-middle" style="flex:2;display:flex;"> | |||
<view class="item" style="flex:1;text-align:center;">执行{{item.fraction || 0}}%</view> | |||
<view class="item" style="flex:1;text-align:center;color:#2671E2" | |||
v-if="item.keywordsList&&item.keywordsList.length">已完成({{ | |||
item.keywordsList.length | |||
}})</view> | |||
<view class="item" v-else style="flex:1;text-align:center;">未完成</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!item.show" class="arrow rotatearrow" src="/static/images/down.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</view> | |||
<!-- 话术在一级下 --> | |||
<view v-if="item.children&&item.children.length==0"> | |||
<view class="hhhbox" v-if="item.show" style="padding: 30rpx;"> | |||
<view class="hsnrtest" style="font-size:30rpx;color: #333;line-height: 42rpx;"> | |||
客户标签:{{ getKeywordsList(item.keywordsList) }}</view> | |||
<view class="hsnrtest" style="margin-top:10rpx">话术内容:</view> | |||
<view v-if="item.modelList.length==0">暂无话术</view> | |||
<view class="Level3che" @click="clickWajue(che)" v-for="(che,inc) in item.modelList" | |||
:key='inc'> | |||
<view class="title1" | |||
:style="che.isAskQuestions==2?'color:#FF8C13':che.isAskQuestions==0?'':'color: #666'"> | |||
{{inc+1}}.{{che.showFormatExpression}} | |||
</view> | |||
<view class="jiantobox"> | |||
<!-- 0本次选中 1未选中 2上次选中 --> | |||
<image v-if="che.isAskQuestions==0" class="arrow" | |||
src="/static/images/rate-checked.png" mode="" /> | |||
<image v-else-if="che.isAskQuestions==2" class="arrow" | |||
src="/static/images/checked-yellow.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 话术二级下 --> | |||
<view v-if="item.children&&item.children.length"> | |||
<view class="hhhbox" v-if="item.show" v-for="(subitem,i) in item.children" :key="i"> | |||
<view class="Level2che" @click="hangeshow2(subitem,1)"> | |||
<view class="title1 u-line-1">{{subitem.name}}</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="subitem.isAskQuestions==0">已执行</view> | |||
<view class="zhixing2" v-else>未执行</view> | |||
</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="subitem.selected==0">已完成</view> | |||
<view class="zhixing2" v-else>未完成</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!subitem.show" class="arrow rotatearrow" | |||
src="/static/images/down.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</view> | |||
<view v-if="subitem.show" style="padding: 30rpx 0;"> | |||
<view class="hsnrtest" style="font-size:30rpx;color: #333;line-height: 42rpx;"> | |||
客户标签:{{ getKeywordsList(subitem.keywordsList) }}</view> | |||
<view class="hsnrtest" style="margin-top: 10rpx">话术内容:</view> | |||
<view v-if="subitem.modelList.length==0">暂无话术</view> | |||
<view class="Level3che" @click="clickWajue(che)" | |||
v-for="(che,inc) in subitem.modelList" :key='inc'> | |||
<view class="title1" | |||
:style="che.isAskQuestions==2?'color:#FF8C13':che.isAskQuestions==0?'':'color: #666'"> | |||
{{inc+1}}.{{che.showFormatExpression}} | |||
</view> | |||
<view class="jiantobox"> | |||
<!-- 0本次选中 1未选中 2上次选中 --> | |||
<image v-if="che.isAskQuestions==0" class="arrow" | |||
src="/static/images/rate-checked.png" mode="" /> | |||
<image v-else-if="che.isAskQuestions==2" class="arrow" | |||
src="/static/images/checked-yellow.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 客户意向 --> | |||
@@ -393,7 +513,6 @@ | |||
</view> | |||
</view> | |||
</view> | |||
<!-- @click="Edittag(item,chend,index,i)" --> | |||
<view class="cenisbox" v-if="kehuyixiangcenterindex==1"> | |||
<view style="width: 100%;height: 100%;text-align: center;margin-top: 200rpx;" | |||
v-if="Acquirecustomerintentlist2.length==0"> | |||
@@ -486,6 +605,7 @@ | |||
}, | |||
data() { | |||
return { | |||
KeyWordsfractionList: [], | |||
customStyle: { | |||
'width': '320rpx', | |||
'font-size': '34rpx', | |||
@@ -600,10 +720,11 @@ | |||
nowPlaying: 0, // 当前播放位置 | |||
stepPosition: 0, // 需要跳转的播放位置 | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
templateName: '', // 销讲业务类型文字 | |||
percent: 0,// 挖掘成功 | |||
wordFraction: 0,// 挖掘执行 | |||
}; | |||
}, | |||
computed: { | |||
@@ -621,6 +742,8 @@ | |||
this.customerId = options.customerId; | |||
this.itemobj = uni.getStorageSync('searchobj'); | |||
this.stateisshow = options.stateisshow; | |||
this.wordFraction = options.wordFraction == 'undefined' ? 0 : options.wordFraction; | |||
this.$zaudio.autoPlay = true | |||
if (options.refresh) this.refresh = options.refresh | |||
@@ -701,7 +824,6 @@ | |||
}, | |||
methods: { | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
@@ -711,7 +833,80 @@ | |||
this.templateList = res | |||
}) | |||
}, | |||
hangeshow2(item, type) { | |||
item.show = !item.show; | |||
}, | |||
//挖掘率话术客户标签展示 | |||
getKeywordsList(list) { | |||
let keywords = []; | |||
if (list && list.length) { | |||
keywords = list.map((item) => item.name); | |||
} else { | |||
return "--"; | |||
} | |||
return keywords.join(","); | |||
}, | |||
// // 计算挖掘执行的完成率 | |||
getPercent() { | |||
let countArr = this.KeyWordsfractionList.filter(item => item.selected == 0) | |||
this.percent = (countArr.length / this.KeyWordsfractionList.length) * 100 | |||
this.percent = this.percent.toFixed(0) | |||
}, | |||
// 客户详情需求挖掘话术 | |||
getfindKeyWordsBycusId() { | |||
this.$u.get("/cusLvStatistics/findKeyWordsBycusId?cusId=" + this.customerId).then(res => { | |||
// console.log(res) | |||
if (res.length) { | |||
res.forEach((item, index) => { | |||
item.show = false | |||
if (index == 0) { | |||
item.show = true | |||
} | |||
item.children.forEach((obj, i) => { | |||
obj.show = false | |||
if (i == 0 && index == 0) { | |||
obj.show = true; | |||
} | |||
}) | |||
}) | |||
this.KeyWordsfractionList = res | |||
this.getPercent() | |||
} else { | |||
this.KeyWordsfractionList = [] | |||
} | |||
}) | |||
}, | |||
clickWajue(item) { | |||
if (item.isAskQuestions == 0) { | |||
this.Pinspeak = false | |||
uni.navigateTo({ | |||
url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&keyword=" + item | |||
.showFormatExpression + | |||
"&skpl=" + "2" + '&UpDateEvent=DETAILS2INIT' | |||
}) | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealTypes(type) { | |||
if (type) { | |||
// let tem = type.split(',') | |||
let tem = type.substring(1).split(',') | |||
return tem | |||
} else { | |||
return [] | |||
} | |||
}, | |||
// 对话加命中标签 | |||
dealword(type) { | |||
if (type) { | |||
let a = type.split('-') | |||
let rest = type.substring(2).split('-').join(',') | |||
let arr = [a[0], rest] | |||
return arr | |||
} else { | |||
return [] | |||
} | |||
}, | |||
// 跳转设备日志页面 | |||
eqLogClick() { | |||
uni.navigateTo({ | |||
@@ -861,8 +1056,10 @@ | |||
this.zhixingcenterindex = i; | |||
if (i == 0) { | |||
this.getRatelist() | |||
} else { | |||
} else if(i ==1) { | |||
this.huoqujinji() | |||
}else{ | |||
this.getfindKeyWordsBycusId() | |||
} | |||
}, | |||
//获取禁忌 | |||
@@ -1119,7 +1316,7 @@ | |||
this.stateisshow = 1; | |||
uni.navigateTo({ | |||
url: '/pages/learning/Keywordsearch?customerId=' + this.customerId + "&status=" + this.status + | |||
"&skpl=" + "1" + '&UpDateEvent=DETAILS2INIT' | |||
"&skpl=" + "1" + '&UpDateEvent=DETAILS2INIT&types=1' | |||
}) | |||
}, | |||
//标记选择角色 | |||
@@ -1985,6 +2182,40 @@ | |||
<style lang="scss" scoped> | |||
.contentInfo .newmark { | |||
margin: 30rpx 0 10rpx 30rpx; | |||
.mark-item { | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin-bottom: 12rpx; | |||
.markicon { | |||
width: 30rpx; | |||
height: 30rpx; | |||
margin-right: 12rpx; | |||
} | |||
.marktext { | |||
font-size: 24rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #3E50E8; | |||
min-height: 30rpx; | |||
line-height: 30rpx; | |||
max-width: 420rpx; | |||
text-align: left; | |||
word-break: break-all; | |||
} | |||
} | |||
} | |||
.scroll-Y .text[data-speaker="2"] .newmark, | |||
.scroll-Y .text[data-speaker="4"] .newmark, | |||
.scroll-Y .text[data-speaker="8"] .newmark, | |||
.scroll-Y .text[data-speaker="6"] .newmark { | |||
// margin-left: 84rpx; | |||
} | |||
.box { | |||
width: 100%; | |||
height: 100vh; | |||
@@ -1997,13 +2228,15 @@ | |||
line-height: 60rpx; | |||
border-bottom: 1px solid #E0E0E0; | |||
display: flex; | |||
justify-content: space-around; | |||
} | |||
.pingfenbox view { | |||
flex: 1; | |||
width: 100%; | |||
height: 100%; | |||
text-align: center; | |||
font-size: 28rpx; | |||
text-indent: 20rpx; | |||
padding: 0 18rpx; | |||
} | |||
.activecllasscet { | |||
@@ -2408,6 +2641,13 @@ | |||
.cenisbox { | |||
flex: 1; | |||
overflow: auto; | |||
.top-box { | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
display: flex; | |||
color: #2671E2; | |||
border-bottom: 1rpx solid #ccc; | |||
} | |||
.jianbox { | |||
width: 100%; | |||
@@ -2640,15 +2880,11 @@ | |||
} | |||
// 顾问默认在右边显示 | |||
.scroll-Y .text[data-guwen="0"] // .scroll-Y .text[data-speaker="2"], | |||
// .scroll-Y .text[data-speaker="4"], | |||
// .scroll-Y .text[data-speaker="6"] | |||
.scroll-Y .text[data-guwen="0"] | |||
{ | |||
flex-direction: row-reverse; | |||
text-align: right; | |||
.contentInfo { | |||
.info { | |||
color: #666; | |||
@@ -2679,10 +2915,7 @@ | |||
} | |||
.scroll-Y .text[data-guwen="0"] // .scroll-Y .text[data-speaker="2"], | |||
// .scroll-Y .text[data-speaker="4"], | |||
// .scroll-Y .text[data-speaker="6"] | |||
.scroll-Y .text[data-guwen="0"] | |||
{ | |||
.contentInfo { | |||
.info { | |||
@@ -2907,9 +3140,7 @@ | |||
border-bottom: 1rpx solid #E0E0E0; | |||
background: #FFFFFF; | |||
// padding-bottom: 32rpx; | |||
.hsnrtest { | |||
height: 24rpx; | |||
font-size: 24rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
@@ -40,7 +40,7 @@ | |||
</view> | |||
</view> | |||
<view class="title" style="border: none;" @click="Buildingselection()"> | |||
<view class="title" @click="Buildingselection()"> | |||
<view class="titletext">客户来源</view> | |||
<view class="titletext2" | |||
style="font-size: 30rpx;font-weight: 400;color: #B2B2B2;line-height: 110rpx;padding-left: 10rpx;"> | |||