208 lines
6.9 KiB
JavaScript
208 lines
6.9 KiB
JavaScript
|
import { mainMap } from "../index.js";
|
|||
|
import { pushbuttonAlarmList,pushButtonAlarmResiveReq, showPushButtonEventPage} from "../showAlarmListTable.js";
|
|||
|
import { alarmHandleCreateData } from "./moveDeviceMarker.js";
|
|||
|
import { autoOpenRightSlide } from "../pageEventTool.js";
|
|||
|
import { showStationIpcRightVideo } from "../schoolBaseInfo.js";
|
|||
|
import {sosDeviceAlarmAccept, sosDeviceAlarmDone} from "../sosVideoAndAudio.js"
|
|||
|
import { closeSosAlarmVideo, openSosAlarmVideo } from "../popSosVideo.js";
|
|||
|
import { getPushButtonInfoWindowDiv } from "./pushButtonMarker.js";
|
|||
|
import { schoolPushButtonList } from "../showPushButtonInfo.js";
|
|||
|
var eventMarkerHash={};
|
|||
|
function delPushButtonEventMarker(eventId){
|
|||
|
if(eventId in eventMarkerHash){
|
|||
|
//把 Marker 添加到图层
|
|||
|
mainMap.removeLayer(eventMarkerHash[eventId]);
|
|||
|
delete eventMarkerHash[eventId];
|
|||
|
//先把当前的marker重置
|
|||
|
var resivePushButtonData=pushButtonEventFindDeviceId(eventId)
|
|||
|
//取消报警器的告警
|
|||
|
sosAsrAcceptAndDone(resivePushButtonData,"relieve");
|
|||
|
}
|
|||
|
}
|
|||
|
//通过eventId查找设备Id
|
|||
|
function pushButtonEventFindDeviceId(eventId){
|
|||
|
var list=pushbuttonAlarmList.filter(item=>{
|
|||
|
return item["eventId"]==eventId
|
|||
|
})
|
|||
|
return list[0];
|
|||
|
}
|
|||
|
//通过设备的Id,查询设备信息
|
|||
|
function pushButtonEventFindId(deviceId){
|
|||
|
var list=schoolPushButtonList.filter(item=>{
|
|||
|
return item["pointId"]==deviceId
|
|||
|
})
|
|||
|
return list[0];
|
|||
|
}
|
|||
|
//更新告警信息
|
|||
|
function updatePushButtonEvent(item){
|
|||
|
pushbuttonAlarmList.unshift(item);
|
|||
|
drawPushButtonEventMarker(item);
|
|||
|
showPushButtonEventPage();
|
|||
|
}
|
|||
|
function drawPushButtonEventMarker(item){
|
|||
|
addPushButtonEventMarker(item);
|
|||
|
if(pushbuttonAlarmList.length>0){
|
|||
|
var longitude=pushbuttonAlarmList[0]['longitude']
|
|||
|
var latitude=pushbuttonAlarmList[0]['latitude']
|
|||
|
mainMap.setView([latitude,longitude], 18);
|
|||
|
}
|
|||
|
}
|
|||
|
function addPushButtonEventMarker(obj){
|
|||
|
var eventId=obj['eventId'];
|
|||
|
var longitude=obj["longitude"];
|
|||
|
var latitude=obj["latitude"];
|
|||
|
var address=obj["address"];
|
|||
|
var iconObj=getPushButtonAlarmIcon(obj)
|
|||
|
let marker=L.marker([latitude,longitude],{
|
|||
|
icon: iconObj,//将marker设置为上面引用的图形
|
|||
|
title:address,
|
|||
|
riseOnHover:false,
|
|||
|
zIndexOffset:1000
|
|||
|
})
|
|||
|
if(!(eventId in eventMarkerHash)){
|
|||
|
eventMarkerHash[eventId]=marker
|
|||
|
}
|
|||
|
marker.bindTooltip(address).openTooltip();
|
|||
|
marker.on('click',function(e){
|
|||
|
showPushButtonInfoWindow(obj);
|
|||
|
})
|
|||
|
//把 Marker 添加到图层
|
|||
|
mainMap.addLayer(marker);
|
|||
|
|
|||
|
//启动视频
|
|||
|
startSosVideo(obj);
|
|||
|
}
|
|||
|
function showPushButtonInfoWindow(obj){
|
|||
|
var eventId=obj["eventId"];
|
|||
|
if(eventId in eventMarkerHash){
|
|||
|
var eventObj=pushButtonEventFindDeviceId(eventId);
|
|||
|
var deviceObj=pushButtonEventFindId(eventObj["deviceId"]);
|
|||
|
eventMarkerHash[eventId].unbindPopup();
|
|||
|
eventMarkerHash[eventId].bindPopup(`<div class="skynetIpcInfoWindow">${getPushButtonInfoWindowDiv(deviceObj)}</div>`,{maxHeight:260}).openPopup();
|
|||
|
var lnglat= eventMarkerHash[eventId].getLatLng()
|
|||
|
mainMap.setView(lnglat, 18);
|
|||
|
}
|
|||
|
}
|
|||
|
function getPushButtonAlarmIcon(obj){
|
|||
|
var deviceId=obj["deviceId"];
|
|||
|
var eventId=obj["eventId"];
|
|||
|
var div=getSosAlarmVideoAlarm(obj);
|
|||
|
return L.divIcon({
|
|||
|
className: "my-div-icon",
|
|||
|
html: `
|
|||
|
<div class="markerClass">
|
|||
|
<div></div>
|
|||
|
<div></div>
|
|||
|
<div></div>
|
|||
|
</div>
|
|||
|
<div class="moveDeviceAlarmOpear">
|
|||
|
<div>
|
|||
|
<p>
|
|||
|
<img src="./pages/cmddispatch/infowindow/alarm.png">
|
|||
|
学校:${obj["station"]}
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
地址:${obj["address"]}
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
时间:${obj["timestamp"]}
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
${div}
|
|||
|
<div>
|
|||
|
<p eventId="${eventId}">
|
|||
|
<button devicid="${deviceId}" class="layui-btn layui-btn-normal deviceopearbtn" onclick="closePushButtonEvent(this)">
|
|||
|
<img src="./pages/cmddispatch/infowindow/removeAlarm.png">解除
|
|||
|
</button>
|
|||
|
<button devicid="${deviceId}" class="layui-btn layui-btn-normal deviceopearbtn" onclick="processedPushButtonEvent(this)">
|
|||
|
<img src="./pages/cmddispatch/infowindow/handle.png">处置
|
|||
|
</button>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>`
|
|||
|
})
|
|||
|
}
|
|||
|
//启动视频
|
|||
|
function startSosVideo(obj){
|
|||
|
var devicetype=obj['devicetype'];
|
|||
|
if(devicetype=="asr_av"){
|
|||
|
//页面初始化的时候,调用视频,会出现问题。
|
|||
|
setTimeout(()=>{
|
|||
|
sosAsrAlarmVideo(obj,"open")
|
|||
|
},3000)
|
|||
|
}
|
|||
|
}
|
|||
|
//这里需要判断是否开启报警视频
|
|||
|
function sosAsrAlarmVideo(obj,type){
|
|||
|
var devicetype=obj["devicetype"];
|
|||
|
if(devicetype=="asr_av"
|
|||
|
){
|
|||
|
if(type=="open"){
|
|||
|
openSosAlarmVideo(obj);
|
|||
|
}else if(type=="close"){
|
|||
|
closeSosAlarmVideo(obj);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//获取按钮告警视频
|
|||
|
function getSosAlarmVideoAlarm(obj){
|
|||
|
var devicetype=obj["devicetype"];
|
|||
|
var deviceId=obj["deviceId"];
|
|||
|
var div="";
|
|||
|
if(devicetype=="asr_av"){
|
|||
|
div=`<div id="sosAlarmVideoContent">
|
|||
|
<video id="sosAlarmVideo${deviceId}" autoplay="" controls muted=""></video>
|
|||
|
<audio id="sosAlarmAudio${deviceId}" autoplay=""></video>
|
|||
|
</div>`;
|
|||
|
}
|
|||
|
if(devicetype=="asr_a"){
|
|||
|
div=`<div id="sosVideoContent">
|
|||
|
<audio id="sosAlarmAudio${deviceId}" autoplay=""></video>
|
|||
|
</div>`;
|
|||
|
}
|
|||
|
return div;
|
|||
|
}
|
|||
|
window.closePushButtonEvent=function(that){
|
|||
|
var eventId=$(that).parent().attr("eventId");
|
|||
|
pushButtonAlarmResiveReq(eventId);
|
|||
|
}
|
|||
|
window.processedPushButtonEvent=function(that){
|
|||
|
var eventId=$(that).parent().attr("eventId")
|
|||
|
pushButtonHandleData(eventId);
|
|||
|
}
|
|||
|
//一键告警的处置
|
|||
|
function pushButtonHandleData(eventId){
|
|||
|
var obj=pushButtonEventFindDeviceId(eventId)
|
|||
|
alarmHandleCreateData(obj);
|
|||
|
//自动打开视频
|
|||
|
autoOpenRightSlide();
|
|||
|
showStationIpcRightVideo({station:obj["station"]})
|
|||
|
//自动接警
|
|||
|
sosAsrAcceptAndDone(obj,"handle");
|
|||
|
}
|
|||
|
//这里需要判断,如果是asr_a跟asr_av都需要像设备端消警
|
|||
|
function sosAsrAcceptAndDone(obj,type){
|
|||
|
var devicetype=obj["devicetype"];
|
|||
|
if(
|
|||
|
devicetype=="asr_a"
|
|||
|
||
|
|||
|
devicetype=="asr_av"
|
|||
|
){
|
|||
|
if(type=="handle"){
|
|||
|
sosDeviceAlarmAccept(obj);
|
|||
|
}else if(type=="relieve"){
|
|||
|
sosDeviceAlarmDone(obj);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
export{
|
|||
|
drawPushButtonEventMarker,
|
|||
|
addPushButtonEventMarker,
|
|||
|
delPushButtonEventMarker,
|
|||
|
sosAsrAcceptAndDone,
|
|||
|
pushButtonHandleData,
|
|||
|
updatePushButtonEvent,
|
|||
|
pushButtonEventFindId,
|
|||
|
showPushButtonInfoWindow
|
|||
|
}
|