wuwei
2025-05-28 7c16e785d2ece656fb0822f7b2514f59dd23e91d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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;
}