@@ -1,18 +1,9 @@ | |||
<template> | |||
<view class="box"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4)">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5)">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6)">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">自定义</view> | |||
</view> | |||
<view class="boxtittabs"> | |||
<div class="items" @tap="screenShow = true">{{ showTimeText }}</div> | |||
<div class="items" @tap="showTemplate = true">{{ showBeText }}</div> | |||
</view> | |||
<!-- 接待量排名(TOP10) --> | |||
@@ -237,6 +228,32 @@ | |||
</view> | |||
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar> | |||
<!-- 更多筛选 --> | |||
<u-popup v-model="screenShow" mode="top"> | |||
<view class="screen"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4, '近七天')">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5, '近15天')">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6, '近30天')">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义</view> | |||
</view> | |||
</view> | |||
</view> | |||
</u-popup> | |||
<!-- 销讲业务 --> | |||
<u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate" | |||
mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select> | |||
</view> | |||
</template> | |||
@@ -290,6 +307,16 @@ | |||
total: '', | |||
result: [], | |||
}, | |||
screenShow: false, // 时间筛选弹窗 | |||
showTimeText: '近七天', // 展示文字 | |||
showBeText: '全部业务', // | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
marketingBusiness: '', // 选择的业务id | |||
}; | |||
}, | |||
onLoad(option) { | |||
@@ -297,16 +324,50 @@ | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
this.init() | |||
if (option.type == 1) { | |||
this.totalTimeChange({startDate: option.staTime, endDate: option.endtime}) | |||
this.totalTimeChange({ | |||
startDate: option.staTime, | |||
endDate: option.endtime | |||
}) | |||
} | |||
this.getMarketingBusiness() | |||
}, | |||
onPullDownRefresh() { | |||
this.init() | |||
this.getMarketingBusiness() | |||
setTimeout(function() { | |||
uni.stopPullDownRefresh(); | |||
}, 1000); | |||
}, | |||
methods: { | |||
// 销讲业务方法 | |||
templateCancel() { | |||
this.showTemplate = false; | |||
}, | |||
// 确认选择销讲业务 | |||
templateConfirm(e) { | |||
this.showTemplate = false; | |||
this.marketingBusiness = e[0].value | |||
this.showBeText = e[0].label | |||
this.init() | |||
}, | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: uni.getStorageSync('buildingID').id, | |||
}).then(res => { | |||
this.templateList = res | |||
this.templateList.unshift({ | |||
templateName: '全部业务', | |||
id: '' | |||
}) | |||
}) | |||
}, | |||
init() { | |||
this.newlisttabinfo1 = { | |||
avg: '', | |||
@@ -351,7 +412,8 @@ | |||
timeType: activeTotal, | |||
lastStartDate: this.lastStartDate, | |||
lastEndDate: this.lastEndDate, | |||
houseId: this.houseId | |||
houseId: this.houseId, | |||
marketingBusiness: this.marketingBusiness, | |||
} | |||
this.staffStatisticsReceptionTop10(promse) | |||
this.staffStatisticsRecordingTimTop10(promse) | |||
@@ -431,16 +493,20 @@ | |||
//自定义时间 | |||
totalTimeChange(e) { | |||
console.log(e.startDate, e.endDate) | |||
this.screenShow = false | |||
this.showTimeText = `${e.startDate}-${e.endDate}` | |||
this.activeTotal = 3; | |||
this.lastEndDate = e.endDate | |||
this.lastStartDate = e.startDate | |||
this.init() | |||
}, | |||
//时间切换 | |||
tabtimetap(index) { | |||
tabtimetap(index, text) { | |||
if (index == 3) { | |||
this.totalTimeShow = true; | |||
} else { | |||
this.screenShow = false | |||
this.showTimeText = text | |||
this.activeTotal = index; | |||
this.lastEndDate = ''; | |||
this.lastStartDate = ''; | |||
@@ -479,15 +545,49 @@ | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.boxtittabs { | |||
width: 100%; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.items { | |||
padding: 0 24rpx; | |||
width: 50%; | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
} | |||
.screen { | |||
width: 100%; | |||
.boxtittab { | |||
width: 100%; | |||
flex-direction: column; | |||
.tabbox { | |||
width: 100%; | |||
} | |||
} | |||
} | |||
.box { | |||
width: 100%; | |||
height: 100%; | |||
background: #FAFAFA; | |||
} | |||
.single { | |||
min-height: 500rpx; | |||
.jindu { | |||
height: auto; | |||
min-height: 360rpx; | |||
@@ -500,7 +600,8 @@ | |||
display: flex; | |||
padding-top: 20rpx; | |||
padding-bottom: 20rpx; | |||
.sanbox1{ | |||
.sanbox1 { | |||
text-align: center; | |||
} | |||
@@ -1,18 +1,9 @@ | |||
<template> | |||
<view> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4)">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5)">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6)">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">自定义</view> | |||
</view> | |||
<view class="boxtittabs"> | |||
<div class="items" @tap="screenShow = true">{{ showTimeText }}</div> | |||
<div class="items" @tap="showTemplate = true">{{ showBeText }}</div> | |||
</view> | |||
<view class="timepick"> | |||
@@ -138,6 +129,33 @@ | |||
<u-select v-model="staffShow1" :list="staffList1" @confirm="staffSelectCallback" :default-value='selindex'> | |||
</u-select> | |||
<!-- 更多筛选 --> | |||
<u-popup v-model="screenShow" mode="top"> | |||
<view class="screen"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4, '近七天')">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5, '近15天')">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6, '近30天')">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义</view> | |||
</view> | |||
</view> | |||
</view> | |||
</u-popup> | |||
<!-- 销讲业务 --> | |||
<u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate" | |||
mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
@@ -238,6 +256,14 @@ | |||
"data": [90, 110, 165, 195, 187, 172] | |||
}] | |||
}, | |||
screenShow: false, // 时间筛选弹窗 | |||
showTimeText: '近七天', // 展示文字 | |||
showBeText: '全部业务', // | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
marketingBusiness: '', // 选择的业务id | |||
}; | |||
}, | |||
@@ -248,24 +274,48 @@ | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
// 请求接口获取所有置业顾问员工的列表 | |||
this.getStaffList(option) | |||
this.getMarketingBusiness() | |||
}, | |||
onPullDownRefresh() { | |||
this.getMarketingBusiness() | |||
this.getStaffList() | |||
setTimeout(function() { | |||
uni.stopPullDownRefresh(); | |||
}, 1000); | |||
}, | |||
methods: { | |||
// 销讲业务方法 | |||
templateCancel() { | |||
this.showTemplate = false; | |||
}, | |||
// 确认选择销讲业务 | |||
templateConfirm(e) { | |||
this.showTemplate = false; | |||
this.marketingBusiness = e[0].value | |||
this.showBeText = e[0].label | |||
this.getdata() | |||
}, | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: uni.getStorageSync('buildingID').id, | |||
}).then(res => { | |||
this.templateList = res | |||
this.templateList.unshift({ | |||
templateName: '全部业务', | |||
id: '' | |||
}) | |||
}) | |||
}, | |||
//是否对比 | |||
checkboxChange() { | |||
this.timepickpickisshow = !this.timepickpickisshow; | |||
this.staff2.value = '' | |||
this.staff2.label = '平均' | |||
// this.getreception() | |||
// this.getRecordList() | |||
// this.getAwardList() | |||
// this.getAward() | |||
this.getdata() | |||
}, | |||
// 点击员工对比 | |||
@@ -331,7 +381,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
.then(res => { | |||
this.newTeam1 = res.avg[0] | |||
@@ -378,7 +429,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
.then(res => { | |||
this.newTeam3 = res.avg[0] | |||
@@ -429,7 +481,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
} else { | |||
res = await this.$u.post('/cusLvStatistics/employeeAnalysisRecordingTime', { | |||
@@ -438,7 +491,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
} | |||
// console.log(res) | |||
@@ -484,7 +538,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
@@ -544,14 +599,14 @@ | |||
this.chartData.series[1].data.push(0) | |||
} | |||
}) | |||
this.$forceUpdate() | |||
} | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
// 检测范围 | |||
checkRange(num) { | |||
if (num < 0) { | |||
@@ -561,19 +616,18 @@ | |||
} else { | |||
return num | |||
} | |||
}, | |||
tabtimetap(index) { | |||
}, | |||
tabtimetap(index, text) { | |||
if (index == 3) { | |||
this.totalTimeShow = true; | |||
} else { | |||
this.screenShow = false | |||
this.showTimeText = text | |||
this.activeTotal = index; | |||
this.lastEndDate = '' | |||
this.lastStartDate = '' | |||
// 获取数据 | |||
// this.getreception() | |||
// this.getRecordList() | |||
// this.getAwardList() | |||
this.getdata() | |||
} | |||
}, | |||
@@ -585,6 +639,8 @@ | |||
//自定义时间 | |||
totalTimeChange(e) { | |||
console.log(e.startDate, e.endDate) | |||
this.screenShow = false | |||
this.showTimeText = `${e.startDate}-${e.endDate}` | |||
this.activeTotal = 3; | |||
this.lastEndDate = e.endDate | |||
this.lastStartDate = e.startDate | |||
@@ -627,6 +683,40 @@ | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.boxtittabs { | |||
width: 100%; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.items { | |||
padding: 0 24rpx; | |||
width: 50%; | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
} | |||
.screen { | |||
width: 100%; | |||
.boxtittab { | |||
width: 100%; | |||
flex-direction: column; | |||
.tabbox { | |||
width: 100%; | |||
} | |||
} | |||
} | |||
// 对比时间切换 | |||
.timepick { | |||
width: 100%; | |||
@@ -1,24 +1,15 @@ | |||
<template> | |||
<view class="box"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4)">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5)">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6)">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">自定义</view> | |||
</view> | |||
<view class="boxtittabs"> | |||
<div class="items" @tap="screenShow = true">{{ showTimeText }}</div> | |||
<div class="items" @tap="showTemplate = true">{{ showBeText }}</div> | |||
</view> | |||
<view class="timepick"> | |||
<view style="display: flex;" class="timepicktime" @click="chiocStaff(0)"> | |||
<view style="flex-grow: 1;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> | |||
{{staff1.label}}</view> | |||
{{staff1.label}} | |||
</view> | |||
<view style="flex-shrink: 0;"> | |||
<image class="Underimg" src="../../../static/images/Underimg.png" mode=""></image> | |||
</view> | |||
@@ -179,75 +170,6 @@ | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<!-- <view class="single"> | |||
<view class="title"> | |||
<view class="title1" style="flex: 1;">禁忌执行率</view> | |||
<view class="title3" style="flex: 1;"> | |||
<view class="title3-box" @click="tabtimetap4(0)"> | |||
<view style="height: 42rpx;" :class="{ activecltab: eharTab.active4 == 0 }">排名</view> | |||
</view> | |||
<view class="title3-box" @click="tabtimetap4(1)"> | |||
<view style="height: 42rpx;" :class="{ activecltab: eharTab.active4 == 1 }">趋势</view> | |||
</view> | |||
<view class="title3-box"> | |||
<view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 2 }">表格</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="hejibox"> | |||
<view class="heji">{{!staff1.value?'团队':staff1.label}}:{{newTeam4||0}}</view> | |||
<view class="heji">{{!staff2.value?'均值':staff2.label}}:{{newAvg4||0}}</view> | |||
</view> | |||
<view class="" v-if=" eharTab.active4 == 1 "> | |||
<view class="danwei">来访(人)</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts | |||
type="line" | |||
:chartData="lineOptsect4" | |||
background="none" | |||
:ontouch="true" | |||
canvasId="wangxiaohuaerlingeryilingwuyi" | |||
:canvas2d="true" | |||
/> | |||
</view> | |||
</view> | |||
<view class="jindu" v-if=" eharTab.active4 == 0 "> | |||
<view class="jindu-box" v-for="(item,index) in newlisttabinfo4" :key="index"> | |||
<view class="jindu-boxche"> | |||
<view class="jindu-name">{{item.name.substring(0, 4)}}</view> | |||
<view style="width: 440rpx;margin-left: 10rpx;"> | |||
<u-line-progress height="24" :show-percent="false" active-color="#FBA448" :percent="item.zxl"></u-line-progress> | |||
</view> | |||
<view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> --> | |||
<!-- <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> --> | |||
<!-- <view class="single"> | |||
<view class="title" style="padding-right: 30rpx;"> | |||
<view class="title1" style="flex: 1;">违禁能力(TOP10)</view> | |||
<view class="title2" style="flex: 1;justify-content: flex-end;"> | |||
<view class="title2-che">项目 | |||
<image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="hejibox"> | |||
<view class="heji">合计:50</view> | |||
<view class="heji">均值:25</view> | |||
</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts | |||
type="radar" | |||
:chartData="chartData" | |||
:canvas2d="true" | |||
canvasId="wangxiaohuaerlingeryilingwuyib89" | |||
background="none" | |||
/> | |||
</view> | |||
</view> --> | |||
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar> | |||
@@ -256,9 +178,32 @@ | |||
</u-select> | |||
<u-select v-model="staffShow1" :list="staffList1" @confirm="staffSelectCallback" :default-value='selindex'> | |||
</u-select> | |||
<!-- 更多筛选 --> | |||
<u-popup v-model="screenShow" mode="top"> | |||
<view class="screen"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4, '近七天')">近七天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5, '近15天')">近15天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6, '近30天')">近30天</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义</view> | |||
</view> | |||
</view> | |||
</view> | |||
</u-popup> | |||
<!-- 销讲业务 --> | |||
<u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate" | |||
mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
@@ -445,6 +390,14 @@ | |||
} | |||
}, | |||
screenShow: false, // 时间筛选弹窗 | |||
showTimeText: '近七天', // 展示文字 | |||
showBeText: '全部业务', // | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
marketingBusiness: '', // 选择的业务id | |||
}; | |||
}, | |||
@@ -477,6 +430,7 @@ | |||
// this.buildingname = uni.getStorageSync('buildingID').name; | |||
// 请求接口获取所有置业顾问员工的列表 | |||
this.getSectionList() | |||
this.getMarketingBusiness() | |||
}, | |||
onPullDownRefresh() { | |||
@@ -492,11 +446,40 @@ | |||
// this.buildingname = uni.getStorageSync('buildingID').name; | |||
// 请求接口获取所有置业顾问员工的列表 | |||
this.getSectionList() | |||
this.getMarketingBusiness() | |||
setTimeout(function() { | |||
uni.stopPullDownRefresh(); | |||
}, 1000); | |||
}, | |||
methods: { | |||
// 销讲业务方法 | |||
templateCancel() { | |||
this.showTemplate = false; | |||
}, | |||
// 确认选择销讲业务 | |||
templateConfirm(e) { | |||
this.showTemplate = false; | |||
this.marketingBusiness = e[0].value | |||
this.showBeText = e[0].label | |||
this.getSectionList() | |||
}, | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: uni.getStorageSync('buildingID').id, | |||
}).then(res => { | |||
this.templateList = res | |||
this.templateList.unshift({ | |||
templateName: '全部业务', | |||
id: '' | |||
}) | |||
}) | |||
}, | |||
//是否对比 | |||
checkboxChange() { | |||
this.timepickpickisshow = !this.timepickpickisshow; | |||
@@ -514,7 +497,7 @@ | |||
// 获取部门列表 | |||
getSectionList() { | |||
this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', { | |||
houseId: this.houseId | |||
houseId: this.houseId, | |||
}) | |||
.then(res => { | |||
this.staffList = [] | |||
@@ -559,10 +542,12 @@ | |||
}, | |||
//时间切换 | |||
tabtimetap(index) { | |||
tabtimetap(index, text) { | |||
if (index == 3) { | |||
this.totalTimeShow = true; | |||
} else { | |||
this.screenShow = false | |||
this.showTimeText = text | |||
this.activeTotal = index; | |||
this.lastEndDate = '' | |||
this.lastStartDate = '' | |||
@@ -601,7 +586,8 @@ | |||
}, | |||
//自定义时间 | |||
totalTimeChange(e) { | |||
console.log(e.startDate, e.endDate) | |||
this.screenShow = false | |||
this.showTimeText = `${e.startDate}-${e.endDate}` | |||
this.activeTotal = 3; | |||
this.lastEndDate = e.endDate | |||
this.lastStartDate = e.startDate | |||
@@ -678,7 +664,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
.then(res => { | |||
// console.log(res) | |||
@@ -825,7 +812,8 @@ | |||
houseId: this.houseId, | |||
timeType: this.lastEndDate ? null : this.activeTotal + '', | |||
lastEndDate: this.lastEndDate, | |||
lastStartDate: this.lastStartDate | |||
lastStartDate: this.lastStartDate, | |||
marketingBusiness: this.marketingBusiness, | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
@@ -941,6 +929,39 @@ | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.boxtittabs { | |||
width: 100%; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.items { | |||
padding: 0 24rpx; | |||
width: 50%; | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
} | |||
.screen { | |||
width: 100%; | |||
.boxtittab { | |||
width: 100%; | |||
flex-direction: column; | |||
.tabbox { | |||
width: 100%; | |||
} | |||
} | |||
} | |||
.uchaserboxs { | |||
width: 100%; | |||
height: 70vh; | |||
@@ -1,19 +1,10 @@ | |||
<template> | |||
<view class="box"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 0 }" @click="tabtimetap(0)">今日</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 1 }" @click="tabtimetap(1)">昨日</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">近一周</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">自定义</view> | |||
</view> | |||
<view class="boxtittabs"> | |||
<div class="items" @tap="screenShow = true">{{ showTimeText }}</div> | |||
<div class="items" @tap="showTemplate = true">{{ showBeText }}</div> | |||
</view> | |||
<view class="info"> | |||
<view class="item" @click="goTo(1)"> | |||
<text class="num">{{efficient}}</text> | |||
@@ -36,13 +27,17 @@ | |||
<view class="num">{{item.num}}</view> | |||
</view> | |||
</view> | |||
<view v-if="Afolding" class="anclack" @click="anclick(1)">展开 <u-icon style="margin-left: 8rpx;" label-color='#666666' name="arrow-down"></u-icon></view> | |||
<view v-else class="anclack" @click="anclick(2)">收起 <u-icon style="margin-left: 8rpx;" label-color='#666666' name="arrow-up"></u-icon></view> | |||
<view v-if="Afolding" class="anclack" @click="anclick(1)">展开 <u-icon style="margin-left: 8rpx;" | |||
label-color='#666666' name="arrow-down"></u-icon> | |||
</view> | |||
<view v-else class="anclack" @click="anclick(2)">收起 <u-icon style="margin-left: 8rpx;" label-color='#666666' | |||
name="arrow-up"></u-icon> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="centerfor" v-for="(item,index) in objlist" :key="index"> | |||
<view class="fortit"> | |||
<view class="left"> | |||
@@ -62,12 +57,16 @@ | |||
<view>触达占比</view> | |||
<view>沟通记录</view> | |||
</view> | |||
<view v-if="item.total==0" style="color: #999999;width: 100%;height: 500rpx;line-height: 500rpx;text-align: center;" >暂无数据</view> | |||
<view class="tabtd" v-if="item.total!=0" v-for="(chend,i) in item.matchKeywords" :key="i"> | |||
<view v-if="item.total==0" | |||
style="color: #999999;width: 100%;height: 500rpx;line-height: 500rpx;text-align: center;">暂无数据 | |||
</view> | |||
<view class="tabtd" v-if="item.total!=0" v-for="(chend,i) in item.matchKeywords" :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> | |||
<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>{{chend.name}}({{chend.total}})</view> | |||
@@ -76,21 +75,43 @@ | |||
</view> | |||
</view> | |||
<view v-if="item.activeTab==1" class="tabech"> | |||
<qiun-data-charts | |||
:key="item.id" | |||
type="ring" | |||
:chartData="item.chartData" | |||
:canvas2d="true" | |||
:canvasId="'wangxiaohuahahahahaha'+item.id" | |||
:opts='item.opts' | |||
background="none" /> | |||
<qiun-data-charts :key="item.id" type="ring" :chartData="item.chartData" :canvas2d="true" | |||
:canvasId="'wangxiaohuahahahahaha'+item.id" :opts='item.opts' background="none" /> | |||
</view> | |||
</view> | |||
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar> | |||
<u-back-top :scroll-top="scrollTop"></u-back-top> | |||
<!-- 更多筛选 --> | |||
<u-popup v-model="screenShow" mode="top"> | |||
<view class="screen"> | |||
<view class="boxtittab"> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 0 }" @click="tabtimetap(0, '今日')">今日</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 1 }" @click="tabtimetap(1, '昨日')">昨日</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2, '近一周')">近一周 | |||
</view> | |||
</view> | |||
<view class="tabbox"> | |||
<view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义 | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</u-popup> | |||
<!-- 销讲业务 --> | |||
<u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate" | |||
mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
@@ -109,19 +130,27 @@ | |||
return { | |||
scrollTop: 0, | |||
activeTotal: 2, | |||
timeobj:{ | |||
statDateStart:'', | |||
statDateEnd:'' | |||
timeobj: { | |||
statDateStart: '', | |||
statDateEnd: '' | |||
}, | |||
buildingID:'', | |||
buildingID: '', | |||
totalTimeShow: false, | |||
activeTab: 0, | |||
numlist:[], | |||
objlist:[], | |||
Afolding:true, | |||
efficient:"", | |||
markCount:"", | |||
noMarkCount:"" | |||
numlist: [], | |||
objlist: [], | |||
Afolding: true, | |||
efficient: "", | |||
markCount: "", | |||
noMarkCount: "", | |||
screenShow: false, // 时间筛选弹窗 | |||
showTimeText: '近一周', // 展示文字 | |||
showBeText: '全部业务', // | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
marketingBusiness: '', // 选择的业务id | |||
}; | |||
}, | |||
onPageScroll(e) { | |||
@@ -129,11 +158,11 @@ | |||
}, | |||
onLoad(e) { | |||
this.LOADING = true | |||
this.buildingID=uni.getStorageSync('buildingID').id; | |||
this.buildingID = uni.getStorageSync('buildingID').id; | |||
if (e.activeTotal) { | |||
this.activeTotal = e.activeTotal | |||
} | |||
if (e.staTime) { | |||
this.timeobj = { | |||
statDateStart: e.staTime, | |||
@@ -141,57 +170,92 @@ | |||
} | |||
} | |||
this.gitinit() | |||
this.getMarketingBusiness() | |||
}, | |||
onPullDownRefresh() { | |||
this.gitinit() | |||
setTimeout(function () { | |||
uni.stopPullDownRefresh(); | |||
this.getMarketingBusiness() | |||
setTimeout(function() { | |||
uni.stopPullDownRefresh(); | |||
}, 1000); | |||
}, | |||
methods: { | |||
goTo(i){ | |||
if(i==1){ | |||
// 销讲业务方法 | |||
templateCancel() { | |||
this.showTemplate = false; | |||
}, | |||
// 确认选择销讲业务 | |||
templateConfirm(e) { | |||
this.showTemplate = false; | |||
this.marketingBusiness = e[0].value | |||
this.showBeText = e[0].label | |||
this.gitinit() | |||
}, | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: uni.getStorageSync('buildingID').id, | |||
}).then(res => { | |||
this.templateList = res | |||
this.templateList.unshift({ | |||
templateName: '全部业务', | |||
id: '' | |||
}) | |||
}) | |||
}, | |||
goTo(i) { | |||
if (i == 1) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&validInvalid=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + this | |||
.activeTotal + '&validInvalid=0' + '&staTime=' + this.timeobj.statDateStart + | |||
'&endtime=' + this.timeobj.statDateEnd | |||
}); | |||
}else if(i==2){ | |||
} else if (i == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=1&validInvalid=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + this | |||
.activeTotal + '&markAdvisor=1&validInvalid=0' + '&staTime=' + this.timeobj | |||
.statDateStart + '&endtime=' + this.timeobj.statDateEnd | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=0&validInvalid=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + this | |||
.activeTotal + '&markAdvisor=0&validInvalid=0' + '&staTime=' + this.timeobj | |||
.statDateStart + '&endtime=' + this.timeobj.statDateEnd | |||
}); | |||
} | |||
}, | |||
anclick(i){ | |||
anclick(i) { | |||
console.log(i) | |||
this.Afolding=!this.Afolding; | |||
this.numlist.forEach((citem,index)=>{ | |||
if(index<6){ | |||
citem.isshow=true; | |||
}else{ | |||
citem.isshow=!citem.isshow; | |||
this.Afolding = !this.Afolding; | |||
this.numlist.forEach((citem, index) => { | |||
if (index < 6) { | |||
citem.isshow = true; | |||
} else { | |||
citem.isshow = !citem.isshow; | |||
} | |||
}) | |||
this.$forceUpdate() | |||
}, | |||
//获取数据 | |||
gitinit(){ | |||
this.objlist=[]; | |||
this.numlist=[]; | |||
var dateType=''; | |||
if(this.activeTotal==3){ | |||
dateType=null; | |||
}else{ | |||
dateType=this.activeTotal; | |||
gitinit() { | |||
this.objlist = []; | |||
this.numlist = []; | |||
var dateType = ''; | |||
if (this.activeTotal == 3) { | |||
dateType = null; | |||
} else { | |||
dateType = this.activeTotal; | |||
} | |||
let parames={ | |||
dateType:dateType, | |||
statDateStart:this.timeobj.statDateStart, | |||
statDateEnd:this.timeobj.statDateEnd, | |||
houseId:this.buildingID | |||
let parames = { | |||
dateType: dateType, | |||
statDateStart: this.timeobj.statDateStart, | |||
statDateEnd: this.timeobj.statDateEnd, | |||
houseId: this.buildingID, | |||
marketingBusiness: this.marketingBusiness, | |||
} | |||
this.$u.post("/matchKeywords/findmatchdata", parames).then(data => { | |||
this.LOADING = false | |||
@@ -202,14 +266,14 @@ | |||
this.efficient = data.total | |||
this.markCount = data.markCount | |||
this.noMarkCount = data.noMarkCount | |||
data.list.forEach((item,index)=>{ | |||
data.list.forEach((item, index) => { | |||
this.numlist.push({ | |||
name:item.name, | |||
num:item.total | |||
name: item.name, | |||
num: item.total | |||
}) | |||
item.activeTab=0; | |||
item.opts={ | |||
item.activeTab = 0; | |||
item.opts = { | |||
"title": { | |||
"name": item.total, | |||
"color": '#666666', | |||
@@ -219,38 +283,39 @@ | |||
"name": '总触达次数', | |||
"color": '#32363D', | |||
"fontSize": 12, | |||
"offsetY": 4 | |||
"offsetY": 4 | |||
} | |||
} | |||
item.chartData={ | |||
item.chartData = { | |||
"categories": [], | |||
"series": [{ | |||
"data": [] | |||
}], | |||
}; | |||
item.matchKeywords.forEach(chend=>{ | |||
item.matchKeywords.forEach(chend => { | |||
item.chartData.series[0].data.push({ | |||
"name":chend.name, | |||
"name": chend.name, | |||
"value": chend.proportion | |||
}) | |||
}) | |||
}) | |||
data.list.forEach(item=>{ | |||
item.matchKeywords.forEach(chend=>{ | |||
if(chend.isInterval==0){ | |||
chend.name=chend.name+chend.unit+'-'+chend.endName+chend.unit | |||
}else{ | |||
chend.name=chend.name | |||
data.list.forEach(item => { | |||
item.matchKeywords.forEach(chend => { | |||
if (chend.isInterval == 0) { | |||
chend.name = chend.name + chend.unit + '-' + chend.endName + chend | |||
.unit | |||
} else { | |||
chend.name = chend.name | |||
} | |||
}) | |||
}) | |||
this.objlist=data.list; | |||
this.Afolding=true; | |||
this.numlist.forEach((citem,index)=>{ | |||
if(index<6){ | |||
citem.isshow=true | |||
}else{ | |||
citem.isshow=false | |||
this.objlist = data.list; | |||
this.Afolding = true; | |||
this.numlist.forEach((citem, index) => { | |||
if (index < 6) { | |||
citem.isshow = true | |||
} else { | |||
citem.isshow = false | |||
} | |||
}) | |||
}).catch(e => { | |||
@@ -258,7 +323,7 @@ | |||
}) | |||
}, | |||
//查看 | |||
Toview(item,i){ | |||
Toview(item, i) { | |||
console.log(item) | |||
let keywordsid = 0 | |||
if (item.matchKeywords[i].children && item.matchKeywords[i].children.length > 0) { | |||
@@ -267,55 +332,99 @@ | |||
keywordsid = item.matchKeywords[i].keywordsId | |||
} | |||
uni.navigateTo({ | |||
url: '/pages/center/Piabodata/Customerportrait/Receivingrecords?datatype='+this.activeTotal+"&keywordsId="+keywordsid+"&starttime="+this.timeobj.statDateStart+"&endoftime="+this.timeobj.statDateEnd | |||
url: '/pages/center/Piabodata/Customerportrait/Receivingrecords?datatype=' + this.activeTotal + | |||
"&keywordsId=" + keywordsid + "&starttime=" + this.timeobj.statDateStart + "&endoftime=" + | |||
this.timeobj.statDateEnd | |||
}) | |||
}, | |||
//时间切换 | |||
tabtimetap(index) { | |||
tabtimetap(index, text) { | |||
if (index == 3) { | |||
this.totalTimeShow = true; | |||
} else { | |||
this.screenShow = false | |||
this.showTimeText = text | |||
this.activeTotal = index; | |||
this.gitinit() | |||
} | |||
}, | |||
//自定义时间 | |||
totalTimeChange(e) { | |||
this.screenShow = false | |||
this.showTimeText = `${e.startDate}-${e.endDate}` | |||
this.timeobj.statDateStart = e.startDate; | |||
this.timeobj.statDateEnd = e.endDate; | |||
this.activeTotal=3; | |||
this.activeTotal = 3; | |||
this.gitinit() | |||
}, | |||
charttoswitch(index,num) { | |||
this.objlist[index].activeTab=num | |||
charttoswitch(index, num) { | |||
this.objlist[index].activeTab = num | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.info{ | |||
.boxtittabs { | |||
width: 100%; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.items { | |||
padding: 0 24rpx; | |||
width: 50%; | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
} | |||
.screen { | |||
width: 100%; | |||
.boxtittab { | |||
width: 100%; | |||
flex-direction: column; | |||
.tabbox { | |||
width: 100%; | |||
} | |||
} | |||
} | |||
.info { | |||
display: flex; | |||
justify-content: space-between; | |||
background: #fff; | |||
padding: 10px 20px; | |||
.item{ | |||
.item { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
text{ | |||
text { | |||
font-size: 32rpx; | |||
} | |||
.num{ | |||
.num { | |||
font-weight: bold; | |||
} | |||
.tit{ | |||
.tit { | |||
margin-top: 20rpx; | |||
} | |||
} | |||
} | |||
.anclack{ | |||
.anclack { | |||
width: 100%; | |||
height: 78rpx; | |||
text-align: center; | |||
@@ -325,6 +434,7 @@ | |||
font-weight: 400; | |||
color: #666666; | |||
} | |||
.box { | |||
width: 100%; | |||
height: 100%; | |||
@@ -540,10 +650,11 @@ | |||
width: 34rpx; | |||
height: 34rpx; | |||
} | |||
.ranking1 { | |||
width: 30rpx; | |||
height: 30rpx; | |||
background: #ECF1FF; | |||
background: #ECF1FF; | |||
color: #424D64; | |||
font-size: 18rpx; | |||
text-align: center; | |||
@@ -29,7 +29,8 @@ | |||
</view> | |||
<view class="content-sec-lab"> | |||
<view class="content-sec-lab1">挖掘执行:{{ customerInfo.wordFraction || 0 }}%</view> | |||
<view class="content-sec-lab1" style="width: 44%">挖掘成功:{{ customerInfo.wordFinishFraction || 0 }}%</view> | |||
<view class="content-sec-lab1" style="width: 44%"> | |||
挖掘成功:{{ customerInfo.wordFinishFraction || 0 }}%</view> | |||
<!-- <view class="content-sec-lab1" @click.stop="tipupon" style="width: 44%">画像标签:<text | |||
class="look">{{ | |||
customerInfo.demand.cusSemanticWordsList?customerInfo.demand.cusSemanticWordsList.length:0}}</text><text | |||
@@ -134,6 +135,9 @@ | |||
<!-- 销讲执行率 --> | |||
<view class="ratecenter" v-if="activeTotal==2"> | |||
<view class="boxtittabs"> | |||
<div class="items" @tap="showTemplate = true">销讲业务:{{ showBeText }}</div> | |||
</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: 20rpx;">指标 | |||
@@ -212,215 +216,149 @@ | |||
<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">挖掘成功:{{percent||0}}%</view> | |||
</view> | |||
<view | |||
style=" | |||
<!-- 需求挖掘执行率 --> | |||
<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">挖掘成功:{{percent||0}}%</view> | |||
</view> | |||
<view style=" | |||
width: 100%; | |||
height: 80rpx; | |||
border-bottom: 1rpx solid #e0e0e0; | |||
display: flex; | |||
align-items: center; | |||
background: #fff; | |||
" | |||
> | |||
<view | |||
style=" | |||
"> | |||
<view style=" | |||
flex: 1; | |||
font-size: 28rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
text-indent: 50rpx; | |||
" | |||
>指标</view | |||
> | |||
<view | |||
style=" | |||
">指标</view> | |||
<view style=" | |||
flex: 1; | |||
font-size: 28rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
text-indent: 70rpx; | |||
" | |||
>执行率</view | |||
> | |||
<view | |||
style=" | |||
">执行率</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"> | |||
<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=" | |||
">匹配标签</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"> | |||
<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">已匹配({{ | |||
">暂无数据</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=" | |||
<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 }}.{{ | |||
">{{ 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 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> | |||
@@ -440,6 +378,13 @@ | |||
</view> | |||
</scroll-view> | |||
</u-popup> | |||
<!-- 销讲业务 --> | |||
<u-select :mask-close-able="false" label-name="templateName" value-name="cusId" v-model="showTemplate" | |||
mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
@@ -453,7 +398,7 @@ | |||
}, | |||
data() { | |||
return { | |||
percent: 0, | |||
percent: 0, | |||
tabactive: 0, | |||
activeTotal: 0, | |||
customerId: '', | |||
@@ -469,7 +414,11 @@ | |||
fllowList: [], | |||
KeyWordsfractionList: [], //需求挖掘话术list | |||
userInfo: {}, | |||
buttonisshow: false | |||
buttonisshow: false, | |||
showBeText: '全部业务', // | |||
templateList: [], // 销讲业务 | |||
showTemplate: false, // 展示选择销讲业务弹窗 | |||
} | |||
}, | |||
computed: { | |||
@@ -493,8 +442,39 @@ | |||
} | |||
this.getCustomerInfo() | |||
this.tabtimetap(0) | |||
this.getMarketingBusiness() | |||
}, | |||
methods: { | |||
// 销讲业务方法 | |||
templateCancel() { | |||
this.showTemplate = false; | |||
}, | |||
// 确认选择销讲业务 | |||
templateConfirm(e) { | |||
this.showTemplate = false; | |||
this.customerId = e[0].value | |||
this.showBeText = e[0].label | |||
this.getCustomerInfo() | |||
this.tabtimetap(2) | |||
}, | |||
// 获取销讲业务 | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusinessByCusId', { | |||
id: this.customerId, | |||
}).then(res => { | |||
if (res) { | |||
this.templateList = res | |||
this.customerId = res[0].cusId | |||
this.showBeText = res[0].templateName | |||
} | |||
}) | |||
}, | |||
clickWajue(item) { | |||
if (item.isAskQuestions == 0) { | |||
uni.navigateTo({ | |||
@@ -504,67 +484,67 @@ | |||
}) | |||
} | |||
}, | |||
// 计算挖掘执行的完成率 | |||
getPercent(){ | |||
let countArr = this.KeyWordsfractionList.filter(item=> item.selected==0) | |||
// 计算挖掘执行的完成率 | |||
getPercent() { | |||
let countArr = this.KeyWordsfractionList.filter(item => item.selected == 0) | |||
console.log(countArr) | |||
this.percent = (countArr.length / this.KeyWordsfractionList.length)*100 | |||
console.log(this.percent.toFixed(0)) | |||
this.percent = this.percent.toFixed(0) | |||
this.percent = (countArr.length / this.KeyWordsfractionList.length) * 100 | |||
console.log(this.percent.toFixed(0)) | |||
this.percent = this.percent.toFixed(0) | |||
}, | |||
//挖掘率话术客户标签展示 | |||
getKeywordsList(list) { | |||
let keywords = []; | |||
if (list && list.length) { | |||
keywords = list.map((item) => item.name); | |||
} else { | |||
return "--"; | |||
} | |||
return keywords.join(","); | |||
}, | |||
//挖掘率话术客户标签展示 | |||
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 | |||
}, | |||
max100(num) { | |||
if (num > 100) { | |||
return 100; | |||
} else if (!num) { | |||
return 0; | |||
} else { | |||
return num; | |||
} | |||
}, | |||
max100(num) { | |||
if (num > 100) { | |||
return 100; | |||
} else if (!num) { | |||
return 0; | |||
} else { | |||
return num; | |||
} | |||
}, | |||
// 客户详情需求挖掘话术 | |||
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; | |||
this.getPercent() | |||
} else { | |||
this.KeyWordsfractionList = []; | |||
} | |||
}); | |||
}, | |||
// 获取到访记录 | |||
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; | |||
this.getPercent() | |||
} else { | |||
this.KeyWordsfractionList = []; | |||
} | |||
}); | |||
}, | |||
// 获取到访记录 | |||
getVisitList() { | |||
this.$u.get("/customer/findByPhoneAndProject?id=" + this.customerId, ).then(res => { | |||
this.Thevisitingrecords = res | |||
@@ -785,16 +765,34 @@ | |||
</script> | |||
<style lang="scss" scoped> | |||
.boxtittabs { | |||
width: 100%; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
display: flex; | |||
align-items: center; | |||
.items { | |||
padding: 0 24rpx; | |||
width: 100%; | |||
height: 100%; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
} | |||
.rotatearrow { | |||
transform: rotate(270deg); | |||
} | |||
.top-box{ | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
display: flex; | |||
color: #2671E2; | |||
border-bottom: 1rpx solid #ccc; | |||
} | |||
.top-box { | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
display: flex; | |||
color: #2671E2; | |||
border-bottom: 1rpx solid #ccc; | |||
} | |||
// 评分 | |||
.rate-box { | |||
@@ -917,12 +915,13 @@ | |||
padding-right: 30rpx; | |||
border-bottom: 1rpx solid #E0E0E0; | |||
background: #FFFFFF; | |||
.hsnrtest { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 30rpx; | |||
margin-bottom: 20rpx; | |||
margin-bottom: 20rpx; | |||
} | |||
.Level3che { | |||
@@ -1340,7 +1339,8 @@ | |||
} | |||
.tabchange { | |||
background:#fff; | |||
background: #fff; | |||
.tabactive1 { | |||
padding-bottom: 100rpx; | |||
@@ -868,6 +868,7 @@ | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: this.buildingID, | |||
status: 0, | |||
}).then(res => { | |||
this.templateList = res | |||
}) | |||
@@ -182,6 +182,7 @@ | |||
getMarketingBusiness() { | |||
this.$u.get('/customer/marketingBusiness', { | |||
houseId: this.parames.projectId, | |||
status: 0, | |||
}).then(res => { | |||
this.templateList = res | |||
if (res && res.length > 0) { | |||