<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>