Commit 18a2d1ad authored by xxx's avatar xxx

1

parent d2cd6bc6
...@@ -35,18 +35,18 @@ ...@@ -35,18 +35,18 @@
<div class="aiAnalysisViews_1"> <div class="aiAnalysisViews_1">
<span>AI报警总数:{{alarmData.total}}</span><span style="margin-left:30px;">处理数:{{alarmData.handle}}</span> <span>AI报警总数:{{alarmData.total}}</span><span style="margin-left:30px;">处理数:{{alarmData.handle}}</span>
</div> </div>
<div class="aiAnalysisViews_1">处理率:{{parseFloat(alarmData.handle / alarmData.total * 100).toFixed(2)}}%</div> <div class="aiAnalysisViews_1">处理率:{{alarmData.handle == 0 ? 0 : parseFloat(alarmData.handle / alarmData.total * 100).toFixed(2)}}%</div>
<div id="echarts1" class="echarts1"></div> <div id="echarts1" class="echarts1"></div>
<div class="aiAnalysisViews_1">报警车辆排行榜</div> <div class="aiAnalysisViews_1">报警车辆排行榜</div>
<div id="echarts2" class="echarts2" style="margin-top:1vh"></div> <div id="echarts2" class="echarts2" style="margin-top:1vh"></div>
<div class="aiAnalysisViews_1">报警车辆信息</div> <div class="aiAnalysisViews_1">报警车辆信息</div>
<el-table :data="aiAnalysisTableData" border style="width: 98%" height="24.5vh"> <el-table :data="aiAnalysisTableData" border style="width: 98%" height="24.5vh">
<el-table-column prop="vid" label="车牌号" align="center"></el-table-column> <el-table-column prop="vehiIdno" label="车牌号" align="center"></el-table-column>
<el-table-column prop="atpStr" label="报警类型" align="center"></el-table-column> <el-table-column prop="alarmTypeText" label="报警类型" align="center"></el-table-column>
<el-table-column prop="stm" label="报警时间" align="center" :formatter="changeTime1"></el-table-column> <el-table-column prop="fileTimeStr" label="报警时间" align="center"></el-table-column>
<el-table-column label="查看" align="center"> <el-table-column label="查看" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-image style="width: 70px; height: 50px" :src="imgSrcStart + 'avatar/' + scope.row.photo" :preview-src-list="[imgSrcStart + 'avatar/' + scope.row.photo]"></el-image> <el-image style="width: 70px; height: 50px" :src="scope.row.downloadUrl" :preview-src-list="[scope.row.downloadUrl]"></el-image>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
import { Tools, HttpReq, Dates} from '@/assets/js/common.js'; import { Tools, HttpReq, Dates} from '@/assets/js/common.js';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import axios from 'axios' import axios from 'axios'
import moment from 'moment';
export default { export default {
data() { data() {
...@@ -76,35 +77,50 @@ export default { ...@@ -76,35 +77,50 @@ export default {
}, },
noPtz:false, noPtz:false,
aiTabPosition:'今天', aiTabPosition:'今天',
echarts1Data:[{ value: 1048, name: '接打电话' }, { value: 735, name: '分神驾驶' }, { value: 580, name: '前向碰撞' },], echarts1Data:[{ value: 0, name: '接打电话' }, { value: 0, name: '分神驾驶' }, { value: 0, name: '前向碰撞' }],
echarts2Data:{ echarts2Data:{
name:['鲁A11111','鲁A11111','鲁A11111','鲁A11111','鲁A11111','鲁A11111',], name:[],
kache1:[20,20,20,20,20,20,], dianhua:[],
kache2:[20,20,20,20,20,20,], jiashi:[],
kache3:[20,20,20,20,20,20,], pengzhuang:[],
}, },
alarmData:{ alarmData:{
total:30, total:0,
handle:10, handle:0,
}, },
//所有车的信息 //所有车的信息
allCarData:'', allCarData:[],
allCarDataText:'',
searchCarText:'', searchCarText:'',
//会话号
jsession:'',
}; };
}, },
mounted() { mounted() {
let that = this;
this.getCode(); this.getCode();
this.echarts1Fn();
this.echarts2Fn();
HttpReq.truckDispatching.carMonitoringCarsQuery({size: 9999}).then((res) => { HttpReq.truckDispatching.carMonitoringCarsQuery({size: 9999}).then((res) => {
let arr1 = ''; let arr1 = [];
let text1 = '';
res.content.forEach((item,index)=>{ res.content.forEach((item,index)=>{
arr1 = arr1 + item.carnumber + ','; text1 = text1 + item.carnumber + ',';
arr1.push(item.carnumber);
}) })
arr1 = arr1.substring(0, arr1.length - 1); text1 = text1.substring(0, text1.length - 1);
this.allCarData = arr1; this.allCarData = arr1;
this.aiTabPositionFn(); this.allCarDataText = text1;
//获取会话号
axios.get('/jiankong/StandardApiAction_login.action', {
params: {
account:'admin',
password:'admin'
}
}).then(function (response) {
that.jsession = response.data.jsession;
that.aiTabPositionFn();
}) })
})
}, },
methods: { methods: {
getCode() { getCode() {
...@@ -147,23 +163,491 @@ export default { ...@@ -147,23 +163,491 @@ export default {
}, },
aiTabPositionFn(){ aiTabPositionFn(){
let that = this; let that = this;
that.alarmData.total = 0;
that.alarmData.handle = 0;
that.echarts1Data = [{ value: 0, name: '接打电话' }, { value: 0, name: '分神驾驶' }, { value: 0, name: '前向碰撞' }];
that.echarts2Data.name = [];
that.echarts2Data.dianhua = [];
that.echarts2Data.jiashi = [];
that.echarts2Data.pengzhuang = [];
that.aiAnalysisTableData = [];
if(this.aiTabPosition == '今天'){ if(this.aiTabPosition == '今天'){
let start = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime())); let start = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime()));
let end = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1)); let end = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1));
//可配置参数的方式 //报警列表
axios.get('/jiankong', { let allAlarmData1 = [];
this.allCarData.forEach((item1,index1)=>{
//获取每辆车的设备号
axios.get('/jiankong/StandardApiAction_getDeviceByVehicle.action', {
params: {
jsession:that.jsession,
vehiIdno:item1
}
}).then(function (response1) {
if(response1.data.devices.length != 0){
//有设备号的车获取报警列表
axios.get('/jiankong/StandardApiAction_queryPhoto.action', {
params: { params: {
jsession:'1bf84ae637b843f2af24cf8c1502e9cf', jsession:that.jsession,
vehiIdno:that.allCarData, devIdno:response1.data.devices[0].did,
alarmType:'620,621,624,625,400',
begintime:start, begintime:start,
endtime:end, endtime:end,
armType:'670,671,620,621,624,625,400',
currentPage:0, currentPage:0,
pageRecords:9999, pageRecords:9999,
} }
}).then(function (response) { }).then(function (response2) {
console.log(response.data.alarms); if(response2.data.infos){
that.aiAnalysisTableData = response.data.alarms; response2.data.infos.forEach((item2,index2)=>{
if(item2.alarmType == 620){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 621){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 624){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 625){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 400){
let obj1 = {...item2};
obj1.alarmTypeText = '前向碰撞';
allAlarmData1.push(obj1);
}
})
that.aiAnalysisTableData = allAlarmData1;
}
})
}
})
})
//报警echarts
axios.get('/jiankong/StandardApiAction_queryAlarmDetail.action', {
params: {
jsession:that.jsession,
vehiIdno:that.allCarDataText,
begintime:start,
endtime:end,
armType:'620,621,624,625,400',
currentPage:0,
pageRecords:9999,
}
}).then(function (response1) {
if(response1.data.alarms){
let arr1 = [];
let echartsName1 = [];
//报警数量
let alarmHandleNum = 0;
response1.data.alarms.forEach((item1,index1)=>{
if(item1.atp == 620){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 621){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 624){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 625){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 400){
let obj1 = {...item1};
obj1.alarmTypeText = '前向碰撞';
arr1.push(obj1);
}
})
that.alarmData.total = arr1.length;
arr1.forEach((item2,index2)=>{
echartsName1.push(item2.vid);
if(item2.hd != 0){
alarmHandleNum++;
}
})
that.alarmData.handle = alarmHandleNum;
//圆角环形图
let echarts1Data1 = [{ value: 0, name: '接打电话' }, { value: 0, name: '分神驾驶' }, { value: 0, name: '前向碰撞' }];
let num1 = 0;
let num2 = 0;
let num3 = 0;
arr1.forEach((item3,index3)=>{
if(item3.alarmTypeText == '接打电话'){
num1++;
}else if(item3.alarmTypeText == '分神驾驶'){
num2++;
}else if(item3.alarmTypeText == '前向碰撞'){
num3++;
}
})
echarts1Data1[0].value = num1;
echarts1Data1[1].value = num2;
echarts1Data1[2].value = num3;
that.echarts1Data = echarts1Data1;
that.echarts1Fn();
//报警车辆排行榜
console.log(arr1);
let set1 = new Set();
echartsName1.forEach((item)=>set1.add(item))
let a1 = Array.from(set1);
that.echarts2Data.name = a1;
let aa1 = [];
let aa2 = [];
let aa3 = [];
a1.forEach((itema,indexa)=>{
aa1.push(0);
aa2.push(0);
aa3.push(0);
})
arr1.forEach((item4,index4)=>{
a1.forEach((item5,index5)=>{
if(item4.vid == item5 && item4.alarmTypeText == '接打电话'){
aa1[index5] = aa1[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '分神驾驶'){
aa2[index5] = aa2[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '前向碰撞'){
aa3[index5] = aa3[index5] + 1;
}
})
})
that.echarts2Data.dianhua = aa1;
that.echarts2Data.jiashi = aa2;
that.echarts2Data.pengzhuang = aa3;
that.echarts2Fn();
}else{
that.echarts1Fn();
that.echarts2Fn();
}
})
}else if(this.aiTabPosition == '近7天'){
let fmt = moment().subtract(7, 'days').format('YYYY-MM-DD');
let start = this.currentTime1(new Date(new Date(new Date(fmt).toLocaleDateString()).getTime()));
let end = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1));
//报警列表
let allAlarmData1 = [];
this.allCarData.forEach((item1,index1)=>{
//获取每辆车的设备号
axios.get('/jiankong/StandardApiAction_getDeviceByVehicle.action', {
params: {
jsession:that.jsession,
vehiIdno:item1
}
}).then(function (response1) {
if(response1.data.devices.length != 0){
//有设备号的车获取报警列表
axios.get('/jiankong/StandardApiAction_queryPhoto.action', {
params: {
jsession:that.jsession,
devIdno:response1.data.devices[0].did,
alarmType:'620,621,624,625,400',
begintime:start,
endtime:end,
currentPage:0,
pageRecords:9999,
}
}).then(function (response2) {
if(response2.data.infos){
response2.data.infos.forEach((item2,index2)=>{
if(item2.alarmType == 620){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 621){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 624){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 625){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 400){
let obj1 = {...item2};
obj1.alarmTypeText = '前向碰撞';
allAlarmData1.push(obj1);
}
})
that.aiAnalysisTableData = allAlarmData1;
}
})
}
})
})
//报警echarts
axios.get('/jiankong/StandardApiAction_queryAlarmDetail.action', {
params: {
jsession:that.jsession,
vehiIdno:that.allCarDataText,
begintime:start,
endtime:end,
armType:'620,621,624,625,400',
currentPage:0,
pageRecords:9999,
}
}).then(function (response1) {
if(response1.data.alarms){
let arr1 = [];
let echartsName1 = [];
//报警数量
let alarmHandleNum = 0;
response1.data.alarms.forEach((item1,index1)=>{
if(item1.atp == 620){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 621){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 624){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 625){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 400){
let obj1 = {...item1};
obj1.alarmTypeText = '前向碰撞';
arr1.push(obj1);
}
})
that.alarmData.total = arr1.length;
arr1.forEach((item2,index2)=>{
echartsName1.push(item2.vid);
if(item2.hd != 0){
alarmHandleNum++;
}
})
that.alarmData.handle = alarmHandleNum;
//圆角环形图
let echarts1Data1 = [{ value: 0, name: '接打电话' }, { value: 0, name: '分神驾驶' }, { value: 0, name: '前向碰撞' }];
let num1 = 0;
let num2 = 0;
let num3 = 0;
arr1.forEach((item3,index3)=>{
if(item3.alarmTypeText == '接打电话'){
num1++;
}else if(item3.alarmTypeText == '分神驾驶'){
num2++;
}else if(item3.alarmTypeText == '前向碰撞'){
num3++;
}
})
echarts1Data1[0].value = num1;
echarts1Data1[1].value = num2;
echarts1Data1[2].value = num3;
that.echarts1Data = echarts1Data1;
that.echarts1Fn();
//报警车辆排行榜
console.log(arr1);
let set1 = new Set();
echartsName1.forEach((item)=>set1.add(item))
let a1 = Array.from(set1);
that.echarts2Data.name = a1;
let aa1 = [];
let aa2 = [];
let aa3 = [];
a1.forEach((itema,indexa)=>{
aa1.push(0);
aa2.push(0);
aa3.push(0);
})
arr1.forEach((item4,index4)=>{
a1.forEach((item5,index5)=>{
if(item4.vid == item5 && item4.alarmTypeText == '接打电话'){
aa1[index5] = aa1[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '分神驾驶'){
aa2[index5] = aa2[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '前向碰撞'){
aa3[index5] = aa3[index5] + 1;
}
})
})
that.echarts2Data.dianhua = aa1;
that.echarts2Data.jiashi = aa2;
that.echarts2Data.pengzhuang = aa3;
that.echarts2Fn();
}else{
that.echarts1Fn();
that.echarts2Fn();
}
})
}else if(this.aiTabPosition == '近30天'){
let fmt = moment().subtract(30, 'days').format('YYYY-MM-DD');
let start = this.currentTime1(new Date(new Date(new Date(fmt).toLocaleDateString()).getTime()));
let end = this.currentTime1(new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1));
//报警列表
let allAlarmData1 = [];
this.allCarData.forEach((item1,index1)=>{
//获取每辆车的设备号
axios.get('/jiankong/StandardApiAction_getDeviceByVehicle.action', {
params: {
jsession:that.jsession,
vehiIdno:item1
}
}).then(function (response1) {
if(response1.data.devices.length != 0){
//有设备号的车获取报警列表
axios.get('/jiankong/StandardApiAction_queryPhoto.action', {
params: {
jsession:that.jsession,
devIdno:response1.data.devices[0].did,
alarmType:'620,621,624,625,400',
begintime:start,
endtime:end,
currentPage:0,
pageRecords:9999,
}
}).then(function (response2) {
if(response2.data.infos){
response2.data.infos.forEach((item2,index2)=>{
if(item2.alarmType == 620){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 621){
let obj1 = {...item2};
obj1.alarmTypeText = '接打电话';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 624){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 625){
let obj1 = {...item2};
obj1.alarmTypeText = '分神驾驶';
allAlarmData1.push(obj1);
}else if(item2.alarmType == 400){
let obj1 = {...item2};
obj1.alarmTypeText = '前向碰撞';
allAlarmData1.push(obj1);
}
})
that.aiAnalysisTableData = allAlarmData1;
}
})
}
})
})
//报警echarts
axios.get('/jiankong/StandardApiAction_queryAlarmDetail.action', {
params: {
jsession:that.jsession,
vehiIdno:that.allCarDataText,
begintime:start,
endtime:end,
armType:'620,621,624,625,400',
currentPage:0,
pageRecords:9999,
}
}).then(function (response1) {
if(response1.data.alarms){
let arr1 = [];
let echartsName1 = [];
//报警数量
let alarmHandleNum = 0;
response1.data.alarms.forEach((item1,index1)=>{
if(item1.atp == 620){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 621){
let obj1 = {...item1};
obj1.alarmTypeText = '接打电话';
arr1.push(obj1);
}else if(item1.atp == 624){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 625){
let obj1 = {...item1};
obj1.alarmTypeText = '分神驾驶';
arr1.push(obj1);
}else if(item1.atp == 400){
let obj1 = {...item1};
obj1.alarmTypeText = '前向碰撞';
arr1.push(obj1);
}
})
that.alarmData.total = arr1.length;
arr1.forEach((item2,index2)=>{
echartsName1.push(item2.vid);
if(item2.hd != 0){
alarmHandleNum++;
}
})
that.alarmData.handle = alarmHandleNum;
//圆角环形图
let echarts1Data1 = [{ value: 0, name: '接打电话' }, { value: 0, name: '分神驾驶' }, { value: 0, name: '前向碰撞' }];
let num1 = 0;
let num2 = 0;
let num3 = 0;
arr1.forEach((item3,index3)=>{
if(item3.alarmTypeText == '接打电话'){
num1++;
}else if(item3.alarmTypeText == '分神驾驶'){
num2++;
}else if(item3.alarmTypeText == '前向碰撞'){
num3++;
}
})
echarts1Data1[0].value = num1;
echarts1Data1[1].value = num2;
echarts1Data1[2].value = num3;
that.echarts1Data = echarts1Data1;
that.echarts1Fn();
//报警车辆排行榜
console.log(arr1);
let set1 = new Set();
echartsName1.forEach((item)=>set1.add(item))
let a1 = Array.from(set1);
that.echarts2Data.name = a1;
let aa1 = [];
let aa2 = [];
let aa3 = [];
a1.forEach((itema,indexa)=>{
aa1.push(0);
aa2.push(0);
aa3.push(0);
})
arr1.forEach((item4,index4)=>{
a1.forEach((item5,index5)=>{
if(item4.vid == item5 && item4.alarmTypeText == '接打电话'){
aa1[index5] = aa1[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '分神驾驶'){
aa2[index5] = aa2[index5] + 1;
}else if(item4.vid == item5 && item4.alarmTypeText == '前向碰撞'){
aa3[index5] = aa3[index5] + 1;
}
})
})
that.echarts2Data.dianhua = aa1;
that.echarts2Data.jiashi = aa2;
that.echarts2Data.pengzhuang = aa3;
that.echarts2Fn();
}else{
that.echarts1Fn();
that.echarts2Fn();
}
}) })
} }
...@@ -277,7 +761,7 @@ export default { ...@@ -277,7 +761,7 @@ export default {
label: { label: {
show: true show: true
}, },
data: this.echarts2Data.kache1, data: this.echarts2Data.dianhua,
barWidth: 20, barWidth: 20,
itemStyle: { itemStyle: {
color: 'rgb(84,112,198)' color: 'rgb(84,112,198)'
...@@ -290,7 +774,7 @@ export default { ...@@ -290,7 +774,7 @@ export default {
label: { label: {
show: true show: true
}, },
data: this.echarts2Data.kache2, data: this.echarts2Data.jiashi,
barWidth: 20, barWidth: 20,
itemStyle: { itemStyle: {
color: 'rgb(145,204,117)' color: 'rgb(145,204,117)'
...@@ -303,7 +787,7 @@ export default { ...@@ -303,7 +787,7 @@ export default {
label: { label: {
show: true show: true
}, },
data: this.echarts2Data.kache3, data: this.echarts2Data.pengzhuang,
barWidth: 20, barWidth: 20,
itemStyle: { itemStyle: {
color: 'rgb(250,200,88)' color: 'rgb(250,200,88)'
......
...@@ -46,8 +46,9 @@ module.exports = { ...@@ -46,8 +46,9 @@ module.exports = {
'^/auth': 'auth' '^/auth': 'auth'
} }
}, },
//获取会话号
'/jiankong': { '/jiankong': {
target: 'http://oa.gemho.cn:8088/StandardApiAction_queryAlarmDetail.action', target: 'http://oa.gemho.cn:8088',
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/jiankong': '' '^/jiankong': ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment