From 500ddf6571e656f33ef7fe10c570f6345344c989 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Thu, 01 Feb 2024 15:47:38 +0800
Subject: [PATCH] fix:断线监控

---
 src/views/onlineRate/detailBox.vue |  118 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 90 insertions(+), 28 deletions(-)

diff --git a/src/views/onlineRate/detailBox.vue b/src/views/onlineRate/detailBox.vue
index 608c90c..98394a2 100644
--- a/src/views/onlineRate/detailBox.vue
+++ b/src/views/onlineRate/detailBox.vue
@@ -35,6 +35,7 @@
               value-format="yyyy-MM-dd HH:mm"
               :default-date="[macDate.startTime, macDate.endTime]"
               :picker-options="pickerOptions"
+              align="right"
               @change="changeDay"
             />
           </el-form-item>
@@ -43,7 +44,7 @@
       <div>
         <div class="tit">
           <p style="font-size:16px">
-            {{ macOnlineDetailData.code }}%
+            ���<span class="greenClor">{{ sum }}</span>{{ time }}��������� <span class="greenClor">{{ macOnlineDetailData.pieChart2 }}</span>{{ time }}������������<span :class=" onlineRate<90 ?'redClor':'greenClor'">{{ onlineRate.toFixed(2) }}%</span>
           </p>
           <div id="myPieChart" />
         </div>
@@ -98,7 +99,11 @@
               label="������������"
               align="center"
               label-class-name="itemSpan"
-            />
+            >
+              <template slot-scope="scope">
+                <span>{{ scope.row.mun }}</span>{{ time }}
+              </template>
+            </el-table-column>
           </el-table>
         </div>
       </div>
@@ -117,6 +122,7 @@
   data () {
     return {
       title: '������',
+      sum: '',
       formInline: {},
       macOnlineDetailData: {},
       time: '������',
@@ -132,6 +138,35 @@
       // ������
 
       pickerOptions: {
+        shortcuts: [{
+          text: '���1���',
+          onClick (picker) {
+            const end = dayjs().subtract(1, 'hour')
+            const start = dayjs().subtract(1, 'day')
+            picker.$emit('pick', [new Date(start), new Date(end)])
+          }
+        }, {
+          text: '���3���',
+          onClick (picker) {
+            const end = dayjs().subtract(1, 'hour')
+            const start = dayjs().subtract(3, 'day')
+            picker.$emit('pick', [new Date(start), new Date(end)])
+          }
+        }, {
+          text: '���5���',
+          onClick (picker) {
+            const end = dayjs().subtract(1, 'hour')
+            const start = dayjs().subtract(5, 'day')
+            picker.$emit('pick', [new Date(start), new Date(end)])
+          }
+        }, {
+          text: '���7���',
+          onClick (picker) {
+            const end = dayjs().subtract(1, 'hour')
+            const start = dayjs().subtract(7, 'day')
+            picker.$emit('pick', [new Date(start), new Date(end)])
+          }
+        }],
         onPick: ({ maxDate, minDate }) => {
           // ���������������������������������������������������
           this.choiceDate = minDate.getTime()
@@ -161,13 +196,22 @@
       }
     }
   },
+  computed: {
+    onlineRate () {
+      console.log('///', ((this.macOnlineDetailData.pieChart2) / this.sum))
+      return (this.macOnlineDetailData.pieChart2 / this.sum) * 100 || 0
+    }
+  },
   watch: {
     time (newValue, oldValue) {
       if (newValue === '���') {
         this.type = 'day'
+        this.lineType = 'day'
       } else if (newValue === '������') {
         this.type = 'hour'
+        this.lineType = 'hour'
       } else if (newValue === '������') {
+        this.lineType = 'hour'
         this.type = 'minute'
       }
     }
@@ -200,23 +244,34 @@
       }
     },
     initPieChart (pieChartData) {
+      let that = this
+      let percent = null
       let labelData = {
-        show: false,
-      }
-      if (pieChartData[0] > 0) {
-        labelData = {
-          show: true,
-          position: 'left',
-          normal: {
-            formatter: function (params) {
-              console.log('params22', params)
-              let onlineType = params.dataIndex === 0 ? '������' : '������'
-              return `${onlineType}: ${params.value}`
-            },
-            fontSize: 14, // ������������������
-            fontStyle: 'italic', // ������������������
+        show: true,
+        position: 'right',
+        alignTo: 'edge',
+        margin: 0,
+        normal: {
+          formatter: function (params) {
+            percent = params.percent
+            let onlineType = params.dataIndex === 0 ? '������' : '������'
+            return `${onlineType}{a|${params.value}}${that.time}:{b|${params.percent}%}`
           },
-        }
+          fontSize: 14, // ������������������
+          fontStyle: 'italic', // ������������������
+          rich: { // ���rich������������������������������������
+            a: {
+              fontSize: 14,
+              fontStyle: 'italic',
+              color: '#67c23a'
+            },
+            b: {
+              fontSize: 14,
+              fontStyle: 'italic',
+              color: percent !== 0 ? '#67c23a' : 'red'
+            },
+          }
+        },
       }
       let dom = document.getElementById('myPieChart')
       let myChart = echarts.init(dom)
@@ -237,19 +292,21 @@
         series: [
           {
             radius: 30,
-            center: ['30%', '50%'],
+            center: ['50%', '50%'],
             type: 'pie',
             data: pieChartData,
             label: labelData,
+            labelLayout: {
+              hideOverlap: false
+            }
           },
         ],
       }, true)
     },
     initChart (myChart, option, dom) {
       myChart.setOption(option)
-      if (this.lineType === 'hour') {
-        myChart.on('click', (params) => {
-          console.log(params)
+      myChart.on('click', (params) => {
+        if (this.lineType === 'hour') {
           this.lineType = 'minute'
           echarts.dispose(dom)
           var myChart = echarts.init(dom)
@@ -258,8 +315,9 @@
           let endTiem = dayjs(starTiem).add(1, 'hour')
           this.getLineData(dayjs(starTiem).format('YYYY-MM-DD  HH:mm:ss'), dayjs(endTiem).format('YYYY-MM-DD  HH:mm:ss'), 'minute')
           myChart.setOption(option, true)
-        })
-      }
+        }
+        console.log('this.lineType', this.lineType)
+      })
     },
     renderBack () {
       this.lineType = 'hour'
@@ -278,13 +336,10 @@
     },
     getOption (xData, sData) {
       let option = null
-      let minTime = xData[0]
-      let maxTime = xData[xData.length]
       let interval = 3600 * 1000
       if (this.type === 'minute') {
         interval = 60 * 1000
       }
-      console.log(minTime, maxTime)
       option = {
         grid: {
           left: '40px', // ���������������
@@ -308,7 +363,7 @@
           formatter: function (params) {
             console.log(params)
             var value = params.data[0]
-            let tip = params.value === 1 ? '������: ' + value : '������: ' + value
+            let tip = params.value[1] === 1 ? '������: ' + value : '������: ' + value
             return tip
           },
         },
@@ -401,6 +456,7 @@
       })
         .then(res => {
           this.macOnlineDetailData = res.data
+          this.sum = res.data.sum
           this.tableData = res.data.tabulation
           let pieChartData = [this.macOnlineDetailData.pieChart1, this.macOnlineDetailData.pieChart2]
           this.initPieChart(pieChartData)
@@ -436,7 +492,7 @@
 }
   #myPieChart {
     height: 120px;
-    width: 400px!important;
+    width: 600px!important;
     canvas {
       width: 100%!important;
     }
@@ -459,4 +515,10 @@
     top: -40px;
   }
 }
+.redClor{
+  color: red;
+}
+.greenClor{
+  color:#67c23a;
+}
 </style>

--
Gitblit v1.8.0