anxiao_web/pages/cmddispatch/js/marker/pushButtonEventMarker.js

208 lines
6.9 KiB
JavaScript
Raw Normal View History

2024-07-24 09:22:32 +08:00
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
}