203 lines
6.7 KiB
Vue
203 lines
6.7 KiB
Vue
|
<template>
|
|||
|
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="{use: false}">
|
|||
|
<view class="index">
|
|||
|
<view class="index-wrap">
|
|||
|
<!-- Header -->
|
|||
|
<view class="index-header flex row-between">
|
|||
|
<view class="md" style="font-weight: 400;">Hi,{{pagesData.shop_name||'-'}}</view>
|
|||
|
<view class="xs">{{time}}</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- Section -->
|
|||
|
<view style="height: 130vh;"></view>
|
|||
|
<view class="index-section">
|
|||
|
<!-- Section today Data -->
|
|||
|
<view class="today-data flex">
|
|||
|
<block v-for="(item, index) in todayObj" :key="index">
|
|||
|
<view class="item-data">
|
|||
|
<view>{{item.name}}</view>
|
|||
|
<view>{{item.val}}</view>
|
|||
|
</view>
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- Section turnover echarts Data -->
|
|||
|
<view class="e-data m-t-30">
|
|||
|
<view class="e-title">营业额趋势图</view>
|
|||
|
|
|||
|
<view class="e-content m-t-20">
|
|||
|
<charts ids="canvasColumn" width="100%" height="544rpx" :chartData="turnoverData"></charts>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- Section visit echarts Data -->
|
|||
|
<view class="e-data m-t-30 m-b-50">
|
|||
|
<view class="e-title">进店人数趋势图</view>
|
|||
|
|
|||
|
<view class="e-content m-t-20">
|
|||
|
<charts ids="canvasColumn2" width="100%" height="544rpx" :chartData="visitData"></charts>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</mescroll-body>
|
|||
|
</template>
|
|||
|
<script>
|
|||
|
import {
|
|||
|
apiIndex
|
|||
|
} from '@/api/store'
|
|||
|
|
|||
|
import {
|
|||
|
apiVisit
|
|||
|
} from '@/api/app'
|
|||
|
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins";
|
|||
|
export default {
|
|||
|
mixins: [MescrollMixin,],
|
|||
|
data() {
|
|||
|
return {
|
|||
|
pagesData: [],
|
|||
|
loading: true,
|
|||
|
|
|||
|
time: '',
|
|||
|
|
|||
|
todayObj: [{
|
|||
|
name: '今日营业额',
|
|||
|
val: '0.00'
|
|||
|
},
|
|||
|
{
|
|||
|
name: '今日成交订单',
|
|||
|
val: '0'
|
|||
|
},
|
|||
|
{
|
|||
|
name: '今日进店人数',
|
|||
|
val: '0'
|
|||
|
},
|
|||
|
],
|
|||
|
|
|||
|
turnoverData: {},
|
|||
|
|
|||
|
visitData: {},
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
methods: {
|
|||
|
async downCallback() {
|
|||
|
await this.getPageInfo()
|
|||
|
this.mescroll.endSuccess(0, false)
|
|||
|
},
|
|||
|
|
|||
|
async getPageInfo() {
|
|||
|
const res = await apiIndex()
|
|||
|
this.todayObj[0].val = res.order_amount
|
|||
|
this.todayObj[1].val = res.order_num
|
|||
|
this.todayObj[2].val = res.shop_user
|
|||
|
const turnover = {
|
|||
|
categories: res.dates,
|
|||
|
series: [{
|
|||
|
"name": "营业额",
|
|||
|
data: res.echarts_order_amount
|
|||
|
}]
|
|||
|
}
|
|||
|
const visit = {
|
|||
|
categories: res.dates,
|
|||
|
series: [{
|
|||
|
"name": "进店人数",
|
|||
|
data: res.echarts_user_visit
|
|||
|
}]
|
|||
|
}
|
|||
|
this.turnoverData = turnover
|
|||
|
this.visitData = visit
|
|||
|
this.pagesData = res;
|
|||
|
},
|
|||
|
|
|||
|
showTime() {
|
|||
|
var d = new Date();
|
|||
|
var year = d.getFullYear();
|
|||
|
var month = d.getMonth() + 1; //0~11
|
|||
|
var date = d.getDate();
|
|||
|
|
|||
|
var hour = Number(d.getHours()) <=9 ? '0'+Number(d.getHours()):Number(d.getHours());
|
|||
|
var min = Number(d.getMinutes()) <=9 ? '0'+Number(d.getMinutes()):Number(d.getMinutes());
|
|||
|
var sec = Number(d.getSeconds()) <=9 ? '0'+ Number(d.getSeconds()):Number(d.getSeconds());
|
|||
|
|
|||
|
var str = year + '-' + month + '-' + date + " " + hour + ":" + min + ":" + sec;
|
|||
|
this.time = str
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad() {
|
|||
|
setInterval(this.showTime, 1000)
|
|||
|
},
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
.index {
|
|||
|
overflow: hidden;
|
|||
|
|
|||
|
&-wrap {
|
|||
|
|
|||
|
// 头部
|
|||
|
.index-header {
|
|||
|
color: $-color-white;
|
|||
|
padding: 30rpx 24rpx;
|
|||
|
background-repeat: no-repeat;
|
|||
|
background-size: 100% 100rpx;
|
|||
|
background-color: #40AFFA;
|
|||
|
padding-bottom: 200rpx;
|
|||
|
}
|
|||
|
|
|||
|
.index-section {
|
|||
|
padding: 0 24rpx;
|
|||
|
width: 100%;
|
|||
|
position: absolute;
|
|||
|
top: 100rpx;
|
|||
|
|
|||
|
// 今日数据卡片
|
|||
|
.today-data {
|
|||
|
padding: 60rpx 30rpx 40rpx 30rpx;
|
|||
|
border-radius: 14rpx;
|
|||
|
background-color: $-color-white;
|
|||
|
|
|||
|
.item-data {
|
|||
|
width: 220rpx;
|
|||
|
|
|||
|
view:first-child {
|
|||
|
color: $-color-muted;
|
|||
|
font-size: 24rpx;
|
|||
|
}
|
|||
|
|
|||
|
view:last-child {
|
|||
|
color: $-color-normal;
|
|||
|
font-size: 44rpx;
|
|||
|
font-weight: 500;
|
|||
|
margin-top: 6rpx;
|
|||
|
height: 50px;
|
|||
|
word-wrap: break-word;
|
|||
|
word-break: break-all;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.item-data:first-child {
|
|||
|
width: 260rpx !important;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 数据图
|
|||
|
.e-data {
|
|||
|
.e-title {
|
|||
|
font-size: 30rpx;
|
|||
|
font-weight: 500;
|
|||
|
}
|
|||
|
|
|||
|
.e-content {
|
|||
|
padding: 20rpx 0;
|
|||
|
border-radius: 14rpx;
|
|||
|
background-color: $-color-white;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|