2018-12-31 13:39:11 +08:00

445 lines
20 KiB
PHP

{extend name="public/container"}
{block name="head_top"}
<!-- 全局js -->
<script src="{__PLUG_PATH}echarts/echarts.common.min.js"></script>
<script src="{__PLUG_PATH}echarts/theme/macarons.js"></script>
<script src="{__PLUG_PATH}echarts/theme/westeros.js"></script>
{/block}
{block name="content"}
<div class="row">
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-danger pull-right"></span>
<h5>订单</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$topData.orderDeliveryNum}</h1>
<small><a href="{:Url('order.store_order/index')}">待发货</a> </small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-info pull-right"></span>
<h5>订单</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$topData.orderRefundNum}</h1>
<small><a href="{:Url('order.store_order/index')}">退换货</a></small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable" >
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-danger pull-right"></span>
<h5>商品</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$topData.stockProduct}</h1>
<small><a href="{:Url('store.store_product/index',array('type'=>5))}">库存预警</a></small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-danger pull-right"></span>
<h5>待提现</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$topData.treatedExtract}</h1>
<small><a href="{:Url('finance.user_extract/index')}">待提现</a></small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-info pull-right"></span>
<h5>订单</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$first_line.d_num.data}</h1>
<div class="stat-percent font-bold text-navy">
{$first_line.d_num.percent}%
{if condition='$first_line.d_num.is_plus egt 0'}<i class="fa {if condition='$first_line.d_num.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
</div>
<small>昨日订单数</small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-info pull-right"></span>
<h5>交易</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$first_line.d_price.data}</h1>
<div class="stat-percent font-bold text-info">
{$first_line.d_price.percent}%
{if condition='$first_line.d_price.is_plus egt 0'}<i class="fa {if condition='$first_line.d_price.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
</div>
<small>昨日交易额</small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-info pull-right"></span>
<h5>粉丝</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$first_line.day.data}</h1>
<div class="stat-percent font-bold text-info">
{$first_line.day.percent}%
{if condition='$first_line.day.is_plus egt 0'}<i class="fa {if condition='$first_line.day.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
</div>
<small>今日新增粉丝</small>
</div>
</div>
</div>
<div class="col-sm-3 ui-sortable">
<div class="ibox float-e-margins">
<div class="ibox-title">
<span class="label label-info pull-right"></span>
<h5>粉丝</h5>
</div>
<div class="ibox-content">
<h1 class="no-margins">{$first_line.month.data}</h1>
<div class="stat-percent font-bold text-info">
{$first_line.month.percent}%
{if condition='$first_line.month.is_plus egt 0'}<i class="fa {if condition='$first_line.month.is_plus eq 1'}fa-level-up{else /}fa-level-down{/if}"></i>{/if}
</div>
<small>本月新增粉丝</small>
</div>
</div>
</div>
</div>
<div id="app">
<div class="row">
<div class="col-lg-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>订单</h5>
<div class="pull-right">
<div class="btn-group">
<button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'thirtyday'}" v-on:click="getlist('thirtyday')">30</button>
<button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'week'}" v-on:click="getlist('week')"></button>
<button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'month'}" v-on:click="getlist('month')"></button>
<button type="button" class="btn btn-xs btn-white" :class="{'active': active == 'year'}" v-on:click="getlist('year')"></button>
</div>
</div>
</div>
<div class="ibox-content">
<div class="row">
<div class="col-lg-9">
<div class="flot-chart-content echarts" ref="order_echart" id="flot-dashboard-chart1"></div>
</div>
<div class="col-lg-3">
<ul class="stat-list">
<li>
<h2 class="no-margins ">{{pre_cycleprice}}</h2>
<small>{{precyclename}}销售额</small>
</li>
<li>
<h2 class="no-margins ">{{cycleprice}}</h2>
<small>{{cyclename}}销售额</small>
<div class="stat-percent text-navy" v-if='cycleprice_is_plus ===1'>
{{cycleprice_percent}}%
<i class="fa fa-level-up"></i>
</div>
<div class="stat-percent text-danger" v-else-if='cycleprice_is_plus === -1'>
{{cycleprice_percent}}%
<i class="fa fa-level-down"></i>
</div>
<div class="stat-percent" v-else>
{{cycleprice_percent}}%
</div>
<div class="progress progress-mini">
<div :style="{width:cycleprice_percent+'%'}" class="progress-bar box"></div>
</div>
</li>
<li>
<h2 class="no-margins ">{{pre_cyclecount}}</h2>
<small>{{precyclename}}订单总数</small>
</li>
<li>
<h2 class="no-margins">{{cyclecount}}</h2>
<small>{{cyclename}}订单总数</small>
<div class="stat-percent text-navy" v-if='cyclecount_is_plus ===1'>
{{cyclecount_percent}}%
<i class="fa fa-level-up"></i>
</div>
<div class="stat-percent text-danger" v-else-if='cyclecount_is_plus === -1'>
{{cyclecount_percent}}%
<i class="fa fa-level-down"></i>
</div>
<div class="stat-percent " v-else>
{{cyclecount_percent}}%
</div>
<div class="progress progress-mini">
<div :style="{width:cyclecount_percent+'%'}" class="progress-bar box"></div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row" >
<div class="col-lg-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>用户</h5>
</div>
<div class="ibox-content">
<div class="row">
<div class="col-lg-12">
<div class="flot-chart">
<div class="flot-chart-content" ref="user_echart" id="flot-dashboard-chart2"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<style scoped>
.box{width:0px;}
</style>
<script>
require(['vue','axios','layer'],function(Vue,axios,layer){
new Vue({
el:"#app",
data:{
option:{},
myChart:{},
active:'thirtyday',
cyclename:'最近30天',
precyclename:'上个30天',
cyclecount:0,
cycleprice:0,
cyclecount_percent:0,
cycleprice_percent:0,
cyclecount_is_plus:0,
cycleprice_is_plus:0,
pre_cyclecount:0,
pre_cycleprice:0
},
methods:{
info:function () {
var that=this;
axios.get("{:Url('userchart')}").then((res)=>{
that.myChart.user_echart.setOption(that.userchartsetoption(res.data.data));
});
},
getlist:function (e) {
var that=this;
var cycle = e!=null ? e :'thirtyday';
axios.get("{:Url('orderchart')}?cycle="+cycle).then((res)=>{
that.myChart.order_echart.clear();
that.myChart.order_echart.setOption(that.orderchartsetoption(res.data.data));
that.active = cycle;
switch (cycle){
case 'thirtyday':
that.cyclename = '最近30天';
that.precyclename = '上个30天';
break;
case 'week':
that.precyclename = '上周';
that.cyclename = '本周';
break;
case 'month':
that.precyclename = '上月';
that.cyclename = '本月';
break;
case 'year':
that.cyclename = '去年';
that.precyclename = '今年';
break;
default:
break;
}
that.cyclecount = res.data.data.cycle.count.data;
that.cyclecount_percent = res.data.data.cycle.count.percent;
that.cyclecount_is_plus = res.data.data.cycle.count.is_plus;
that.cycleprice = res.data.data.cycle.price.data;
that.cycleprice_percent = res.data.data.cycle.price.percent;
that.cycleprice_is_plus = res.data.data.cycle.price.is_plus;
that.pre_cyclecount = res.data.data.pre_cycle.count.data;
that.pre_cycleprice = res.data.data.pre_cycle.price.data;
});
},
orderchartsetoption:function(data){
this.option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: false},
saveAsImage: {show: true}
}
},
legend: {
data:data.legend
},
grid: {
x: 70,
x2: 50,
y: 60,
y2: 50
},
xAxis: [
{
type: 'category',
data: data.xAxis,
axisPointer: {
type: 'shadow'
},
axisLabel:{
interval: 0,
rotate:40
}
}
],
yAxis:[{type : 'value'}],
// yAxis: [
// {
// type: 'value',
// name: '',
// min: 0,
// max: data.yAxis.maxprice,
//// interval: 0,
// axisLabel: {
// formatter: '{value} 元'
// }
// },
// {
// type: 'value',
// name: '',
// min: 0,
// max: data.yAxis.maxnum,
// interval: 5,
// axisLabel: {
// formatter: '{value} 个'
// }
// }
// ],
series: data.series
};
return this.option;
},
userchartsetoption:function(data){
this.option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
feature: {
dataView: {show: false, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: false},
saveAsImage: {show: false}
}
},
legend: {
data:data.legend
},
grid: {
x: 70,
x2: 50,
y: 60,
y2: 50
},
xAxis: [
{
type: 'category',
data: data.xAxis,
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: '人数',
min: 0,
max: data.yAxis.maxnum,
interval: 5,
axisLabel: {
formatter: '{value} 人'
}
}
],
// series: data.series
series : [ {
name : '人数',
type : 'bar',
barWidth : '50%',
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: '#666',
fontSize: 12
}
}
}
},
data : data.series
} ]
};
return this.option;
},
setChart:function(name,myChartname){
this.myChart[myChartname] = echarts.init(name,'macarons');//初始化echart
}
},
mounted:function () {
const self = this;
this.setChart(self.$refs.order_echart,'order_echart');//订单图表
this.setChart(self.$refs.user_echart,'user_echart');//用户图表
this.info();
this.getlist();
}
});
});
</script>
{/block}