From 7e460156de73171f9660ce48f80703e79f8b478d Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期六, 14 六月 2025 11:48:26 +0800
Subject: [PATCH] 初始化提交

---
 src/views/home/index.vue |  343 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 214 insertions(+), 129 deletions(-)

diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index bef0609..1374550 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,87 +1,194 @@
+<!-- eslint-disable vue/attributes-order -->
 <template>
   <div class="dashboard-container">
-      <div class="home-annular-list">
-        <div class="annular-item" v-for="item in 4" :key="item">
-        </div>
+    <el-empty
+      description="鏆傛棤鏁版嵁"
+      v-if="chartData.PieData&&chartData.DailyTotal&&
+        chartData.WeekNumData&&chartData.ExceedThirtyDay.length!=0
+      "
+    />
+    <template v-else>
+      <div class="home-annular-list" v-show="chartData.PieData">
+        <div v-for="item in 4" :key="item" class="annular-item " :class="'pie'+item" />
       </div>
       <div class="home-line-bar">
         <div class="left">
-          <div class="top">1</div>
-          <div class="bottom">1</div></div>
+          <div class="top" />
+          <div class="bottom">
+            涓磋繎30澶╁簱瀛�
+            <div>
+              <el-table
+                :data="exceedThirtyDay"
+                stripe
+                style="width: 100%"
+              >
+                <el-table-column
+                  prop="product_name"
+                  label="浜у搧鍚嶇О"
+                />
+                <el-table-column
+                  prop="RemainingDays"
+                  label="浜у搧搴撳瓨"
+                />
+                <el-table-column
+                  prop="product_code"
+                  label="浜у搧缂栫爜"
+                />
+                <el-table-column
+                  prop="product_model"
+                  label="浜у搧瑙勬牸"
+                />
+                <el-table-column
+                  prop="unit"
+                  label="鍗曚綅"
+                />
+              </el-table>
+            </div>
+          </div>
+        </div>
         <div class="right">
-         1
+          <div />
         </div>
       </div>
+    </template>
+
   </div>
 </template>
 
 <script>
+import { getList } from '@/api/home'
 import { mapGetters } from 'vuex'
 import * as echarts from 'echarts'
 export default {
   name: 'Home',
+  data() {
+    return {
+      exceedThirtyDay: [],
+      show: true,
+      chartData: {}
+    }
+  },
   computed: {
     ...mapGetters([
       'name'
     ])
   },
   mounted() {
-    console.log(echarts)
+    // console.log(echarts)
+    this.echartsInit()
+
+    // 鍒锋柊鏃朵互褰撳墠璺敱鍋氫负tab鍔犲叆tabs
+    // 褰撳墠璺敱涓嶆槸棣栭〉鏃讹紝娣诲姞棣栭〉浠ュ強鍙︿竴椤靛埌store閲岋紝骞惰缃縺娲荤姸鎬�
+    // 褰撳綋鍓嶈矾鐢辨槸棣栭〉鏃讹紝娣诲姞棣栭〉鍒皊tore锛屽苟璁剧疆婵�娲荤姸鎬�
+    if (this.$route.path !== '/' && this.$route.path !== '/home') {
+      console.log('1')
+      this.$store.commit('ADD_TAB', { route: '/home', name: '涓婚〉' })
+      this.$store.commit('ADD_TAB', { route: this.$route.path, name: this.$route.name })
+      this.$store.commit('SET_ACTIVE_INDEX', this.$route.path)
+    }
+    // else {
+    //   console.log('2');
+    //   this.$store.commit('ADD_TAB', {route: '/home', name: 'home'});
+    //   this.$store.commit('SET_ACTIVE_INDEX', '/home');
+    //   this.$router.push('/');
+    // }
+
+    console.log(this.$store.state)
+  },
+  created() {
     this.echartsInit()
   },
   methods: {
-    echartsInit() {
-      let boxArr = document.querySelectorAll(".annular-item")
-      boxArr.forEach((item) => {
-        echarts.init(item).setOption({
-          legend: {
-            type: 'scroll',
-            align: 'left',
-            orient: 'vertical',
-            x: 'right',
-            y: 'center'
-          },
-          title: {
-            text: '楗煎浘绾圭悊',
-            textStyle: {
-              color: '#235894'
-            }
-          },
-          tooltip: {
-            trigger: 'item'
-          },
-  series: [
-    {
-      name: 'Access From',
-      type: 'pie',
-      radius: ['40%', '70%'],
-      center: ['25%', '50%'],
-      avoidLabelOverlap: false,
-      itemStyle: {
-        borderRadius: 5,
-        borderColor: '#fff',
-        borderWidth: 2
-      },
-      label: {
-        show: false,
-        position: 'left'
-      },
-      labelLine: {
-        show: false
-      },
-      data: [
-        { value: 1048, name: 'Search Engine' },
-        { value: 735, name: 'Direct' },
-        { value: 580, name: 'Email' },
-        { value: 484, name: 'Union Ads' },
-        { value: 300, name: 'Video Ads' }
-      ]
-    }
-  ]
-})
+    getData() {
+    },
+    getPie(PieData, className) {
+      console.log(className)
+      const box = document.querySelector(className)
+      echarts.init(box).setOption({
+        legend: {
+          type: 'scroll',
+          align: 'left',
+          orient: 'vertical',
+          x: 'right',
+          y: 'center'
+        },
+        title: {
+          text: '楗煎浘绾圭悊',
+          textStyle: {
+            color: '#235894'
+          }
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        series: [
+          {
+            name: PieData.datetime,
+            type: 'pie',
+            radius: ['40%', '70%'],
+            center: ['25%', '50%'],
+            avoidLabelOverlap: false,
+            itemStyle: {
+              borderRadius: 5,
+              borderColor: '#fff',
+              borderWidth: 2
+            },
+            label: {
+              show: false,
+              position: 'left'
+            },
+            labelLine: {
+              show: false
+            },
+            data: [
+              { value: PieData.addNum, name: '鍏ュ簱鏁扮洰' },
+              { value: PieData.outNum, name: '鍑哄簱鏁扮洰' },
+              { value: PieData.beginningMonth, name: '鏈堝垵搴撳瓨' },
+              { value: PieData.endOfMonth, name: '鏈堟湯搴撳瓨' }
+            ]
+          }
+        ]
       })
-    
-      let letTop = document.querySelector(".top")
+    },
+    getLine(DailyTotal) {
+      const right = document.querySelector('.right')
+      echarts.init(right).setOption({
+        legend: {
+
+          x: 'center',
+          slected: true
+        },
+        title: {
+          text: '浠撳簱缁熻',
+          textStyle: {
+            color: '#235894'
+          }
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        xAxis: {
+          type: 'category',
+          boundaryGap: false,
+          data: DailyTotal?.xList
+        },
+        yAxis: {
+          type: 'value'
+        },
+        series: [
+          {
+            data: DailyTotal?.yList,
+            type: 'line',
+            smooth: true,
+            name: '姣忔棩鎬昏',
+            areaStyle: {}
+          }
+
+        ]
+      })
+    },
+    getBar(WeekNumData) {
+      const letTop = document.querySelector('.top')
       echarts.init(letTop).setOption({
         grid: {
           left: '3%',
@@ -90,75 +197,52 @@
           containLabel: true
         },
         legend: {
-            x: 'center',
-            y: 'top'
+          x: 'center',
+          y: 'top'
+        },
+        title: {
+          text: '浠撳簱缁熻',
+          textStyle: {
+            color: '#235894'
+          }
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        xAxis: {
+          type: 'category',
+          data: WeekNumData.xList
+        },
+        yAxis: {
+          type: 'value'
+        },
+        series: [
+          {
+            data: WeekNumData.yOutList,
+            name: '鍑哄簱鏁伴噺',
+            type: 'bar'
           },
-          title: {
-            text: '浠撳簱缁熻',
-            textStyle: {
-              color: '#235894'
-            }
-          },
-          tooltip: {
-            trigger: 'item'
-          },
-  xAxis: {
-    type: 'category',
-    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-  },
-  yAxis: {
-    type: 'value'
-  },
-  series: [
-    {
-      data: [120, 200, 150, 80, 70, 110, 130],
-      name: '鍑哄簱鏁伴噺',
-      type: 'bar'
+          {
+            data: WeekNumData.yEnterList,
+            name: '鍏ュ簱鏁伴噺',
+            type: 'bar'
+          }
+        ]
+      })
     },
-    {
-      data: [220, 210, 80, 110, 30, 80, 130],
-      name: '鍏ュ簱鏁伴噺',
-      type: 'bar'
-    }
-  ]
-})
-    
+    async echartsInit() {
+      const res = await getList()
+      const { data } = res
+      this.chartData = { ...data }
+      console.log(this.chartData)
+      data.PieData?.forEach((item, index) => {
+        console.log(item)
+        this.getPie(item, '.pie' + (index + 1))
+      })
 
-      let right = document.querySelector(".right")
-      echarts.init(right).setOption({
-        legend: {
-           
-            x: 'center',
-            slected: true
-          },
-          title: {
-            text: '浠撳簱缁熻',
-            textStyle: {
-              color: '#235894'
-            }
-          },
-          tooltip: {
-            trigger: 'item'
-          },
-  xAxis: {
-    type: 'category',
-    boundaryGap: false,
-    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-  },
-  yAxis: {
-    type: 'value'
-  },
-  series: [
-    {
-      data: [820, 932, 901, 934, 1290, 1330, 1320],
-      type: 'line',
-      smooth: true,
-      name: '鏁版嵁1',
-      areaStyle: {}
-    }
-    
-  ]
-})
+      this.getBar(data.WeekNumData)
+      this.getLine(data.DailyTotal)
+      this.exceedThirtyDay = data.ExceedThirtyDay
     }
   }
 }
@@ -178,15 +262,14 @@
   }
 }
 .home-annular-list{
-  
-  margin: 12px;
+  margin: 12px 0;
   display: flex;
   justify-content: space-between;
   .annular-item{
-    width:   350px;
-    height: 240px;
+    width:  300px;
+    height: 200px;
     border-radius: 10px;
-    padding: 25px;
+    padding: 20px;
     background: #fff;
     // margin: 0 12px;
   }
@@ -223,6 +306,8 @@
       background: #fff;
       padding: 25px;
       border-radius: 10px;
+      // max-width: 500px;
+      max-height: 328px;
     }
   }
 }

--
Gitblit v1.9.3