|
|
@@ -1,124 +1,182 @@
|
|
|
<template>
|
|
|
- <ele-page flex-table>
|
|
|
- <ele-card flex-table>
|
|
|
- <map-card class="flex-1" />
|
|
|
+ <ele-page flex-table>
|
|
|
+ <ele-card flex-table>
|
|
|
+ <date-search class="mb-4" v-model="mapDateRange" @search="fetchProvinceData" />
|
|
|
+ <map-card class="flex-1" :province-data="provinceData" />
|
|
|
|
|
|
- <div class="flex gap-10">
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <el-statistic
|
|
|
- title="总审核单量"
|
|
|
- :value="268500"
|
|
|
- value-style="font-size:30px;color:#409eef"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <el-statistic
|
|
|
- title="总审核本数"
|
|
|
- :value="268500"
|
|
|
- value-style="font-size:30px;color:#409eef"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <el-statistic
|
|
|
- title="总审核金额"
|
|
|
- :value="268500"
|
|
|
- value-style="font-size:30px;color:#409eef"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <el-statistic
|
|
|
- title="总用户人数"
|
|
|
- :value="268500"
|
|
|
- value-style="font-size:30px;color:#409eef"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-divider></el-divider>
|
|
|
- <div class="flex gap-4">
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收订单数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收数量(本)"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收单本均价"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="待审核订单数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="待签收订单数"></stat-card>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="flex gap-4 mt-4">
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="今日扫描次数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="今日扫描人数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="用户增长数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="待审核金额"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="待打款金额"></stat-card>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-divider></el-divider>
|
|
|
-
|
|
|
- <div class="flex gap-4">
|
|
|
- <div style="flex: 4" class="flex flex-col">
|
|
|
- <div class="flex gap-4">
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收订单数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收数量(本)"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="回收单本均价"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="审核订单数"></stat-card>
|
|
|
+ <div class="flex gap-10">
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <el-statistic title="总审核单量" :value="268500" value-style="font-size:30px;color:#409eef" />
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <el-statistic title="总审核本数" :value="268500" value-style="font-size:30px;color:#409eef" />
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <el-statistic title="总审核金额" :value="268500" value-style="font-size:30px;color:#409eef" />
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <el-statistic title="总用户人数" :value="268500" value-style="font-size:30px;color:#409eef" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="flex gap-4 mt-4">
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="签收订单数"></stat-card>
|
|
|
+ <el-divider></el-divider>
|
|
|
+ <div class="flex gap-4">
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收订单数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收数量(本)"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收单本均价"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="待审核订单数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="待签收订单数"></stat-card>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="扫描次数"></stat-card>
|
|
|
+ <div class="flex gap-4 mt-4">
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="今日扫描次数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="今日扫描人数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="用户增长数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="待审核金额"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="待打款金额"></stat-card>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="扫描人数"></stat-card>
|
|
|
- </div>
|
|
|
- <div class="flex-1 stat-card">
|
|
|
- <stat-card title="用户增长数"></stat-card>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <el-divider></el-divider>
|
|
|
|
|
|
- <div class="flex-1 flex flex-col stat-card">
|
|
|
- <pie-chart />
|
|
|
- <pie-chart />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </ele-card>
|
|
|
- </ele-page>
|
|
|
+ <div class="flex-col">
|
|
|
+ <date-search class="mb-4" v-model="dateRange" @search="fetchHistoryData" />
|
|
|
+ <div class="gap-4 flex">
|
|
|
+ <div style="flex: 4" class="flex flex-col">
|
|
|
+ <div class="flex gap-4">
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收订单数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收数量(本)"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="回收单本均价"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="审核订单数"></stat-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex gap-4 mt-4">
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="签收订单数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="扫描次数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="扫描人数"></stat-card>
|
|
|
+ </div>
|
|
|
+ <div class="flex-1 stat-card">
|
|
|
+ <stat-card title="用户增长数"></stat-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="flex-1 flex flex-col stat-card">
|
|
|
+ <pie-chart title="回收折扣占比" :data="recycleDiscountData" />
|
|
|
+ <pie-chart title="审核品相比例分析" :data="auditRatioData" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </ele-card>
|
|
|
+ </ele-page>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
- import mapCard from '@/views/statistic/overview/components/map-card.vue';
|
|
|
- import statCard from '@/views/statistic/overview/components/stat-card.vue';
|
|
|
- import pieChart from '@/views/statistic/overview/components/pie-chart.vue'
|
|
|
+import mapCard from "@/views/statistic/overview/components/map-card.vue";
|
|
|
+import statCard from "@/views/statistic/overview/components/stat-card.vue";
|
|
|
+import pieChart from "@/views/statistic/overview/components/pie-chart.vue";
|
|
|
+import DateSearch from "@/components/DateSearch/index.vue";
|
|
|
+import dayjs from "dayjs";
|
|
|
+import request from "@/utils/request";
|
|
|
+import { onMounted, ref } from "vue";
|
|
|
+
|
|
|
+const provinceData = ref([]);
|
|
|
+const dateRange = ref([
|
|
|
+ dayjs().subtract(6, "day").format("YYYY-MM-DD"),
|
|
|
+ dayjs().format("YYYY-MM-DD"),
|
|
|
+]);
|
|
|
+// 地图数据时间范围
|
|
|
+const mapDateRange = ref([
|
|
|
+ dayjs().subtract(6, "day").format("YYYY-MM-DD"),
|
|
|
+ dayjs().format("YYYY-MM-DD"),
|
|
|
+]);
|
|
|
+
|
|
|
+// 组织回收折扣比例数据
|
|
|
+const recycleDiscountData = ref([
|
|
|
+ { value: 0, name: "≥2折", key: "discount2" },
|
|
|
+ { value: 0, name: "2<至≥1", key: "discount12" },
|
|
|
+ { value: 0, name: "1<至≥0.5", key: "discount051" },
|
|
|
+ { value: 0, name: "≤0.5", key: "discount05" },
|
|
|
+]);
|
|
|
+
|
|
|
+// 组织审核品相比例分析数据
|
|
|
+const auditRatioData = ref([
|
|
|
+ { value: 0, name: "良好", key: "auditGoodNum" },
|
|
|
+ { value: 0, name: "一般", key: "auditGeneralNum" },
|
|
|
+ { value: 0, name: "较差", key: "auditBadNum" },
|
|
|
+]);
|
|
|
+
|
|
|
+//获取历史数据汇总
|
|
|
+const fetchHistoryData = async () => {
|
|
|
+ let params = {
|
|
|
+ statisticDateStart: dateRange.value[0],
|
|
|
+ statisticDateEnd: dateRange.value[1],
|
|
|
+ };
|
|
|
+ request.get("/order/recycleStatisticOverview/order/recycleStatisticOverview/history", { params })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.data.code === 200) {
|
|
|
+ recycleDiscountData.value.forEach((item) => {
|
|
|
+ item.value = res.data.data[item.key] || 0;
|
|
|
+ });
|
|
|
+ auditRatioData.value.forEach((item) => {
|
|
|
+ item.value = res.data.data[item.key] || 0;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 获取省份排名数据 //传入的时间是近7天,结束时间就是今天,使用 dayjs
|
|
|
+const fetchProvinceData = async () => {
|
|
|
+ const params = {
|
|
|
+ statisticDateStart: mapDateRange.value[0],
|
|
|
+ statisticDateEnd: mapDateRange.value[1],
|
|
|
+ };
|
|
|
+ request.get("/order/recycleStatisticOverview/order/recycleStatisticOverview/provinceRankList", {
|
|
|
+ params,
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.data.code === 200) {
|
|
|
+ provinceData.value = res.data.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ fetchProvinceData();
|
|
|
+ fetchHistoryData();
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
|
- .stat-card {
|
|
|
+.stat-card {
|
|
|
border-radius: 10px;
|
|
|
background: #f8f7f6;
|
|
|
padding: 20px;
|
|
|
@@ -126,8 +184,9 @@
|
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
+
|
|
|
.el-statistic__head {
|
|
|
- text-align: center;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
- }
|
|
|
+}
|
|
|
</style>
|