From 3995f4bd129fee27b1085534e2231d68b7a970d8 Mon Sep 17 00:00:00 2001
From: mayf <m13160102112@163.com>
Date: 星期五, 25 十月 2024 17:28:52 +0800
Subject: [PATCH] 首页统计
---
tailwind.config.js | 2
pages/goods/list/index.vue | 2
pages/order/after-sale/index.vue | 2
pages/home.vue | 346 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pages/order/list/index.vue | 2
5 files changed, 351 insertions(+), 3 deletions(-)
diff --git a/pages/goods/list/index.vue b/pages/goods/list/index.vue
index db1a79b..e0b3187 100644
--- a/pages/goods/list/index.vue
+++ b/pages/goods/list/index.vue
@@ -106,7 +106,7 @@
hasAll: true,
childType: 'el-radio-button',
},
- default: '',
+ default: this.$route.query.status || '',
span: 24,
searchImmediately: true,
},
diff --git a/pages/home.vue b/pages/home.vue
new file mode 100644
index 0000000..de37955
--- /dev/null
+++ b/pages/home.vue
@@ -0,0 +1,346 @@
+<template>
+ <div class="home-page">
+ <div class="top-container">
+ <div class="top-container__item">
+ <div class="top-container__label">今日销售额</div>
+ <div class="top-container__value">{{ statistic.saleAmount || 0 }}</div>
+ </div>
+ <div class="top-container__item">
+ <div class="top-container__label">今日销售扎数</div>
+ <div class="top-container__value">
+ {{ statistic.saleFlowerCount || 0 }}
+ </div>
+ </div>
+ <div
+ class="top-container__item cursor-pointer"
+ @click="toRoute('/goods/list')"
+ >
+ <div class="top-container__label">商品管理</div>
+ <div class="top-container__value">{{ statistic.flowerCount || 0 }}</div>
+ </div>
+ <div
+ class="top-container__item cursor-pointer"
+ @click="toRoute('/shop/list')"
+ >
+ <div class="top-container__label">用户管理</div>
+ <div class="top-container__value">
+ {{ statistic.customerCount || 0 }}
+ </div>
+ </div>
+ <div
+ class="top-container__item cursor-pointer"
+ @click="toRoute('/order/list')"
+ >
+ <div class="top-container__label">订单管理</div>
+ <div class="top-container__value">
+ {{ statistic.orderCount || 0 }}
+ </div>
+ </div>
+ </div>
+ <el-row :gutter="22" class="mt-22">
+ <el-col :span="6">
+ <div
+ class="statistic-container cursor-pointer"
+ @click="toRoute('/order/list?statusBackend=SEND')"
+ >
+ <div class="statistic-title">待发货</div>
+ <div class="statistic-num">{{ statistic.orderSendCount || 0 }}</div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div
+ class="statistic-container cursor-pointer"
+ @click="toRoute('/goods/list?status=UP')"
+ >
+ <div class="statistic-title">在售商品</div>
+ <div class="statistic-num">{{ statistic.flowerUpCount || 0 }}</div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div
+ class="statistic-container cursor-pointer"
+ @click="toRoute('/goods/list?status=PENDING')"
+ >
+ <div class="statistic-title">待审核商品</div>
+ <div class="statistic-num">
+ {{ statistic.flowerPendingCount || 0 }}
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div
+ class="statistic-container cursor-pointer"
+ @click="toRoute('/order/after-sale?status=PENDING')"
+ >
+ <div class="statistic-title">待售后处理</div>
+ <div class="statistic-num">{{ statistic.orderSalesCount || 0 }}</div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div class="statistic-container">
+ <div class="statistic-title">总销售金额</div>
+ <div class="statistic-num">{{ statistic.totalSaleAmount || 0 }}</div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div class="statistic-container">
+ <div class="statistic-title">总销售扎数</div>
+ <div class="statistic-num">
+ {{ statistic.totalSaleFlowerCount || 0 }}
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div class="statistic-container">
+ <div class="statistic-title">供应商待提现</div>
+ <div class="statistic-num">
+ {{ statistic.supplierPendingAmount || 0 }}
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="6">
+ <div class="statistic-container">
+ <div class="statistic-title">供应商已提现</div>
+ <div class="statistic-num">
+ {{ statistic.supplierCompleteAmount || 0 }}
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row :gutter="22">
+ <el-col :span="8">
+ <div class="rate-container">
+ <div class="flex items-center justify-between mb-16">
+ <div class="text-20 text-mainTitle font-bold">
+ 订单量:<span class="text-primary">{{
+ orderStatistic.count || 0
+ }}</span>
+ </div>
+ <el-tag type="primary">今日</el-tag>
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 新增订单量:{{ orderStatistic.countToday || 0 }}
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 日环比:<span :class="getRateClass(orderStatistic.countRate)"
+ >{{ orderStatistic.countRate || 0 }}%</span
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="rate-container">
+ <div class="flex items-center justify-between mb-16">
+ <div class="text-20 text-mainTitle font-bold">
+ 供应商数量:<span class="text-primary">{{
+ supplierStatistic.count || 0
+ }}</span>
+ </div>
+ <el-tag type="primary">今日</el-tag>
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 新增供应商:{{ supplierStatistic.countToday || 0 }}
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 日环比:<span :class="getRateClass(supplierStatistic.countRate)"
+ >{{ supplierStatistic.countRate || 0 }}%</span
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="rate-container">
+ <div class="flex items-center justify-between mb-16">
+ <div class="text-20 text-mainTitle font-bold">
+ 全部用户量:<span class="text-primary">{{
+ userStatistic.count || 0
+ }}</span>
+ </div>
+ <el-tag type="primary">今日</el-tag>
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 新增用户量:{{ userStatistic.countToday || 0 }}
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 日环比:<span :class="getRateClass(userStatistic.countRate)"
+ >{{ userStatistic.countRate || 0 }}%</span
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="rate-container">
+ <div class="flex items-center justify-between mb-16">
+ <div class="text-20 text-mainTitle font-bold">
+ 用户访问量:<span class="text-primary">{{
+ visitStatistic.count || 0
+ }}</span>
+ </div>
+ <el-tag type="primary">今日</el-tag>
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 昨日访问量:{{ visitStatistic.countToday || 0 }}
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 日环比:<span :class="getRateClass(visitStatistic.countRate)"
+ >{{ visitStatistic.countRate || 0 }}%</span
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="rate-container">
+ <div class="flex items-center justify-between mb-16">
+ <div class="text-20 text-mainTitle font-bold">
+ 售后订单数量:<span class="text-primary">{{
+ saleStatistic.count || 0
+ }}</span>
+ </div>
+ <el-tag type="primary">今日</el-tag>
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 新增售后量:{{ saleStatistic.countToday || 0 }}
+ </div>
+ <div class="text-14 text-subTitle leading-22">
+ 日环比:<span :class="getRateClass(saleStatistic.countRate)"
+ >{{ saleStatistic.countRate || 0 }}%</span
+ >
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ currentDate: this.$elBusUtil.toDate(),
+ statistic: {},
+ orderStatistic: {},
+ supplierStatistic: {},
+ userStatistic: {},
+ visitStatistic: {},
+ saleStatistic: {},
+ }
+ },
+ head() {
+ return {
+ title: '首页',
+ }
+ },
+ mounted() {
+ this.init()
+ },
+ methods: {
+ async init() {
+ const [
+ res1,
+ res2,
+ res3,
+ orderRes,
+ supplierRes,
+ userRes,
+ visitRes,
+ saleRes,
+ ] = await Promise.all([
+ this.$elBusHttp.request('flower/api/statistics/sale/date', {
+ params: { date: this.currentDate },
+ }),
+ this.$elBusHttp.request('flower/api/statistics/flower/count'),
+ this.$elBusHttp.request('flower/api/statistics/order/amount'),
+ this.$elBusHttp.request('flower/api/statistics/order/rate', {
+ params: { date: this.currentDate },
+ }),
+ this.$elBusHttp.request('flower/api/statistics/supplier/rate', {
+ params: { date: this.currentDate },
+ }),
+ this.$elBusHttp.request('flower/api/statistics/customer/rate', {
+ params: { date: this.currentDate },
+ }),
+ this.$elBusHttp.request('flower/api/statistics/customer/visit/rate', {
+ params: { date: this.currentDate },
+ }),
+ this.$elBusHttp.request('flower/api/statistics/sales/rate', {
+ params: { date: this.currentDate },
+ }),
+ ])
+ this.statistic = { ...res1?.data, ...res2?.data, ...res3?.data }
+ this.orderStatistic = orderRes?.data || {}
+ this.supplierStatistic = supplierRes?.data || {}
+ this.userStatistic = userRes?.data || {}
+ this.visitStatistic = visitRes?.data || {}
+ this.saleStatistic = saleRes?.data || {}
+ },
+ getRateClass(rate) {
+ if (rate > 0) {
+ return 'text-success'
+ } else if (rate === 0) {
+ return ''
+ } else {
+ return 'text-danger'
+ }
+ },
+ toRoute(url) {
+ this.$router.push(url)
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/statistic/index.scss';
+.home-page {
+ .top-container {
+ width: 100%;
+ display: flex;
+ background-color: #fff;
+ border-radius: 4px;
+ box-shadow: 0px 2px 12px 0px rgba(75, 76, 77, 0.1);
+ padding: 30px;
+ &__item {
+ background-color: #f4faff;
+ border-radius: 2px;
+ text-align: center;
+ flex: 1;
+ height: 110px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ &:not(:last-child) {
+ margin-right: 22px;
+ }
+ }
+ &__label {
+ font-size: 20px;
+ color: $main-title-color;
+ font-weight: bold;
+ margin-bottom: 6px;
+ }
+ &__value {
+ font-size: 16px;
+ color: $primary-color;
+ }
+ }
+ .statistic-container {
+ background-color: #fff;
+ box-shadow: 0px 2px 12px 0px rgba(75, 76, 77, 0.1);
+ border-radius: 4px;
+ height: 110px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 22px;
+ }
+ .rate-container {
+ width: 100%;
+ background-color: #fff;
+ box-shadow: 0px 2px 12px 0px rgba(75, 76, 77, 0.1);
+ padding: 20px;
+ margin-bottom: 22px;
+ }
+}
+</style>
diff --git a/pages/order/after-sale/index.vue b/pages/order/after-sale/index.vue
index 5947a23..b1b99cf 100644
--- a/pages/order/after-sale/index.vue
+++ b/pages/order/after-sale/index.vue
@@ -71,7 +71,7 @@
},
// code: 'ORDER_SALES_STATUS',
},
- default: '',
+ default: this.$route.query.status || '',
span: 24,
searchImmediately: true,
on: {
diff --git a/pages/order/list/index.vue b/pages/order/list/index.vue
index 706be30..8533b52 100644
--- a/pages/order/list/index.vue
+++ b/pages/order/list/index.vue
@@ -124,7 +124,7 @@
},
// code: 'ORDER_STATUS_BACKEND',
},
- default: '',
+ default: this.$route.query.statusBackend || '',
span: 24,
searchImmediately: true,
on: {
diff --git a/tailwind.config.js b/tailwind.config.js
index db07e32..754de95 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -32,6 +32,8 @@
mainTitle: '#333',
subTitle: '#666',
tip: '#999',
+ danger: 'rgb(245, 108, 108)',
+ success: '#67c23a',
},
},
// 内边距
--
Gitblit v1.9.3