|
@@ -1,5 +1,193 @@
|
|
|
<template>
|
|
|
<div class="dashboard-container">
|
|
|
- <h1>首页</h1>
|
|
|
+ <el-row :gutter="40" class="panel-group">
|
|
|
+ <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
+ <div class="card-panel">
|
|
|
+ <div class="card-panel-icon-wrapper icon-people">
|
|
|
+ <svg-icon icon-class="peoples" class-name="card-panel-icon" />
|
|
|
+ </div>
|
|
|
+ <div class="card-panel-description">
|
|
|
+ <div class="card-panel-text">
|
|
|
+ 用户数量
|
|
|
+ </div>
|
|
|
+ <!-- <span class="card-panel-num" v-text="users"></span> -->
|
|
|
+ <count-to :start-val="0" :end-val="users" :duration="3600" class="card-panel-num" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
+ <div class="card-panel">
|
|
|
+ <div class="card-panel-icon-wrapper icon-shopping">
|
|
|
+ <svg-icon icon-class="shopping" class-name="card-panel-icon" />
|
|
|
+ </div>
|
|
|
+ <div class="card-panel-description">
|
|
|
+ <div class="card-panel-text">
|
|
|
+ 商品数量
|
|
|
+ </div>
|
|
|
+ <!-- <span class="card-panel-num" v-text="products"></span> -->
|
|
|
+ <count-to :start-val="0" :end-val="products" :duration="3600" class="card-panel-num" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
+ <div class="card-panel">
|
|
|
+ <div class="card-panel-icon-wrapper icon-message">
|
|
|
+ <svg-icon icon-class="chart" class-name="card-panel-icon" />
|
|
|
+ </div>
|
|
|
+ <div class="card-panel-description">
|
|
|
+ <div class="card-panel-text">
|
|
|
+ 订单数量
|
|
|
+ </div>
|
|
|
+ <!-- <span class="card-panel-num" v-text="orders"></span> -->
|
|
|
+ <count-to :start-val="0" :end-val="orders" :duration="3600" class="card-panel-num" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
+ <div class="card-panel">
|
|
|
+ <div class="card-panel-icon-wrapper icon-money">
|
|
|
+ <svg-icon icon-class="money" class-name="card-panel-icon" />
|
|
|
+ </div>
|
|
|
+ <div class="card-panel-description">
|
|
|
+ <div class="card-panel-text">
|
|
|
+ 订单总额
|
|
|
+ </div>
|
|
|
+ <!-- <span class="card-panel-num" v-text="money"></span> -->
|
|
|
+ <count-to :start-val="0" :end-val="money" :duration="3600" class="card-panel-num" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { getDashboard } from '@/api/caimei/home'
|
|
|
+import CountTo from 'vue-count-to'
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ CountTo
|
|
|
+ },
|
|
|
+ name: 'Dashboard',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ users: 0,
|
|
|
+ products: 0,
|
|
|
+ orders: 0,
|
|
|
+ money: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getData()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getData() {
|
|
|
+ getDashboard().then(response => {
|
|
|
+ this.users = response.data.users
|
|
|
+ this.products = response.data.products
|
|
|
+ this.orders = response.data.orders
|
|
|
+ this.money = response.data.money
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.dashboard-container{
|
|
|
+ padding: 32px;
|
|
|
+ background-color: rgb(240, 242, 245);
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+
|
|
|
+.panel-group {
|
|
|
+ margin-top: 18px;
|
|
|
+ .card-panel-col {
|
|
|
+ margin-bottom: 32px;
|
|
|
+ }
|
|
|
+ .card-panel {
|
|
|
+ height: 108px;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 12px;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+ color: #666;
|
|
|
+ background: #fff;
|
|
|
+ box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
|
|
+ border-color: rgba(0, 0, 0, .05);
|
|
|
+ &:hover {
|
|
|
+ .card-panel-icon-wrapper {
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ .icon-people {
|
|
|
+ background: #40c9c6;
|
|
|
+ }
|
|
|
+ .icon-message {
|
|
|
+ background: #36a3f7;
|
|
|
+ }
|
|
|
+ .icon-money {
|
|
|
+ background: #f4516c;
|
|
|
+ }
|
|
|
+ .icon-shopping {
|
|
|
+ background: #34bfa3
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .icon-people {
|
|
|
+ color: #40c9c6;
|
|
|
+ }
|
|
|
+ .icon-message {
|
|
|
+ color: #36a3f7;
|
|
|
+ }
|
|
|
+ .icon-money {
|
|
|
+ color: #f4516c;
|
|
|
+ }
|
|
|
+ .icon-shopping {
|
|
|
+ color: #34bfa3
|
|
|
+ }
|
|
|
+ .card-panel-icon-wrapper {
|
|
|
+ float: left;
|
|
|
+ margin: 14px 0 0 14px;
|
|
|
+ padding: 16px;
|
|
|
+ transition: all 0.38s ease-out;
|
|
|
+ border-radius: 6px;
|
|
|
+ }
|
|
|
+ .card-panel-icon {
|
|
|
+ float: left;
|
|
|
+ font-size: 48px;
|
|
|
+ }
|
|
|
+ .card-panel-description {
|
|
|
+ float: right;
|
|
|
+ font-weight: bold;
|
|
|
+ margin: 26px;
|
|
|
+ margin-left: 0px;
|
|
|
+ .card-panel-text {
|
|
|
+ line-height: 18px;
|
|
|
+ color: rgba(0, 0, 0, 0.45);
|
|
|
+ font-size: 16px;
|
|
|
+ margin-bottom: 12px;
|
|
|
+ }
|
|
|
+ .card-panel-num {
|
|
|
+ font-size: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@media (max-width:550px) {
|
|
|
+ .card-panel-description {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ .card-panel-icon-wrapper {
|
|
|
+ float: none !important;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ margin: 0 !important;
|
|
|
+ .svg-icon {
|
|
|
+ display: block;
|
|
|
+ margin: 14px auto !important;
|
|
|
+ float: none !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|