var warnSet;
|
var warnList;
|
var audio = new Audio();
|
//是否与页面发生交互
|
var tag = false;
|
$(function(){
|
if(TEST_TAG){
|
var set = {"enable": 0, "keepTime": 60, "repeatTime": 1800, "alarm": "0,1,0,0,1,1,1", "period": "0", "snap": "0", "smsText": "无", "phontText": "无", "phoneNo": "180,181,182,183"};
|
warnSet = set;
|
var list = [
|
{"sn":"0", "id":"01", "name":"name0", "time":"20200306101122",
|
"msg":"告警内容0,告警内容0,告警内容0,告警内容0,告警内容0,告警内容0,告警内容0,告警内容0,告警内容0",
|
"flag":"0", "processTime":"", "note":""},
|
{"sn":"1", "id":"1", "name":"name1", "time":"20200306123344", "msg":"告警内容1", "flag":"0", "processTime":"", "note":""},
|
{"sn":"2", "id":"2", "name":"name2", "time":"20200306140509", "msg":"告警内容2", "flag":"0", "processTime":"", "note":""},
|
{"sn":"3", "id":"3", "name":"name3", "time":"20200306162536", "msg":"告警内容3", "flag":"0", "processTime":"", "note":""}
|
];
|
warnList = list;
|
setTimeout( triggerAlarm,3000);
|
// triggerAlarm();
|
}else{
|
//获取告警设置
|
queryWarnSet();
|
|
//查询未处理的告警信息,延迟查询
|
setTimeout( queryWarnFlag,2000);
|
// queryWarnFlag();
|
//定时器,每5秒查询一次;查询设备信息并渲染
|
setInterval(queryWarnFlag,5000);
|
}
|
|
//弹出框操作
|
$('.prompt_sure,.prompt_cancel').click(function () {
|
audio.pause();
|
$('.mask').addClass('hide');
|
});
|
});
|
|
|
//获取告警设置
|
function queryWarnSet() {
|
$.ajaxSettings.async = false;
|
$.get("./cgi-bin/sys-warn/query", function (data, status) {
|
if ("success" == status) {
|
warnSet = data;
|
} else {
|
window.parent.notify("数据查询出错,请重新操作!!");
|
}
|
}, "json");
|
};
|
|
//查询未处理的告警信息
|
function queryWarnFlag() {
|
//查看警告设置是否启用:0-启用,1-未启用
|
if(warnSet.enable=="1"){
|
return ;
|
}
|
|
$.ajaxSettings.async = false;
|
$.get("./cgi-bin/warn-list/query-new", function (data, status) {
|
if ("success" == status) {
|
warnList = data;
|
triggerAlarm();
|
} else {
|
window.parent.notify("数据查询出错,请重新操作!!");
|
}
|
}, "json");
|
}
|
|
//警告处理
|
function triggerAlarm(){
|
|
//查看是否存在警告信息
|
if(warnList && warnList.length>0){
|
var list = eval(localStorage.getItem("WARN_LIST"));
|
|
// console.log(list);
|
// console.log(warnList);
|
|
if(list && list.length>0){
|
//遍历警告集合
|
var tag;
|
var msg = "";
|
var time;
|
$.each(warnList, function (i, item) {
|
tag = false;
|
$.each(list, function (j, warn) {
|
//查看警告是否属于重复告警,相同tag=true
|
if(item.id==warn.id && item.time==warn.time){
|
tag = true;
|
return ;
|
}
|
});
|
//不属于重复告警,tag=false
|
if(!tag){
|
var date = new Date();
|
time = item.time.slice(0,4)
|
+"-"+item.time.slice(4,6)
|
+"-"+item.time.slice(6,8)
|
+" "+item.time.slice(8,10)
|
+":"+item.time.slice(10,12)
|
+":"+item.time.slice(12,14);
|
|
//查看警告是否属于告警时段
|
if(warnSet.period == "1"){
|
if(date.getHours()>=8 && date.getHours()<20){
|
msg += "<div style='width: 100%;word-wrap:break-word;word-break:break-all;overflow: hidden;'>"
|
+"<p>发现一条新的告警,请及时处理:</p><p>告警时间:"+time+"</p><p>设备名称:"+item.name
|
+"</p><p>告警内容:"+item.msg+"</p></div><hr style='border-top: 2px solid #000000'>";
|
}
|
}else if(warnSet.period == "2"){
|
if(date.getHours()<8 && date.getHours()>=20){
|
msg += "<div style='width: 100%;word-wrap:break-word;word-break:break-all;overflow: hidden;'>"
|
+"<p>发现一条新的告警,请及时处理:</p><p>告警时间:"+time+"</p><p>设备名称:"+item.name
|
+"</p><p>告警内容:"+item.msg+"</p></div><hr style='border-top: 2px solid #000000'>";
|
}
|
}else {
|
msg += "<div style='width: 100%;word-wrap:break-word;word-break:break-all;overflow: hidden;'>"
|
+"<p>发现一条新的告警,请及时处理:</p><p>告警时间:"+time+"</p><p>设备名称:"+item.name
|
+"</p><p>告警内容:"+item.msg+"</p></div><hr style='border-top: 2px solid #000000'>";
|
}
|
}
|
|
});
|
if(msg){
|
warnNotify(msg);
|
}
|
}else{
|
warnNotify("您当前有"+warnList.length+"条告警未处理,请您及时处理!");
|
}
|
//将新的缓存信息存入localStorage
|
localStorage.setItem("WARN_LIST", JSON.stringify(warnList));
|
}
|
}
|
/**
|
* @param msg 弹窗内容
|
* @param time 自动关闭时间,预警时间
|
*/
|
function warnNotify(msg) {
|
$('.prompt_text').html(msg);
|
$('.mask').removeClass('hide');
|
|
|
if(tag){
|
//与页面发生交互后调用音频,无交互会报错
|
audioPaly();
|
}
|
//延迟关闭
|
// setTimeout(function () {
|
// $('.mask').addClass('hide');
|
// },time);
|
};
|
|
audioPaly = function() {
|
audio.src = "audio/warn-3263.wav";
|
audio.loop = true;
|
audio.playbackRate = 0.5;
|
audio.play();
|
}
|
|
interactTag = function() {
|
tag = true;
|
// console.log(tag);
|
}
|
|
//解除声光报警
|
function warnClear() {
|
if (confirm('是否解除声光告警?')){
|
$.get("./cgi-bin/warn-list/clear", function (data, status) {
|
|
}, "json");
|
window.parent.notify("已成功解除声光告警!");
|
}
|
return false;
|
}
|
|
|