From ae9dd5b413e679b1da868cc456f2a8fcd2c4f619 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 06 Apr 2021 22:28:43 +0800
Subject: [PATCH] 预警分析页面预警数量统计数据回填,预警分类占比饼图数据回填

---
 src/api/statis/statis.js                    |   20 ++
 src/views/alarmManagement/alarmAnalysis.vue |  374 +++++++++++++++++++++++++++++++---------------------
 2 files changed, 241 insertions(+), 153 deletions(-)

diff --git a/src/api/statis/statis.js b/src/api/statis/statis.js
index d01d819..4894ee3 100644
--- a/src/api/statis/statis.js
+++ b/src/api/statis/statis.js
@@ -8,4 +8,24 @@
             ...params,
         }
     })
+}
+
+export const selectAlertScount = (params) => {
+    return request({
+        url: '/api/blade-jfpts/alarm/alarm/selectAlertScount',
+        method: 'get',
+        params: {
+            ...params,
+        }
+    })
+}
+
+export const selAlarmDayAveragePro = (params) => {
+    return request({
+        url: '/api/blade-jfpts/alarm/alarm/selAlarmDayAveragePro',
+        method: 'get',
+        params: {
+            ...params,
+        }
+    })
 }
\ No newline at end of file
diff --git a/src/views/alarmManagement/alarmAnalysis.vue b/src/views/alarmManagement/alarmAnalysis.vue
index 775572b..f8b8810 100644
--- a/src/views/alarmManagement/alarmAnalysis.vue
+++ b/src/views/alarmManagement/alarmAnalysis.vue
@@ -78,7 +78,8 @@
 
 <script>
   import echarts from 'echarts'
-  import {selectIndexCount} from "@/api/statis/statis";
+  import {selectIndexCount,selectAlertScount,selAlarmDayAveragePro} from "@/api/statis/statis";
+import alarmVue from '../alarm/alarm.vue';
 
   export default {
     data(){
@@ -111,40 +112,22 @@
     },
 
     mounted() {
-      //统计预警总数
-      this.getStatisTotalData();
-      //预警数量统计
-      this.getAlarmNumberStatis();
-      //预警分类统计
-      this.getAlarmClassifyStatis();
-      //预警类型占比统计
-      this.getAlarmTypeProEcharts();
-      this.getAlarmTypeProStatis();
-      //预警设备类型占比统计
-      this.getAlarmEquipmentProEcharts();
-      this.getAlarmEquipmentProStatis();
-      //确认时间占比统计
-      this.getConfirmTimeProEcharts();
-      this.getConfirmTimeProStatis();
-      this.confirmAverageSpeedStatis();
-      //预警时间分布统计
-      this.getAlarmTimeDisEchars();
+      //默认是查询当月的数据
+      this.getData(2);
+      
     },
 
     methods: {
       //警情统计总数
       getStatisTotalData(data){
         selectIndexCount(data).then(res => {
-            console.log(res.data);
-            this.form = res.data.data;
-        }); 
         var that = this;
         that.statisToTalData.data = [
             {
               click: function (item) {
               },
               title: '警情总数',
-              count: 12332,
+              count: res.data.data[0].value,
               icon: 'el-icon-warning',
               color: '#F34A4A'
             },
@@ -152,7 +135,7 @@
               click: function (item) {
               },
               title: '违禁包裹数',
-              count: 33,
+              count: res.data.data[1].value,
               icon: 'el-icon-warning',
               color: '#FF9836'
             },
@@ -160,7 +143,7 @@
               click: function (item) {
               },
               title: '违禁物品数',
-              count: 2223,
+              count: res.data.data[2].value,
               icon: 'el-icon-setting',
               color: '#8058A5'
             },
@@ -168,7 +151,7 @@
               click: function (item) {
               },
               title: '在线设备数',
-              count: 2223,
+              count: res.data.data[3].value,
               icon: 'el-icon-setting',
               color: '#29C093'
             },
@@ -176,91 +159,114 @@
               click: function (item) {
               },
               title: '客户数量',
-              count: 2223,
+              count: res.data.data[4].value,
               icon: 'el-icon-setting',
               color: '#3AA7F0'
             }
           ];
+        }); 
       },
 
       //预警数量分布
-      getAlarmNumberStatis(){
-        let echarts = require('echarts');
-        let myChart = echarts.init(document.getElementById('alarmNumberStatis'));
-        let option = {
-            title: {
-              textStyle: {
-                        fontWeight: 'normal',
-                        fontSize: 16,
-                        color: '#000'
-                    },
-                    left: '1%',
-                    top: 25,
-                    textAlign:'left',
-              text: '预警时间分布'
-            },
-            tooltip: {
-                trigger: 'axis'
-            },
-            grid: {
-                left: '3%',
-                right: '7%',
-                bottom: '10%',
-                top:'20%',
-                containLabel: true
-            },
-            xAxis: {
-                type: 'category',
-                boundaryGap: false,
-                data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
-            },
-            yAxis: {
-                type: 'value',
-                splitLine: {
-                  show: true,
-                  lineStyle:{
-                      type:'dashed'
+      getAlarmNumberStatis(data){
+        //调接口,获取数据
+        selectAlertScount(data).then(res =>{
+          console.log(res.data,111);
+          var typesArray = res.data.data.types;
+          var timesArray = res.data.data.times;
+          var dataArray = res.data.data.dataList;
+          console.log(dataArray,333);
+          var data = [];
+          dataArray.forEach(item => {
+            if (item.name == typesArray[0]) {
+              data.push({
+                name: item.name,
+                data: item.alarmData,
+                type: 'line'
+              })
+            }
+            if (item.name == typesArray[1]) {
+              data.push({
+                name: item.name,
+                type: 'line',
+                data: item.parcelData
+              })
+            }
+            
+            if (item.name == typesArray[2]) {
+              data.push({
+                name: item.name,
+                type: 'line',
+                data: item.healthcodeData
+              })
+            }
+            
+            if (item.name == typesArray[3]) {
+              data.push({
+                name: item.name,
+                type: 'line',
+                data: item.animalData
+              })
+            }
+          })
+          let echarts = require('echarts');
+          let myChart = echarts.init(document.getElementById('alarmNumberStatis'));
+          let option = {
+              title: {
+                textStyle: {
+                          fontWeight: 'normal',
+                          fontSize: 16,
+                          color: '#000'
+                      },
+                      left: '1%',
+                      top: 25,
+                      textAlign:'left',
+                text: '预警数量分布'
+              },
+              tooltip: {
+                  trigger: 'axis'
+              },
+              grid: {
+                  left: '3%',
+                  right: '7%',
+                  bottom: '10%',
+                  top:'20%',
+                  containLabel: true
+              },
+              xAxis: {
+                  type: 'category',
+                  boundaryGap: false,
+                  data: timesArray
+              },
+              yAxis: {
+                  type: 'value',
+                  splitLine: {
+                    show: true,
+                    lineStyle:{
+                        type:'dashed'
+                    }
                   }
-                }
-            },
-            series: [
-                {
-                    name: '邮件营销',
-                    type: 'line',
-                    stack: '总量',
-                    data: [120, 132, 101, 134, 90, 230, 210]
-                },
-                {
-                    name: '联盟广告',
-                    type: 'line',
-                    stack: '总量',
-                    data: [220, 182, 191, 234, 290, 330, 310]
-                },
-                {
-                    name: '视频广告',
-                    type: 'line',
-                    stack: '总量',
-                    data: [150, 232, 201, 154, 190, 330, 410]
-                },
-                {
-                    name: '直接访问',
-                    type: 'line',
-                    stack: '总量',
-                    data: [320, 332, 301, 334, 390, 330, 320]
-                }
-            ]
-        };
+              },
+              series: data
+          };
 
-        myChart.setOption(option);
-    
-        //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
-        window.addEventListener('resize',function() {myChart.resize()});
+          myChart.setOption(option);
+      
+          //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+          window.addEventListener('resize',function() {myChart.resize()});
+        })
       },
 
       //警情类别统计总数
-      getAlarmClassifyStatis(){
-        var that = this;
-        that.alarmClassifyStatis.data = [
+      getAlarmClassifyStatis(data){
+        selAlarmDayAveragePro(data).then(res =>{
+          var time  = this.dateTime;
+          var day = this.getDaysBetween(time[0],time[1]);
+          
+          console.log(time,102);
+          console.log(Math.round(day),103);
+          var that = this;
+          that.alarmClassifyStatis.data = [
             {
                 click: function (item) {
                 },
@@ -268,7 +274,7 @@
                 color:'yellow',
                 target:'_blank',
                 name:'日平均一键求助数',
-                date:'1.00'
+                date:(res.data.data[0]/Math.round(day)).toFixed(2)
             },
             {
                 click: function (item) {
@@ -276,7 +282,7 @@
                 title:'违禁品',
                 color:'green',
                 name:'日平均违禁品数',
-                date:'3.00'
+                date:(res.data.data[1]/Math.round(day)).toFixed(2)
             },
             {
                 click: function (item) {
@@ -284,7 +290,7 @@
                 title:'红色健康码',
                 color:'#3fa1ff',
                 name:'日平均红色健康码数',
-                date:'1.00'
+                date:(res.data.data[2]/Math.round(day)).toFixed(2)
             },
             {
                 click: function (item) {
@@ -292,14 +298,23 @@
                 title:'体温异常',
                 color:'red',
                 name:'日平均体温异常数',
-                date:'10.00'
+                date:(res.data.data[3]/Math.round(day)).toFixed(2)
             }
           ];
+        })
       },
 
 
       //预警类型占比统计
-      getAlarmTypeProEcharts(){
+      getAlarmTypeProEcharts(data){
+        selAlarmDayAveragePro(data).then(res =>{
+          var data = [];
+          data.push(
+              {value: res.data.data[0], name: '一键求助'},
+              {value: res.data.data[1], name: '违禁品'},
+              {value: res.data.data[2], name: '红色健康码'},
+              {value: res.data.data[3], name: '体温异常'}
+          )
           let echarts = require('echarts');
           let myChart = echarts.init(document.getElementById('alarmTypeProEcharts'));
           let option = {
@@ -338,20 +353,14 @@
                       emphasis: {
                           label: {
                               show: true,
-                              fontSize: '40',
+                              fontSize: '18',
                               fontWeight: 'bold'
                           }
                       },
                       labelLine: {
                           show: false
                       },
-                      data: [
-                          {value: 1048, name: '搜索引擎'},
-                          {value: 735, name: '直接访问'},
-                          {value: 580, name: '邮件营销'},
-                          {value: 484, name: '联盟广告'},
-                          {value: 300, name: '视频广告'}
-                      ]
+                      data: data
                   }
               ]
           };
@@ -359,53 +368,58 @@
     
           //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
           window.addEventListener('resize',function() {myChart.resize()});
+        })
+          
       },
 
 
       //警情类别统计总数(分类占比)
-      getAlarmTypeProStatis(){
-        var that = this;
-        that.alarmTypeProStatis.data = [
+      getAlarmTypeProStatis(data){
+        selAlarmDayAveragePro(data).then(res =>{
+          var that = this;
+          var count = res.data.data[0]+res.data.data[1]+res.data.data[2]+res.data.data[3];
+          console.log(count,1112);
+          that.alarmTypeProStatis.data = [
             {
                 click: function (item) {
                 },
                 title:'一键求助',
                 color:'yellow',
                 target:'_blank',
-                name:'0',
-                date:'0.00%'
+                name:res.data.data[0],
+                date:res.data.data[0]/count*100+'%'
             },
             {
                 click: function (item) {
                 },
                 title:'违禁品',
                 color:'green',
-                name:'0',
-                date:'0.00%'
+                name:res.data.data[1],
+                date:res.data.data[1]/count*100+'%'
             },
             {
                 click: function (item) {
                 },
                 title:'红色健康码',
                 color:'#3fa1ff',
-                name:'0',
-                date:'0.00%'
+                name:res.data.data[2],
+                date:res.data.data[2]/count*100+'%'
             },
             {
                 click: function (item) {
                 },
                 title:'体温异常',
                 color:'red',
-                name:'0',
-                date:'0.00%'
+                name:res.data.data[3],
+                date:res.data.data[3]/count*100+'%'
             }
           ];
+        })
+        
       },
 
-
-
       //预警设备类型占比统计
-      getAlarmEquipmentProEcharts(){
+      getAlarmEquipmentProEcharts(data){
           let echarts = require('echarts');
           let myChart = echarts.init(document.getElementById('alarmEquipmentProEcharts'));
           let option = {
@@ -468,7 +482,7 @@
       },
 
       //预警设备类型占比统计(分类表格)
-      getAlarmEquipmentProStatis(){
+      getAlarmEquipmentProStatis(data){
           var that = this;
           that.alarmEquipmentProStatisData=[
               {
@@ -503,7 +517,7 @@
 
 
       //确认时间占比统计
-      getConfirmTimeProEcharts(){
+      getConfirmTimeProEcharts(data){
           let echarts = require('echarts');
           let myChart = echarts.init(document.getElementById('confirmTimeProEcharts'));
           let option = {
@@ -566,7 +580,7 @@
       },
 
       //确认时间占比(分类)
-      getConfirmTimeProStatis(){
+      getConfirmTimeProStatis(data){
         var that = this;
         that.confirmTimeProStatis.data = [
             {
@@ -602,7 +616,7 @@
       },
 
       //预警平均速度排行(table)
-      confirmAverageSpeedStatis(){
+      confirmAverageSpeedStatis(data){
           var that = this;
           that.confirmAverageSpeedData=[
               {
@@ -634,7 +648,7 @@
       },
 
       //预警时间分布
-      getAlarmTimeDisEchars(){
+      getAlarmTimeDisEchars(data){
         let echarts = require('echarts');
         let myChart = echarts.init(document.getElementById('alarmTimeDisEchars'));
         let option = {
@@ -713,58 +727,112 @@
       },
 
       //点击按钮获取不同时间段的数据
-      getData(data){
-          var that = this;
+      getData(date){
+          var data = this.getDate(date);
+          //调用方法
+          //统计预警总数
+          this.getStatisTotalData(data);
+          //预警数量统计
+          this.getAlarmNumberStatis(data);
+          //预警分类统计
+          this.getAlarmClassifyStatis(data);
+          //预警类型占比统计
+          this.getAlarmTypeProEcharts(data);
+          this.getAlarmTypeProStatis(data);
+          //预警设备类型占比统计
+          this.getAlarmEquipmentProEcharts(data);
+          this.getAlarmEquipmentProStatis(data);
+          //确认时间占比统计
+          this.getConfirmTimeProEcharts(data);
+          this.getConfirmTimeProStatis(data);
+          this.confirmAverageSpeedStatis(data);
+          //预警时间分布统计
+          this.getAlarmTimeDisEchars(data);
+      },
+
+
+      //计算两个日期之间的天数
+      getDaysBetween(startTime,endTime){
+          var  startDate = Date.parse(startTime);
+          var  endDate = Date.parse(endTime);
+          if (startDate>endDate){
+              return 0;
+          }
+          if (startDate==endDate){
+              return 1;
+          }
+          var days=(endDate - startDate)/(1*24*60*60*1000);
+          return  days;
+      },
+
+
+      getDate(date){
+        var that = this;
           var today = new Date();
           var startTime ='';
           var endTime = '';
           //本周的时间
-          if(data==1){
-            startTime = this.showWeekFirstDay(today);
-            endTime = this.showToDay(today);
+          if(date==1){
+            startTime = this.showWeekFirstDay(today)+ " 00:00:00";
+            endTime = this.showToDay(today)+ " 23:59:59";
             that.dateTime = [startTime,endTime];
           }
           //月初至今的时间
-          if(data==2){
-            startTime = this.showMonthFirstDay(today);
-            endTime = this.showToDay(today);
+          if(date==2){
+            startTime = this.showMonthFirstDay(today)+ " 00:00:00";
+            endTime = this.showToDay(today)+ " 23:59:59";
             that.dateTime = [startTime,endTime];
           }
           //本季度初至今的时间
-          if(data==3){
-            startTime = this.getQuarterStartDate(today);
-            endTime = this.showToDay(today);
+          if(date==3){
+            startTime = this.getQuarterStartDate(today)+ " 00:00:00";
+            endTime = this.showToDay(today)+ " 23:59:59";
             that.dateTime = [startTime,endTime];
           }
           //封装数据
-          var data = {};
-          data ={
+          var data ={};
+          return data ={
             startTime:this.dateTime[0],
             endTime:this.dateTime[1]
           }
-          console.log(data,111);
-          //调用方法
       },
+
 
       //本日
       showToDay(Nowdate){   
         var M=Number(Nowdate.getMonth())+1;
-        console.log(Nowdate.getFullYear,111);
-        return Nowdate.getFullYear()+"-"+M+"-"+Nowdate.getDate();   
+        if(M<10){
+          M="0"+M;
+        }
+        var day = Nowdate.getDate();
+        if(day<10){
+          day = "0"+day;
+        }
+        return Nowdate.getFullYear()+"-"+M+"-"+day;   
       },
 
       //本周第一天
       showWeekFirstDay(Nowdate){   
         var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);   
-        var M=Number(WeekFirstDay.getMonth())+1;   
-        return WeekFirstDay.getFullYear()+"-"+M+"-"+WeekFirstDay.getDate();
+        var M=Number(WeekFirstDay.getMonth())+1;
+        if(M<10){
+          M="0"+M;
+        }
+        var day = WeekFirstDay.getDate();
+        if(day<10){
+          day = "0"+day;
+        }
+        return WeekFirstDay.getFullYear()+"-"+M+"-"+day;
       },
 
       //本月第一天
       showMonthFirstDay(Nowdate){   
         var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);   
-        var M=Number(MonthFirstDay.getMonth())+1   
-        return MonthFirstDay.getFullYear()+"-"+M+"-"+MonthFirstDay.getDate();   
+        var M=Number(MonthFirstDay.getMonth())+1;
+        if(M<10){
+          M="0"+M;
+        } 
+        return MonthFirstDay.getFullYear()+"-"+M+"-"+"0"+MonthFirstDay.getDate();   
       },
 
       //本季度的第一天
@@ -804,7 +872,7 @@
   
 </script>
 <style lang="scss">
-  .el-button.btn-color {
+  .el-button .btn-color {
     color: rgb(255, 255, 255);
     background-color: #29C093;
     border-color: #29C093;

--
Gitblit v1.9.3