You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

285 lines
8.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-card style="margin: 20px 20px; font-size: 14px">
<div class="first"><img alt="" :src="avatar" style="width: 50px; height: 50px; float:left; margin-right:10px;border-radius:50%" />
<p style="font-size:16px;margin-bottom:8px">{{name}}{{hello}}</p>
<p style="font-size:12px;color:rgb(185, 181, 189)">今天是{{nowTime}}</p>
</div>
<div class="first">
</div>
</el-card>
<el-row class="pl20 pr20" :gutter="10">
<el-col :span="9">
<el-card shadow="always" style="padding-bottom: 30px">
<div slot="header"><span>售后</span></div>
<ul style="margin-top: 10px">
<li class="li" style="width: 50%">待处理
</li>
<li class="li" style="width: 50%">处理中
</li>
</ul>
<ul>
<li class="da" style="width: 50%">
<router-link to="/mall/aftersale">
{{ orderAndAftersaleStatisticsObj.pendingAftersaleCount }}</router-link>
</li>
<li class="da" style="width: 50%">
<router-link to="/mall/aftersale">{{ orderAndAftersaleStatisticsObj.processingAftersaleCount }}</router-link>
</li>
</ul>
</el-card>
</el-col>
<el-col :span="15">
<el-card shadow="always" style="padding-bottom: 30px">
<div slot="header"><span>订单</span></div>
<div>
<ul style="margin-top: 10px">
<li class="li">未发订单数
</li>
<li class="li">今日订单数
</li>
<li class="li">今日成交额
</li>
<li class="li">今日发货数
</li>
</ul>
<ul>
<li class="da">
<router-link :to="{path:'/mall/order',query:{status:1}}">{{ orderAndAftersaleStatisticsObj.waitDeliveredCount }}</router-link>
</li>
<li class="da">
<router-link :to="{path:'/mall/order',query:{today:true}}">{{ orderAndAftersaleStatisticsObj.todayOrderCount }}</router-link>
</li>
<li class="da">
<router-link :to="{path:'/mall/order',query:{today:true,status:1}}">{{ orderAndAftersaleStatisticsObj.todayTransactionAmount }}</router-link>
</li>
<li class="da">
<router-link :to="{path:'/mall/order',query:{today:true, status: 2}}">{{ orderAndAftersaleStatisticsObj.todayHasDeliveredCount }}</router-link>
</li>
</ul>
</div>
</el-card>
</el-col>
</el-row>
<el-row class="pl20 pr20" :gutter="10">
<el-col :span="24">
<order-line-chart></order-line-chart>
<!-- <div class="card transform">-->
<!-- <top-product></top-product>-->
<!-- </div>-->
</el-col>
</el-row>
</div>
</template>
<script>
import {str2Date} from '@/utils/date';
import PanelGroup from '@/views/components/PanelGroup'
import {mapGetters} from 'vuex'
import OrderLineChart from "@/views/dashboard/OrderLineChart.vue";
import TopProduct from "@/views/components/IndexOrderPanelGroup/TopProduct.vue";
import {orderAndAftersaleStatistics} from "@/api/statistics";
const DATA_FROM_BACKEND = {
columns: ['date', 'orderCount','orderAmount'],
rows: [
{date: '2018-11-01', orderCount: 10, orderAmount: 1093},
{date: '2018-11-02', orderCount: 20, orderAmount: 2230},
{date: '2018-11-03', orderCount: 33, orderAmount: 3623},
{date: '2018-11-04', orderCount: 50, orderAmount: 6423},
{date: '2018-11-05', orderCount: 80, orderAmount: 8492},
{date: '2018-11-06', orderCount: 60, orderAmount: 6293},
{date: '2018-11-07', orderCount: 20, orderAmount: 2293},
{date: '2018-11-08', orderCount: 60, orderAmount: 6293},
{date: '2018-11-09', orderCount: 50, orderAmount: 5293},
{date: '2018-11-10', orderCount: 30, orderAmount: 3293},
{date: '2018-11-11', orderCount: 20, orderAmount: 2293},
{date: '2018-11-12', orderCount: 80, orderAmount: 8293},
{date: '2018-11-13', orderCount: 100, orderAmount: 10293},
{date: '2018-11-14', orderCount: 10, orderAmount: 1293},
{date: '2018-11-15', orderCount: 40, orderAmount: 4293}
]
};
export default {
components: {
PanelGroup,
OrderLineChart,
TopProduct
},
data() {
return {
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
let start = new Date();
start.setFullYear(2018);
start.setMonth(10);
start.setDate(1);
end.setTime(start.getTime() + 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一月',
onClick(picker) {
const end = new Date();
let start = new Date();
start.setFullYear(2018);
start.setMonth(10);
start.setDate(1);
end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}]
},
orderCountDate: '',
chartSettings: {
xAxisType: 'time',
area:true,
axisSite: { right: ['orderAmount']},
labelMap: {'orderCount': '订单数量', 'orderAmount': '订单金额'}},
chartData: {
columns: [],
rows: []
},
loading: false,
dataEmpty: false,
nowTime: '',
hello: '',
orderAndAftersaleStatisticsObj: {
pendingAftersaleCount: 0,
processingAftersaleCount: 0,
waitDeliveredCount: 0,
todayHasDeliveredCount: 0,
todayOrderCount: 0,
todayTransactionAmount: 0
}
}
},
computed: {
...mapGetters(['avatar', 'name'])
},
created() {
this.showTimes()
this.helloTimes()
this.orderAndAftersaleStat()
this.initOrderCountDate()
this.getData()
},
methods: {
handleDateChange() {
this.getData();
},
initOrderCountDate() {
let start = new Date();
start.setFullYear(2018, 10, 1);
const end = new Date();
end.setTime(start.getTime() + 1000 * 60 * 60 * 24 * 7);
this.orderCountDate = [start, end];
},
getData(){
setTimeout(() => {
this.chartData = {
columns: ['date', 'orderCount','orderAmount'],
rows: []
};
for(let i=0;i<DATA_FROM_BACKEND.rows.length;i++){
let item=DATA_FROM_BACKEND.rows[i];
let currDate=str2Date(item.date);
let start=this.orderCountDate[0];
let end=this.orderCountDate[1];
if(currDate.getTime()>=start.getTime()&&currDate.getTime()<=end.getTime()){
this.chartData.rows.push(item);
}
}
this.dataEmpty = false;
this.loading = false
}, 1000)
},
timeFormate(timeStamp) {
let year = new Date(timeStamp).getFullYear()
let month =
new Date(timeStamp).getMonth() + 1 < 10
? '0' + (new Date(timeStamp).getMonth() + 1)
: new Date(timeStamp).getMonth() + 1
let date =
new Date(timeStamp).getDate() < 10
? '0' + new Date(timeStamp).getDate()
: new Date(timeStamp).getDate()
let hh =
new Date(timeStamp).getHours() < 10
? '0' + new Date(timeStamp).getHours()
: new Date(timeStamp).getHours()
let mm =
new Date(timeStamp).getMinutes() < 10
? '0' + new Date(timeStamp).getMinutes()
: new Date(timeStamp).getMinutes()
let ss =
new Date(timeStamp).getSeconds() < 10
? '0' + new Date(timeStamp).getSeconds()
: new Date(timeStamp).getSeconds()
let week = new Date(timeStamp).getDay()
let weeks = ['日', '一', '二', '三', '四', '五', '六']
let getWeek = '星期' + weeks[week]
this.nowTime =
year +
'年' +
month +
'月' +
date +
'日' +
' ' +
getWeek
},
showTimes() {
this.timeFormate(new Date())
},
helloTimes() {
let hh = new Date().getHours()
if (0 < hh < 12) {
this.hello = '上午好'
} else if (hh < 18) {
this.hello = '下午好'
} else {
this.hello = '晚上好'
}
},
orderAndAftersaleStat(){
orderAndAftersaleStatistics().then((response) => {
this.orderAndAftersaleStatisticsObj = response
})
}
}
}
</script>
<style scoped lang="stylus">
.app-container
.li {
float: left;
width: 25%;
font-size: 12px;
color: rgb(185, 181, 189);
}
.da {
float: left;
width: 25%;
font-size: 20px;
}
.first {
float: left;
width: 50%;
margin-bottom: 20px;
}
.el-table .warning-row {
background: rgb(39, 138, 230);
}
</style>