From 086be7eae50e48ad554fd8a3f4cb1e333d587595 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 27 一月 2026 10:33:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/views/index.vue |  135 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 115 insertions(+), 20 deletions(-)

diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 34ad636..2cd5e29 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -56,7 +56,7 @@
       <div class="change-style">
         <div class="count-left">
           <div class="item-title" style="display: flex;">
-            <span style="flex: 1">缁忛攢鍟咺OP10</span>
+            <span style="flex: 1">缁忛攢鍟員OP10</span>
             <div class="tab-item" style="text-align: right;flex: 1.5; ">
               <span v-for="(item,index) in tabs1" :key="'tab'+index"  :class="item.index==tabIndex1?'active-tab tab-btn':'tab-btn'" @click="changeTab1(item)">{{item.name}}</span>
             </div>
@@ -98,7 +98,7 @@
         <div class="tab-title" style="display: flex;align-items: center; ">
           <span style="">钀ラ攢鏁版嵁鍒嗘瀽</span>
           <div class="tab-item" style="margin-left: 20px;" >
-            <el-date-picker  style="width: 110px;height: 22px;margin-right: 10px;"   v-model="searchForm.topYear2"  type="year"
+            <el-date-picker  style="width: 110px;height: 22px;margin-right: 10px;"   v-model="searchForm.topYear2"  type="year" @change="changeYear"
                              clearable  value-format="yyyy"     format="yyyy'骞�'"   placeholder="骞翠唤" ></el-date-picker>
           </div>
         </div>
@@ -106,25 +106,26 @@
       <div class="change-style">
         <div class="count-left">
           <div class="item-title">绉垎鍙戞斁绫诲瀷鍗犳瘮</div>
-          <div  class="bottom2" style="display: flex">
-              <div ref="integralCount" style="flex: 1"></div>
-              <div style="flex: 1;font-size: 14px;font-weight: 500;">
-                  <div>绱娑堣�楋細{{10000}}</div>
-                  <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+          <div  class="bottom2" style="display: flex;align-items: center">
+              <div ref="integralCount" style="flex: 1;min-height: 200px;"></div>
+              <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+                  <div>绱鍙戞斁鏁伴噺锛歿{( dataList4.num || 0 ) +( dataList4.num1 || 0 )+( dataList4.num2 || 0 )+( dataList4.num3 || 0 )}}</div>
+                  <div>绱娑堣�楋細{{ dataList4.useNum || 0 }}</div>
+                  <div>绱浼樻儬閲戦锛氾骏{{(dataList4.price || 0 ).toFixed(2) }}</div>
               </div>
           </div>
         </div>
         <div class="count-right">
           <div class="item-title">浼樻儬鍒稿彂鏀剧被鍨嬪崰姣�</div>
-          <div  class="bottom2">
-            <div  class="bottom2" style="display: flex">
-              <div ref="couponCount" style="flex: 1"></div>
-              <div style="flex: 1;font-size: 14px;font-weight: 500;">
-                <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{10000}}</div>
-                <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+            <div  class="bottom2" style="display: flex;align-items: center">
+              <div ref="couponCount" style="flex: 1;min-height: 200px;"></div>
+              <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+                <div>绱鍙戞斁鏁伴噺锛歿{( dataList3.num || 0 ) +( dataList3.num1 || 0 )}}</div>
+                <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{ dataList3.useNum || 0 }}</div>
+                <div>绱浼樻儬閲戦锛氾骏{{(dataList3.price || 0 ).toFixed(2) }}</div>
+                <div>淇冩垚浜ゆ槗閲戦锛氾骏{{(dataList3.orderPrice || 0 ).toFixed(2) }}</div>
               </div>
             </div>
-          </div>
         </div>
       </div>
       <div class="change-style" v-if="1==2">
@@ -150,6 +151,8 @@
       loading1: false,
       loading2: false,
       loading3: false,
+      loading4: false,
+      loading5: false,
       tabs2: [{ index: 0, name: '鎸夐攢閲�' }, { index: 1, name: '鎸夐攢鍞' }],
       tabs1: [{ index: 0, name: '鎸夎鍗曢噺' }, { index: 1, name: '鎸夐攢鍞' }, { index: 2, name: '鎸変細鍛樻暟' }],
       tabs: [{ index: 0, name: '浠婃棩' }, { index: 1, name: '杩�7鏃�' }, { index: 2, name: '杩�30鏃�' }, { index: 3, name: '杩�12鏈�' }],
@@ -181,8 +184,12 @@
       },
       dataList1: [],
       dataList2: [],
+      dataList4: [],
+      dataList3: [],
       myChart0: null,
-      myChart1: null
+      myChart1: null,
+      myChart2: null,
+      myChart3: null
     }
   },
   created () {
@@ -197,11 +204,37 @@
     this.initTopData()
     this.initShopRankData()
     this.initGoodsRankData()
+    this.initIntegralData()
+    this.initCouponData()
   },
   methods: {
     changeYearMonth(){
       this.initGoodsRankData()
       this.initShopRankData()
+    },
+    changeYear(){
+      this.initIntegralData()
+      this.initCouponData()
+    },
+    initCouponData () {
+      this.loading4 = true
+      this.api.couponData({year: this.searchForm.topYear2}).then(res => {
+        res = res || {}
+        this.dataList3 = res
+        this.renderEchartOption3()
+      }).finally(() => {
+        this.loading4 = false
+      })
+    },
+    initIntegralData () {
+      this.loading5 = true
+      this.api.integralData({ year: this.searchForm.topYear2}).then(res => {
+        res = res || {}
+        this.dataList4 = res
+        this.renderEchartOption2()
+      }).finally(() => {
+        this.loading5 = false
+      })
     },
     initShopRankData () {
       this.loading2 = true
@@ -236,7 +269,7 @@
         res.cateList = res.cateList || []
         this.topData = res
         this.renderEchartOption0()
-        this.renderEchartOption2()
+        this.renderEchartOption1()
       }).finally(() => {
         this.loading1 = false
       })
@@ -250,8 +283,18 @@
       window.addEventListener('resize', () => {
         this.myChart1.resize()
       })
+      this.myChart2 = echarts.init(this.$refs.integralCount)
+      window.addEventListener('resize', () => {
+        this.myChart2.resize()
+      })
+      this.myChart3 = echarts.init(this.$refs.couponCount)
+      window.addEventListener('resize', () => {
+        this.myChart3.resize()
+      })
       this.renderEchartOption0()
+      this.renderEchartOption1()
       this.renderEchartOption2()
+      this.renderEchartOption3()
     },
     changeTab (item) {
       if (this.loading1) {
@@ -336,7 +379,7 @@
         ]
       })
     },
-    renderEchartOption2 () {
+    renderEchartOption1 () {
       const series = []
       this.topData.cateList.forEach((item, index) => {
         series.push( {
@@ -347,7 +390,7 @@
           label: {
             // show: true
           },
-          data: item.data||[]
+          data: item.data || []
         })
       })
       this.myChart1.setOption({
@@ -375,10 +418,62 @@
           boundaryGap: false,
           data: this.topData.dateStrList || []
         },
-        yAxis: { type: 'value' } ,
+        yAxis: { type: 'value' },
         series
       })
-    }
+    },
+    renderEchartOption2() {
+      this.myChart2.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        series: [
+          {
+            name: 'Access From',
+            type: 'pie',
+            radius: '50%',
+            data: [
+              { value: this.dataList4.num || 0, name: '鎵嬪姩澧炲姞' },
+              { value: this.dataList4.num1 || 0, name: '閭�璇峰ソ鍙�' },
+              { value: this.dataList4.num2 || 0, name: '娑堣垂杩斿埄' },
+              { value: this.dataList4.num3 || 0, name: '娉ㄥ唽璧犻��' }
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      })
+    },
+    renderEchartOption3() {
+      this.myChart3.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        series: [
+          {
+            name: '浼樻儬鍒稿彂鏀�',
+            type: 'pie',
+            radius: '50%',
+            data: [
+              { value: this.dataList3.num1 || 0, name: '鎶樻墸鍒�' },
+              { value: this.dataList3.num || 0, name: '婊″噺鍒�' }
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      })
+    },
   }
 }
 </script>

--
Gitblit v1.9.3