| | |
| | | <template> |
| | | <div class="big"> |
| | | <!-- 标题 --> |
| | | <div class="alarm_title"><span>预警分析</span></div> |
| | | <!-- <div class="alarm_title"><span>预警分析</span></div>--> |
| | | <!-- 时间按钮 --> |
| | | <div class="timeSearchBtn"> |
| | | <el-button-group class="timeBtn"> |
| | | <el-button |
| | | v-bind:class="activeClass == 1 ? 'btn-color' : ''" |
| | | v-bind:class="activeClass == 1 ? 'btn-color' : ''" |
| | | size="small" |
| | | @click="getData(1)"> |
| | | 本周 |
| | | </el-button> |
| | | |
| | | <el-button |
| | | <el-button |
| | | v-bind:class="activeClass == 2 ? 'btn-color' : ''" |
| | | size="small" |
| | | size="small" |
| | | @click="getData(2)"> |
| | | 月初至今 |
| | | </el-button> |
| | | |
| | | <el-button |
| | | <el-button |
| | | v-bind:class="activeClass == 3 ? 'btn-color' : ''" |
| | | size="small" |
| | | size="small" |
| | | @click="getData(3)"> |
| | | 季度至今 |
| | | </el-button> |
| | | </el-button-group> |
| | | <el-date-picker |
| | | class="timeSearch" |
| | | size="small" |
| | | v-model="dateTime" |
| | | type="daterange" |
| | | <el-date-picker |
| | | class="timeSearch" |
| | | size="small" |
| | | v-model="dateTime" |
| | | type="daterange" |
| | | @change="timeChange" |
| | | range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> |
| | | range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | <!-- 监测点 --> |
| | |
| | | </div> |
| | | <!-- 预警平均确认速度排行 --> |
| | | <div class="confirmAverageSpeed"> |
| | | <div class="confirmAverageSpeedTitle"><span>预警平均确认速度排行</span></div> |
| | | <avue-crud :data="confirmAverageSpeedData" :option="confirmAverageSpeedOption"></avue-crud> |
| | | </div> |
| | | <!-- 预警时间分布 --> |
| | |
| | | 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:this.timeFormat(this.dateTime[0]), |
| | | endTime:this.timeFormat(this.dateTime[1]) |
| | | startTime:time[0], |
| | | endTime:time[1] |
| | | } |
| | | this.getStatisData(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) { |
| | |
| | | click: function (item) { |
| | | var data =[]; |
| | | data.push({ |
| | | dxtype: 1 |
| | | dxtype: 4 |
| | | }); |
| | | //console.log(data[0],111); |
| | | window.parent.handleStartEquipment(data); |
| | |
| | | color: '#3AA7F0' |
| | | } |
| | | ]; |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | //主动报警(一键求助,电话报警)分页数据 |
| | |
| | | data: item.parcelData |
| | | }) |
| | | } |
| | | |
| | | |
| | | if (item.name == typesArray[2]) { |
| | | data.push({ |
| | | name: item.name, |
| | |
| | | data: item.healthcodeData |
| | | }) |
| | | } |
| | | |
| | | |
| | | if (item.name == typesArray[3]) { |
| | | data.push({ |
| | | name: item.name, |
| | |
| | | }; |
| | | |
| | | myChart.setOption(option); |
| | | |
| | | |
| | | //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框) |
| | | window.addEventListener('resize',function() {myChart.resize()}); |
| | | }) |
| | |
| | | }, |
| | | title:'一键求助', |
| | | color:'#FF9836', |
| | | target:'_blank', |
| | | name:'日平均一键求助数', |
| | | date:(res.data.data[0]/Math.round(day)).toFixed(2) |
| | | }, |
| | |
| | | let myChart = echarts.init(document.getElementById('alarmTypeProEcharts')); |
| | | myChart.on('click', function (params) { |
| | | var data = []; |
| | | |
| | | |
| | | if(params.name=='一键求助'){ |
| | | data.push({ |
| | | startTime:startDate, |
| | |
| | | }); |
| | | window.parent.handleStartAnimalHeat(data); |
| | | } |
| | | |
| | | |
| | | }) |
| | | var colors = ['#FF9836', '#3fa1ff', '#F34A4A', '#8058A5']; |
| | | let option = { |
| | |
| | | ] |
| | | }; |
| | | myChart.setOption(option); |
| | | |
| | | |
| | | //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框) |
| | | window.addEventListener('resize',function() {myChart.resize()}); |
| | | }) |
| | | |
| | | |
| | | }, |
| | | |
| | | |
| | |
| | | }, |
| | | title:'一键求助', |
| | | color:'#FF9836', |
| | | target:'_blank', |
| | | name:res.data.data[0], |
| | | date:(res.data.data[0]/count*100).toFixed(2)+'%' |
| | | }, |
| | |
| | | ] |
| | | }; |
| | | myChart.setOption(option); |
| | | |
| | | |
| | | //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框) |
| | | window.addEventListener('resize',function() {myChart.resize()}); |
| | | }, |
| | |
| | | }, |
| | | title:'小于5分钟', |
| | | color:'green', |
| | | target:'_blank', |
| | | name:data[0]==0? 0:data[0]+"次", |
| | | }, |
| | | { |
| | |
| | | }) |
| | | }, |
| | | |
| | | //预警平均速度排行(table) |
| | | //预警平均确认速度排行(table) |
| | | confirmAverageSpeedStatis(data){ |
| | | var that = this; |
| | | that.confirmAverageSpeedData=[ |
| | |
| | | } |
| | | ]; |
| | | that.confirmAverageSpeedOption={ |
| | | title:'表格的标题', |
| | | title:'预警平均确认速度排行', |
| | | titleSize:'h3', |
| | | titleStyle:{ |
| | | color:'red' |
| | |
| | | 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, |
| | |
| | | legend: { |
| | | data: ['一键求助', '违禁品', '红色健康码', '体温异常'], |
| | | top:'10%', |
| | | right:'6%' |
| | | right:'6%', |
| | | icon:'circle' |
| | | }, |
| | | grid: { |
| | | left: '1%', |
| | |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | name:'时段', |
| | | type: 'category', |
| | | boundaryGap: true, |
| | | axisLine: { |
| | |
| | | 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, |
| | |
| | | series: [ |
| | | { |
| | | name: '一键求助', |
| | | type: 'line', |
| | | stack: '总量', |
| | | type: 'bar', |
| | | data: data.data.alarmTimeDis |
| | | }, |
| | | { |
| | | name: '违禁品', |
| | | type: 'line', |
| | | stack: '总量', |
| | | type: 'bar', |
| | | data: data.data.parcelTimeDis |
| | | }, |
| | | { |
| | | name: '红色健康码', |
| | | type: 'line', |
| | | stack: '总量', |
| | | type: 'bar', |
| | | data: data.data.healthcodeTimeDis |
| | | }, |
| | | { |
| | | name: '体温异常', |
| | | type: 'line', |
| | | stack: '总量', |
| | | type: 'bar', |
| | | data: data.data.animalTimeDis |
| | | } |
| | | ] |
| | |
| | | this.getStatisData(data); |
| | | }, |
| | | |
| | | //调用方法,获取统计数据 |
| | | getStatisData(data){ |
| | | //统计预警总数 |
| | | this.getStatisTotalData(data); |
| | |
| | | return days; |
| | | }, |
| | | |
| | | |
| | | //计算时间 |
| | | getDate(date){ |
| | | var that = this; |
| | | var today = new Date(); |
| | |
| | | |
| | | |
| | | //本日 |
| | | showToDay(Nowdate){ |
| | | showToDay(Nowdate){ |
| | | var M=Number(Nowdate.getMonth())+1; |
| | | if(M<10){ |
| | | M="0"+M; |
| | |
| | | if(day<10){ |
| | | day = "0"+day; |
| | | } |
| | | return Nowdate.getFullYear()+"-"+M+"-"+day; |
| | | return Nowdate.getFullYear()+"-"+M+"-"+day; |
| | | }, |
| | | |
| | | //本周第一天 |
| | | showWeekFirstDay(Nowdate){ |
| | | var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000); |
| | | showWeekFirstDay(Nowdate){ |
| | | var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000); |
| | | var M=Number(WeekFirstDay.getMonth())+1; |
| | | if(M<10){ |
| | | M="0"+M; |
| | |
| | | }, |
| | | |
| | | //本月第一天 |
| | | showMonthFirstDay(Nowdate){ |
| | | var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1); |
| | | 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(); |
| | | } |
| | | return MonthFirstDay.getFullYear()+"-"+M+"-"+"0"+MonthFirstDay.getDate(); |
| | | }, |
| | | |
| | | //本季度的第一天 |
| | |
| | | }, |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | | <style lang="scss"> |
| | | |
| | | |
| | | @import '@/styles/alarmAnalysis/alarmAnalysis.scss' |
| | | |
| | | </style> |
| | | </style> |