259 lines
8.1 KiB
Vue
259 lines
8.1 KiB
Vue
<template>
|
|
<view>
|
|
<!-- 状态栏 -->
|
|
<status-nav :titleVal="'客户列表'" :statusTitle="true"></status-nav>
|
|
<!-- 自定义二级分类 -->
|
|
<!-- 列表 -->
|
|
<view :style="{paddingTop: statusHNH+'px'}" class="pad-zy30 pad-x20">
|
|
<view class="radius20 fon28 col3 mar-sx20">
|
|
<view class="disac">
|
|
<view @tap="openXial" class="disjbac width100 radius10 pad-zy20 xialak posir">
|
|
<view class="" style="color: #B3B3B3;">{{category}}</view>
|
|
<image :class="isZhuan?'zhuan':'nozhuan'" src="/static/public/sanj.png" mode="aspectFill"></image>
|
|
<!-- 下拉列表 -->
|
|
<view v-if="isZhuan" class="posia bacf radius10 xial-box">
|
|
<view class="pad-zy20 xial-item-box">
|
|
<view @tap="chooseXia(indexl)" :class="xialCurrent==indexl?'pcol':''" v-for="(iteml,indexl) in xialone" :key="indexl">{{iteml.title}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view @tap="searchEv" class="flexs tc mar-z30 colf radius10 customer-btn" :style="{background:publicColor}">搜索</view>
|
|
</view>
|
|
</view>
|
|
<!-- 列表 -->
|
|
<view v-if="dataList.length!=0" class="dis bacf radius10 pad20 mar-x20 posir" v-for="(item,index) in dataList" :key="index">
|
|
<image class="mar-y20 flexs" :src="item.imgSrc" style="width: 98rpx;height: 98rpx;" mode="aspectFill"></image>
|
|
<view class="fon24 col3 width100 mar-x40">
|
|
<view class="bold disjbac">
|
|
<view class="fon28 clips1">{{item.name}}</view>
|
|
<view class="flexs">来源:{{item.come}}</view>
|
|
</view>
|
|
<view style="margin: 15rpx 0;">联系方式:{{item.phone || '暂无'}}</view>
|
|
<view>客服:{{item.customer || '暂无'}}</view>
|
|
<view class="col80 disjbac" style="margin: 15rpx 0 0 0;">
|
|
<view>{{item.time}}</view>
|
|
<view class="col3">{{item.qudao}}</view>
|
|
</view>
|
|
</view>
|
|
<view v-if="isAllot">
|
|
<view @tap="fenCustomer(index)" class="posia colf fon24 radius10 tc customer-btn" style="right: 20rpx;top: 80rpx;" v-if="item.customer=='' || item.customer==null" :style="{background:publicColor}">分配客服</view>
|
|
</view>
|
|
<view class="fon24 col3 posia clips1 bold" style="bottom: 20rpx;left: 20rpx;right: 20rpx;">详细来源:{{item.source_detail}}</view>
|
|
</view>
|
|
<view v-if="dataList.length==0" class="disjcac fc" style="margin-top: 50%;">
|
|
<image class="zanw-img" src="/static/public/nothing.png" mode="aspectFill"></image>
|
|
<view class="fon24 col3">您搜索的内容暂无结果,换个关键词试试吧</view>
|
|
</view>
|
|
<!-- 弹框 -->
|
|
<pu-po :category="xialtList" @chooseXiaT="chooseXiaT" :isXiala="true" :isShowT="isShowT" :clearVal="'暂不分配'" :comfrimVal="'立即分配'" @comfirmev="comfirmev" @cancleev="cancleev"></pu-po>
|
|
<!-- 返回顶部 -->
|
|
<!-- <back-top :showTop="showTop" @backTop="backTop"></back-top> -->
|
|
</view>
|
|
<!-- 底部客服 -->
|
|
<public-customer :nbottom="100"></public-customer>
|
|
<!-- 弹框授权 -->
|
|
<empower @buttonH="buttonH" :vision="vision" :isWhere="2"></empower>
|
|
<!-- 弹框 -->
|
|
<auth-phone v-if="isShowP"></auth-phone>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
statusHNH:uni.getStorageSync('statusHNH'),
|
|
publicColor:uni.getStorageSync('publicColor'),//主题颜色
|
|
category:'',
|
|
dataList:[],
|
|
showTop:false,
|
|
isShowT:false,
|
|
isXiala:true,
|
|
isZhuan:false,
|
|
xialCurrent:0,
|
|
xialone:['全部'],
|
|
xialtList:[],
|
|
staff_id:'',//员工ID
|
|
customer_id:'',//客户ID
|
|
page:1,
|
|
size:10,
|
|
total:'',
|
|
isZanw:true,
|
|
ntype:'',
|
|
isAllot:uni.getStorageSync('customer-allot'),
|
|
vision:false,
|
|
isShowP:false,
|
|
}
|
|
},
|
|
onPageScroll(e) {
|
|
e.scrollTop > 360 ? this.showTop = true : this.showTop = false
|
|
},
|
|
onReachBottom() {//触底事件
|
|
// for (let i = 0; i < 4; i++) {
|
|
// let obj = {imgSrc:'/static/public/like.png',name:'USER',come:'顾客分享',phone:'18888888888',customer:'恒美植发客服-01',time:'2021-07-15 14:25',qudao:'第二渠道'}
|
|
// this.dataList.push(obj)
|
|
// }
|
|
if(this.total!=this.dataList.length){
|
|
this.page++
|
|
this.checkCL(this.ntype)
|
|
} else {
|
|
if(this.isZanw) this.$toolAll.tools.showToast('暂无更多列表数据')
|
|
this.isZanw = false
|
|
}
|
|
},
|
|
onShow() {
|
|
this.$toolAll.tools.isLogin()
|
|
},
|
|
onLoad(options) {
|
|
if(uni.getStorageSync('is_active')!=1){this.vision = true;}
|
|
if(options.invite_code!='' && options.invite_code!=undefined){
|
|
this.loginEv(options.invite_code);
|
|
} else if(options.source_code!='' && options.source_code!=undefined){
|
|
this.loginEv('',options.source_code,options.channel);
|
|
}
|
|
this.checkKF()//查询客服列表
|
|
this.checkCL()//客户列表
|
|
this.checkLY()//渠道来源
|
|
},
|
|
methods: {
|
|
loginEv(invite_code='',source='',channel=''){
|
|
uni.login({
|
|
provider: 'weixin',
|
|
success: (res)=> {
|
|
if (res.code) {
|
|
var params = {
|
|
code:res.code,
|
|
invite_code:invite_code,//用户邀请码
|
|
source_code:source,
|
|
channel:channel
|
|
}
|
|
this.$requst.post('user/login',params).then(res => {
|
|
if(res.data.token!=''){
|
|
if(res.data.is_active==0) {
|
|
this.vision = true;
|
|
}
|
|
}
|
|
},error => {})
|
|
}
|
|
},
|
|
});
|
|
},
|
|
buttonH(e){//授权成功
|
|
if(e) {
|
|
this.vision = false
|
|
this.isShowP = true
|
|
}
|
|
},
|
|
checkKF(){//查看客户列表
|
|
this.$requst.post('user/servicer-list').then(res=>{
|
|
// console.log('查询客户列表:',res);
|
|
if(res.code==0){
|
|
if(res.data.length!=0){
|
|
res.data.forEach(item=>{
|
|
let obj = {
|
|
title:item.name,
|
|
id:item.id
|
|
}
|
|
this.xialtList.push(obj)
|
|
})
|
|
this.staff_id = this.xialtList[0].id
|
|
}
|
|
}
|
|
},error=>{})
|
|
},
|
|
searchEv(){//搜索事件
|
|
this.page = 1;
|
|
this.isZanw = true;
|
|
this.checkCL(this.ntype)
|
|
},
|
|
checkLY(){//查询来源渠道事件
|
|
this.$requst.post('user/channel').then(res=>{
|
|
// console.log('来源渠道:',res);
|
|
if(res.code==0){
|
|
for (let key in res.data) {
|
|
let lyObj = {
|
|
title:res.data[key],
|
|
name:key
|
|
}
|
|
this.xialone.push(lyObj)
|
|
}
|
|
this.xialone.unshift({title:"全部",name:'all'})
|
|
this.category = this.xialone[0].title
|
|
}
|
|
},error=>{})
|
|
},
|
|
checkCL(ntype){//查询客户列表事件
|
|
this.$requst.post('user/customer',{page:this.page,size:this.size,type:ntype}).then(res=>{
|
|
// console.log('客户列表:',res);
|
|
if(res.code==0){
|
|
if(this.page==1) this.dataList = []
|
|
this.total = res.data.total
|
|
if(res.data.list.length!=0){
|
|
res.data.list.forEach(item=>{
|
|
let cuObj = {
|
|
id:item.id,
|
|
imgSrc:item.headimgurl,
|
|
name:item.nickname,
|
|
come:item.channel_text,
|
|
phone:item.mobile,
|
|
customer:item.service_name,
|
|
time:item.created_at,
|
|
qudao:item.tag[0],
|
|
service:item.service,
|
|
source_detail:item.source_detail
|
|
}
|
|
this.dataList.push(cuObj)
|
|
})
|
|
}
|
|
}
|
|
},error=>{})
|
|
},
|
|
fenCustomer(index){//分配弹框调起事件
|
|
// console.log('分配客服调起弹框');
|
|
this.isShowT = true
|
|
// 客服列表
|
|
this.customer_id = this.dataList[index].id//客户ID
|
|
if(this.xialtList.length==0) this.xialtList = ['暂无可分配客服']
|
|
},
|
|
backTop(){//回到顶部事件
|
|
uni.pageScrollTo({
|
|
scrollTop: 0,
|
|
duration: 300
|
|
});
|
|
},
|
|
comfirmev(){//立即分配执行事件
|
|
// console.log('立即分配');
|
|
this.isShowT = false
|
|
this.$requst.post('user/customer-allot',{staff_id:this.staff_id,customer_id:this.customer_id}).then(res=>{
|
|
// console.log('分配客服:',res);
|
|
if(res.code==0){
|
|
this.page = 1
|
|
this.$toolAll.tools.showToast('分配成功')
|
|
this.checkCL(this.ntype)//客户列表
|
|
}
|
|
},error=>{})
|
|
},
|
|
cancleev(){
|
|
this.isShowT = false
|
|
},
|
|
openXial(){
|
|
this.isZhuan = !this.isZhuan
|
|
// console.log('开启下拉');
|
|
},
|
|
chooseXia(index){
|
|
this.xialCurrent = index;
|
|
this.ntype = this.xialone[index].name;
|
|
console.log(this.ntype);
|
|
this.category = this.xialone[index].title;
|
|
},
|
|
chooseXiaT(e){
|
|
this.staff_id = e.id
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|