From 8aa3edd56c279100c9053576f3e90fa55459fe77 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Mon, 16 Jan 2023 16:15:55 +0800
Subject: [PATCH] 修改
---
src/views/alarmManagement/alarmAnalysis.vue | 1278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,278 insertions(+), 0 deletions(-)
diff --git a/src/views/alarmManagement/alarmAnalysis.vue b/src/views/alarmManagement/alarmAnalysis.vue
index e69de29..5bc3c17 100644
--- a/src/views/alarmManagement/alarmAnalysis.vue
+++ b/src/views/alarmManagement/alarmAnalysis.vue
@@ -0,0 +1,1278 @@
+<template>
+ <div class="big">
+ <!-- 标题 -->
+<!-- <div class="alarm_title"><span>预警分析</span></div>-->
+ <!-- 时间按钮 -->
+ <div class="timeSearchBtn">
+ <el-button-group class="timeBtn">
+ <el-button
+ v-bind:class="activeClass == 1 ? 'btn-color' : ''"
+ size="small"
+ @click="getData(1)">
+ 本周
+ </el-button>
+
+ <el-button
+ v-bind:class="activeClass == 2 ? 'btn-color' : ''"
+ size="small"
+ @click="getData(2)">
+ 月初至今
+ </el-button>
+
+ <el-button
+ v-bind:class="activeClass == 3 ? 'btn-color' : ''"
+ size="small"
+ @click="getData(3)">
+ 季度至今
+ </el-button>
+ </el-button-group>
+ <el-date-picker
+ class="timeSearch"
+ size="small"
+ v-model="dateTime"
+ type="daterange"
+ @change="timeChange"
+ range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+ </el-date-picker>
+ </div>
+ <!-- 监测点 -->
+ <div class="statisTotal">
+ <avue-data-box :option="statisToTalData" class="statisTotalAvueDataBox"></avue-data-box>
+ </div>
+ <!-- 预警数量分布 -->
+ <div class="alarmStatis">
+ <div id="alarmNumberStatis">
+ </div>
+ <div class="alarmClassifyStatis">
+ <avue-data-cardtext :option="alarmClassifyStatis"></avue-data-cardtext>
+ </div>
+ </div>
+ <!-- 预警类型占比 -->
+ <div class="alarmTypePro">
+ <div id="alarmTypeProEcharts"></div>
+ <div class="alarmTypeTotal">
+ <div class="numAlarmType"><span>{{alarmTypeTotal}}</span></div>
+ <div class="textAlarmType"><span>总预警数</span></div>
+ </div>
+ <div class="alarmTypeProStatis">
+ <avue-data-cardtext :option="alarmTypeProStatis"></avue-data-cardtext>
+ </div>
+ </div>
+ <!-- 预警设备类型占比 -->
+ <div class="alarmEquipmentPro" style="display:none">
+ <div id="alarmEquipmentProEcharts"></div>
+ <div class="alarmEquipmentProStatis">
+ <avue-crud :data="alarmEquipmentProStatisData" :option="alarmEquipmentProStatisOption"></avue-crud>
+ </div>
+ </div>
+ <!-- 确认时间占比 -->
+ <div class="confirmTimePro">
+ <div id="confirmTimeProEcharts"></div>
+ <div class="confirmTimeTotal">
+ <div class="numConfirmTime"><span>{{confirmTimeTotal}}</span></div>
+ <div class="textConfirmTime"><span>确认预警数</span></div>
+ </div>
+ <div class="confirmTimeProStatis">
+ <avue-data-cardtext :option="confirmTimeProStatis"></avue-data-cardtext>
+ </div>
+ </div>
+ <!-- 预警平均确认速度排行 -->
+ <div class="confirmAverageSpeed">
+ <div class="confirmAverageSpeedTitle"><span>预警平均确认速度排行</span></div>
+ <avue-crud :data="confirmAverageSpeedData" :option="confirmAverageSpeedOption"></avue-crud>
+ </div>
+ <!-- 预警时间分布 -->
+ <div class="alarmTimeDis">
+ <div id="alarmTimeDisEchars"></div>
+ </div>
+
+ <!-- 底部 -->
+ <div class="low"></div>
+ </div>
+</template>
+
+<script>
+ import echarts from 'echarts'
+ import {selectIndexCount,selectAlertScount,selAlarmDayAveragePro,selConfirmTimePro,selAlarmTimeDis} from "@/api/statis/statis";
+ import alarmVue from '../alarm/alarm.vue';
+
+ export default {
+ data(){
+ return {
+ activeClass:2,
+ alarmTypeTotal:0,
+ confirmTimeTotal:0,
+ statisToTalData: {
+ span:6,
+ data: []
+ },
+ dateTime: '',
+ alarmClassifyStatis:{
+ span:6,
+ data: []
+ },
+ alarmTypeProStatis:{
+ span:10,
+ height:100,
+ data: []
+ },
+ alarmEquipmentProStatisData:[],
+ alarmEquipmentProStatisOption:{},
+ confirmTimeProStatis:{
+ span:10,
+ height:100,
+ data: []
+ },
+ confirmAverageSpeedData:[],
+ confirmAverageSpeedOption:{}
+ };
+ },
+
+ mounted() {
+ //默认是查询当月的数据
+ this.getData(2);
+ window.handleStartAlarm=this.handleStartAlarm;
+ window.handleStartParcel=this.handleStartParcel;
+ window.handleStartParcelKind=this.handleStartParcelKind;
+ window.handleStartEquipment=this.handleStartEquipment;
+ window.handleStartSuser=this.handleStartSuser;
+ window.handleStartAnimalHeat=this.handleStartAnimalHeat;
+ window.handleStartHealthcode=this.handleStartHealthcode;
+ },
+
+ methods: {
+ //日期选好后触发
+ timeChange(){
+ //清空选项按钮标记
+ var that = this;
+ var time = this.dateTime;
+ var startTime = time[0]+"";
+ if(startTime.indexOf("-")==-1){
+ //修改时间格式
+ time[0]=this.timeFormat(time[0]);
+ time[1]=this.timeFormat(time[1]);
+ }
+ //如果开始时间和结束时间相同,则修改结束时间
+ if(time[0]==time[1]){
+ time[1]= time[0].substring(0,10)+" 23:59:59";
+ }
+ that.activeClass = 0;
+ var data = {};
+ data ={
+ startTime:time[0],
+ endTime:time[1]
+ }
+ this.getStatisData(data);
+ },
+
+ //中国区时间格式转换
+ timeFormat(date){
+ let y = date.getFullYear()
+ let m = date.getMonth() + 1
+ m = m < 10 ? ('0' + m) : m
+ let d = date.getDate()
+ d = d < 10 ? ('0' + d) : d
+ let h =date.getHours()
+ h = h < 10 ? ('0' + h) : h
+ let M =date.getMinutes()
+ M = M < 10 ? ('0' + M) : M
+ let s =date.getSeconds()
+ s = s < 10 ? ('0' + s) : s
+ let time= y + '-' + m + '-' + d + ' ' + h + ':' + M + ':' + s;
+ return time;
+ },
+
+ //警情统计总数
+ getStatisTotalData(data){
+ selectIndexCount(data).then(res => {
+ var that = this;
+ var time = this.dateTime;
+ var startTime = time[0]+"";
+ if(startTime.indexOf("-")==-1){
+ //修改时间格式
+ time[0]=this.timeFormat(time[0]);
+ time[1]=this.timeFormat(time[1]);
+ }
+ //如果开始时间和结束时间相同,则修改结束时间
+ if(time[0]==time[1]){
+ time[1]= time[0].substring(0,10)+" 23:59:59";
+ }
+ that.statisToTalData.data = [
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title: '警情总数',
+ count: res.data.data[0].value,
+ icon: 'el-icon-message-solid',
+ color: '#F34A4A'
+ },
+ {
+ click: function (item) {
+ var data =[];
+ // // 当前时间
+ // var date = new Date();
+ // //年
+ // var Y = date.getFullYear();
+ // //月
+ // var M = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+ // //日
+ // var D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+ console.log(this.dateTime,111);
+ data.push({
+ startTime:time[0],
+ endTime: time[1],
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcel(data);
+ },
+ title: '违禁包裹数',
+ count: res.data.data[1].value,
+ icon: 'el-icon-shopping-bag-1',
+ color: '#FF9836'
+ },
+ {
+ click: function (item) {
+ var data = [];
+ // 当前时间
+ // var date = new Date();
+ // //年
+ // var Y = date.getFullYear();
+ // //月
+ // var M = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+ // //日
+ // var D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+
+ data.push({
+ startTime:time[0],
+ endTime: time[1],
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcelKind(data);
+ },
+ title: '违禁物品数',
+ count: res.data.data[2].value,
+ icon: 'el-icon-warning',
+ color: '#8058A5'
+ },
+ {
+ click: function (item) {
+ var data =[];
+ data.push({
+ dxtype: 4
+ });
+ //console.log(data[0],111);
+ window.parent.handleStartEquipment(data);
+ },
+ title: '在线设备数',
+ count: res.data.data[3].value,
+ icon: 'el-icon-success',
+ color: '#29C093'
+ },
+ {
+ click: function (item) {
+ window.parent.handleStartSuser();
+ },
+ title: '客户数量',
+ count: res.data.data[4].value,
+ icon: 'el-icon-s-custom',
+ color: '#3AA7F0'
+ }
+ ];
+ });
+ },
+
+ //主动报警(一键求助,电话报警)分页数据
+ handleStartAlarm(data) {
+ this.$router.push({
+ path: `/realTimePolice/index`,
+ query: data[0],
+ });
+ },
+
+ //包裹分页数据
+ handleStartParcel(data) {
+ this.$router.push({
+ path: `/parcel/index`,
+ query: data[0],
+ });
+ },
+
+ //违禁品分页数据
+ handleStartParcelKind(data) {
+ this.$router.push({
+ path: `/parcelKind/index`,
+ query: data[0],
+ });
+ },
+
+ //在线设备分页数据
+ handleStartEquipment(data) {
+ this.$router.push({
+ path: `/clientManagement/index`,
+ query: data[0],
+ });
+ },
+
+ //客户管理分页数据
+ handleStartSuser() {
+ this.$router.push({
+ path: `/suser/index`,
+ });
+ },
+
+ //体温监测分页数据
+ handleStartAnimalHeat(data) {
+ this.$router.push({
+ path: `/animalHeat/animalHeatPage`,
+ query: data[0],
+ });
+ },
+
+ //健康码分页数据
+ handleStartHealthcode(data) {
+ this.$router.push({
+ path: `/healthcode/healthcodePage`,
+ query: data[0],
+ });
+ },
+
+ //预警数量分布
+ getAlarmNumberStatis(data){
+ //调接口,获取数据
+ selectAlertScount(data).then(res =>{
+ var typesArray = res.data.data.types;
+ var timesArray = res.data.data.times;
+ var dataArray = res.data.data.dataList;
+ 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'));
+ myChart.on('click', function (params) {
+ var data = [];
+
+ if(params.seriesName=='一键求助'){
+ data.push({
+ startTime:params.name+" 00:00:00",
+ endTime:params.name+" 23:59:59",
+ waringType:'紧急求救',
+ })
+ window.parent.handleStartAlarm(data);
+ }
+
+ if(params.seriesName=='违禁品'){
+ data.push({
+ startTime:params.name+" 00:00:00",
+ endTime:params.name+" 23:59:59",
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcelKind(data);
+ }
+
+ if(params.seriesName=='红色健康码'){
+ data.push({
+ startTime:params.name+" 00:00:00",
+ endTime:params.name+" 23:59:59",
+ type:3
+ });
+ window.parent.handleStartHealthcode(data);
+ }
+
+ if(params.seriesName=='体温异常'){
+ data.push({
+ startTime:params.name+" 00:00:00",
+ endTime:params.name+" 23:59:59",
+ status:1
+ });
+ window.parent.handleStartAnimalHeat(data);
+ }
+ })
+ var colors = ['#FF9836', '#1E90FF', '#F34A4A', '#8058A5'];
+ let option = {
+ color:colors,
+ 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: data
+ };
+
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ })
+ },
+
+ //警情类别统计总数
+ getAlarmClassifyStatis(data){
+ selAlarmDayAveragePro(data).then(res =>{
+ var time = this.dateTime;
+ var day = this.getDaysBetween(time[0],time[1]);
+ var that = this;
+ that.alarmClassifyStatis.data = [
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'一键求助',
+ color:'#FF9836',
+ name:'日平均一键求助数',
+ date:(res.data.data[0]/Math.round(day)).toFixed(2)
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcelKind(data);
+ },
+ title:'违禁品',
+ color:'#1E90FF',
+ name:'日平均违禁品数',
+ date:(res.data.data[1]/Math.round(day)).toFixed(2)
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ type:3
+ });
+ window.parent.handleStartHealthcode(data);
+ },
+ title:'红色健康码',
+ color:'#F34A4A',
+ name:'日平均红色健康码数',
+ date:(res.data.data[2]/Math.round(day)).toFixed(2)
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ status:1
+ });
+ window.parent.handleStartAnimalHeat(data);
+ },
+ title:'体温异常',
+ color:'#8058A5',
+ name:'日平均体温异常数',
+ date:(res.data.data[3]/Math.round(day)).toFixed(2)
+ }
+ ];
+ })
+ },
+
+
+ //预警类型占比统计
+ getAlarmTypeProEcharts(data){
+ selAlarmDayAveragePro(data).then(res =>{
+ var that = this;
+ //计算总和
+ that.alarmTypeTotal = res.data.data[0]+res.data.data[1]+res.data.data[2]+res.data.data[3];
+ var data = [];
+ var startDate = this.dateTime[0];
+ var endDate = this.dateTime[1];
+ 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'));
+ myChart.on('click', function (params) {
+ var data = [];
+
+ if(params.name=='一键求助'){
+ data.push({
+ startTime:startDate,
+ endTime:endDate,
+ waringType:'紧急求救',
+ })
+ window.parent.handleStartAlarm(data);
+ }
+
+ if(params.name=='违禁品'){
+ data.push({
+ startTime:startDate,
+ endTime:endDate,
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcelKind(data);
+ }
+
+ if(params.name=='红色健康码'){
+ data.push({
+ startTime:startDate,
+ endTime:endDate,
+ type:3
+ });
+ window.parent.handleStartHealthcode(data);
+ }
+
+ if(params.name=='体温异常'){
+ data.push({
+ startTime:startDate,
+ endTime:endDate,
+ status:1
+ });
+ window.parent.handleStartAnimalHeat(data);
+ }
+
+ })
+ var colors = ['#FF9836', '#3fa1ff', '#F34A4A', '#8058A5'];
+ let option = {
+ color:colors,
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '预警类型占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['43%','60%'],
+ center: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ labelLine: {
+ show: false
+ },
+ data: data
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ })
+
+ },
+
+
+ //警情类别统计总数(分类占比)
+ getAlarmTypeProStatis(data){
+ selAlarmDayAveragePro(data).then(res =>{
+ var that = this;
+ var time = this.dateTime;
+ var count = res.data.data[0]+res.data.data[1]+res.data.data[2]+res.data.data[3];
+ that.alarmTypeProStatis.data = [
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'一键求助',
+ color:'#FF9836',
+ name:res.data.data[0],
+ date:(res.data.data[0]/count*100).toFixed(2)+'%'
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ decisioDiagramResult:"contraband"
+ });
+ window.parent.handleStartParcelKind(data);
+ },
+ title:'违禁品',
+ color:'#3fa1ff',
+ name:res.data.data[1],
+ date:(res.data.data[1]/count*100).toFixed(2)+'%'
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ type:3
+ });
+ window.parent.handleStartHealthcode(data);
+ },
+ title:'红色健康码',
+ color:'#F34A4A',
+ name:res.data.data[2],
+ date:(res.data.data[2]/count*100).toFixed(2)+'%'
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ status:1
+ });
+ window.parent.handleStartAnimalHeat(data);
+ },
+ title:'体温异常',
+ color:'#8058A5',
+ name:res.data.data[3],
+ date:(res.data.data[3]/count*100).toFixed(2)+'%'
+ }
+ ];
+ })
+ },
+
+ //预警设备类型占比统计
+ getAlarmEquipmentProEcharts(data){
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('alarmEquipmentProEcharts'));
+ let option = {
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '预警设备类型占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['43%','60%'],
+ cneter: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: 1048, name: '搜索引擎'},
+ {value: 735, name: '直接访问'},
+ {value: 580, name: '邮件营销'},
+ {value: 484, name: '联盟广告'},
+ {value: 300, name: '视频广告'}
+ ]
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ },
+
+ //预警设备类型占比统计(分类表格)
+ getAlarmEquipmentProStatis(data){
+ var that = this;
+ that.alarmEquipmentProStatisData=[
+ {
+ name:'一键求助',
+ sex:'1',
+ date:'100%'
+ }
+ ];
+ that.alarmEquipmentProStatisOption={
+ menu:false,
+ menuBtn:false,
+ page:false,
+ align:'center',
+ menuAlign:'center',
+ column:[
+ {
+ label:'预警设备类型',
+ prop:'name'
+ },
+ {
+ label:'预警次数',
+ prop:'sex'
+ },{
+ label: "占比",
+ prop: "date"
+ }
+ ]
+ }
+
+
+ },
+
+
+ //确认时间占比统计
+ getConfirmTimeProEcharts(data){
+ selConfirmTimePro(data).then(res =>{
+ var data = res.data.data;
+ var that =this;
+ //计算总数
+ that.confirmTimeTotal = data[0]+data[1]+data[2]+data[3];
+ var time = this.dateTime;
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('confirmTimeProEcharts'));
+ //饼图点击事件
+ myChart.on('click',function(params){
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: params.name
+ })
+ window.parent.handleStartAlarm(data);
+ })
+ var colors = ['green','#3fa1ff','yellow','#F34A4A']
+ let option = {
+ color:colors,
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '确认时间占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: ['43%', '60%'],
+ center: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: data[0], name: '小于5分钟'},
+ {value: data[1], name: '5-10分钟'},
+ {value: data[2], name: '10-30分钟'},
+ {value: data[3], name: '30分钟以上'}
+ ]
+ }
+ ]
+ };
+ myChart.setOption(option);
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ })
+ },
+
+ //确认时间占比(分类)
+ getConfirmTimeProStatis(data){
+ selConfirmTimePro(data).then(res =>{
+ var data = res.data.data;
+ var time = this.dateTime;
+ var that = this;
+ that.confirmTimeProStatis.data = [
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: '小于5分钟'
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'小于5分钟',
+ color:'green',
+ name:data[0]==0? 0:data[0]+"次",
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: '5-10分钟'
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'5-10分钟',
+ color:'#3fa1ff',
+ name:data[1]==0? 0:data[1]+"次",
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: '10-30分钟'
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'10-30分钟',
+ color:'yellow',
+ name:data[2]==0? 0:data[2]+"次",
+ },
+ {
+ click: function (item) {
+ var data = [];
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: '30分钟以上'
+ })
+ window.parent.handleStartAlarm(data);
+ },
+ title:'30分钟以上',
+ color:'#F34A4A',
+ name:data[3]==0? 0:data[3]+"次",
+ }
+ ];
+ })
+ },
+
+ //预警平均确认速度排行(table)
+ confirmAverageSpeedStatis(data){
+ var that = this;
+ that.confirmAverageSpeedData=[
+ {
+ name:'mis_zhang',
+ sex:'1',
+ }
+ ];
+ that.confirmAverageSpeedOption={
+ title:'预警平均确认速度排行',
+ titleSize:'h3',
+ titleStyle:{
+ color:'red'
+ },
+ menu:false,
+ page:false,
+ align:'center',
+ menuAlign:'center',
+ column:[
+ {
+ label:'巡检人',
+ prop:'name'
+ },
+ {
+ label:'平均确认速度',
+ prop:'sex'
+ }
+ ]
+ }
+ },
+
+ //预警时间分布
+ getAlarmTimeDisEchars(data){
+ selAlarmTimeDis(data).then(res =>{
+ var data = res.data;
+ var time = this.dateTime;
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('alarmTimeDisEchars'));
+ //图表数据点击事件
+ myChart.on('click', function (params) {
+ var data = [];
+ if(params.seriesName=='一键求助'){
+ window.parent.handleStartAlarm(data);
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ waringType:'紧急求救',
+ timeDesc: params.name
+ })
+ window.parent.handleStartAlarm(data);
+ }
+
+ if(params.seriesName=='违禁品'){
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ decisioDiagramResult:"contraband",
+ timeDesc: params.name
+ });
+ window.parent.handleStartParcelKind(data);
+ }
+
+ if(params.seriesName=='红色健康码'){
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ type:3,
+ timeDesc: params.name
+ });
+ window.parent.handleStartHealthcode(data);
+ }
+
+ if(params.seriesName=='体温异常'){
+ data.push({
+ startTime:time[0],
+ endTime:time[1],
+ status:1,
+ timeDesc: params.name
+ });
+ window.parent.handleStartAnimalHeat(data);
+ }
+ })
+ var colors = ['#FF9836', '#1E90FF', '#F34A4A', '#8058A5'];
+ let option = {
+ color: colors,
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '3%',
+ top: 25,
+ textAlign:'center',
+ text: '预警时间分布'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['一键求助', '违禁品', '红色健康码', '体温异常'],
+ top:'10%',
+ right:'6%',
+ icon:'circle'
+ },
+ grid: {
+ left: '1%',
+ right: '7%',
+ bottom: '10%',
+ top:'25%',
+ containLabel: true
+ },
+ xAxis: {
+ name:'时段',
+ type: 'category',
+ boundaryGap: true,
+ axisLine: {
+ lineStyle:{
+ type:'dashed'
+ }
+ },
+ axisTick: {
+ show:false
+ },
+ data: ['0-2', '2-4', '4-6', '6-8', '8-10', '10-12', '12-14','14-16','16-18','18-20','20-22','22-24']
+ },
+ yAxis: {
+ name:'个/次',
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle:{
+ type:'dashed'
+ }
+ }
+ },
+ series: [
+ {
+ name: '一键求助',
+ type: 'bar',
+ data: data.data.alarmTimeDis
+ },
+ {
+ name: '违禁品',
+ type: 'bar',
+ data: data.data.parcelTimeDis
+ },
+ {
+ name: '红色健康码',
+ type: 'bar',
+ data: data.data.healthcodeTimeDis
+ },
+ {
+ name: '体温异常',
+ type: 'bar',
+ data: data.data.animalTimeDis
+ }
+ ]
+ };
+ myChart.setOption(option);
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ })
+ },
+
+ //点击按钮获取不同时间段的数据
+ getData(date){
+ var that = this;
+ that.activeClass=date;
+ var data = this.getDate(date);
+ //调用方法获取数据
+ this.getStatisData(data);
+ },
+
+ //调用方法,获取统计数据
+ getStatisData(data){
+ //统计预警总数
+ 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(date==1){
+ startTime = this.showWeekFirstDay(today)+ " 00:00:00";
+ endTime = this.showToDay(today)+ " 23:59:59";
+ that.dateTime = [startTime,endTime];
+ }
+ //月初至今的时间
+ if(date==2){
+ startTime = this.showMonthFirstDay(today)+ " 00:00:00";
+ endTime = this.showToDay(today)+ " 23:59:59";
+ that.dateTime = [startTime,endTime];
+ }
+ //本季度初至今的时间
+ if(date==3){
+ startTime = this.getQuarterStartDate(today)+ " 00:00:00";
+ endTime = this.showToDay(today)+ " 23:59:59";
+ that.dateTime = [startTime,endTime];
+ }
+ //封装数据
+ var data ={};
+ return data ={
+ startTime:this.dateTime[0],
+ endTime:this.dateTime[1]
+ }
+ },
+
+
+ //本日
+ showToDay(Nowdate){
+ var M=Number(Nowdate.getMonth())+1;
+ 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;
+ 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;
+ if(M<10){
+ M="0"+M;
+ }
+ return MonthFirstDay.getFullYear()+"-"+M+"-"+"0"+MonthFirstDay.getDate();
+ },
+
+ //本季度的第一天
+ getQuarterStartDate(Nowdate){
+ var quarterStartDate = this.getQuarterStartMonth(Nowdate);
+ return Nowdate.getFullYear()+"-"+quarterStartDate+"-"+"01";
+ },
+
+
+ //本季度的第一个月份
+ getQuarterStartMonth(Nowdate){
+ var nowMonth = Nowdate.getMonth()+1;
+ console.log(nowMonth,555);
+ var quarterStartMonth = 0;
+ if(nowMonth<4){
+ quarterStartMonth = "0"+1;
+ }
+ if(3<nowMonth && nowMonth<7){
+ quarterStartMonth = "0"+4;
+ }
+ if(6<nowMonth && nowMonth<10){
+ quarterStartMonth = "0"+7;
+ }
+ if(nowMonth>9){
+ quarterStartMonth = 10;
+ }
+ return quarterStartMonth;
+ }
+
+ },
+
+ }
+
+
+</script>
+<style lang="scss">
+
+ @import '@/styles/alarmAnalysis/alarmAnalysis.scss'
+
+</style>
--
Gitblit v1.9.3