696 lines
16 KiB
JavaScript
696 lines
16 KiB
JavaScript
import _ from '../../commons/js/commons'
|
||
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
|
||
const app = getApp()
|
||
|
||
let barChartData;
|
||
let pieChartData;
|
||
|
||
function barChart(canvas, width, height, dpr) {
|
||
const chart = echarts.init(canvas, null, {
|
||
width: width,
|
||
height: height,
|
||
devicePixelRatio: dpr // new
|
||
});
|
||
canvas.setChart(chart);
|
||
let option = barChartData
|
||
chart.setOption(option);
|
||
return chart;
|
||
}
|
||
|
||
function pieChart(canvas, width, height, dpr) {
|
||
const chart = echarts.init(canvas, null, {
|
||
width: width,
|
||
height: height,
|
||
devicePixelRatio: dpr // new
|
||
});
|
||
canvas.setChart(chart);
|
||
let option = pieChartData
|
||
chart.setOption(option);
|
||
return chart;
|
||
}
|
||
|
||
Page({
|
||
data: {
|
||
isShowMain: false, //显示页面内容
|
||
imgUrl: _.config.imgUrl,
|
||
userCal: '',
|
||
deallist: '',
|
||
hoursTip: '',
|
||
showBarChart: false, //是否显示Bar图表
|
||
ecBar: {},
|
||
showPieChart: false, //是否显示Pie图表
|
||
ecPie: {},
|
||
isShowNotice: false, //是否显示通知
|
||
stopNotice: false, //是否不再显示通知
|
||
isShowReport: false, //是否显示调拨盘点弹框
|
||
isShowProfile: true, //是否显示授权用户信息按钮
|
||
isShowGoods: false, //是否显示库存预警
|
||
banneractive: 0,
|
||
banneractive2: 0,
|
||
banneractive3: 0,
|
||
remindTab: [], //调拨盘点入口
|
||
remindMsg: [], //调拨盘点弹框
|
||
levelStIndex: 0,
|
||
levelSt: [], //客户等级
|
||
isResetbiz: false, //是否重置过BIZID
|
||
isShowVersionInfo: false, //是否显示版本更新
|
||
versionInfo: {
|
||
number: 'V3.0.51',
|
||
list: [
|
||
// '',
|
||
// '',
|
||
// '',
|
||
// '',
|
||
// '',
|
||
// '',
|
||
|
||
// '修改【订单详情】页面样式及交互;',
|
||
// '修改【保单上传】的相应内容,上传后需补充相应保单信息。',
|
||
],
|
||
},
|
||
//0924 新增参数
|
||
data_bg_img: _.config.licheImgUrl + 'score/index-panel-bg.png',
|
||
icon_trend_up: _.config.licheImgUrl + 'score/score-trend-up.png',
|
||
icon_trend_down: _.config.licheImgUrl + 'score/score-trend-down.png',
|
||
icon_score_top_1: _.config.licheImgUrl + 'score/score-top-1.png',
|
||
icon_score_top_2: _.config.licheImgUrl + 'score/score-top-2.png',
|
||
icon_score_top_3: _.config.licheImgUrl + 'score/score-top-3.png',
|
||
score_index_bg_up: _.config.licheImgUrl + 'score/score-bg-up.jpg',
|
||
score_index_bg_down: _.config.licheImgUrl + 'score/score-bg-down.jpg',
|
||
score_detail_bg_up: _.config.licheImgUrl + 'score/score-detail-up.png',
|
||
score_detail_bg_down: _.config.licheImgUrl + 'score/score-detail-up.jpg',
|
||
score_up_color: '#31cbad',
|
||
score_down_color: '#ff895b',
|
||
score_trend: 1, //用这个参数控制样式:1 上升 、2 下降
|
||
score_role_tab: [{
|
||
id: 1,
|
||
name: '个人'
|
||
}, {
|
||
id: 2,
|
||
name: '门店'
|
||
}],
|
||
score_role_cur: 0,
|
||
//0924 end
|
||
biz_type_4s: 5 //门店类型4s店
|
||
},
|
||
|
||
onLoad(options) {
|
||
for (let key in options) {
|
||
this.setData({
|
||
[key]: options[key]
|
||
})
|
||
}
|
||
|
||
if (this.data.biz_id) {
|
||
let that = this
|
||
setTimeout(function () {
|
||
that.putAppUserResetbiz()
|
||
}, 500)
|
||
} else {
|
||
this.setData({
|
||
isResetbiz: true,
|
||
});
|
||
this.getUserInfo()
|
||
}
|
||
|
||
//this.getAppStatisticsHorder()
|
||
|
||
//消息通讯 是否显示授权用户信息按钮
|
||
_.eventBus.on("isShowProfile", this, function (res) {
|
||
this.setData({
|
||
isShowProfile: res,
|
||
})
|
||
})
|
||
|
||
//判断是否显示版本更新内容
|
||
if (this.data.versionInfo.list.length > 0 && app.getStorageByKey("appversion") != this.data.versionInfo.number) {
|
||
this.setData({
|
||
isShowVersionInfo: true,
|
||
})
|
||
}
|
||
|
||
},
|
||
|
||
onShow: function () {
|
||
|
||
this.getHoursTip()
|
||
//确保bizID重置完成再执行
|
||
if (this.data.isResetbiz) {
|
||
this.setData({
|
||
remindTab: [],
|
||
remindMsg: [],
|
||
isShowReport: false, //是否显示调拨盘点弹框
|
||
isShowGoods: false,
|
||
});
|
||
this.getAppUserCal()
|
||
this.getScore()
|
||
// this.getAppTransferRemind()
|
||
// this.getAppInventoryRemind()
|
||
// this.getAppGoodsRemind()
|
||
// this.getAppStatisticsHcust()
|
||
}
|
||
|
||
},
|
||
|
||
//生命周期函数--监听页面卸载
|
||
onUnload: function () {
|
||
//卸载消息通讯 是否显示授权用户信息
|
||
_.eventBus.remove('isShowProfile', this);
|
||
},
|
||
|
||
|
||
//候取时间
|
||
getHoursTip() {
|
||
let hoursTip = '';
|
||
let date = new Date();
|
||
if (date.getHours() >= 0 && date.getHours() < 12) {
|
||
hoursTip = "上午好!"
|
||
} else if (date.getHours() >= 12 && date.getHours() < 18) {
|
||
hoursTip = "下午好!"
|
||
} else {
|
||
hoursTip = "!"
|
||
}
|
||
this.setData({
|
||
hoursTip: hoursTip
|
||
})
|
||
},
|
||
|
||
//更新用户店铺id
|
||
putAppUserResetbiz() {
|
||
let params = {};
|
||
let that = this;
|
||
params['biz_id'] = this.data.biz_id;
|
||
_.apiQuery.putAppUserResetbiz(params).then(res => {
|
||
this.setData({
|
||
isResetbiz: true,
|
||
});
|
||
this.getUserInfo()
|
||
this.getAppUserCal()
|
||
setTimeout(function () {
|
||
that.getScore()
|
||
}, 500)
|
||
// this.getAppTransferRemind()
|
||
// this.getAppInventoryRemind()
|
||
// this.getAppGoodsRemind()
|
||
// this.getAppStatisticsHcust()
|
||
});
|
||
},
|
||
|
||
//调拨提醒
|
||
getAppTransferRemind() {
|
||
_.apiQuery.getAppTransferRemind().then(res => {
|
||
this.setData({
|
||
diaoboNum: res.data.total,
|
||
})
|
||
if (res.data.total > 0) {
|
||
let remindTab = this.data.remindTab
|
||
remindTab.push({
|
||
title: '车辆调拨',
|
||
content: '您有新的车辆调拨,需要您进行确认操作。',
|
||
img: 'https://qs.liche.cn/lichebao/allot/car.gif?v=220224',
|
||
url: '/pages/allot/list/index',
|
||
allotNum: res.data.total,
|
||
})
|
||
let remindMsg = this.data.remindMsg
|
||
remindMsg.push({
|
||
title: '调拨提醒',
|
||
content: '您有新的车辆调拨,需要您进行确认操作。',
|
||
img: 'https://qs.liche.cn/lichebao/allot/car.gif?v=220224',
|
||
btn: {
|
||
title: '前往操作',
|
||
url: '/pages/allot/list/index',
|
||
},
|
||
})
|
||
this.setData({
|
||
remindTab,
|
||
remindMsg,
|
||
isShowReport: true,
|
||
isShowNotice: false,
|
||
isShowGoods: false,
|
||
})
|
||
}
|
||
});
|
||
},
|
||
|
||
//盘点提醒
|
||
getAppInventoryRemind() {
|
||
_.apiQuery.getAppInventoryRemind().then(res => {
|
||
this.setData({
|
||
pandianNum: res.data.total,
|
||
})
|
||
if (res.data.total > 0) {
|
||
let remindTab = this.data.remindTab
|
||
remindTab.push({
|
||
title: '车辆盘点',
|
||
content: '您有新的车辆调拨,需要您进行确认操作。',
|
||
img: 'https://qs.liche.cn/lichebao/inventory/icon.png',
|
||
url: '/pages/inventory/list/index',
|
||
allotNum: res.data.total,
|
||
})
|
||
let remindMsg = this.data.remindMsg
|
||
remindMsg.push({
|
||
title: '盘点提醒',
|
||
content: '您有新的车辆盘点,需要您进行确认操作。',
|
||
img: 'https://qs.liche.cn/lichebao/inventory/animation.gif',
|
||
btn: {
|
||
title: '前往操作',
|
||
url: '/pages/inventory/list/index',
|
||
},
|
||
})
|
||
this.setData({
|
||
remindTab,
|
||
remindMsg,
|
||
isShowReport: true,
|
||
isShowNotice: false,
|
||
isShowGoods: false,
|
||
})
|
||
}
|
||
});
|
||
},
|
||
|
||
//库存提醒/预警
|
||
getAppGoodsRemind() {
|
||
_.apiQuery.getAppGoodsRemind().then(res => {
|
||
this.setData({
|
||
inventory: res.data.inventory,
|
||
warning: res.data.warning,
|
||
})
|
||
if (res.data.warning.list && res.data.warning.list.length > 0) {
|
||
if (!app.getStorageByKey("showGoods") || app.getStorageByKey("showGoods").data != new Date().getDate()) {
|
||
//清除
|
||
wx.removeStorageSync('showGoods')
|
||
this.setData({
|
||
isShowGoods: true,
|
||
})
|
||
let showGoods = {}
|
||
if (this.data.biz_id) {
|
||
showGoods.data = new Date().getDate()
|
||
showGoods.list = [{
|
||
biz_id: this.data.biz_id,
|
||
num: 1,
|
||
}]
|
||
} else {
|
||
showGoods.data = new Date().getDate()
|
||
showGoods.list = [{
|
||
biz_id: 'b1',
|
||
num: 1,
|
||
}]
|
||
}
|
||
app.setStorage('showGoods', showGoods)
|
||
} else {
|
||
let showGoods = app.getStorageByKey("showGoods")
|
||
let index = -1
|
||
if (this.data.biz_id) {
|
||
showGoods.list.forEach((item, i) => {
|
||
if (item.biz_id == this.data.biz_id) {
|
||
index = i
|
||
item.num = item.num + 1
|
||
}
|
||
})
|
||
} else {
|
||
showGoods.list.forEach((item, i) => {
|
||
if (item.biz_id == 'b1') {
|
||
index = i
|
||
item.num = item.num + 1
|
||
}
|
||
})
|
||
}
|
||
if (index > -1) {
|
||
if (showGoods.list[index].num < 4) {
|
||
this.setData({
|
||
isShowGoods: true,
|
||
})
|
||
app.setStorage('showGoods', showGoods)
|
||
}
|
||
} else {
|
||
this.setData({
|
||
isShowGoods: true,
|
||
})
|
||
if (this.data.biz_id) {
|
||
showGoods.list.push({
|
||
biz_id: this.data.biz_id,
|
||
num: 1,
|
||
})
|
||
} else {
|
||
showGoods.list.push({
|
||
biz_id: 'b1',
|
||
num: 1,
|
||
})
|
||
}
|
||
app.setStorage('showGoods', showGoods)
|
||
}
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
//获取用户信息
|
||
getUserInfo() {
|
||
_.apiQuery.getUserInfo().then(res => {
|
||
this.setData({
|
||
userInfo: res
|
||
})
|
||
if (res.group_id > 2) {
|
||
this.setData({
|
||
score_role_cur: 1
|
||
})
|
||
}
|
||
});
|
||
},
|
||
|
||
//获取用户统计
|
||
getAppUserCal() {
|
||
let params = {};
|
||
if (this.data.biz_id) {
|
||
params['biz_id'] = this.data.biz_id;
|
||
}
|
||
_.apiQuery.getAppUserCal(params).then(res => {
|
||
this.setData({
|
||
isShowMain: true,
|
||
userCal: res.data,
|
||
levelSt: res.data.levelSt,
|
||
})
|
||
|
||
if (res.data.deallist.length > 0) {
|
||
let deallist = res.data.deallist
|
||
if (res.data.deallist.length % 2 == 1) {
|
||
deallist.push({})
|
||
}
|
||
this.setData({
|
||
deallist: deallist,
|
||
})
|
||
}
|
||
|
||
wx.stopPullDownRefresh()
|
||
|
||
});
|
||
},
|
||
|
||
//数据分析-客户数据
|
||
getAppStatisticsHcust() {
|
||
this.setData({
|
||
showPieChart: false,
|
||
})
|
||
let params = {};
|
||
if (this.data.biz_id) {
|
||
params['biz_id'] = this.data.biz_id;
|
||
}
|
||
_.apiQuery.getAppStatisticsHcust(params).then(res => {
|
||
|
||
pieChartData = res.data.stat_data
|
||
pieChartData.series.label = {
|
||
formatter: '\n{b|{b}}\n{c|{c}}\n{per|{d}%} ',
|
||
rich: {
|
||
b: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
c: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
per: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
}
|
||
}
|
||
|
||
this.setData({
|
||
cust_total: res.data.total,
|
||
cust_cont_total: res.data.cont_total,
|
||
cust_top_total: res.data.top_total,
|
||
showPieChart: true,
|
||
['ecPie.onInit']: pieChart,
|
||
})
|
||
|
||
wx.stopPullDownRefresh()
|
||
|
||
});
|
||
},
|
||
|
||
//数据分析-订单数据
|
||
getAppStatisticsHorder() {
|
||
this.setData({
|
||
showBarChart: false,
|
||
})
|
||
let params = {};
|
||
if (this.data.biz_id) {
|
||
params['biz_id'] = this.data.biz_id;
|
||
}
|
||
_.apiQuery.getAppStatisticsHorder(params).then(res => {
|
||
|
||
barChartData = res.data.stat_data
|
||
this.setData({
|
||
order_total: res.data.total,
|
||
showBarChart: true,
|
||
['ecBar.onInit']: barChart,
|
||
})
|
||
|
||
wx.stopPullDownRefresh()
|
||
|
||
});
|
||
},
|
||
|
||
//推送链接
|
||
pushLink(e) {
|
||
if (e.currentTarget.dataset.url) {
|
||
_.$router.openUrlScheme(e.currentTarget.dataset.url)
|
||
}
|
||
},
|
||
|
||
//客服电话
|
||
call(e) {
|
||
wx.makePhoneCall({
|
||
phoneNumber: '18965133055',
|
||
})
|
||
},
|
||
|
||
//不再提示
|
||
checkNotice(e) {
|
||
this.setData({
|
||
stopNotice: !this.data.stopNotice,
|
||
})
|
||
},
|
||
|
||
//关闭通知
|
||
closeNotice() {
|
||
if (this.data.stopNotice) {
|
||
app.setStorage('stopNotice', 'true')
|
||
}
|
||
this.setData({
|
||
isShowNotice: false,
|
||
})
|
||
},
|
||
|
||
//公众号关注组件
|
||
officialaccount(e) {
|
||
if (e.detail.status == 0 && !app.getStorageByKey("stopNotice") && !this.data.isShowReport) {
|
||
// this.setData({
|
||
// isShowNotice:true,
|
||
// })
|
||
}
|
||
},
|
||
|
||
//显示隐藏调拨盘点弹窗
|
||
optShowReport(e) {
|
||
this.setData({
|
||
isShowReport: !this.data.isShowReport,
|
||
})
|
||
},
|
||
//显示隐藏库存预警弹窗
|
||
optShowGoods(e) {
|
||
this.setData({
|
||
isShowGoods: !this.data.isShowGoods,
|
||
})
|
||
},
|
||
|
||
//开发中
|
||
development() {
|
||
wx.showToast({
|
||
title: '暂无数据',
|
||
icon: 'none',
|
||
duration: 2000
|
||
})
|
||
},
|
||
|
||
//调拨盘点轮播点
|
||
bannerChange: function (e) {
|
||
this.setData({
|
||
banneractive: e.detail.current,
|
||
});
|
||
},
|
||
//banner轮播点
|
||
bannerChange2: function (e) {
|
||
this.setData({
|
||
banneractive2: e.detail.current,
|
||
});
|
||
},
|
||
//库存预警轮播点
|
||
bannerChange3: function (e) {
|
||
this.setData({
|
||
banneractive3: e.detail.current,
|
||
});
|
||
},
|
||
|
||
//关闭版本提示
|
||
closeVersionInfo() {
|
||
this.setData({
|
||
isShowVersionInfo: false,
|
||
})
|
||
app.setStorage('appversion', this.data.versionInfo.number)
|
||
},
|
||
|
||
//切换tab
|
||
changeTab(e) {
|
||
this.setData({
|
||
levelStIndex: e.currentTarget.dataset.index,
|
||
})
|
||
},
|
||
|
||
//0924
|
||
changeScoreRoleTab(e) {
|
||
this.setData({
|
||
score_role_cur: parseInt(e.currentTarget.dataset.index)
|
||
})
|
||
this.getScore()
|
||
},
|
||
//加载最新运营分
|
||
getScore() {
|
||
let params = {};
|
||
if (this.data.score_role_cur) {
|
||
params['type'] = 1;
|
||
}
|
||
_.apiQuery.getAppScore(params).then(res => {
|
||
this.setData({
|
||
scoreData: res.data,
|
||
score_trend: res.data.score_trend,
|
||
})
|
||
})
|
||
},
|
||
//页面相关事件处理函数--监听用户下拉动作
|
||
onPullDownRefresh: function () {
|
||
this.setData({
|
||
remindTab: [],
|
||
remindMsg: [],
|
||
isShowReport: false, //是否显示调拨盘点弹框
|
||
isShowGoods: false,
|
||
});
|
||
this.getAppUserCal()
|
||
this.getAppStatisticsHcust()
|
||
this.getScore()
|
||
//this.getAppStatisticsHorder()
|
||
// this.getAppTransferRemind()
|
||
// this.getAppInventoryRemind()
|
||
// this.getAppGoodsRemind()
|
||
},
|
||
|
||
})
|
||
|
||
function getPieOption() {
|
||
return {
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
},
|
||
legend: {
|
||
top: 'bottom',
|
||
orient: 'horizontal',
|
||
textStyle: {
|
||
fontSize: 9,
|
||
}
|
||
},
|
||
|
||
series: [{
|
||
type: 'pie',
|
||
top: '0',
|
||
radius: ['30%', '48%'],
|
||
data: [{
|
||
value: 1048,
|
||
name: '未见潜客'
|
||
},
|
||
{
|
||
value: 735,
|
||
name: '到店潜客'
|
||
},
|
||
{
|
||
value: 580,
|
||
name: '订单客户'
|
||
},
|
||
{
|
||
value: 484,
|
||
name: '战败客户'
|
||
},
|
||
],
|
||
label: {
|
||
formatter: '\n{b|{b}}\n{c|{c}}\n{per|{d}%} ',
|
||
rich: {
|
||
b: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
c: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
per: {
|
||
color: '#4C5058',
|
||
fontSize: 10,
|
||
lineHeight: 15,
|
||
align: 'left',
|
||
},
|
||
}
|
||
},
|
||
}]
|
||
};
|
||
}
|
||
|
||
function getBarOption() {
|
||
return {
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
}
|
||
},
|
||
grid: {
|
||
top: '8%',
|
||
left: '2%',
|
||
right: '5%',
|
||
bottom: '2%',
|
||
containLabel: true
|
||
},
|
||
xAxis: {
|
||
type: 'value',
|
||
boundaryGap: [0, 0.01]
|
||
},
|
||
yAxis: {
|
||
type: 'category',
|
||
data: ['恭喜提车', '保险上牌', '已开发票', '车辆确认', '配车准备', '申请退款', '办理按揭', '已交定金', '已签合同', ],
|
||
},
|
||
series: [{
|
||
type: 'bar',
|
||
itemStyle: {
|
||
color: '#2e3246',
|
||
borderRadius: [0, 20, 20, 0],
|
||
},
|
||
barWidth: '15',
|
||
data: [33, 23, 29, 18, 23, 29, 18, 23, 29, ],
|
||
label: {
|
||
show: true,
|
||
position: 'right',
|
||
formatter: '{@[n]}',
|
||
valueAnimation: true
|
||
}
|
||
}, ]
|
||
};
|
||
} |