Sfoglia il codice sorgente

Merge branch 'master' into consultant

yun
douzhuo 1 anno fa
parent
commit
65a5366854
14 ha cambiato i file con 505 aggiunte e 547 eliminazioni
  1. +2
    -0
      config.js
  2. +1
    -5
      manifest.json
  3. +3
    -14
      pages.json
  4. +3
    -2
      pages/center/Piabodata/Employeesstatistics.vue
  5. +3
    -8
      pages/center/Piabodata/StaffAnalysis.vue
  6. +14
    -14
      pages/center/Piabodata/TrendAnalysis.vue
  7. +60
    -37
      pages/center/Piabodata/requireminingAnalysis.vue
  8. +21
    -76
      pages/center/consumer/consumerDetail.vue
  9. +85
    -95
      pages/center/consumer/index.vue
  10. +64
    -70
      pages/center/records/index.vue
  11. +46
    -7
      pages/index/customer.vue
  12. +106
    -166
      pages/index/index.vue
  13. +93
    -50
      pages/mine/details2.vue
  14. +4
    -3
      utils/domain.js

+ 2
- 0
config.js Vedi File

@@ -81,6 +81,8 @@ var config = {
notReadNum: `${host}/zkMessage/findFlagCount`,
//设备日志
eqLog: `${host}/equipment/equipmentLog`,
//添加挖掘词
addWordMining: `${host}/corpus/addWordMining`,
}
};
module.exports = config;

+ 1
- 5
manifest.json Vedi File

@@ -99,11 +99,7 @@
"minified" : true
},
"usingComponents" : true,
"permission" : {
"scope.userLocation" : {
"desc" : "获取地址信息"
}
},
"permission" : {},
"requiredBackgroundModes" : [ "audio" ],
"plugins" : {
"WechatSI" : {


+ 3
- 14
pages.json Vedi File

@@ -2,7 +2,6 @@
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
//这个pages里只放这五个页面,新增页面时请对应的放到下面的分包里
"pages": [
{
"path": "pages/index/guide",
@@ -45,7 +44,6 @@
}
}
],
//这下面是分包
"subPackages": [{
"root": "pages/login", //登录相关
"name": "login",
@@ -216,7 +214,6 @@
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
}
}, {
"path": "selectBuilding",
"style": {
@@ -224,7 +221,6 @@
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTextStyle": "black"
}
}, {
"path": "registerCode",
"style": {
@@ -240,7 +236,6 @@
"navigationBarBackgroundColor": "#2671E2",
"navigationBarTextStyle": "white"
}
},
{
"path": "registerResult",
@@ -249,7 +244,6 @@
"navigationBarBackgroundColor": "#2671E2",
"navigationBarTextStyle": "white"
}
}, {
"path": "messageDetail",
"style": {
@@ -264,7 +258,6 @@
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black"
}
}, {
"path": "equipmentLog",
"style": {
@@ -273,7 +266,6 @@
"navigationBarTextStyle": "transparent",
"navigationStyle": "custom"
}
}
]
},
@@ -342,7 +334,7 @@
]
},
{
"root": "pages/reportExcel", //中心逻辑的模块都放到这里
"root": "pages/reportExcel",
"name": "reportExcel",
"pages": [{
"path": "weekReport",
@@ -362,7 +354,7 @@
]
},
{
"root": "pages/center", //中心逻辑的模块都放到这里
"root": "pages/center",
"name": "center",
"pages": [{
"path": "Piabodata/index",
@@ -477,7 +469,6 @@
"enablePullDownRefresh": true
}
},
{
"path": "records/index",
"style": {
@@ -563,9 +554,7 @@
}
}
]
}
],
}],
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"


+ 3
- 2
pages/center/Piabodata/Employeesstatistics.vue Vedi File

@@ -203,8 +203,8 @@
</view>

<!--平均需求挖掘率排名(TOP10) -->
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
<view class="single">
<view style="width: 100%;height: 20rpx;background: #FAFAFA;" v-if="wajue"></view>
<view class="single" v-if="wajue">
<view class="title">
<view class="title1" style="flex: 1;">平均需求挖掘率排名(TOP10)</view>
</view>
@@ -247,6 +247,7 @@
export default {
data() {
return {
wajue: false,
activeTotal: 4,
totalTimeShow: false,
// 项目id


+ 3
- 8
pages/center/Piabodata/StaffAnalysis.vue Vedi File

@@ -76,17 +76,11 @@
canvasId="wangxiaouaerlingeryilingwuyibhh" :canvas2d="true" />
</view>
</view>
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
<view class="single">
<view style="width: 100%;height: 20rpx;background: #FAFAFA;" v-if="wajue"></view>
<view class="single" v-if="wajue">
<view class="title">
<view class="title1" style="flex: 1;">平均需求挖掘率趋势</view>
<view class="title3" style="flex: 1;">
<!-- <view class="title3-box" style="width: 40%;" @click="tabtimetap1(0)">
<view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 0 }">有效录音</view>
</view>
<view class="title3-box" style="width: 40%;"@click="tabtimetap1(1)">
<view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 1 }">录音时长</view>
</view> -->
</view>
</view>
<view class="hejibox">
@@ -156,6 +150,7 @@
},
data() {
return {
wajue: false,
timepickpickisshow: true,
totalTimeShow: false,
activeTotal: 4,


+ 14
- 14
pages/center/Piabodata/TrendAnalysis.vue Vedi File

@@ -1,7 +1,7 @@
<template>
<view>
<!-- 选择器 -->
<view class="boxtittab">
<!-- <view class="boxtittab">
<view class="tabbox" @click="timeshow = true">
{{ time }}
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
@@ -17,8 +17,8 @@
<view class="tabbox" @click="huashuShow = true">
{{huashu}}<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
</view>
</view>
<!--<view class="timetabct">
</view> -->
<view class="timetabct">
<view class="timetabctview">
<view :class="{ activecllasscet: activeTotal == 0 }" @click="tabtimetap(0)">7天</view>
</view>
@@ -28,7 +28,7 @@
<view class="timetabctview">
<view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">30天</view>
</view>
</view> -->
</view>

<view class="timepick">
<view class="timepicktime">
@@ -92,7 +92,7 @@
</view>
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
<view class="boxtittab" style="border: none;height: 82rpx;">
<!-- <view class="tabbox">
<view class="tabbox">
<view :class="{ activecllasscet2: newactiveTotal == 0 }" @click="tabxuanxiangtap(0)">项目</view>
</view>
<view class="tabbox">
@@ -100,8 +100,8 @@
</view>
<view class="tabbox">
<view :class="{ activecllasscet2: newactiveTotal == 2 }" @click="tabxuanxiangtap(2)">团队</view>
</view> -->
<view class="tabbox">
</view>
<!-- <view class="tabbox">
<view :class="{ activecllasscet2: newactiveTotal == 0 }" @click="tabxuanxiangtap(0)">平均执行率</view>
</view>
<view class="tabbox">
@@ -109,7 +109,7 @@
</view>
<view class="tabbox">
<view :class="{ activecllasscet2: newactiveTotal == 2 }" @click="tabxuanxiangtap(2)">挖掘场景</view>
</view>
</view> -->
<view class="tabbox">
<view :class="{ activecllasscet2: newactiveTotal == 3 }" @click="tabxuanxiangtap(3)">销讲一级</view>
</view>
@@ -321,12 +321,12 @@
num1: '0',
num2: '0'
},
{
name: '有效接待',
num: '10',
num1: '0',
num2: '0'
},
// { // 不需要用
// name: '有效接待',
// num: '10',
// num1: '0',
// num2: '0'
// },
],
activeTotal: 0, //时间下标
newactiveTotal: 0, //tab下标


+ 60
- 37
pages/center/Piabodata/requireminingAnalysis.vue Vedi File

@@ -14,10 +14,6 @@
{{ guwen}}
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
</view>
<view class="tabbox" @click="huashushow=true">
{{ huashu}}
<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;">
@@ -44,7 +40,7 @@
<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><text class="bold">未挖掘需求数:</text>筛选时间内,需求挖掘平均执行率为0的需求数;</view>
</view>
</view>
<view class="close" @click="showDesc=false">X</view>
@@ -101,8 +97,8 @@
</view>
</view>
<u-popup v-model="timeshow" mode="bottom">
<view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }"
@click="tabtimetap(4, '近7天')">
<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天')">
@@ -110,7 +106,8 @@
<view class="timeview" :style="{ color: activeTotal == 6 ? '#2B6EFF' : '#333333' }"
@click="tabtimetap(6, '近30天')">
近30天</view>
<view class="timeview" :style="{ color: activeTotal == 3 ? '#2B6EFF' : '#333333' }" @click="tabtimetap(3,'自定义')">
<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>
@@ -118,8 +115,6 @@
:default-value='selindex'></u-select>
<u-select v-model="deptshow" :list="teamList" @confirm="deptCallback"
:default-value='selindex'></u-select>
<u-select v-model="hushushow" :list="hushuList" @confirm="huashuCallback"
:default-value='selindex'></u-select>
<!-- 加载组件 -->
<loading v-model="LOADING"></loading>
</view>
@@ -136,7 +131,6 @@
data() {
return {
selindex: '',
huashushow: false,
guwenshow: false,
timeshow: false,
selectshow: false,
@@ -145,7 +139,7 @@
huashuVal: '',
guwenVal: '',
// 筛选文字展示
time: '近7天',
time: '接待时间',
dept: '部门',
guwen: '顾问',
huashu: '业务话术',
@@ -157,7 +151,7 @@
opts: {
rotate: false,
rotateLock: false,
color: ["#1890FF","#91CB74","#FAC858","#EE6666"],
color: ['#F8A12B','#07B79D','#E7483C','#2671E1'],
padding: [5,5,5,5],
dataLabel: true,
legend: {
@@ -188,9 +182,9 @@
}
}
},
activeTotal: 4,
activeTotal: 2,
houseId: '',
hushuList: [],// 业务话术
// hushuList: [],// 业务话术
staffList: [],// 员工列表
teamList: [],// 团队列表
team: {
@@ -279,13 +273,21 @@
},
// 需求挖掘排行
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":this.activeTotal,
"firstStartDate":!this.activeTotal?this.startDate:'',
"firstEndDate":!this.activeTotal?this.endDate:''
"dateType":dateType,
"firstStartDate":this.startDate,
"firstEndDate":this.endDate
})
.then(res => {
// console.log(res)
@@ -305,13 +307,21 @@
},
// 需求挖掘分布图
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,
"firstStartDate":!this.activeTotal?this.startDate:'',
"firstEndDate":!this.activeTotal?this.endDate:'',
"dateType":this.activeTotal
"dateType":dateType,
"firstStartDate":this.startDate,
"firstEndDate":this.endDate
})
.then(res => {
// console.log(res)
@@ -327,21 +337,29 @@
]}
})
},
Toview(){
//跳转到接待记录
Toview(){
uni.navigateTo({
url: '/pages/center/records/index?refresh=refresh'
url: '/pages/center/records/index?refresh=refresh&activeTotal='+this.activeTotal+'&staTime='+ this.startDate + '&endTime'+this.endDate+'&validInvalid=0'
});
},
// 需求挖掘分析-简报
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,
"userId": this.guwenVal,
"dateType": this.activeTotal,
"firstStartDate":!this.activeTotal?this.startDate:'',
"firstEndDate":!this.activeTotal?this.endDate:''
"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)
@@ -381,13 +399,21 @@
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": this.activeTotal,
"firstStartDate":!this.activeTotal?this.startDate:'',
"firstEndDate":!this.activeTotal?this.endDate:''
"dateType":dateType,
"firstStartDate":this.startDate,
"firstEndDate":this.endDate
})
.then(res => {
if(res.first&&res.first.length){
@@ -435,16 +461,15 @@
},
//时间切换
tabtimetap(index, text) {
if (index == 3) {
if (index == 4) {
this.calendarShow = true;
this.activeTotal = null
} else {
this.activeTotal = index;
this.endDate = ''
this.startDate = ''
this.time = text
this.getdata()
}
this.activeTotal = index;
this.timeshow = false
},
// 顾问选择
@@ -470,8 +495,6 @@
},
//自定义时间
calendarTimeChange(e) {
// console.log(e.startDate, e.endDate)
this.activeTotal = null;
this.endDate = e.endDate
this.startDate = e.startDate
this.time = '自定义'


+ 21
- 76
pages/center/consumer/consumerDetail.vue Vedi File

@@ -28,7 +28,7 @@
手机号码:{{customerInfo.phone&&customerInfo.isShow==1?customerInfo.phone.length==11?customerInfo.phone.substr(0, 3) + '****' + customerInfo.phone.substr(7):customerInfo.phone:customerInfo.phone&&customerInfo.isShow!=1?customerInfo.phone: '--'}}
</view>
<view class="content-sec-lab1" style="width: 44%"
>到访次数:{{ customerInfo.visitRecord || "--" }}次/{{
>到访次数:{{ customerInfo.visitRecord || 0 }}次/{{
customerInfo.mm || 0
}}min</view
>
@@ -39,8 +39,7 @@
>
<view class="content-sec-lab1" @click.stop="tipupon" style="width: 44%"
>画像标签:<text class="look">{{
customerInfo.demand.cusSemanticWordsList.length || 0
}}</text><text class="look1" >查看</text></view
customerInfo.demand.cusSemanticWordsList?customerInfo.demand.cusSemanticWordsList.length:0}}</text><text class="look1" >查看</text></view
>
</view>
<view class="content-sec-lab">
@@ -48,7 +47,7 @@
>所属顾问:{{ customerInfo.agentName || "--" }}</view
>
<view class="content-sec-lab1" style="width: 44%"
>客户阶段:{{ customerInfo.agentName || "--" }}</view
>客户阶段:{{ customerInfo.stageName || "--" }}</view
>
</view>
<view class="content-sec-lab">
@@ -56,15 +55,6 @@
>上次到访:{{ customerInfo.createTime || "--" }}</view
>
</view>
<!-- <view class="content-sec-lab" @click.stop="tipupon">
客户标签:
<text v-if="!customerInfo.demand.cusSemanticWordsList">暂无</text>
<view v-else class="content-sec-tips"
v-for="(che,ind) in customerInfo.demand.cusSemanticWordsList" :key='ind'>{{che.name}}</view>
<view class="conmsg-msg-lab-img" v-if="customerInfo.demand.cusSemanticWordsList.length>0">
<image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
</view>
</view> -->
</view>
<view class="content-last">
<view class="content-last-con">
@@ -83,7 +73,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>

@@ -120,13 +113,13 @@

<view class="content-sec">
<view class="left">
<view class="cus" style="line-height: 46rpx;">客户:{{item.name || ''}} |</view>
<view style="line-height: 46rpx;" class="arriveNum">{{item.visitRecord || '--'}}次到访</view>
<view class="cus" style="line-height: 46rpx;">客户:{{item.name || '--'}} |</view>
<view style="line-height: 46rpx;" class="arriveNum">{{item.visitRecord || '0'}}次到访</view>
</view>
<view class="right">{{item.fraction || '0'}}%</view>
</view>

<view class="content-last">{{item.createTime}} | {{item.mm || '--'}}min</view>
<view class="content-last">{{item.createTime}} | {{item.mm || 0}}min</view>
</view>
</view>

@@ -159,39 +152,13 @@
</view>
</view>

<!-- 评分 -->
<!-- 销讲执行率 -->
<view class="ratecenter" v-if="activeTotal==2">
<view class="my-tab">
<view class="tab-item" :class="tabactive==0?'tabactive':''" @click="tabactive=0">销讲执行率</view>
<view class="tab-item" :class="tabactive==1?'tabactive':''" @click="tabactive=1">需求挖掘执行率</view>
</view>
<view class="xiaojiang" v-if="tabactive==0">
<view class="ratetetle">执行总览</view>
<view class="rateyuanbox">
<view class="rateyuanboxzuo">
<view class="boxzuoview cccccc">{{customerInfo.visitRecord || '--'}}次</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">接待次数</view>
</view>
<view class="rateyuanboxyou">
<view class="boxzuoview" style="width: 100%;display: flex;justify-content: center;">
<u-circle-progress active-color="#4FC78F" width='139' :percent="customerInfo.fraction">
<view style="text-align: center;color: #4FC78F;">{{customerInfo.fraction}}%</view>
</u-circle-progress>
</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">销讲执行率</view>
</view>
<view class="rateyuanboxzuo">
<view class="boxzuoview cccccc">{{customerInfo.mm}}min</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">接待时长</view>
</view>
</view>
<view
style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;">
<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: 20rpx;">指标</view>
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 170rpx;">执行率
</view>
</view>

</view>
<view v-if="ratelist.length==0" style="width: 100%;height: 100%;display: flex;align-items: center;">
<view style="width: 100%;padding-top: 60rpx;">
<view style="width: 100%;text-align: center;">
@@ -243,29 +210,10 @@
<view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view>
</view>
</view>
</view>
<view class="xuqiu" v-if="tabactive==1">
<view class="ratetetle">执行总览</view>
<view class="rateyuanbox">
<view class="rateyuanboxzuo">
<view class="boxzuoview cccccc">{{customerInfo.visitRecord || '--'}}次</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">到访次数</view>
</view>
<view class="rateyuanboxyou">
<view class="boxzuoview" style="width: 100%;display: flex;justify-content: center;">
<u-circle-progress active-color="#4FC78F" width='139' :percent="customerInfo.wordFraction||0">
<view style="text-align: center;color: #4FC78F;">{{customerInfo.wordFraction||0}}%</view>
</u-circle-progress>
</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">需求挖掘执行率</view>
</view>
<view class="rateyuanboxzuo">
<view class="boxzuoview cccccc">{{customerInfo.mm}}min</view>
<view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">接待时长</view>
</view>
</view>
<view
style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;">
</view>
<!-- 需求挖掘执行率 -->
<view class="xuqiu" v-if="activeTotal==3">
<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: 20rpx;">指标</view>
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 170rpx;">执行率
</view>
@@ -280,7 +228,7 @@
<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">{{item.name}}</view>
@@ -343,7 +291,6 @@
</view>
</view>
</view>
</view>
</view>
</view>

@@ -356,7 +303,7 @@
<u-popup v-model="tipshow" mode="center" mask-close-able width="560rpx" border-radius="14">
<scroll-view scroll-y="true" style="height: 440rpx;">
<view style="display: flex; flex-wrap: wrap; padding:20rpx;">
<view class="upon-sec-tips" v-for="(item,index) in customerInfo.demand.cusSemanticWords"
<view class="upon-sec-tips" v-for="(item,index) in customerInfo.demand.cusSemanticWordsList"
:key="index">
{{item.name}}
</view>
@@ -471,7 +418,7 @@
che.name = che.name + che.unit + '-' + che.endName + che.unit;
}
})
res.demand.cusSemanticWordsList = res.demand.cusSemanticWordsList.slice(0, 3)
// res.demand.cusSemanticWordsList = res.demand.cusSemanticWordsList.slice(0, 3)
}

// console.log(res.demand.cusSemanticWords,'关键字')
@@ -1189,11 +1136,10 @@

.content-last {
padding: 30rpx;
height: 168rpx;

.content-last-con {
width: 690rpx;
height: 108rpx;
min-height: 108rpx;
background: #F8F8F8;
border-radius: 8rpx;
padding: 14rpx 20rpx;
@@ -1208,7 +1154,6 @@
}

.tabchange {
// background: #FFFFFF;
overflow: hidden;

.tabactive1 {


+ 85
- 95
pages/center/consumer/index.vue Vedi File

@@ -111,7 +111,7 @@
>手机号码:{{ item.phone || "--" }}</view
>
<view class="content-sec-lab1" style="width: 44%"
>到访次数:{{ item.visitRecord || "--" }}次/{{
>到访次数:{{ item.visitRecord || 0 }}次/{{
item.mm || 0
}}min</view
>
@@ -126,18 +126,12 @@
}}</text></view
>
</view>
<!-- <view class="content-sec-lab" style="line-height: 46rpx;">
客户标签:
<text v-if="item.demand.cusSemanticWordsList==null">暂无</text>
<view v-else class="content-sec-tips" v-for="(che,ind) in item.demand.cusSemanticWordsList"
:key='ind'>{{che.name}}</view>
</view> -->
<view class="content-sec-lab">
<view class="content-sec-lab1"
>所属顾问:{{ item.agentName || "--" }}</view
>
<view class="content-sec-lab1" style="width: 44%"
>客户阶段:{{ item.agentName || "--" }}</view
>客户阶段:{{ item.stageName || "--" }}</view
>
</view>
<view class="content-sec-lab">
@@ -310,7 +304,7 @@
/>
</view>
<view class="screen-record-tab" v-if="jieduanArrow">
<block v-for="(item, index) in stageList" :key="index">
<block v-for="(item, index) in phaseList" :key="index">
<view
class="screen-record-item"
:class="[
@@ -432,11 +426,11 @@
@confirm="actionSelectCallback"
></u-select>
<!-- 客户阶段 -->
<u-select
<!-- <u-select
v-model="selectPhaseShow"
:list="phaseList"
@confirm="selectPhase"
></u-select>
></u-select> -->
<u-calendar
v-model="totalTimeShow"
mode="range"
@@ -549,15 +543,15 @@ export default {
data() {
return {
huaxiangShow: false,
wajueArrow: false,
jieduanArrow: false,
sourceArrow: false,
levelArrow: false,
wajueArrow: true,
jieduanArrow: true,
sourceArrow: true,
levelArrow: true,
zixunArrow: true,
jiedaiArrow: false,
luyinArrow: false,
visitArrow: false,
xiaojiangArrow: false,
jiedaiArrow: true,
luyinArrow: true,
visitArrow: true,
xiaojiangArrow: true,
huaxiangList: [],
orderBylist: [
{
@@ -713,33 +707,6 @@ export default {
validInvalid: null,// 录音标识
clientStage: [],// 客户阶段 clientStage
},
stageList: [
{
label: "未知",
value: 1,
isShow: false,
},
{
label: "到访",
value: 2,
isShow: false,
},
{
label: "意向",
value: 3,
isShow: false,
},
{
label: "定金",
value: 4,
isShow: false,
},
{
label: "成交",
value: 5,
isShow: false,
},
],//客户阶段
recordList: [],
nextPage: 1,
totalRecord: "",
@@ -809,6 +776,8 @@ export default {
this.isnorefresh = options.refresh;
},
onShow() {
// dataCode: 身份标识 2:项目总、3:客服、4:策划、5:经理、6:置业顾问
this.userInfo = uni.getStorageSync('weapp_session_userInfo_data');
if (this.isnorefresh == "refresh") {
this.buildingID = uni.getStorageSync("buildingID").id;
this.nextPage = 1;
@@ -855,13 +824,16 @@ export default {
.then((res) => {
console.log(res)
if(res.length){
res.forEach((item) => {
item.label = item.sourceName
item.value = item.id
item.isShow = false
this.sourceList = res.map((item) => {
return {
label: item.sourceName,
value: item.id,
isShow: false
}
})
}else{
this.sourceList = []
}
this.sourceList = res
})
},
// 过滤
@@ -869,7 +841,7 @@ export default {
this.sortFilter = "排序";
this.receptionDuration = "所属顾问";
this.arriveFilter = "到访时间";
this.screen.orderBy = null;
this.screen.orderBy = '';
this.screen.staTime = "";
this.screen.endTime = "";
this.nextPage = 1;
@@ -882,7 +854,7 @@ export default {
//选择标签
selectCallback2(e) {
this.sortFilter = e[0].label;
this.orderBy = e[0].value;
this.screen.orderBy = e[0].value;
this.nextPage = 1;
this.recordList = [];
this.isRefresh = false;
@@ -952,6 +924,14 @@ export default {
});
},
getMyCustom() {
this.screen.visitRecord = []
this.screen.jiedaiVal = []
this.screen.wajueVal = []
this.screen.xiaojiangVal = []
this.screen.level = []
this.screen.clientStage = []
this.screen.sourceIds = []
let keywordsIds = []
let dateType = 0;
if (this.activeTotal == 5||this.activeTotal == 4) {
dateType = null;
@@ -979,14 +959,14 @@ export default {
if(i.isShow) this.screen.level.push(i.value)
})
//客户阶段
this.stageList.forEach(i => {
this.phaseList.forEach(i => {
if(i.isShow) this.screen.clientStage.push(i.value)
})
// 客户来源
this.sourceList.forEach(i => {
if(i.isShow) this.screen.sourceIds.push(i.value)
})
let keywordsIds = []
this.huaxiangList.forEach(item => {
if(item.children.length){
item.children.forEach(im=>{
@@ -999,28 +979,27 @@ export default {
pageSize: 10,
query: {
projectId: this.buildingID,
fractions: this.screen.xiaojiangVal.join(','),// 销讲执行率
wordFractions: this.screen.wajueVal.join(','),//需求挖掘
visitRecordNum: this.screen.visitRecord.join(','),//到访次数
clientStages: this.screen.clientStage.join(','), // 客户阶段
sourceIds: this.screen.sourceIds.join(','),// 客户来源
level: this.screen.level.join(','),// 客户等级
duractionNums: this.screen.jiedaiVal.join(','),// 接待时长
fractions: this.screen.xiaojiangVal.length?this.screen.xiaojiangVal.join(','):'',// 销讲执行率
wordFractions: this.screen.wajueVal.length?this.screen.wajueVal.join(','):'',//需求挖掘
visitRecordNum: this.screen.visitRecord.length?this.screen.visitRecord.join(','):'',//到访次数
clientStages: this.screen.clientStage.length?this.screen.clientStage.join(','):'', // 客户阶段
sourceIds: this.screen.sourceIds.length?this.screen.sourceIds.join(','):'',// 客户来源
level: this.screen.level.length?this.screen.level.join(','):'',// 客户等级
duractionNums: this.screen.jiedaiVal.length?this.screen.jiedaiVal.join(','):'',// 接待时长
keywordsIds: keywordsIds.length?keywordsIds.join(','):'',// 画像标签
dateType: dateType, // 接待时间
staTime: this.screen.staTime,
endTime: this.screen.endTime,
agentId: this.screen.agentId,// 顾问
orderBy: this.screen.orderBy==0?null: this.screen.orderBy,// 排序
orderBy: this.screen.orderBy==''?'': this.screen.orderBy,// 排序
},
};
this.userInfo = uni.getStorageSync("weapp_session_userInfo_data");
this.$u.post("/customer/customerManagement", parames)
.then((data) => {
this.LOADING = false;
if (this.screen.staTime && this.screen.endTime) {
this.arriveFilter = `${this.screen.staTime}-${this.screen.endTime}`;
}
// if (this.screen.staTime && this.screen.endTime) {
// this.arriveFilter = `${this.screen.staTime}-${this.screen.endTime}`;
// }
var list = data.results || [];
list.forEach((item) => {
if (this.userInfo.dataCode == 6) {
@@ -1037,6 +1016,8 @@ export default {
che.name = che.name + che.unit + "-" + che.endName + che.unit;
}
});
}else{
item.demand.cusSemanticWordsList = []
}
});
if (this.isRefresh) {
@@ -1062,7 +1043,7 @@ export default {
// console.log(res)
if(res.length){
res.forEach(item=>{
item.isShow = false;
item.isShow = true;
if(item.children.length){
item.children.forEach(subitem=>{
subitem.isShow = false;
@@ -1075,24 +1056,30 @@ export default {
},
//获取顾问列表
getFreeList() {
this.freeList = [];
this.$u
.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
houseId: this.buildingID,
})
.then((res) => {
this.freeList = res;
this.freeList.forEach((item) => {
item.label = item.name;
item.value = item.accountId;
});
this.freeList.unshift({
label: '全部',
value: '',
})
});
if(this.userInfo.dataCode==6){
this.freeList = [{
label: this.userInfo.name,
value: this.userInfo.accountId
}]
}else{
this.freeList = [];
this.$u.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
houseId: this.buildingID,
})
.then((res) => {
this.freeList = res;
this.freeList.forEach((item) => {
item.label = item.name;
item.value = item.accountId;
});
this.freeList.unshift({
label: '全部',
value: '',
})
});
}
},
// 获取客户阶段数据
// 获取客户阶段数据
getCustomPhase() {
this.phaseList = [];
this.$u
@@ -1100,14 +1087,17 @@ export default {
houseId: this.buildingID,
})
.then((res) => {
let tempArr = [];
res.forEach((item) => {
let tempObj = {};
tempObj.label = item.stageName;
tempObj.value = item.id;
tempArr.push(tempObj);
});
this.phaseList = tempArr;
if(res.length){
this.phaseList = res.map(item=>{
return {
label: item.stageName,
value: item.id,
isShow: false
}
})
}else{
this.phaseList =[]
}
});
},
//选择顾问
@@ -1141,7 +1131,7 @@ export default {
this.wajueList.map((i) => {
i.isShow = false;
});
this.stageList.map((i) => {
this.phaseList.map((i) => {
i.isShow = false;
});
this.jiedaiList.map((i) => {
@@ -1165,7 +1155,7 @@ export default {
resetHuaXiang(){
if(this.huaxiangList.length){
this.huaxiangList.forEach(item=>{
item.isShow = false;
item.isShow = true;
if(item.children.length){
item.children.forEach(subitem=>{
subitem.isShow = false;


+ 64
- 70
pages/center/records/index.vue Vedi File

@@ -82,7 +82,7 @@
<view class="text">访问次数</view>
</view>
<view class="cont-item">
<view class="count">{{item.wordFraction||'--'}}</view>
<view class="count">{{item.demand.cusSemanticWordsList?item.demand.cusSemanticWordsList.length:'--'}}</view>
<view class="text">画像标签</view>
</view>
<view class="cont-item">
@@ -167,15 +167,15 @@
<image v-else class="arrow" src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png" mode="" />
</view>
<view class="screen-record-tab" v-if="luyinArrow">
<view class="screen-record-item" :class="[screen.validInvalid==0?'screen-record-chose':'screen-record-nochose']"
<view class="screen-record-item" :class="[screen.validInvalid===0?'screen-record-chose':'screen-record-nochose']"
@click="screenvisivalidInvalid(0)">
有效接待
</view>
<view class="screen-record-item" :class="[screen.validInvalid==1?'screen-record-chose':'screen-record-nochose']"
<view class="screen-record-item" :class="[screen.validInvalid===1?'screen-record-chose':'screen-record-nochose']"
@click="screenvisivalidInvalid(1)">
无效接待
</view>
<view class="screen-record-item" :class="[screen.validInvalid==2?'screen-record-chose':'screen-record-nochose']"
<view class="screen-record-item" :class="[screen.validInvalid===2?'screen-record-chose':'screen-record-nochose']"
@click="screenvisivalidInvalid(2)">
无录音
</view>
@@ -192,7 +192,7 @@
@click="screenvisitRecord(1)">
标记
</view>
<view class="screen-record-item" :class="[screen.markAdvisor==0?'screen-record-chose':'screen-record-nochose']"
<view class="screen-record-item" :class="[screen.markAdvisor===0?'screen-record-chose':'screen-record-nochose']"
@click="screenvisitRecord(0)">
未标记
</view>
@@ -232,8 +232,8 @@
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
<!-- 接待时间 -到访时间-->
<u-popup v-model="timeshow" mode="bottom">
<view class="timeview" :style="{ color: activeTotal == 5 ? '#2B6EFF' : '#333333' }"
@click="tabtimetap(5, '接待时间')">
<view class="timeview" :style="{ color: activeTotal == 15 ? '#2B6EFF' : '#333333' }"
@click="tabtimetap(15, '接待时间')">
全部</view>
<view class="timeview" :style="{ color: activeTotal == 0 ? '#2B6EFF' : '#333333' }"
@click="tabtimetap(0, '今天')">
@@ -244,6 +244,9 @@
<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>
@@ -265,13 +268,13 @@
},
data() {
return {
wajueArrow: false,
wajueArrow: true,
zixunArrow: true,
jiedaiArrow: false,
luyinArrow: false,
visitArrow: false,
jiedaiArrow: true,
luyinArrow: true,
visitArrow: true,
xiaojiangArrow: true,
markArrow: false,
markArrow: true,
orderBylist: [{
label: '全部',
value: ''
@@ -414,7 +417,7 @@
value: 4,
isShow: false,
}],
activeTotal: 5,
activeTotal:15,
value: '',
screenShow: false,//更多筛选
selectshow: false,//选择顾问的选择框
@@ -422,13 +425,13 @@
screen: {
orderBy: '',//排序
agentId: '', //顾问id
markAdvisor: null,//标记顾问
markAdvisor: '',//标记顾问
visitRecord: [],// 到访次数
zixunVal: [],// 咨询业务
// zixunVal: [],// 咨询业务
wajueVal: [],// 需求挖掘
xiaojiangVal:[],//销讲执行率
jiedaiVal: [],// 接待时长
validInvalid: null,// 录音标识
validInvalid: ''// 录音标识
},
freeList: [], //顾问
recordList: [],
@@ -454,15 +457,19 @@
onLoad(options) {
this.LOADING = true
this.isnorefresh = options.refresh;
if (options.activeTotal) {
this.activeTotal = options.activeTotal
this.activeTotal = Number(options.activeTotal)
}
if (options.markAdvisor) {
this.screen.markAdvisor = options.markAdvisor
this.screen.markAdvisor = Number(options.markAdvisor)
}
if (options.validInvalid) {
this.screen.validInvalid = options.validInvalid
this.screen.validInvalid = Number(options.validInvalid)
}
if (options.staTime) {
this.staTime = options.staTime;
this.endTime = options.endTime;
@@ -608,10 +615,9 @@
this.screen.visitRecord = []
this.screen.jiedaiVal = []
this.screen.wajueVal = []
// this.screen.zixunVal = []
this.screen.xiaojiangVal = []
let dateType = 0;
if ((this.activeTotal == 5)||(this.activeTotal == 4)) {// 选择全部和自定义
if ((this.activeTotal == 15)||(this.activeTotal == 4)) {// 选择全部和自定义
dateType = null;
}else {
dateType = this.activeTotal;
@@ -630,10 +636,6 @@
this.wajueList.forEach(i => {
if(i.isShow) this.screen.wajueVal.push(i.value)
})
// // 咨询业务
// this.zixunList.forEach(i => {
// if(i.isShow) this.screen.zixunVal.push(i.value)
// })
// 销讲执行率
this.xiaojiangList.forEach(i => {
if(i.isShow) this.screen.xiaojiangVal.push(i.value)
@@ -646,13 +648,13 @@
staTime: this.staTime,// 接待时间
endTime: this.endTime,// 接待时间
agentId: this.screen.agentId, // 顾问ID
visitRecordNum: this.screen.visitRecord.join(','),//到访次数
wordFractions: this.screen.wajueVal.join(','),//挖掘
duractionNums: this.screen.jiedaiVal.join(','),//接待时长
fractions: this.screen.xiaojiangVal.join(','),//销讲
visitRecordNum: this.screen.visitRecord.length?this.screen.visitRecord.join(','):'',//到访次数
wordFractions: this.screen.wajueVal.length?this.screen.wajueVal.join(','):'',//挖掘
duractionNums: this.screen.jiedaiVal.length?this.screen.jiedaiVal.join(','):'',//接待时长
fractions: this.screen.xiaojiangVal.length?this.screen.xiaojiangVal.join(','):'',//销讲
markAdvisor: this.screen.markAdvisor,//标记顾问
dateType: dateType,//时间类型
orderBy: this.orderBy==0?null:this.orderBy,//排序
orderBy: this.screen.orderBy==''?'':this.screen.orderBy,//排序
validInvalid: this.screen.validInvalid,//录音标识
clientStage: this.screen.clientStage,// 客户阶段
recording: this.screen.validInvalid == 2 ? 0 : null // 录音
@@ -680,19 +682,27 @@
},
//获取顾问列表
getFreeList() {
this.$u.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
houseId: this.buildingID
}).then(res => {
this.freeList = res;
this.freeList.forEach(item => {
item.label = item.name;
item.value = item.accountId
})
this.freeList.unshift({
label:'全部',
value: ''
})
})
if(this.userInfo.dataCode==6){// 顾问角色登录时只显示自己
this.freeList = [{
label: this.userInfo.name,
value: this.userInfo.accountId
}]
}else{
this.$u.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
houseId: this.buildingID
}).then(res => {
this.freeList = res;
this.freeList.forEach(item => {
item.label = item.name;
item.value = item.accountId
})
this.freeList.unshift({
label:'全部',
value: ''
})
})
}
},
actionSelectCallback(e) {
this.screen.agentId = e[0].value;
@@ -705,13 +715,15 @@
reset() {
this.screen.agentId =''
this.screen.jiedaiVal =''
this.screen.validInvalid = ''
this.screen.markAdvisor = ''
this.screen.orderBy = '';
this.sortFilter = '排序';
this.orderBy = null;
this.arriveFilter = '到访时间';
this.staTime = '';
this.endTime = '';
this.nextPage = 1;
this.activeTotal = 5;
this.activeTotal = 15;
this.recordList = [];
this.counselorName = '接待顾问';
this.visitList.map(i => {
@@ -720,7 +732,7 @@
this.jiedaiList.map(i => {
i.isShow = false
})
this.zixunList.map(i => {
this.wajueList.map(i => {
i.isShow = false
})
this.xiaojiangList.map(i => {
@@ -732,40 +744,22 @@
},
//标记顾问
screenvisitRecord(i) {
console.log(i)
if (this.screen.markAdvisor == i) {
this.screen.markAdvisor = null
// console.log(i)
if (this.screen.markAdvisor === i) {
this.screen.markAdvisor = ''
} else {
this.screen.markAdvisor = i
}
},
// 录音标识
screenvisivalidInvalid(i) {
console.log(this.screen.validInvalid, i)
if (this.screen.validInvalid == i) {
this.screen.validInvalid = null
// console.log(this.screen.validInvalid, i)
if (this.screen.validInvalid === i) {
this.screen.validInvalid = ''
} else {
this.screen.validInvalid = i
}
},
//咨询业务
screenzixunClick(i) {
console.log(this.screen.zixunVal, i)
if (this.screen.zixunVal == i) {
this.screen.zixunVal = null
} else {
this.screen.zixunVal = i
}
},
// 需求挖掘选择
screenwajueValClick(i) {
// console.log(this.screen.wajueVal, i)
if (this.screen.wajueVal == i) {
this.screen.wajueVal = null
} else {
this.screen.wajueVal = i
}
},
screensure() {
this.screenShow = false;
this.recordList = [];


+ 46
- 7
pages/index/customer.vue Vedi File

@@ -61,6 +61,9 @@
<template v-if="zhipai">
<view class="footer3" @click.stop="assign(item)">指派顾问</view>
</template>
<template v-if="checkAuthority('删除接待记录')">
<view @tap.stop="deleteReception(item)" class="footer3">删除接待</view>
</template>
</view>

</view>
@@ -95,7 +98,8 @@
dataCode: '',
addAccount: '',
endReception: true,
fdFlag: null
fdFlag: null,
isAdd: 0, // 默认能指派
};
},
computed: {
@@ -103,7 +107,8 @@
if (this.dataCode == 6) {
return this.checkAuthority('顾问指派顾问')
} else {
return true
if (this.isAdd == 0) return true
else return false
}
}
},
@@ -123,8 +128,24 @@
this.dataCode = dataCode;
this.init()
this.updateInit()
this.queryHaveDept()
},
methods: {
// 删除接待
deleteReception(data) {
this.$u.get(`/customer/delete?id=${data.id}`).then(res => {
if (!res) {
this.init()
}
}).catch(e => {
console.log(e)
uni.showToast({
title: '网络异常,请稍后重试~',
icon: 'none'
});
})
},
// 获取未读消息数量
updateInit() {
uni.request({
url: config.service.notReadNum,
@@ -233,7 +254,7 @@
success: res => {
if (this.noClick) {
this.noClick = false;
if (res.confirm) {
if (res.confirm) {
if (res.confirm) {
this.$u.post("/customer/endReception", {
id: id,
@@ -242,11 +263,11 @@
uni.showToast({
icon: "none",
title: "操作成功"
})
})
this.init();
});
}
}
}
setTimeout(() => {
this.noClick = true;
}, 2000)
@@ -256,6 +277,24 @@
}
})
},

// 检测是否有添加顾问的权限
queryHaveDept() {
uni.request({
url: config.service.getSelfAssignedByHouseId + "?houseId=" + uni.getStorageSync('buildingID').id,
method: "GET",
header: {
'content-type': 'application/json',
'Access-Token': uni.getStorageSync('weapp_session_login_data').token
},
success: (data) => {
if (data.data.code == 10000) {
this.isAdd = data.data.data.selfAssigned
}
}
})
},

//新增接待
addreception() {
const {
@@ -418,14 +457,14 @@
border-top: 1rpx solid #E0E0E0;

.footer1 {
flex: 1;
flex-grow: 1;
text-align: center;
line-height: 90rpx;
border-right: 1rpx solid #E0E0E0;
}

.footer3 {
flex: 1;
flex-grow: 1;
text-align: center;
line-height: 90rpx;
}


+ 106
- 166
pages/index/index.vue Vedi File

@@ -82,44 +82,35 @@


<view class="title">实时统计</view>
<!-- <view class="real-timebox">
<view class="timebox">
</view>
<view class="timebox">
</view>
</view> -->

<view class="real-timebox">
<view class="timebox">
<view class="real" @click="tapjumpreception('1')">
<view class="real" @click="tapjumpreception(checkParams('1'))">
<view class="realnum">{{realtimeobj.receptionCount || 0}}</view>
<view class="realtext">接待量</view>
</view>
<view class="real" @click="tapjumpreception('6')">
<view class="real" @click="tapjumpreception(checkParams('6'))">
<view class="realnum">{{realtimeobj.activeCustomer|| 0}}</view>
<view class="realtext">有效接待</view>
</view>
<view class="real" @click="tapjumpreception('2')">
<view class="real" @click="switchJump">
<view class="realnum">{{realtimeobj.receivingCustomer || 0}}</view>
<view class="realtext">正在接待</view>
</view>
<view class="real" @click="tapjumpreception('4')">
<view class="real" @click="tapjumpreception(checkParams('4'))">
<view class="realnum">{{realtimeobj.tagCustomer || 0}}</view>
<view class="realtext">未标顾问</view>
</view>
</view>
<view class="timebox">
<view class="real" @click="tapjumpreception('auth')">
<view class="real" @click="tapjumpreception(checkParams('auth'))">
<view class="realnum">{{realtimeobj.avgDuration|| 0}}</view>
<view class="realtext">平均接待时长</view>
</view>
<view class="real" @click="tapjumpreception('auth')">
<view class="real" @click="tapjumpreception(checkParams('auth'))">
<view class="realnum">{{realtimeobj.fraction || 0}}%</view>
<view class="realtext">平均执行率</view>
</view>
<view class="real" @click="tapjumpreception('6')">
<view class="real" @click="tapjumpreception(checkParams('6'))">
<view class="realnum">{{realtimeobj.wordFraction || 0}}%</view>
<view class="realtext">平均挖掘率</view>
</view>
@@ -135,32 +126,35 @@
<view class="title" style="display: flex;">
<view style="width: 55%;">概览</view>
<view class="cet" style="display: flex;">
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 2 }" @click="tabtimeclick(2)">近7天</view>
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 6 }" @click="tabtimeclick(6)">近30天</view>
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 7 }" @click="tabtimeclick(7)">自定义</view>
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 2 }" @click="tabtimeclick(2)">近7天
</view>
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 6 }" @click="tabtimeclick(6)">
近30天</view>
<view class="cetview" :class="{ activecllasscet: zhixingcenterindex == 7 }" @click="tabtimeclick(7)">自定义
</view>
</view>
</view>
<view class="real-timebox">
<view class="timebox">
<view class="real" @click="tapjumpreception('3')">
<view class="real" @click="tapjumpreception(checkParams('3'))">
<view class="realnum">{{Thisweekobj.receptionCount || 0}}</view>
<view class="realtext">接待量</view>
</view>
<view class="real" @click="tapjumpreception('7')">
<view class="real" @click="tapjumpreception(checkParams('7'))">
<view class="realnum">{{Thisweekobj.activeCustomer|| 0}}</view>
<view class="realtext">有效接待</view>
</view>
<view class="real" @click="tapjumpreception('333')">
<view class="real" @click="tapjumpreception(checkParams('333'))">
<view class="realnum">{{Thisweekobj.fraction || 0}}%</view>
<view class="realtext">平均执行率</view>
</view>
</view>
<view class="timebox">
<view class="real" @click="tapjumpreception('333')">
<view class="real" @click="tapjumpreception(checkParams('333'))">
<view class="realnum">{{Thisweekobj.avgDuration|| 0}}</view>
<view class="realtext">平均接待时长</view>
</view>
<view class="real" @click="tapjumpreception('3')">
<view class="real" @click="tapjumpreception(checkParams('333'))">
<view class="realnum">{{Thisweekobj.wordFraction || 0}}%</view>
<view class="realtext">平均挖掘率</view>
</view>
@@ -391,7 +385,7 @@
}, 3000)
},
methods: {
towajue(){
towajue() {
uni.navigateTo({
url: "/pages/center/Piabodata/requireminingAnalysis"
})
@@ -441,13 +435,13 @@
},
success: (res) => {
let data = res.data.data
if(data){
this.first(data.id)
this.content = data.content
this.tit = data.title
this.aid = data.accountId
this.id = data.id
this.isShowUpdate = data.readFlag == 0 ? true : false;
if (data) {
this.first(data.id)
this.content = data.content
this.tit = data.title
this.aid = data.accountId
this.id = data.id
this.isShowUpdate = data.readFlag == 0 ? true : false;
}
}
})
@@ -646,6 +640,7 @@
}
})
},

//选择项目弹框
piskbuilding() {
// this.Showhiddenunits = true;
@@ -653,6 +648,7 @@
url: "../mine/selectBuilding"
})
},

// 项目选择确认
confirm(e) {
this.buildingname = e[0].label;
@@ -666,158 +662,102 @@
this.initrealTimeStatistics()
this.initequipment()
this.iniodianloang()

},

// 项目选择取消
cancel() {
this.Showhiddenunits = false;
},

// 设备模块跳转
tapjumpequipment(i) {
this.Menulist.forEach(item => {
if (item.name == '设备管理') {
uni.navigateTo({
url: '/pages/mine/equipment/index?active=' + i
});
}
})
if (this.checkAuthority('设备管理')) {
uni.navigateTo({
url: '/pages/mine/equipment/index?active=' + i
});
}
},

// 违禁模块跳转
prohibitedtap(i) {
let str = ''
if (i == 1) {
uni.navigateTo({
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '0' +
'&violatedStatus=1'
});
str = '&activeTotal=0'
} else {
if (this.zhixingcenterindex == 2) {
uni.navigateTo({
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '2' +
'&violatedStatus=1'
});
str = '&activeTotal=2'
} else if (this.zhixingcenterindex == 6) {
uni.navigateTo({
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '3' +
'&violatedStatus=1'
});
str = '&activeTotal=3'
} else {
uni.navigateTo({
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '4' +
'&staTime=' + this.statDateStart + '&endtime=' + this.statDateEnd +
'&violatedStatus=1'
});
str = `&activeTotal=4&staTime=${this.statDateStart}&endtime=${this.statDateEnd}`
}
}
uni.navigateTo({
url: `/pages/center/prohibited/index?refresh=refresh&violatedStatus=1${str}`
})
},
tapjumpreception(i) {
this.Menulist.forEach(item => {
if (item.name == '接待记录') {
if (i == 1) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' +
'0'
});
} else if (i == 'auth') {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' +
'0' + '&validInvalid=0'
});
} else if (i == 2) {
uni.switchTab({
url: '/pages/index/customer'
});
} else if (i == 3) {
if (this.zhixingcenterindex == 2) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '2'
});
} else if (this.zhixingcenterindex == 6) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '3'
});
} else {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart +
'&endtime=' + this.statDateEnd
});
}

} else if (i == 333) {
if (this.zhixingcenterindex == 2) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '2' + '&validInvalid=0'
});
} else if (this.zhixingcenterindex == 6) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '3' + '&validInvalid=0'
});
} else {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart +
'&endtime=' + this.statDateEnd + '&validInvalid=0'
});
}

} else if (i == 3) {
if (this.zhixingcenterindex == 2) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '2'
});
} else if (this.zhixingcenterindex == 6) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '3'
});
} else {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart +
'&endtime=' + this.statDateEnd
});
}
// 跳转正在接待页面
switchJump() {
uni.switchTab({
url: '/pages/index/customer'
});
},

} else if (i == 6) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' +
'0' + '&validInvalid=0'
});
} else if (i == 7) {
if (this.zhixingcenterindex == 2) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '2' + '&validInvalid=0'
});
} else if (this.zhixingcenterindex == 6) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '3' + '&validInvalid=0'
});
} else {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart +
'&endtime=' + this.statDateEnd + '&validInvalid=0'
});
}
} else if (i == 4) {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=0' + '&markAdvisor=0' + '&validInvalid=0'
});
// 跳转参数
checkParams(i) {
let str = ''
switch (i) {
case '1':
str = '&activeTotal=0';
break;
case 'auth':
str = '&activeTotal=0&validInvalid=0'
break;
case '3':
// 筛选时间类型后传的参数
if (this.zhixingcenterindex == 2) {
str = '&activeTotal=2'
} else if (this.zhixingcenterindex == 6) {
str = '&activeTotal=3'
} else {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh' +
'&activeTotal=0' + '&markAdvisor=0'
});
str = `&activeTotal=4&staTime=${this.statDateStart}&endtime=${this.statDateEnd}`
}
}
})
break;
case '333':
case '7':
if (this.zhixingcenterindex == 2) {
str = '&activeTotal=2&validInvalid=0'
} else if (this.zhixingcenterindex == 6) {
str = '&activeTotal=3&validInvalid=0'
} else {
str = `&activeTotal=4&staTime=${this.statDateStart}&endtime=${this.statDateEnd}&validInvalid=0`
}
break;
case '6':
str = '&activeTotal=0&validInvalid=0'
break;
case '4':
str = '&activeTotal=0&markAdvisor=0&validInvalid=0'
break;
default:
str = '&activeTotal=0&markAdvisor=0'
break;
}
return str
},

// 接待记录跳转
tapjumpreception(params) {
// 校验是否有权限
if (this.checkAuthority('接待记录')) {
uni.navigateTo({
url: `/pages/center/records/index?refresh=refresh${params}`
});
}
},

// 权限菜单跳转
Piabodata(item) {
if (item == '销讲数据') {
uni.navigateTo({
@@ -825,7 +765,7 @@
});
} else if (item == '接待记录') {
uni.navigateTo({
url: '/pages/center/records/index?refresh=' + 'refresh'
url: '/pages/center/records/index?refresh=refresh'
});
} else if (item == '值班顾问') {
uni.navigateTo({
@@ -841,11 +781,11 @@
});
} else if (item == '违禁记录') {
uni.navigateTo({
url: '/pages/center/prohibited/index?refresh=' + 'refresh'
url: '/pages/center/prohibited/index?refresh=refresh'
});
} else {
uni.navigateTo({
url: '/pages/center/consumer/index?refresh=' + 'refresh'
url: '/pages/center/consumer/index?refresh=refresh'
});
}
},


+ 93
- 50
pages/mine/details2.vue Vedi File

@@ -31,7 +31,7 @@
<view :id="'dialog'+i" class="fileName">录音文件</view>
<view class="text" :id="'dialog'+csdFileindex+'text'+item.bg"
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow, isGreen: item.isShow == 0}"
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker" @click.stop>
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker">
<template v-if="refined">
<view class="checkbox" :class="{select: item.checked}" @click="cbChange(item)">
<template v-if="item.checked">
@@ -150,29 +150,37 @@

<!-- 加入挖掘话术 -->
<view class="zhezhao" v-if="wajueshow" @tap="CancelAdd"></view>
<u-modal v-model="wajueshow" title="新增挖掘话术" :show-cancel-button="true" @cancel="CancelAdd" @confirm="wajueConfirm()">
<u-modal width="600rpx" v-model="wajueshow" title="新增挖掘话术" :show-cancel-button="true" @cancel="CancelAdd" @confirm="wajueConfirm()">
<view class="tian-view" style="margin-left: 20rpx;">
<viwe class="tian-view-t3">
话术分类:<input class="huashu-input" disabled @click="treeshow=true" v-model="wordBiao.wordBiaoqian" type="text" placeholder="请选择" />
</viwe>
<view class="tian-view-t2">
话术分类:<view class="word" @click="treeshow=true">{{wordBiao.wordBiaoqian}}</view>
</view>
</view>
<view class="tian-view" style="margin-left: 20rpx;">
<viwe class="tian-view-t2">
话术内容:<textarea :auto-height="true" type="text" v-model="thewrongword" class="tian-input" placeholder="请输入" />
</viwe>
<view class="tian-view-t2">
话术内容:<view class="word1">
<u-input :auto-height="false" height="30" type="textarea" v-model="thewrongword" :border="false" :custom-style="customStyle" placeholder="请输入" />
</view>
</view>
</view>
</u-modal>
<!-- 加入常错词 -->
<view class="zhezhao" v-if="isshow2" @tap="Cancelout"></view>
<u-modal v-model="isshow2" title="添加常错词" :show-cancel-button="true" @cancel="Cancelout" @confirm="$noMultipleClicks(Confirmtheexit)">
<view class="tian-view">
<viwe class="tian-view-t2" style="margin-left: 20rpx;">
常错词:<textarea :auto-height="true" type="text" v-model="thewrongword" :disabled="isNum" class="tian-input" placeholder="请输入" />
</viwe>
<view class="tian-view-t2" style="margin-left: 20rpx;">
常错词:<view class="word1">
<u-input :auto-height="false" height="30" type="textarea" v-model="thewrongword" :border="false" :custom-style="customStyle" placeholder="请输入" />
</view>
<!-- <u-input :auto-height="false" height="40" type="textarea" v-model="reswrongword" :border="false" :custom-style="customStyle" placeholder="请输入" /> -->
<!-- <view class="word">{{thewrongword}}</view> -->
</view>
</view>
<view class="tian-view">
<viwe class="tian-view-t3" style="margin-left: 20rpx;">正确词:<input class="huashu-input" v-model="reswrongword" type="text" placeholder="请输入" /></viwe>
<view class="tian-view-t2" style="margin-left: 20rpx;">
正确词:<view class="word1">
<u-input :auto-height="false" height="30" type="textarea" v-model="reswrongword" :border="false" :custom-style="customStyle" placeholder="请输入" /></view>
</view>
</view>
</u-modal>

@@ -338,10 +346,13 @@
<view class="hhhbox" v-if="item.show" style="padding: 30rpx;">
<view class="hsnrtest">话术内容</view>
<view class="Level3che" v-for="(che,inc) in item.questionList" :key='inc'>
<view class="title1">{{inc+1}}.{{che.question}}</view>
<view class="title1" :style="che.selected==2?'color:#666':che.selected==1?'color: #666':''">{{inc+1}}.{{che.question}}</view>
<view class="jiantobox">
<!-- 0本次选中 1未选中 2上次选中 -->
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png"
mode="" />
<image v-else-if="che.selected==2" class="arrow" src="/static/images/rate-checked.png"
mode="" />
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" />
</view>
</view>
@@ -365,11 +376,16 @@
<view v-if="subitem.show" style="padding: 30rpx 0;">
<view class="hsnrtest">话术内容</view>
<view class="Level3che" v-for="(che,inc) in subitem.questionList" :key='inc'>
<view class="title1">{{inc+1}}.{{che.question}}</view>
<view class="title1" :style="che.selected==2?'color:#666':che.selected==1?'color: #666':''">{{inc+1}}.{{che.question}}</view>
<!-- <view class="title1">{{inc+1}}.{{che.question}}</view> -->
<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/rate-nocheck.png" mode="" />
<!-- 0本次选中 1未选中 2上次选中 -->
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png"
mode="" />
<image v-else-if="che.selected==2" class="arrow" src="/static/images/rate-checked.png"
mode="" />
<!-- <image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" mode="" /> -->
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" />
</view>
</view>
</view>
@@ -521,6 +537,11 @@

data() {
return {
customStyle: {
'width': '320rpx',
'font-size':'34rpx',
'border-bottom': '1px solid #ccc'
},
wordBiao: {
level: 1,
wordBiaoqian: '',
@@ -757,21 +778,52 @@
},
// 添加挖掘词
wajueConfirm(){
this.$u.post("/corpus/addWordMining", {
"houseId":this.buildingID,// 楼盘id
"cusId":this.customerId, //客户id
"question":this.thewrongword,// 问题
"keywordsId":this.wordBiao.wordBiaoqianId,// 标签id
"level":this.wordBiao.level // 标签等级
})
.then((res) => {
console.log(res)
this.wajueItem.isshow = false
if(this.thewrongword.length>20){
uni.showToast({
title: '该话术不能超过20个字',
icon: 'none',
duration: 2000
});
this.wajueshow = true
return;
}
this.wajueshow = true
uni.request({
url: config.service.addWordMining,
method: "post",
header: {
'content-type': 'application/json',
'Access-Token': uni.getStorageSync('weapp_session_login_data').token
},
data: {
"houseId":this.buildingID,// 楼盘id
"cusId":this.customerId, //客户id
"question":this.thewrongword,// 问题
"keywordsId":this.wordBiao.wordBiaoqianId,// 标签id
"level":this.wordBiao.level // 标签等级
},
success: (res) => {
// console.log(res)
if(res.data.code==10000){
uni.showToast({
title: '添加成功',
duration: 2000
});
this.wajueshow = false
}else{
uni.showToast({
title: res.data.message,
icon: 'none',
duration: 2000
});
this.wajueshow = false
}
}
})
},
// 挖掘话术分类树的选择
confirmTree(e){
console.log(e)
// console.log(e)
if(e[1].label=='--'){
this.wordBiao.wordBiaoqian = e[0].label
this.wordBiao.wordBiaoqianId = e[0].value
@@ -781,11 +833,12 @@
this.wordBiao.wordBiaoqianId= e[1].value
this.wordBiao.level = 2
}
console.log(this.wordBiao.wordBiaoqian)
// console.log(this.wordBiao.wordBiaoqian)
},
CancelAdd(){
this.wajueshow = false
this.wajueItem.isshow= false
this.wordBiao.wordBiaoqian = ''
},
// 选中取反
cbChange(item) {
@@ -1586,6 +1639,7 @@
openwajue(item) {
this.wajueItem = item
this.wajueshow = true;
item.isshow = false
},
//加精华
Addtheessence() {
@@ -2690,32 +2744,21 @@
background-color: #FFFFFF;
display: flex;
margin-bottom:30rpx;

.tian-view-t2 {
width: 100%;
font-size: 34rpx;
display: flex;
align-items: center;
color: #333;
.tian-input {
width: 384rpx;
font-size: 34rpx;
padding: 0 10rpx;
border: none;
border-bottom: 1px solid #e0e0e0;
.word{
flex: 1;
border-bottom: 1px solid #ccc;
}
}
.tian-view-t3 {
width: 100%;
display: flex;
font-size: 34rpx;
align-items: center;
.huashu-input{
width: 384rpx;
height: 60rpx;
padding: 0 10rpx;
font-size: 34rpx;
border-bottom: 1px solid #E0E0E0;
.word1{
height: 80rpx;
flex: 1;
/deep/ textarea{
max-height: 80rpx !important;
}
}
}
}


+ 4
- 3
utils/domain.js Vedi File

@@ -1,8 +1,9 @@
// http.js使用域名
const baseUrl = 'http://81.70.55.170:9090/autoSR/api';// 最新测试
// const baseUrl = 'http://81.70.55.170:9090/autoSR/api';// 测试服务器1
const baseUrl = 'http://81.70.55.170:7070/api';// 测试服务器2
// const baseUrl = 'http://127.0.0.1:8080/autoSR/api'; // 本地
// const baseUrl = 'http://192.168.31.169:8080/autoSR/api'; // 长龙
// const baseUrl = 'http://192.168.31.149:9090/api'; // 盛浩
// const baseUrl = 'http://192.168.31.231:8080/autoSR/api'; // 长龙
// const baseUrl = 'http://192.168.31.149:8080/api'; // 盛浩
// const baseUrl = 'https://zkgj.quhouse.com/api'; // 质控正式
// const baseUrl = 'https://hfju.com/api'; // 数智正式
// const baseUrl = 'https://xitong.pachira.cn/api'; // AI营销辅助 普强使用


Caricamento…
Annulla
Salva