From 569c6b3e6b28b2808d22af4656c8f65a973c345e Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 07 五月 2025 09:07:11 +0800
Subject: [PATCH] 提交

---
 admin/src/views/business/dangerStatic.vue |  319 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 273 insertions(+), 46 deletions(-)

diff --git a/admin/src/views/business/dangerStatic.vue b/admin/src/views/business/dangerStatic.vue
index 09678dd..d1ea42c 100644
--- a/admin/src/views/business/dangerStatic.vue
+++ b/admin/src/views/business/dangerStatic.vue
@@ -1,15 +1,37 @@
 <template>
-  <div class="main_app">
-    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear"
-      @changeForm='changeForm'>
-      <template #fastdate>
-        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
-          <el-radio-button label="0">褰撳ぉ</el-radio-button>
-          <el-radio-button label="6">杩�7澶�</el-radio-button>
-          <el-radio-button label="29">杩�30澶�</el-radio-button>
-        </el-radio-group>
-      </template>
-    </QueryForm>
+  <div class="main_app1">
+    <div class="main_head">
+      <div class="main_head_item blue">
+        <span>{{totalList.total}}</span>
+        <span>鎬婚殣鎮f暟</span>
+      </div>
+      <div class="main_head_item red">
+        <span>{{totalList.waitDeal}}</span>
+        <span>寰呭鐞�</span>
+      </div>
+      <div class="main_head_item yellow">
+        <span>{{totalList.dealFinish}}</span>
+        <span>宸叉暣鏀�</span>
+      </div>
+      <div class="main_head_item orange">
+        <span>{{totalList.back}}</span>
+        <span>宸查��鍥�</span>
+      </div>
+      <div class="main_head_item darkBlue">
+        <span>{{totalList.todayNew}}</span>
+        <span>浠婃棩鏂板</span>
+      </div>
+    </div>
+<!--    <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getData(1)" @clear="clear"-->
+<!--      @changeForm='changeForm'>-->
+<!--      <template #fastdate>-->
+<!--        <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">-->
+<!--          <el-radio-button label="0">褰撳ぉ</el-radio-button>-->
+<!--          <el-radio-button label="6">杩�7澶�</el-radio-button>-->
+<!--          <el-radio-button label="29">杩�30澶�</el-radio-button>-->
+<!--        </el-radio-group>-->
+<!--      </template>-->
+<!--    </QueryForm>-->
     <div class="main_content">
       <div class="type_wrap">
         <div class="title">闅愭偅绫诲瀷缁熻</div>
@@ -24,6 +46,30 @@
         <div v-show="deptList && deptList.length > 0" class="echart2" ref="deptRef"></div>
         <div v-show="deptList.length == 0" style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;">
           <img style="width: 240px;" src="@/assets/images/default_homeimg.png" alt="">
+        </div>
+      </div>
+    </div>
+    <div class="main_table">
+      <div class="main_table_echart">
+        <div class="title">鏈勾闅愭偅瓒嬪娍</div>
+        <div id="echart3" v-if="yearList.length > 0"></div>
+        <div v-else style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;">
+          <img style="width: 240px;" src="@/assets/images/default_homeimg.png" alt="">
+        </div>
+      </div>
+      <div class="main_table_list">
+        <div class="title">鏈湀棰戠箒鍙戠敓闅愭偅鍖哄煙Top10</div>
+        <div class="list_head">
+          <div class="list_head_item">璐d换閮ㄩ棬</div>
+          <div class="list_head_item">闅愭偅鍖哄煙</div>
+          <div class="list_head_item">闅愭偅鏁伴噺</div>
+        </div>
+        <div class="table_box">
+          <div class="list_content" v-for="(item, index) in departmentList" :key="index">
+            <div class="list_head_item">{{item.name}}</div>
+            <div class="list_head_item">{{item.categoryName}}</div>
+            <div class="list_head_item">{{item.total}}</div>
+          </div>
         </div>
       </div>
     </div>
@@ -74,10 +120,20 @@
       },
       typeList: [],
       deptList: [],
+      totalList: {
+        total: 0,
+        waitDeal: 0,
+        dealFinish: 0,
+        back: 0,
+        todayNew: 0
+      },
+      yearList: [],
+      departmentList: []
     }
   },
   mounted() {
     this.changeRadio('29')
+    this.initDept3()
     // this.getData()
   },
   methods: {
@@ -90,11 +146,22 @@
     getData(page) {
       hiddenDangerDataPost({ ...this.filters }).then(res => {
         if (res) {
+          this.totalList.total = res.total || 0
+          this.totalList.waitDeal = res.waitDeal || 0
+          this.totalList.dealFinish = res.dealFinish || 0
+          this.totalList.back = res.back || 0
+          this.totalList.todayNew = res.todayNew || 0
+
+          this.yearList = res.yearList
+
+          this.departmentList = res.departmentList.slice(0, 10)
+
           this.typeList = res.cateList || []
           this.deptList = res.departmentList || []
           this.$nextTick(() => {
             this.initType()
             this.initDept()
+            this.initDept3()
           })
 
         }
@@ -114,8 +181,8 @@
       let option = {
         grid: {
           left: '0%',
-          // right: '4%',
-          // bottom: '3%',
+          right: '0%',
+          bottom: '0%',
           top: '0%',
           containLabel: true
         },
@@ -126,7 +193,7 @@
             left: '45%',
             textStyle: {
               color: '#666666',
-              fontSize: 16,
+              fontSize: 13,
             },
           }, {
             text: total,
@@ -134,7 +201,7 @@
             left: '47.6%',
             textStyle: {
               color: '#080404',
-              fontSize: 24,
+              fontSize: 16,
               fontWeight: 'bold',
             },
           }],
@@ -157,7 +224,7 @@
         series: [
           {
             type: 'pie',
-            radius: ['24%', '40%'],
+            radius: ['34%', '50%'],
             label: {
               formatter: "{a|{b}}\n\n{c} | {d}%",
               rich: {
@@ -198,6 +265,13 @@
       const myChart = echarts.init(document.querySelector('.echart2'))
 
       let option = {
+        grid: {
+          left: '10%',
+          right: '10%',
+          bottom: '0%',
+          top: '20%',
+          containLabel: true
+        },
         xAxis: {
           type: 'category',
           data: this.deptList.map(i => i.name),
@@ -241,6 +315,41 @@
         myChart.resize()
       })
     },
+    initDept3() {
+      if (this.yearList.length === 0) return
+
+      const myChart = echarts.init(document.querySelector('#echart3'))
+
+      let names = this.yearList.map(item => item.name)
+      let datas = this.yearList.map(item => item.total)
+
+      let option = {
+        grid: {
+          left: '5%',
+          right: '10%',
+          bottom: '0%',
+          top: '20%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          data: names
+        },
+        yAxis: {
+          type: 'value'
+        },
+        series: [
+          {
+            data: datas,
+            type: 'line'
+          }
+        ]
+      }
+      myChart.setOption(option)
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
     clear() {
       this.filters = {}
       this.getData()
@@ -253,42 +362,160 @@
 /*.main_app {
   height: 100%;
 }*/
-
-.main_content {
-  display: flex;
-  height: calc(100% - 100px);
-
-  .title {
-    font-weight: 600;
-    font-size: 16px;
-    color: #222222;
+.main_app1 {
+  width: 100%;
+  height: calc(100% - 44px);
+  overflow-y: auto;
+  overflow-x: hidden;
+  padding: 15px;
+  box-sizing: border-box;
+  background-color: #ffffff;
+  .main_head {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
     margin-bottom: 20px;
-    margin-top: 20px;
-  }
-
-  .type_wrap {
-    flex: 11;
-    flex-shrink: 0;
-    height: calc(100% - 20px);
-    border-right: 12px solid #f7f7f7;
-
-
-    .echart1 {
-      width: 100%;
-      height: calc(100% - 60px);
+    .blue {
+      border-left: 5px solid blue;
+    }
+    .red {
+      border-left: 5px solid red;
+    }
+    .yellow {
+      border-left: 5px solid yellow;
+    }
+    .orange {
+      border-left: 5px solid orange;
+    }
+    .darkBlue {
+      border-left: 5px solid #0000a8;
+    }
+    .main_head_item {
+      width: 19%;
+      height: 70px;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      box-sizing: border-box;
+      border-radius: 5px;
+      background-color: #ffffff;
+      span {
+        &:nth-child(1) {
+          font-size: 22px;
+          color: black;
+          font-weight: bold;
+        }
+        &:nth-child(2) {
+          font-size: 16px;
+          color: black;
+        }
+      }
     }
   }
 
-  .dept_wrap {
-    flex: 10;
-    flex-shrink: 0;
-    height: calc(100% - 20px);
-    padding-left: 20px;
+  .main_table {
+    display: flex;
+    align-items: start;
+    justify-content: space-between;
+    .main_table_echart {
+      flex: 1;
+      height: 400px;
+      .title {
+        font-weight: 600;
+        font-size: 16px;
+        color: #222222;
+      }
+      #echart3 {
+        width: 100%;
+        height: calc(100% - 33px);
+      }
+    }
+    .main_table_list {
+      margin-left: 20px;
+      flex-shrink: 0;
+      width: 500px;
+      .title {
+        font-weight: 600;
+        font-size: 16px;
+        color: #222222;
+      }
+      .list_head {
+        width: 100%;
+        height: 35px;
+        display: flex;
+        align-items: center;
+        background-color: #ececec;
+        margin-top: 15px;
+        .list_head_item {
+          flex: 1;
+          height: 100%;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          font-size: 13px;
+          color: #222222;
+        }
+      }
+      .table_box {
+        width: 100%;
+        .list_content {
+          width: 100%;
+          height: 35px;
+          display: flex;
+          align-items: center;
+          .list_head_item {
+            flex: 1;
+            height: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            font-size: 13px;
+            color: #222222;
+          }
+        }
+      }
+    }
+  }
 
-    .echart2 {
-      width: 100%;
-      height: calc(100% - 60px);
+  .main_content {
+    display: flex;
+    height: 500px;
+
+    .title {
+      font-weight: 600;
+      font-size: 16px;
+      color: #222222;
+      /*margin-bottom: 20px;*/
+      margin-top: 20px;
+    }
+
+    .type_wrap {
+      flex: 11;
+      flex-shrink: 0;
+      height: calc(100% - 20px);
+      /*border-right: 12px solid #f7f7f7;*/
+
+
+      .echart1 {
+        width: 100%;
+        height: calc(100% - 60px);
+      }
+    }
+
+    .dept_wrap {
+      flex: 10;
+      flex-shrink: 0;
+      height: calc(100% - 20px);
+      padding-left: 20px;
+
+      .echart2 {
+        width: 100%;
+        height: calc(100% - 60px);
+      }
     }
   }
 }
+
 </style>

--
Gitblit v1.9.3