狸车宝

This commit is contained in:
老叶
2021-09-16 18:11:32 +08:00
parent c90837fede
commit d552ecea8e
30 changed files with 533 additions and 308 deletions
+11
View File
@@ -56,6 +56,17 @@ api = {
appFinance: "app/finance", //获取金融产品列表
appFinanceNums: "app/finance/nums", //获取金融分期期数
appUserBizs: "app/user/bizs", //获取管理门店
appStatisticsCust: "app/statistics/cust", //获取渠道客户统计
appStatisticsOrders: "app/statistics/orders", //获取渠道订单统计
appUserAdmins: "app/user/admins", //获取门店管理员
appStatisticsScust: "app/statistics/scust", //数据分析-客户数据
appStatisticsOcust: "app/statistics/ocust", //数据分析-订单数据
appStatisticsHcust: "app/statistics/hcust", //首页-客户图标数据
appStatisticsHorder: "app/statistics/horder", //首页-订单图表数据
appUserResetbiz: "app/user/resetbiz", //更新用户店铺id
}
+64 -1
View File
@@ -5,7 +5,7 @@ let apiQuery = Object.assign({});
apiQuery.asyncLogin = asyncLogin;
apiQuery.getUserInfo = function (params,isLoading=true) {
apiQuery.getUserInfo = function (params,isLoading=false) {
return new Promise(function (resolve, reject) {
HttpRequest(isLoading, Config.api.appUser, 2, params, "GET", function (res) {
app.setStorage("userInfo", res.data);
@@ -369,4 +369,67 @@ apiQuery.getAppFinanceNums = function(params){
})
}
//获取管理门店
apiQuery.getAppUserBizs = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appUserBizs, 2, params, "GET", resolve, reject)
})
}
//获取渠道客户统计
apiQuery.getAppStatisticsCust = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsCust, 2, params, "GET", resolve, reject)
})
}
//获取渠道订单统计
apiQuery.getAppStatisticsOrders = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsOrders, 2, params, "GET", resolve, reject)
})
}
//获取门店管理员
apiQuery.getAppUserAdmins = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appUserAdmins, 2, params, "GET", resolve, reject)
})
}
//数据分析-客户数据
apiQuery.getAppStatisticsScust = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsScust, 2, params, "GET", resolve, reject)
})
}
//数据分析-订单数据
apiQuery.getAppStatisticsOcust = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsOcust, 2, params, "GET", resolve, reject)
})
}
//首页-客户图标数据
apiQuery.getAppStatisticsHcust = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsHcust, 2, params, "GET", resolve, reject)
})
}
//首页-订单图表数据
apiQuery.getAppStatisticsHorder = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsHorder, 2, params, "GET", resolve, reject)
})
}
//更新用户店铺id
apiQuery.putAppUserResetbiz = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appUserResetbiz, 2, params, "PUT", resolve, reject)
})
}
export default apiQuery;
+1 -1
View File
@@ -18,7 +18,7 @@ Component({
lifetimes: {
//在组件实例进入页面节点树时执行
attached: function () {
if(app.getStorageByKey("userInfo").group_id==2){
if(app.getStorageByKey("userInfo").group_id==4){
this.setData({
isAdmin:true,
})
+6 -6
View File
@@ -15,20 +15,20 @@ Component({
list: [
{
"url": "/pages/channel/index",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-home.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-home-ac.png",
"icon": "tab-home",
"activeIcon": "tab-home-ac",
"title": "首页",
},
{
"url": "/pages/dataAnalysis/index",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-dataAnalysis.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-dataAnalysis-ac.png",
"icon": "tab-dataAnalysis",
"activeIcon": "tab-dataAnalysis-ac",
"title": "数据分析",
},
{
"url": "/pages/mine/index?source=channel",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-mine.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-mine-ac.png",
"icon": "tab-mine",
"activeIcon": "tab-mine-ac",
"title": "我的",
},
],
+3 -3
View File
@@ -1,9 +1,9 @@
<view class="safe-pb height-190"></view>
<view class="fixed bottom-0 left-0 wp100 fn-flex bg-fff fn-flex-around safe-pb bg-fff bts-1-eb text-center z-index-4">
<block wx:for="{{list}}" wx:key='index'>
<view class="fn-flex-item pt10 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
<image class='img-60x60' lazy-load="{{true}}" mode="aspectFit" src="{{currentIndex == index?item.selectedIconPath:item.iconPath}}"></image>
<view class="font-22 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
<view class="fn-flex-item pt5 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
<view class="inline-block img-60x60 icon-menu {{currentIndex == index?item.activeIcon:item.icon}}"></view>
<view class="font-22 line-height-12 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
</view>
</block>
</view>
+8 -1
View File
@@ -1,2 +1,9 @@
@import "../../commons/css/common.wxss";
.z-index-4{z-index:9999999999;}
.z-index-4{z-index:9999999999;}
.icon-menu{background:url("https://qs.haodian.cn/wechat_app/lichebao/common/icon-menu.png") no-repeat;background-size:750rpx auto;}
.tab-home{background-position:0 5rpx;}
.tab-home-ac{background-position:0 -55rpx;}
.tab-dataAnalysis{background-position:-60rpx 5rpx;}
.tab-dataAnalysis-ac{background-position:-60rpx -55rpx;}
.tab-mine{background-position:-120rpx 5rpx;}
.tab-mine-ac{background-position:-120rpx -55rpx;}
+14 -3
View File
@@ -1,4 +1,5 @@
import Utils from '../../commons/js/utils/util'
const app = getApp()
Component({
/**
* 组件的属性列表
@@ -88,9 +89,19 @@ Component({
})
},
home: function () {
wx.switchTab({
url: '/pages/index/index'
})
// wx.switchTab({
// url: '/pages/index/index'
// })
if(app.getStorageByKey("userInfo").group_id==4){
wx.reLaunch({
url: '/pages/channel/index'
})
}else{
wx.reLaunch({
url: '/pages/index/index'
})
}
}
}
})
+8 -8
View File
@@ -15,26 +15,26 @@ Component({
list: [
{
"url": "/pages/index/index",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-home.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-home-ac.png",
"icon": "tab-home",
"activeIcon": "tab-home-ac",
"title": "首页",
},
{
"url": "/pages/customer/index",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-customer.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-customer-ac.png",
"icon": "tab-customer",
"activeIcon": "tab-customer-ac",
"title": "客户",
},
{
"url": "/pages/order/index",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-order.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-order-ac.png",
"icon": "tab-order",
"activeIcon": "tab-order-ac",
"title": "订单",
},
{
"url": "/pages/mine/index?source=shop",
"iconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-mine.png",
"selectedIconPath": "https://qs.haodian.cn/wechat_app/lichebao/common/tab-mine-ac.png",
"icon": "tab-mine",
"activeIcon": "tab-mine-ac",
"title": "我的",
},
],
+3 -3
View File
@@ -1,9 +1,9 @@
<view class="safe-pb height-190"></view>
<view class="fixed bottom-0 left-0 wp100 fn-flex bg-fff fn-flex-around safe-pb bg-fff bts-1-eb text-center z-index-4">
<block wx:for="{{list}}" wx:key='index'>
<view class="fn-flex-item pt10 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
<image class='img-60x60' lazy-load="{{true}}" mode="aspectFit" src="{{currentIndex == index?item.selectedIconPath:item.iconPath}}"></image>
<view class="font-22 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
<view class="fn-flex-item pt5 pb10" bindtap="pushNavTab" data-url="{{item.url}}">
<view class="inline-block img-60x60 icon-menu {{currentIndex == index?item.activeIcon:item.icon}}"></view>
<view class="font-22 line-height-12 {{currentIndex == index?'color-1a':'color-999'}}">{{item.title}}</view>
</view>
</block>
</view>
+10 -1
View File
@@ -1,2 +1,11 @@
@import "../../commons/css/common.wxss";
.z-index-4{z-index:9999999999;}
.z-index-4{z-index:9999999999;}
.icon-menu{background:url("https://qs.haodian.cn/wechat_app/lichebao/common/icon-menu.png") no-repeat;background-size:750rpx auto;}
.tab-home{background-position:0 5rpx;}
.tab-home-ac{background-position:0 -55rpx;}
.tab-mine{background-position:-120rpx 5rpx;}
.tab-mine-ac{background-position:-120rpx -55rpx;}
.tab-customer{background-position:-180rpx 5rpx;}
.tab-customer-ac{background-position:-180rpx -55rpx;}
.tab-order{background-position:-240rpx 5rpx;}
.tab-order-ac{background-position:-240rpx -55rpx;}
+100 -78
View File
@@ -1,53 +1,42 @@
import _ from '../../commons/js/commons'
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
const app = getApp()
let barChartData;
let lineChartData;
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 lineChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = lineChartData
chart.setOption(option);
return chart;
}
Page({
data: {
imgUrl:_.config.imgUrl,
shoplist:[
{
id:'1',
title:'泉州鲤城区4s店',
tag:[
'东风EX·1',
'雷丁',
],
},
{
id:'1',
title:'泉州鲤城区4s店',
tag:[
'东风EX·1',
'雷丁',
],
},
],
shoplist:[],//管理门店
showBarChart:false,//是否显示Bar图表
ecBar:{},
showLineChart:false,//是否显示Line图表
ecLine:{},
deallist:'',
hoursTip:'',
quarterarray: ['第一季度', '第二季度', '第三季度','第四季度', ],
quarterobj: [
{
id: 0,
name: '第一季度'
},
{
id: 1,
name: '第二季度'
},
{
id: 2,
name: '第三季度'
},
{
id: 3,
name: '第四季度'
},
],
quarterIndex: 0,
},
onLoad(options) {
@@ -58,17 +47,16 @@ Page({
}
this.getUserInfo()
this.getAppUserBizs()
this.getBar()
this.getLine()
this.getAppStatisticsCust()
this.getAppStatisticsOrders()
},
onShow: function () {
this.getHoursTip()
},
//候取时间
getHoursTip(){
let hoursTip = '';
@@ -95,44 +83,76 @@ Page({
});
},
//选择季度
changeQuarter(e) {
//获取管理门店
getAppUserBizs(){
_.apiQuery.getAppUserBizs().then(res => {
this.setData({
shoplist: res.data.list,
})
});
},
//客户选择季度
changeCust(e) {
this.setData({
quarterIndex: e.detail.value
custSeasonKey: e.detail.value
})
this.getAppStatisticsCust()
},
//订单选择季度
changeOrder(e) {
this.setData({
orderSeasonKey: e.detail.value
})
this.getAppStatisticsOrders()
},
//获取渠道客户统计
getAppStatisticsCust(){
this.setData({
showBarChart:false,
})
let params = {};
if(this.data.custSeasonKey){
params['season'] = this.data.custSeasonKey;
}
_.apiQuery.getAppStatisticsCust(params).then(res => {
barChartData = res.data.stat_data
this.setData({
custSeasonKey:this.data.custSeasonKey?this.data.custSeasonKey:res.data.season,
custSeason:this.data.custSeason?this.data.custSeason:res.data.season_data,
showBarChart:true,
['ecBar.onInit']:barChart,
})
wx.stopPullDownRefresh()
})
},
getBar(){
//获取渠道订单统计
getAppStatisticsOrders(){
this.setData({
ecBar: {
onInit: function (canvas, width, height, dpr) {
const barChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(barChart);
barChart.setOption(getBarOption());
return barChart;
}
},
showLineChart:false,
})
},
let params = {};
if(this.data.orderSeasonKey){
params['season'] = this.data.orderSeasonKey;
}
_.apiQuery.getAppStatisticsOrders(params).then(res => {
lineChartData = res.data.stat_data
this.setData({
orderSeasonKey:this.data.orderSeasonKey?this.data.orderSeasonKey:res.data.season,
orderSeason:this.data.orderSeason?this.data.orderSeason:res.data.season_data,
showLineChart:true,
['ecLine.onInit']:lineChart,
})
wx.stopPullDownRefresh()
getLine(){
this.setData({
ecLine: {
onInit: function (canvas, width, height, dpr) {
const lineChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(lineChart);
lineChart.setOption(getLineOption());
return lineChart;
}
}
})
},
@@ -153,7 +173,9 @@ Page({
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppUserBizs()
this.getAppStatisticsCust()
this.getAppStatisticsOrders()
},
})
+11 -11
View File
@@ -13,15 +13,15 @@
</view>
</view>
<!-- 管辖门店 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10" wx:if="{{shoplist.length>0}}">
<view class="font-36">管辖门店</view>
<view>
<block wx:for="{{shoplist}}" wx:key='index'>
<view class="mt20 inner30 bg-2e3246-8058fe ulib-r10" bindtap="pushLink" data-url="/pages/index/index?id={{item.id}}">
<view class="relative pr40 font-32 color-fff">{{item.title}}<i class="absolute right-0 box-middle iconfont icon-gengduo text-middle font-26"></i></view>
<view class="mt20 inner30 bg-2e3246-8058fe ulib-r10" bindtap="pushLink" data-url="/pages/index/index?biz_id={{item.id}}">
<view class="relative pr40 font-32 color-fff">{{item.name}}<i class="absolute right-0 box-middle iconfont icon-gengduo text-middle font-26"></i></view>
<view class="font-22">
<block wx:for="{{item.tag}}" wx:for-item="tag" wx:key='index'>
<text class="inline-block mt10 mr10 pl20 pr20 bg-fff ulib-r750">{{tag}}</text>
<block wx:for="{{item.auto_brands}}" wx:for-item="auto_brands" wx:key='index'>
<text class="inline-block mt10 mr10 pl20 pr20 bg-fff ulib-r750">{{auto_brands}}</text>
</block>
</view>
</view>
@@ -32,15 +32,15 @@
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">数据分析·客户</view>
<picker class="absolute right-0 box-middle" bindchange="changeQuarter" value="{{quarterIndex}}" range="{{quarterarray}}">
<picker class="absolute right-0 box-middle" bindchange="changeCust" value="{{custSeasonKey}}" range="{{custSeason}}">
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
<text>{{quarterarray[quarterIndex]}}</text>
<text>{{custSeason[custSeasonKey]}}</text>
<i class="iconfont ml20 icon-xiala color-999"></i>
</view>
</picker>
</view>
<view class="relative height-600 z-index-0">
<view class="absolute wp100 height-600">
<view class="absolute wp100 height-600" wx:if="{{showBarChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
@@ -49,15 +49,15 @@
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">数据分析·订单</view>
<picker class="absolute right-0 box-middle" bindchange="changeQuarter" value="{{quarterIndex}}" range="{{quarterarray}}">
<picker class="absolute right-0 box-middle" bindchange="changeOrder" value="{{orderSeasonKey}}" range="{{orderSeason}}">
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
<text>{{quarterarray[quarterIndex]}}</text>
<text>{{orderSeason[orderSeasonKey]}}</text>
<i class="iconfont ml20 icon-xiala color-999"></i>
</view>
</picker>
</view>
<view class="relative height-600 z-index-0">
<view class="absolute wp100 height-600">
<view class="absolute wp100 height-600" wx:if="{{showLineChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
</view>
</view>
+2 -1
View File
@@ -94,4 +94,5 @@
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
+1
View File
@@ -25,6 +25,7 @@
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowEmployees}}">
<view slot="content">
+1
View File
@@ -197,6 +197,7 @@
</view>
</view>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowMessage}}">
<view slot="content">
+2 -1
View File
@@ -84,4 +84,5 @@
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
+1
View File
@@ -42,6 +42,7 @@
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowMessage}}">
<view slot="content">
+154 -138
View File
@@ -2,44 +2,45 @@ import _ from '../../commons/js/commons'
import popularData from '../../commons/js/lib/popularData';
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
const app = getApp()
let barChartData;
let lineChartData;
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 lineChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = lineChartData
chart.setOption(option);
return chart;
}
Page({
data: {
imgUrl:_.config.imgUrl,
storearray: ['厦门店', '泉州店', '福州店', ],
storeobj: [
{
id: 0,
name: '厦门店'
},
{
id: 1,
name: '泉州店'
},
{
id: 2,
name: '福州店'
},
],
showBarChart:false,//是否显示Bar图表
ecBar:{},
showLineChart:false,//是否显示Line图表
ecLine:{},
storeArray: [],
storeobj: [],
storeIndex:0,
staffarray: ['张三', '李四', '王五', ],
staffobj: [
{
id: 0,
name: '张三'
},
{
id: 1,
name: '李四'
},
{
id: 2,
name: '王五'
},
],
staffArray: [],
staffobj: [],
staffIndex:-1,
tabId:'1',
tab:[
{
@@ -51,72 +52,8 @@ Page({
title: '订单数据'
},
],
custom:[
{
title:'订单客户',
value:'12.23w',
icon:'icon-statistics-custom-1',
},
{
title:'到店客户',
value:'15',
icon:'icon-statistics-custom-2',
},
{
title:'未见客户',
value:'12.2',
icon:'icon-statistics-custom-3',
},
{
title:'未联潜客',
value:'12.23',
icon:'icon-statistics-custom-4',
},
{
title:'战败客户',
value:'9996',
icon:'icon-statistics-custom-5',
},
],
order:[
{
title:'合同签订',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'分期办理',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'车辆确认',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'申请开票',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'待办服务',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'交付确认',
value:'12.23w',
icon:'icon-statistics-order-1',
},
{
title:'交付完成',
value:'12.23w',
icon:'icon-statistics-order-1',
},
],
custom:[],//客户数据
order:[],//订单数据
},
onLoad(options) {
@@ -130,20 +67,119 @@ Page({
dateTime:res[0],
})
})
this.getAppUserBizs()
this.getBar()
this.getLine()
},
onShow: function () {
},
//获取管理门店
getAppUserBizs(){
_.apiQuery.getAppUserBizs().then(res => {
let storeArray = []
res.data.list.forEach(item => {
storeArray.push(item.name)
})
this.setData({
storeArray:storeArray,
storeobj:res.data.list,
storeIndex:0,
staffIndex:-1,
})
this.getAppUserAdmins()
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
});
},
//获取管理门店
getAppUserAdmins(){
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['page'] = 1;
params['size'] = 1000;
_.apiQuery.getAppUserAdmins(params).then(res => {
let staffArray = []
res.data.list.forEach(item => {
staffArray.push(item.uname)
})
this.setData({
staffArray:staffArray,
staffobj: res.data.list,
})
});
},
//数据分析-客户数据
getAppStatisticsScust(){
this.setData({
ecBar:{},
showBarChart:false,
})
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['day'] = this.data.dateTime;
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppStatisticsScust(params).then(res => {
barChartData = res.data.stat_data
this.setData({
custom:res.data.custom,
showBarChart:true,
['ecBar.onInit']:barChart,
})
wx.stopPullDownRefresh()
});
},
//数据分析-订单数据
getAppStatisticsOcust(){
this.setData({
ecLine:{},
showLineChart:false,
})
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['day'] = this.data.dateTime;
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppStatisticsOcust(params).then(res => {
lineChartData = res.data.stat_data
this.setData({
order:res.data.custom,
showLineChart:true,
['ecLine.onInit']:lineChart,
})
wx.stopPullDownRefresh()
});
},
//选择门店
changeStore(e) {
this.setData({
storeIndex: e.detail.value
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//日期选择
@@ -151,6 +187,11 @@ Page({
this.setData({
dateTime: e.detail.value,
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//选择人员
@@ -158,6 +199,11 @@ Page({
this.setData({
staffIndex: e.detail.value
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//切换tab
@@ -165,41 +211,11 @@ Page({
this.setData({
tabId:e.currentTarget.dataset.id,
})
//this.searchSubmit()
},
getBar(){
this.setData({
ecBar: {
onInit: function (canvas, width, height, dpr) {
const barChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(barChart);
barChart.setOption(getBarOption());
return barChart;
}
},
})
},
getLine(){
this.setData({
ecLine: {
onInit: function (canvas, width, height, dpr) {
const lineChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(lineChart);
lineChart.setOption(getLineOption());
return lineChart;
}
}
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//推送链接
@@ -211,7 +227,7 @@ Page({
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppUserBizs()
},
})
@@ -274,7 +290,7 @@ function getLineOption() {
data: ['1月', '2月', '3月',]
},
yAxis: {
type: 'value'
type: 'value'
},
series: [{
data: [20, 932, 901,],
+7 -7
View File
@@ -5,9 +5,9 @@
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">门店</view>
<picker class="fn-fr" bindchange="changeStore" value="{{storeIndex}}" range="{{storearray}}">
<picker class="fn-fr" bindchange="changeStore" value="{{storeIndex}}" range="{{storeArray}}">
<view class="color-666">
<text>{{storearray[storeIndex]}}</text>
<text>{{storeArray[storeIndex]}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
@@ -23,10 +23,10 @@
</view>
<view class="mt20 bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">人员选择</view>
<picker class="fn-fr" bindchange="changeStaff" value="{{staffIndex}}" range="{{staffarray}}">
<picker class="fn-fr" bindchange="changeStaff" value="{{staffIndex}}" range="{{staffArray}}">
<view class="color-666">
<text wx:if="{{staffIndex == -1}}">全部</text>
<text wx:else>{{staffarray[staffIndex]}}</text>
<text wx:else>{{staffArray[staffIndex]}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
@@ -55,7 +55,7 @@
</view>
</block>
</view>
<view class="mt30 mr30 inner30 bg-f6 ulib-r10">
<view class="mt30 mr30 inner30 bg-f6 ulib-r10" wx:if="{{1==0}}">
<view class="font-32 text-bold">通话数据</view>
<view class="mt10 fn-flex text-center">
<view class="fn-flex-item">
@@ -95,7 +95,7 @@
<view class="font-36">数据分析·客户</view>
</view>
<view class="relative height-400 z-index-0">
<view class="absolute wp100 height-400">
<view class="absolute wp100 height-400" wx:if="{{showBarChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
@@ -106,7 +106,7 @@
<view class="font-36">数据分析·订单</view>
</view>
<view class="relative height-400 z-index-0">
<view class="absolute wp100 height-400">
<view class="absolute wp100 height-400" wx:if="{{showLineChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
</view>
</view>
+2 -1
View File
@@ -65,4 +65,5 @@
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
+1
View File
@@ -26,6 +26,7 @@
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowSuccess}}" isBottomOpt="{{true}}" closeWord="我知道了" bind:closeevent="closeSuccess">
<view slot="content" class="inner40">
+1
View File
@@ -34,6 +34,7 @@
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowKefu}}" button="false" isHasClose="down">
<view slot="content">
+2 -1
View File
@@ -33,4 +33,5 @@
</view>
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
+2 -1
View File
@@ -65,4 +65,5 @@
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
+94 -31
View File
@@ -1,12 +1,42 @@
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: {
imgUrl:_.config.imgUrl,
userCal:'',
deallist:'',
hoursTip:'',
showBarChart:false,//是否显示Bar图表
ecBar:{},
showPieChart:false,//是否显示Pie图表
ecPie:{},
},
onLoad(options) {
@@ -15,11 +45,15 @@ Page({
[key]: options[key]
})
}
if(this.data.biz_id){
this.putAppUserResetbiz()
}
this.getUserInfo()
this.getPie()
this.getBar()
this.getAppStatisticsHcust()
this.getAppStatisticsHorder()
},
onShow: function () {
@@ -27,7 +61,6 @@ Page({
this.getHoursTip()
},
//候取时间
getHoursTip(){
let hoursTip = '';
@@ -44,6 +77,14 @@ Page({
})
},
//更新用户店铺id
putAppUserResetbiz(){
let params = {};
params['biz_id'] = this.data.biz_id;
_.apiQuery.putAppUserResetbiz(params).then(res => {
this.getAppUserCal()
});
},
//获取用户信息
getUserInfo(){
@@ -56,7 +97,11 @@ Page({
//获取用户统计
getAppUserCal(){
_.apiQuery.getAppUserCal().then(res => {
let params = {};
if(this.data.biz_id){
params['biz_id'] = this.data.biz_id;
}
_.apiQuery.getAppUserCal(params).then(res => {
this.setData({
userCal:res.data,
})
@@ -80,38 +125,54 @@ Page({
});
},
getPie(){
//数据分析-客户数据
getAppStatisticsHcust(){
this.setData({
ecPie: {
onInit: function (canvas, width, height, dpr) {
const pieChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(pieChart);
pieChart.setOption(getPieOption());
return pieChart;
}
},
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}%} ',
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()
});
},
getBar(){
//数据分析-订单数据
getAppStatisticsHorder(){
this.setData({
ecBar: {
onInit: function (canvas, width, height, dpr) {
const barChart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(barChart);
barChart.setOption(getBarOption());
return barChart;
}
},
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()
});
},
//推送链接
@@ -131,6 +192,8 @@ Page({
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppUserCal()
this.getAppStatisticsHcust()
this.getAppStatisticsHorder()
},
})
+6 -6
View File
@@ -66,18 +66,18 @@
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">客户数据</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计线索总量 12,456条</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计线索总量 {{cust_total}} 条</view>
</view>
<view class="mt30 fn-flex" style="height:20rpx;">
<view class="fn-flex-item fn-clear">
<view class="fn-fl wp40 bg-f6 pt25 pb25 font-32 text-bold text-center ulib-r10">234</view>
<view class="fn-fl wp40 bg-f6 pt25 pb25 font-32 text-bold text-center ulib-r10">{{cust_cont_total}}</view>
<view class="pl140">
<view class="mt10 font-28">狸车客户</view>
<view class="font-22 color-666">未联系潜客(人)</view>
</view>
</view>
<view class="fn-flex-item fn-clear">
<view class="fn-fl wp40 bg-f6 pt25 pb25 font-32 text-bold text-center ulib-r10">1.26w</view>
<view class="fn-fl wp40 bg-f6 pt25 pb25 font-32 text-bold text-center ulib-r10">{{cust_top_total}}</view>
<view class="pl140">
<view class="mt10 font-28">订单潜客</view>
<view class="font-22 color-666">特别关注客户(人)</view>
@@ -85,7 +85,7 @@
</view>
</view>
<view class="relative height-600 z-index-0">
<view class="absolute wp100 height-600">
<view class="absolute wp100 height-600" wx:if="{{showPieChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie }}"></ec-canvas>
</view>
</view>
@@ -94,10 +94,10 @@
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">订单数据</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计订单总量 12,456条</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计订单总量 {{order_total}} 条</view>
</view>
<view class="relative height-800 z-index-0">
<view class="absolute wp100 height-800">
<view class="absolute wp100 height-800" wx:if="{{showBarChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
+14 -4
View File
@@ -24,8 +24,11 @@ Page({
if (pages.length > 1) {
wx.navigateBack();
}else{
_.$router.openUrlScheme('/pages/index/index')
//_.$router.switchTab('/pages/index/index')
if(app.getStorageByKey("userInfo").group_id==4){
_.$router.openUrlScheme('/pages/channel/index')
}else{
_.$router.openUrlScheme('/pages/index/index')
}
}
}else{
this.setData({
@@ -102,6 +105,8 @@ Page({
params['code'] =resc.code;
params['sms_code'] = this.data.sms_code;
_.apiQuery.getUserUkey(params).then(res => {
console.log('111111111111')
console.log(res)
wx.setStorage({
key: "ukey",
data: res.data.ukey
@@ -110,8 +115,13 @@ Page({
if (pages.length > 1) {
wx.navigateBack();
}else{
_.$router.openUrlScheme('/pages/index/index')
//_.$router.switchTab('/pages/index/index')
_.apiQuery.getUserInfo().then(res => {
if(res.group_id==4){
_.$router.openUrlScheme('/pages/channel/index')
}else{
_.$router.openUrlScheme('/pages/index/index')
}
});
}
});
+2 -1
View File
@@ -139,7 +139,7 @@
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="{{info.loan_data.id?'putAppLoan':'postAppLoan'}}">{{info.loan_data.id?'修改信息':'保存信息'}}</button>
</view>
<view class="mt60 pl60 pr60" wx:elif="{{info.bill_status == 1}}">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="{{info.bill_data.id?'putAppIdcard':'postAppIdcard'}}">{{info.bill_data.id?'重新上传申请':'申请开票'}}</button>
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="{{info.bill_data.id?'putAppIdcard':'postAppIdcard'}}">{{info.bill_data.id?'上传申请':'申请开票'}}</button>
</view>
<view class="mt60 pl60 pr60" wx:elif="{{info.ckcar_status == 1}}">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCusorderCkcar">确认交付</button>
@@ -147,6 +147,7 @@
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowSelectContract}}">
<view slot="content">
+1
View File
@@ -36,6 +36,7 @@
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowMessage}}">
<view slot="content">
+1
View File
@@ -334,6 +334,7 @@
</view>
<!-- <lcb-footer></lcb-footer> -->
<lcb-backChannel></lcb-backChannel>
<lcb-msg isShow="{{isShowSelectCustomer}}" isHasClose="{{true}}">
<view slot="content">