Files
lichebao/pages/customer/index.js
T
2023-03-01 09:51:29 +08:00

1006 lines
22 KiB
JavaScript

import _ from '../../commons/js/commons'
import popularData from '../../commons/js/lib/popularData';
const app = getApp()
Page({
data: {
key:'',//tab状态值
list: [],//客户列表
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag:1,
cus_id:'',//客户编号
name:'',//名字
mobile:'',//手机号
s_time:'',//开始时间
e_time:'',//结束时间
if_driver:'',//是否试驾
level:'',//客户顶级
// brand_id:'',//品牌
// s_id:'',//车型id
// v_id:'',//车辆版本id
cfrom:'',//客户来源
o_type:'',//排序类型
isShowfilter:false,//是否显示筛查
timeSlotIndex:-1,//常用时间索引
s_visit_time:'',//跟进时间段开始
e_visit_time:'',//跟进时间段结束
timeSlot:[//常用时间数组
{
title:'今天',
},
{
title:'明天',
},
{
title:'未来三天',
},
{
title:'未来七天',
},
],
testDriveIndex:-1,//是否试驾索引
testDrive:[//是否试驾数组
{
title:'全部',
},
{
title:'是',
},
{
title:'否',
},
],
sortList:['建卡日期','最近联系','特别关注',],//排序数组
sortListIndex:0,//排序索引
levelIndex:-1,//意向等级索引
brandIndex:-1,//车辆品牌索引
modelIndex:-1,//车系车型索引
cfromIndex:-1,//客户来源索引
isShowMessage:false,//是否显示短信弹窗
content:'',//短信内容
isRefresh:false,//判断返回是否需要刷新
isShowMobile: false,
staffArray: [],
staffobj: [],
staffIndex:-1,
userInfo:'',
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
cid:[],//分配客户ID
employee_id:'',//分配销售ID
employeeIndex:-1,//分配销售索引
isShowTimePicker:false,
weekList:['日','一','二','三','四','五','六'],
dateList:[],
nextIndex:-1,//计划回访时间
distTabId:1,
distBizIndex:-1,
distBiz_id:'',
bizArray: [],
bizobj: [],
tag_ids:'',
},
onLoad(options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
this.setData({
userInfo:app.getStorageByKey("userInfo"),
})
//客户-tab
this.getAppCustomersTabs()
//获取列表筛选条件
this.getAppCustomersFilter()
//获取车型品牌
//this.getAppSeriesBrands()
//销售顾问
this.getAppUserAdmins()
//客户来源
this.getAppCustomersOffline_sources()
this.getTimePicker()
this.getAppCustomersTag()
},
onShow(){
//获取常用时间段
this.getDateLater()
},
//客户-tab
getAppCustomersTabs() {
_.apiQuery.getAppCustomersTabs().then(res => {
this.setData({
tab:res.data,
key:this.data.key==''?res.data[0].key:this.data.key,
})
this.getAppCustomersList()
wx.stopPullDownRefresh()
});
},
//获取销售顾问
getAppUserAdmins(){
let params = {};
params['page'] = 1;
params['size'] = 1000;
_.apiQuery.getAppUserAdmins(params).then(res => {
let staffArray = []
res.data.list.forEach(item => {
staffArray.push(item.uname)
})
let bizArray = []
res.data.bizs.forEach(item => {
bizArray.push(item.name)
})
this.setData({
staffArray:staffArray,
staffobj: res.data.list,
distributetabs:res.data.tabs,
bizArray:bizArray,
bizobj: res.data.bizs,
})
});
},
//切换tab
changeTab(e){
this.setData({
key: this.data.tab[e.currentTarget.dataset.index].key,
})
this.searchSubmit()
},
// 显示弹框
showMobileMsg(){
this.setData({
isShowMobile: true
})
},
//获取列表筛选条件
getAppCustomersFilter(){
_.apiQuery.getAppCustomersFilter().then(res => {
this.setData({
filter:res.data,
})
});
},
//获取车型品牌
getAppSeriesBrands(){
_.apiQuery.getAppSeriesBrands().then(res => {
if(res.data.list.length>0){
let brandArray = []
res.data.list.forEach(item => {
brandArray.push(item.name)
})
this.setData({
brandArray:brandArray,
brandList:res.data.list,
})
}
});
},
//获取车系车型
getAppSeries(){
let params = {};
params['brand_id'] = this.data.brand_id;
_.apiQuery.getAppSeries(params).then(res => {
if(res.data.list.length>0){
let modelArray = []
res.data.list.forEach(item => {
modelArray.push(item.name)
})
this.setData({
modelArray:modelArray,
modelList:res.data.list,
})
}
});
},
//选择人员
changeStaff(e) {
this.setData({
staffIndex: e.detail.value
})
},
//获取客户列表
getAppCustomersList() {
this.setData({
load: false,
loading: true,
})
let admin_ids = ''
this.data.staffobj.forEach(item => {
if(item.checked){
if(admin_ids==''){
admin_ids=item.id
}else{
admin_ids=admin_ids+','+item.id
}
}
})
let params = {};
params['page'] = this.data.pageNo;
params['size'] = 3;
params['status'] = this.data.key;
if(this.data.cus_id != ''){
params['cus_id'] = this.data.cus_id;
}
if(this.data.name != ''){
params['name'] = this.data.name;
}
if(this.data.mobile != ''){
params['mobile'] = this.data.mobile;
}
if(this.data.s_time != ''&&this.data.e_time != ''){
params['s_time'] = this.data.s_time;
params['e_time'] = this.data.e_time;
}
if(this.data.if_driver != ''){
params['if_driver'] = this.data.if_driver;
}
if(this.data.level != ''){
params['level'] = this.data.level;
}
// if(this.data.brand_id != ''){
// params['brand_id'] = this.data.brand_id;
// }
// if(this.data.s_id != ''){
// params['s_id'] = this.data.s_id;
// }
// if(this.data.v_id != ''){
// params['v_id'] = this.data.v_id;
// }
if(this.data.cfrom != ''){
params['cfrom'] = this.data.cfrom;
}
if(this.data.o_type != ''){
params['o_type'] = this.data.o_type;
}
if(this.data.of_id != ''){
params['of_id'] = this.data.of_id;
}
if(this.data.of2_id != ''){
params['of2_id'] = this.data.of2_id;
}
if(admin_ids!=''){
params['admin_ids'] = admin_ids;
}
if(this.data.tag_ids!=''){
params['tag_ids'] = this.data.tag_ids;
}
// if(this.data.staffIndex>-1){
// params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
// }
if(this.data.s_visit_time != ''&&this.data.e_visit_time != ''){
params['s_visit_time'] = this.data.s_visit_time;
params['e_visit_time'] = this.data.e_visit_time;
}
_.apiQuery.getAppCustomersList(params).then(res => {
this.setData({
flag: this.data.flag - 1
})
if (!this.data.flag) {
this.setData({
total: res.data.total,
pageNo: this.data.pageNo + 1,
list: this.data.list.concat(res.data.list),
load: true,
loading: false,
})
if (res.data.total == 0) {
this.setData({
noData: true
})
} else if (this.data.list.length == res.data.total) {
this.setData({
end: true
})
}
}
wx.stopPullDownRefresh()
});
},
//置顶操作
optTop(e){
let params = {};
params['id'] = this.data.list[e.currentTarget.dataset.index].id;
params['is_top'] = this.data.list[e.currentTarget.dataset.index].is_top==1?0:1;
_.apiQuery.putAppCustomers(params).then(res=>{
this.setData({
['list['+e.currentTarget.dataset.index+'].is_top']:this.data.list[e.currentTarget.dataset.index].is_top==1?0:1,
})
})
},
//获取常用时间段
getDateLater(){
popularData.getDateLater(0,0).then(res => {
this.setData({
today:res,
})
})
popularData.getDateLater(-1,0).then(res => {
this.setData({
tomorrow:res,
})
})
popularData.getDateLater(-3,2).then(res => {
this.setData({
next3:res,
})
})
popularData.getDateLater(-7,6).then(res => {
this.setData({
next7:res,
})
})
// popularData.getDateLater(0,6).then(res => {
// this.setData({
// last7:res,
// })
// })
// popularData.getDateLater(0,29).then(res => {
// this.setData({
// last30:res,
// })
// })
},
//拨打客户电话xz
call(e) {
let params = {};
params['id'] = e.currentTarget.dataset.id;
params['type'] = 0;
_.apiQuery.getAppXz(params).then(res=>{
wx.makePhoneCall({
phoneNumber: res.data.mobile,
})
})
},
//提交搜索
searchSubmit(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag: this.data.flag + 1
})
this.getAppCustomersList()
},
//排序方式
changeSortList(e){
let o_type = ''
if(e.detail.value == 0){
o_type = 1
}else if(e.detail.value == 1){
o_type = 2
}
this.setData({
o_type: o_type,
sortListIndex: e.detail.value,
})
this.searchSubmit()
},
//建卡时间
startDate(e){
this.setData({
s_time: e.detail.value,
})
},
//建卡时间
endDate(e){
this.setData({
e_time: e.detail.value,
})
},
//单选
radioPicker(e){
if(e.currentTarget.dataset.type == 'timeSlot'){
this.setData({
timeSlotIndex:e.currentTarget.dataset.index,
})
switch (e.currentTarget.dataset.index) {
case 0:
this.setData({
s_visit_time:this.data.today[0],
e_visit_time:this.data.today[1],
})
break;
case 1:
this.setData({
s_visit_time:this.data.tomorrow[0],
e_visit_time:this.data.tomorrow[1],
})
break;
case 2:
this.setData({
s_visit_time:this.data.next3[0],
e_visit_time:this.data.next3[1],
})
break;
case 3:
this.setData({
s_visit_time:this.data.next7[0],
e_visit_time:this.data.next7[1],
})
break;
}
} else if(e.currentTarget.dataset.type == 'testDrive'){
let if_driver = ''
if(e.currentTarget.dataset.index == 1){
if_driver = 1
}else if(e.currentTarget.dataset.index == 2){
if_driver = 0
}
this.setData({
if_driver:if_driver,
testDriveIndex:e.currentTarget.dataset.index,
})
}
},
//客户等级
changeLevel(e){
let level = ''
if(e.detail.value >= 0){
level = this.data.filter.level[e.detail.value]
}
this.setData({
level:level,
levelIndex: e.detail.value,
})
},
//选择品牌
changeBrand(e) {
if(this.data.brandIndex != e.detail.value && e.detail.value >= 0){
this.setData({
brand_id:this.data.brandList[e.detail.value].id,
brandIndex:e.detail.value,
s_id:'',//车系id
modelIndex:-1,//车系车型索引
})
this.getAppSeries()
}
},
//选择车型
changeModel(e) {
if(this.data.modelIndex != e.detail.value && e.detail.value >= 0){
this.setData({
s_id:this.data.modelList[e.detail.value].id,
modelIndex:e.detail.value,
})
}
},
//客户来源
changeCfrom(e){
let cfrom = ''
if(e.detail.value >= 0){
cfrom = this.data.filter.cfrom[e.detail.value]
}
this.setData({
cfrom:cfrom,
cfromIndex: e.detail.value,
})
},
//显示隐藏高级搜索
optfilter(){
this.setData({
isShowfilter: !this.data.isShowfilter
})
this.resetFilter()
},
//显示高级搜索
showfilter(){
this.setData({
isShowfilter:true,
})
},
//确定高级搜索
submitFilter() {
this.setData({
isShowfilter:false,
})
this.searchSubmit()
},
//重置高级搜索
resetFilter() {
let staffobj = this.data.staffobj
staffobj.forEach(item => {
item.checked = false
})
this.setData({
staffobj,
cus_id:'',//编号
name:'',//名字
mobile:'',//手机号
s_time:'',
e_time:'',
if_driver:'',
level:'',
// brand_id:'',
// s_id:'',
cfrom:'',
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
timeSlotIndex:-1,
s_visit_time:'',//跟进时间段开始
e_visit_time:'',//跟进时间段结束
testDriveIndex:-1,
levelIndex:-1,
brandIndex:-1,
modelIndex:-1,
cfromIndex:-1,
staffIndex:-1,
tag_ids:'',
})
this.getAppCustomersTag()
},
//显示短信弹框
showMessage(e){
this.setData({
messageId:e.currentTarget.dataset.id,
isShowMessage:true,
content:'',
})
},
//关闭短信弹框
hideMessage(e){
this.setData({
isShowMessage:false,
})
},
//输入
inputTx(e) {
this.setData({
submitFlag: false,
[e.currentTarget.dataset.key]: e.detail.value
})
},
//发短信
postAppSmsCustomer(){
if (this.data.submitFlag) return;
if (this.data.content == '') {
wx.showToast({
title: '请填写短信内容',
icon: 'none'
})
} else {
this.setData({
submitFlag: true,
})
let params = {};
params['id'] = this.data.messageId;
params['content'] = this.data.content;
_.apiQuery.postAppSmsCustomer(params).then(res=>{
this.setData({
isShowMessage:false,
submitFlag:false,
content:'',
})
wx.showToast({
title: res.msg,
icon: 'none'
})
})
}
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//客户来源
getAppCustomersOffline_sources(){
_.apiQuery.getAppCustomersOffline_sources().then(res => {
let of1Arr = []
res.data.sources.forEach(item => {
of1Arr.push(item.name)
})
this.setData({
of1Arr,
sources:res.data.sources
})
});
},
//客户来源
changeOf1(e) {
if(this.data.of1Index!=e.detail.value){
let of2Arr = []
this.data.sources[e.detail.value].list.forEach(item => {
of2Arr.push(item.name)
})
this.setData({
of2Arr,
of2Index:-1,
of_id:this.data.sources[e.detail.value].id,
of1Index:e.detail.value,
})
}
},
changeOf2(e) {
if(this.data.of2Index!=e.detail.value){
this.setData({
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
of2Index:e.detail.value,
})
}
},
//销售弹窗显示隐藏
optEmployees(e){
if(e.currentTarget.dataset.cid){
this.setData({
isShowEmployees:true,
employeeIndex:-1,
employee_id:'',
cid:[e.currentTarget.dataset.cid],
optLevel:e.currentTarget.dataset.level,
})
}else{
this.setData({
isShowEmployees:!this.data.isShowEmployees,
employeeIndex:-1,
employee_id:'',
cid:[],
optLevel:'',
nextIndex:-1,
distTabId:1,
distBiz_id:'',
distBizIndex:-1,
})
}
},
//选择店员
changeEmployee(e) {
let employee_id = ''
if(e.detail.value >= 0){
employee_id = this.data.staffobj[e.detail.value].id
}
this.setData({
employee_id,
employeeIndex:e.detail.value,
})
},
//分配客户
putAppCustomersAdmins(){
let that = this
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
wx.showToast({
title: '请选择店员',
icon: 'none'
})
}
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
wx.showToast({
title: '请选择计划回访时间',
icon: 'none'
})
}
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
wx.showToast({
title: '请选择门店',
icon: 'none'
})
}
else{
that.setData({
submitFlag: true,
})
let params = {};
params['ids'] = that.data.cid;
if(that.data.distTabId==1){
params['admin_id'] = that.data.employee_id;
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
}
if(that.data.distTabId==2){
params['biz_id'] = that.data.distBiz_id;
}
_.apiQuery.putAppCustomersAdmins(params).then(res => {
wx.showToast({
title: '分配成功',
icon: 'success',
duration: 2000
})
that.setData({
isShowEmployees:false,
submitFlag:false,
nextIndex:-1,
})
that.onPullDownRefresh()
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
},
//候取当前月日历
getTimePicker(){
let date = new Date();
let cYear = date.getFullYear(); //年份
let cMonth = date.getMonth()+1; //当前月份
let cDay = date.getDate();//当前日期
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
let days = new Date(cYear,cMonth,-1)
let cn = days.getDate()+1 //当月天数
let rn = ''//上个月天数
if (cMonth === 1) {
rn = 31
} else {
rn = new Date(cYear,cMonth-1,-1).getDate()+1
}
let dateList = []
for(let i=0;i<fweek;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 1?cYear-1:cYear,
month:cMonth == 1?12:cMonth-1,
day:rn-i,
})
}
for(let i=1;i<=cn;i++){
dateList.push({
isopt:false,
checked:false,
year:cYear,
month:cMonth,
day:i
})
}
if((cn-cDay)>14){//相差15天以上不用特意补下个月
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
let sbu = 6 - lweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}else{
let zbu = 15 - (cn-cDay) //至少要补多少天
let bweek = ''//至少要补的最后一天星期几
if(cMonth==12){
bweek = new Date(cYear+1,1,zbu).getDay()
}else{
bweek = new Date(cYear,cMonth,zbu).getDay()
}
let sbu = zbu + 6 - bweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}
this.setData({
cYear,
cMonth,
cDay,
dateList,
})
},
//显示隐藏时间选择器
optShowTimePicker(){
this.setData({
isShowTimePicker:!this.data.isShowTimePicker,
})
let kd = 15 //可操作天数
if(this.data.optLevel=='H'){
kd = 3
}else if(this.data.optLevel=='A'){
kd = 7
}else if(this.data.optLevel=='B'){
kd = 15
}
let cindex = ''
let dateList = this.data.dateList
dateList.forEach((item,index) => {
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
cindex = index
}
})
dateList.forEach((item,index) => {
item.isopt = false
if(cindex<=index&&index<cindex+kd+1){
item.isopt = true
}
})
this.setData({
dateList,
})
},
//选择计划回访时间
optday(e){
if(this.data.nextIndex != e.currentTarget.dataset.index){
this.setData({
nextIndex:e.currentTarget.dataset.index,
})
}
},
//切换分配本地,其他门店
changeDistTab(e){
this.setData({
distTabId:e.currentTarget.dataset.id,
employeeIndex:-1,
employee_id:'',
nextIndex:-1,
distBiz_id:'',
distBizIndex:-1,
})
},
//分配选择门店
changeDistBiz(e) {
let distBiz_id = ''
if(e.detail.value >= 0){
distBiz_id = this.data.bizobj[e.detail.value].id
}
this.setData({
distBiz_id,
distBizIndex:e.detail.value,
})
},
//多选
checkPicker(e){
this.setData({
['staffobj['+e.currentTarget.dataset.index+'].checked']:!this.data.staffobj[e.currentTarget.dataset.index].checked,
})
},
//客户标签
getAppCustomersTag(){
_.apiQuery.getAppCustomersTag().then(res => {
this.setData({
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
})
});
},
//单选
tagRadioPicker(e){
let taglList = this.data.taglList
taglList[e.currentTarget.dataset.i].list.forEach(item => {
item.checked=false
})
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
this.setData({
taglList,
})
this.tagforEach()
},
//多选
tagCheckPicker(e){
this.setData({
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
})
this.tagforEach()
},
//tag遍历
tagforEach(){
let taglList = this.data.taglList
let tag_ids = ''
taglList.forEach(itemA => {
itemA.list.forEach(itemB => {
if(itemB.checked){
itemA.have=true
if(tag_ids==''){
tag_ids=itemB.id
}else{
tag_ids=tag_ids+','+itemB.id
}
}
})
})
this.setData({
tag_ids,
taglList,
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag: this.data.flag + 1
})
this.getAppCustomersList()
},
//页面上拉触底事件的处理函数
onReachBottom(){
if (this.data.noData || this.data.end||!this.data.load) return;
this.setData({
flag: this.data.flag + 1
})
this.getAppCustomersList()
},
})