{% extends "Acc_RTMonitor.html" %}
{% load i18n %}
{% block headjs %}
{% if request.user|HasPerm:"contenttypes.can_MonitorAllPage" %}
{% block add_headjs %}
{% endblock %}
{% endif %}
{% endblock %}
{% block content %}
{% if request.user|HasPerm:"contenttypes.can_MonitorAllPage" %}
{% block monitor_doors_maps %}
{% trans "门状态监控" %}
{% trans "正在获取系统内用户授权范围内的所有门......" %}
{% endblock %}
{% block alarm_sound %}
{% endblock %}
{% block addmiddiv %}
{% endblock %}
{% block monitor_events %}
{% trans "事件监控" %}
{% trans '时间' %} |
{% trans '设备' %} |
{% trans '事件点' %} |
{% trans '事件描述' %} |
{% trans '卡号' %} |
{% trans '人员编号(姓名)' %} |
{% trans '出入状态' %} |
{% trans '验证方式' %} |
|
|
{% endblock %}
{% block right_click_menu %}{% endblock %}
{% endif %}
{% endblock %}
{% block addjs %}
{% if request.user|HasPerm:"contenttypes.can_RTMonitorPage" %}
{% block base_variables %}
//$("#id_show_alarm").hide();//默认此div不显示
var gdata = null;//global variable
var gdev_filter = "";//门状态的监控的设备条件传给事件监控
var src_disabled = "/media/images/iaccess/door_disabled.jpg";
var src_default = "/media/images/iaccess/door_nosensor.jpg";
var src_nosensor = "/media/images/iaccess/door_nosensor.jpg";
var src_offline = "/media/images/iaccess/door_offline.jpg";
var src_opened = "/media/images/iaccess/door_opened.jpg";
var src_closed = "/media/images/iaccess/door_closed.jpg";
var src_alarm = "/media/images/iaccess/door_alarm.jpg";
var src_open_timeout = "/media/images/iaccess/door_open_timeout.jpg";
{% endblock %}
{% block show_tip_info %}
//光标移动到门图标上时显示的信息
function getMoreInfo(index)
{
return ''
+''
+'
'
+'{% trans "所属设备" %}: | '+gdata[index][1]+' |
'
+'{% trans "门编号" %}: | '+gdata[index][2]+' |
'
+'{% trans "门名称" %}: | '+gdata[index][3]+' |
'
+''
+''
+' |
'
+'
'
+'
';
}
function index_tip_info(obj)
{
var index = $(obj).attr("index");
$("#id_tip").html(getMoreInfo(index));
var offset = $(obj).offset();
if($("#id_tip").css("display") == "none")
{
$("#id_tip").css({"z-index": 16, "display": "block", "position": "absolute", "top": (offset.top-35), "left": (offset.left-90)})
$("#id_tip").mouseover(function()
{
$(this).css({"z-index": 16, "display": "block", "position": "absolute", "top": (offset.top-35), "left": (offset.left-90)})
}).mouseout(function()
{
$("#id_tip").css("display", "none");
});
}
else
{
$("#id_tip").css("display", "none");
}
$(".maskIframe").css("width", $(".div_tip").width()+16);
$(".maskIframe").css("height", $(".div_tip").height()+14);
}
function tip_info_exit(obj)
{
$("#id_tip").css("display", "none")
}
//弹出框的形式远程开门
function show_opendoor(element_id, door_id)//元素id和门id(pk)
{
//alert(door_id)
if(door_id)//不为undefined
{
current_door = door_id;
}
var open_doors_form = '';
$(open_doors_form).dialog()
$("#id_open_doors_form").find("#id_Cancel").click(function(){
$("#id_close").click();
});
$("#id_open_interval_set").click(function(){
$("#id_open_sec1").attr("disabled", false);
});
$("#id_reenable_open").click(function(){
$("#id_open_sec1").attr("disabled", true);
});
$("#id_open_no").click(function(){
$("#id_open_sec1").attr("disabled", true);
});
remote_control(element_id.split("_")[0]);
}
function show_closedoor(element_id, door_id)
{
if(door_id)//不为undefined
{
current_door = door_id;
}
var close_doors_form = '';
$(close_doors_form).dialog()
$("#id_close_doors_form").find("#id_Cancel").click(function(){
$("#id_close").click();
});
remote_control(element_id.split("_")[0]);
}
function remote_control(mode)
{
$("#opendoor, #openpart, #closedoor, #closepart").click(function(){
var stamp5 = new Date().getTime();
if((mode == "openpart" || mode == "closepart") && current_doors.length == 0)
{
alert(gettext("当前没有符合条件的门!"));
return false;
}
//alert(current_door);
if(mode == "opendoor" || mode == "openpart")
{
var open_interval = 15;
var enable_no_tzs = false;
if($("#id_open_no").attr("checked") == true)
{
open_interval = 255;
}
else if($("#id_open_interval_set").attr("checked") == true)//正常开门
{
open_interval = $("#id_open_sec1").val();
var reg = /^([0-9]+)$/;
if(!reg.test(open_interval) || parseInt(open_interval) < 1 || parseInt(open_interval) > 254)
{
alert(gettext("请输入有效的开门时长!必须为1-254间的整数!"));
return false;
}
}
else//先禁用常开时间段再开门
{
open_interval = -1;//不开门
enable_no_tzs = true;
}
if(mode == "openpart")
{
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ current_doors +"&open_interval="+open_interval+"&enable_no_tzs="+enable_no_tzs+"&stamp="+ stamp5;
}
else
{
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ current_door +"&open_interval="+open_interval+"&enable_no_tzs="+enable_no_tzs+"&stamp="+ stamp5;
}
}
else//closepart
{
var disable_no_tzs = false;
if($("#id_disable_no_tzs").attr("checked") == true)
{
disable_no_tzs = true;
}
if(mode == "closepart")
{
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ current_doors +"&disable_no_tzs="+disable_no_tzs+"&stamp="+ stamp5;
}
else
{
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ current_door +"&disable_no_tzs="+disable_no_tzs+"&stamp="+ stamp5;
}
}
send_doors_data(mode,getUrl);
});
}
{% endblock %}//end of block show_tip_info
{% block electro_map %}{% endblock %}
{% block monitor_log %}
{% if request.user|HasPerm:"contenttypes.can_MonitorAllPage" %}
function show_door(data)
{
if(data.areas != "")
{
//$("#monitor_area select option:gt(0)").empty();
for(a in data.areas)
{
$("#monitor_area select").append('');
}
}
if(data.devices != "")
{
$("#monitor_device select option:gt(0)").remove();
for(a in data.devices)
{
$("#monitor_device select").append('');
}
}
else if(data.type == 'all' || data.type == 'area')//没有返回devices且传入参数为area
{
$("#monitor_device select").empty().append('');
}
if(data.doors != "")
{
if(data.type != 'door')
{
$("#monitor_door select option:gt(0)").remove();
for(a in data.doors)
{
$("#monitor_door select").append('');
}
}
}
else
{
$("#monitor_door select").empty().append('');
}
var html = "";
var doors = data.doors;
if($("#id_door_state div,#id_door_state table").length > 0)
{
$("#id_datalist_view,#id_datalist_view_table").remove();
}
//$("#id_door_state #id_datalist_view").remove();//避免重复提示
var door_total = doors.length;
if(door_total > 0)
{
if(door_total <= 64)//图标方式64
{
image_mode = 0;
html += ""
for(var index in doors)
{
//input中data为门的id
var len = (doors[index][3]).length;
var cnstr = (doors[index][3]).match(/[^\x00-\xff]/ig);//查看是否有中文字符串
if(cnstr!=null)
{
if(len >= 5)
{
door_name = doors[index][3].substr(0,5) + "...";//4个字符
}
else
{
door_name = doors[index][3];
}
}
else
{
if(len >= 10)
{
door_name = doors[index][3].substr(0,10) + "...";//4个字符
}
else
{
door_name = doors[index][3];
}
}
html += "
"
+"
 |
"
+""+door_name
+" |
"
+"
";
}
html += "
"
}
else//列表方式
{
image_mode = 1;
html += '{% trans "门名称" %} | {% trans "所属设备" %} | {% trans "门编号" %} | {% trans "当前状态" %} | {% trans "操作" %} |
';
for(var index in doors)
{
//input中data为门的id
door_name = doors[index][3];
html += ''+door_name+' | '+doors[index][1]+' | '+doors[index][2]+' | {% trans "读取中......" %} | '
+ ''
+ ''
+ '{% trans "远程开门"%}'
+ '{% trans "远程关门" %}'
+ '{% trans "取消报警" %} |
';
}
html += "
";
}
}
else
{
html += "{%trans "当前系统中没有添加门或者没有查询到符合您需要的门!" %}
"
}
$("#id_door_loading").hide();
$("#id_door_state").append(html);
if(image_mode == 1)//列表方式
{
$(".door_ops").hide();
}
//alert($("#id_door_state").height());
if($("#id_door_state").height() > 150)
{
//alert("大于150");
$("#id_door_state").height(150);//最大150px
}
}
function send_doors_data(mode, getUrl)
{
$("#id_close").click();//关闭远程开关门的弹出框
$.ajax({
type: "GET",
url: getUrl,
dataType: "json",
async: true,
success: function(data)
{
//$("#id_close").click();//关闭远程开关门的弹出框
var result = data.result;
var tips = '';
if(mode == 'cancelalarm' || mode == 'cancelall')
{
for(index in result)
{
if(result[index].ret < 0)
{
tips += result[index].device_name + ' ';
}
}
if(result == '' || tips != '')
{
tips += gettext("取消报警失败!");
}
else
{
tips += gettext("取消报警成功!");
}
$("#cancelall").parent().hide();//无论成功与否均隐藏。如果失败,会再自动产生
$("#id_alarm_sound object,bgsound").remove();
alert(tips);
}
else if(mode == 'opendoor' || mode == 'openpart')
{
for(index in result)
{
if(result[index].ret < 0)
{
tips += result[index].door_name + ' ';
}
}
if(result == '' || tips != '')
{
tips += gettext("发送开门请求失败!");
}
else
{
tips += gettext("发送开门请求成功!");
}
alert(tips);
}
else if(mode == 'closedoor' || mode == 'closepart')
{
for(index in result)
{
if(result[index].ret < 0)
{
tips += result[index].door_name + ' ';
}
}
if(result == '' || tips != '')
{
tips += gettext("发送关门请求失败!");
}
else
{
tips += gettext("发送关门请求成功!");
}
alert(tips);
}
data = result = tips = null;
},
error:function(XMLHttpRequest, textStatus, errorThrown)
{
alert(gettext("发送开关门或取消报警请求失败,请重试!"));
}
});
}
//远程开关门(单个门)
function control_door(mode, door_id)
{
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ door_id;
send_doors_data(mode, getUrl);
}
var current_doors = new Array();//data--当前页面上的所有门
var current_door = 0;//选中的当前门
function get_doors_area_device(url)
{
$.ajax({
type: "GET",
url: url,
dataType: "json",
async: false,
success: function(data)
{
gdata = data.doors;
show_door(data);
current_doors = [];
if(image_mode == 0)//图标
{
$("div[id^='door_']").each(function(){
current_doors.push($(this).attr("data"));
});
}
else
{
$("tr[id^='door_']").each(function(){
current_doors.push($(this).attr("data"));
});
}
data = null;
}
});
}
//用于向服务器端获取实时事件数据
logid = -1;
var row = "row0";//第一次加载页面时初始化该值
var has_doors = false;
var a_logid = 0;//alarm log id
var g_has_alarms = false;//当前是否有报警事件(指报警的图标)
var image_mode = 0;//0图标模式显示门状态,1代表列表模式
function GetLinkNum(xmlstr,curch) //获取硬盘录像机当前通道的已连接个数
{
var members = 0;
var maxRes = 0;
if(!window.DOMParser && window.ActiveXObject){
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
for(var i=0;i 50)
{
$("#id_monitor_events").find("#rt_content").find("tr:gt(50)").remove();
}
var stamp = new Date().getTime();
//alert("gdev_filter"+gdev_filter);
getUrl = '/{{ request.surl }}iaccess/GetRTLog/?type=all&logid='+ logid +'&step=100'+ gdev_filter;
//alert("getUrl"+getUrl);
$.ajax({
type: "GET",
url: getUrl,
dataType: "json",
async: true,
success: function(rtlog)
{
if(rtlog.log_id == -1)//第一次请求(含非第一次请求,缓存清空后重新开始)
{
logid = rtlog.all_id;
a_logid = rtlog.alarm_id;//获取监控全部记录开始时的alarm_id(跳转页面使用)
}
else
{
logid += rtlog.log_count;
}
//门状态监控
var states = rtlog.door_states;
//id state alarm
if(has_doors == false)
{
$("#monitor_area select").change(function(){
//$("#id_datalist_view").remove();
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=area&area_id="+$(this).val();
//alert("getUrl1"+url);
gdev_filter = "&area_id="+$(this).val();
get_doors_area_device(url);
});
$("#monitor_device select").change(function(){
//$("#id_datalist_view").remove();
var val = $(this).val();
if(val == 0)
{
var area = $("#monitor_area select").val();
if(area != 0)
{
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=area&area_id="+ area;
//alert("getUrl2"+url);
gdev_filter = "&area_id="+ area;
get_doors_area_device(url);
return;
}
}
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=device&device_id="+ val;
//alert("getUrl3"+url);
gdev_filter = "&device_id="+ val;
get_doors_area_device(url);
});
$("#monitor_door select").change(function(){
//$("#id_datalist_view").remove();
var val = $(this).val();
if(val == 0)
{
var dev = $("#monitor_device select").val();
if(dev != 0)
{
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=device&device_id="+ dev;
//alert("getUrl4"+url);
gdev_filter = "&device_id="+ dev;
get_doors_area_device(url);
return;
}
else
{
var area = $("#monitor_area select").val();
if(area != 0)
{
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=area&area_id="+ area;
//alert("getUrl6"+url);
gdev_filter = "&area_id="+ area_id;
get_doors_area_device(url);
return;
}
}
}
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=door&door_id="+ val;
//alert("getUrl7"+url);
gdev_filter = "&door_id="+ val;
get_doors_area_device(url);
});
has_doors = true;
}
var has_alarms = false;//单次请求中是否有报警事件(对应图标)
for(var index in states)
{
var door_datas = states[index];//该变量记录了当前某个门的状态
var $td_text = $("#door_state_td_"+door_datas.id+"");
$td_text.parent().find("#reading_list,.door_ops").hide();//,
//door_datas.alarm=105
//door_datas.connect=1
//图标和列表方式都需要实时更新
if(door_datas.enabled == 0)//设备被禁用
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_disabled);
}
else
{
$td_text.text(gettext("禁用"));
$td_text.parent().attr("class", "Disabled");
$td_text.parent().find("#no_ops_list").show();
}
}
else if(door_datas.connect == 0)//不在线
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_offline);
}
else
{
$td_text.text(gettext("离线"));
$td_text.parent().attr("class", "OutLine");
$td_text.parent().find("#no_ops_list").show();
}
}
else if(door_datas.alarm == 1)//有报警
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_alarm);
}
else
{
$td_text.text(gettext("报警"));
$td_text.parent().attr("class", "AlarmLog");
$td_text.parent().find(".door_ops").show();
$td_text.parent().find("#no_ops_list").hide();
}
if($("#id_alarm_sound object,bgsound").length == 0)//避免声音重复
{
if($.browser.msie)
{
$("#id_alarm_sound").append('');
}
else
{
$("#id_alarm_sound").append('');
}
$("#cancelall").parent().show();//取消全部报警
$("#cancelall").unbind("click");
$("#cancelall").click(function(){
var alarm_doors = new Array();//当前页面上所有报警的门
if(image_mode == 0)//图标
{
$("div[id^='door_']").each(function(){
if($(this).find("img").attr("src").indexOf("door_alarm") != -1)
{
alarm_doors.push($(this).attr("data"));
}
});
}
else
{
$("tr[id^='door_']").each(function(){
if($("this").attr("class") == "AlarmLog")
{
alarm_doors.push($(this).attr("data"));
}
});
}
var mode = $(this).attr("id");
getUrl = "/{{ request.surl }}iaccess/SendDoorData/?func="+ mode +"&type=part&data="+ alarm_doors;//所有报警的门非所有门,故type=part而非all
send_doors_data(mode,getUrl);
});
}
has_alarms = true;
}
else if(door_datas.alarm == 2)//门开超时
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_open_timeout);
}
else
{
$td_text.text(gettext("门开超时"));
$td_text.parent().attr("class", "IllegalLog");
$td_text.parent().find("#opendoor_list, #closedoor_list").show();
}
}
else
{
$td_text.parent().find("#opendoor_list, #closedoor_list").show();
if(door_datas.state == 1)//门关
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_closed);
}
else
{
$td_text.text(gettext("关闭"));
$td_text.parent().attr("class", "CommonLog");
}
}
else if(door_datas.state == 2)//门开
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_opened);
}
else
{
$td_text.text(gettext("打开"));
$td_text.parent().attr("class", "CommonLog");
}
}
else if(door_datas.state == 0)//无门磁
{
if(image_mode == 0)
{
$("#door_"+door_datas.id+" img").attr("src", src_nosensor);
}
else
{
$td_text.text(gettext("无门磁"));
$td_text.parent().attr("class", "NoSensor");
}
}
}
}
g_has_alarms = has_alarms;
if(g_has_alarms == false)
{
$("#cancelall").parent().hide();
$("#id_alarm_sound object,bgsound").remove();//状态在没手动关闭声音前切换,将自动取消声音(实际可能不会发生)
}
//事件监控
//alert("rtlog.data ="+rtlog.data );
if(rtlog.data != "")
{
//alert("begin monitor2");
rtlisthtml = "";
for(var index in rtlog.data)
{
var datas = rtlog.data[index];
var type = datas.event_type;
var class_type = "";
if(type >= 20 && type < 100)
{
class_type = "IllegalLog";
rtlisthtml = '';
}
else if(type >= 100 && type < 200)
{
class_type = "AlarmLog";
rtlisthtml = '
';
$("#id_show_alarm").show();//发现报警事件
var href = $(".ds_MonitorAlarmPage").parent().attr("href");
href = href+'?a_logid=' + a_logid;
$("#id_show_alarm a").attr({"href": href, "target": "_blank"});
}
else
{
if (datas.link_video != "") //视频联动
{
var videoState = $("#id_video_state").val();
var chNumToInt=parseInt(datas.link_video[4]-"0");
if(videoState.substr(chNumToInt,1) == '0')
{
videoState=videoState.substr(0,chNumToInt)+'1'+videoState.substr(chNumToInt+1,videoState.length-1-chNumToInt);
$("#id_video_state").val(videoState);
video_url = "/{{ request.surl }}video/VideoMonitorPage/?vid_ip=" + datas.link_video[0]
+ "&vid_port=" + datas.link_video[1]
+ "&vid_login=" + datas.link_video[2]
+ "&vid_pwd=" + datas.link_video[3]
+ "&vid_ch=" + datas.link_video[4]
+ "&capture_picture=" + datas.link_video[5];
window.showModelessDialog(video_url ,window, "location=no;directories=no;scrollbars=no;toolbar=no;center=yes;status=0;help=no;dialogWidth=420px;dialogHeight=360px");
}
}
class_type = "CommonLog";
rtlisthtml = '
';
}
rtlisthtml += ''+datas.time+' | '
+ ''+datas.device+' | '
+ ''+datas.event_point+' | '
+ ''+datas.content+' | '
+ ''+datas.card+' | '
+ ''+datas.emp+' | '
+ ''+datas.state+' | '
+ ''+datas.verified+' |
';
$("#id_monitor_events").find("#rt_content").prepend(rtlisthtml);
if(row == "row0")
{
row = "row1";
}
else
{
row = "row0";
}
//处理人员照片
if(datas.photo != "")
{
if($("#message").is("div"))
{
$.messager.close(true);//删除已有photo
}
//用来获取photo尺寸
var random = ""//随机数(ie)
// if($.browser.msie)
// {
var stamp6 = new Date().getTime();
random = '?'+stamp6;
//}
//$("#id_main_content").html('');
//var p_width = $("#id_photo_temp").width();// img
//var p_height = $("#id_photo_temp").height();
//alert(p_width)
//alert(p_height)
//if(p_width > p_height)
//{
//p_height = (400*p_height)/p_width;
//p_width = 300;
//}
//else
//{
//p_width = (225*p_width)/p_height;
//p_height = 225;
//}
$.messager.lays(230, 230);
//$.messager.anim('show', 1000);
$.messager.anim('fade', 1);
$.messager.show(''+datas.emp+'
'+datas.content+'
'+datas.time+'','
');
$("#id_photo_title").parent().width("200px");//标题不够长
$("#message_content").css("height", "165px");
$("#message_down").css("height", '');
//alert($("#message div:first").length);
//弹出框不随窗口滚动而滚动
$(window).scroll(function(){
var top_height = document.documentElement.scrollTop + document.documentElement.clientHeight - this.layer.height;
$("#message").css("top", top_height + "px");
});
$("#id_photo_temp").remove();//删除
}
}
}
window.setTimeout('OnRefresh()', 3000)//等*秒执行刷新函数
},
error:function (XMLHttpRequest, textStatus, errorThrown)
{
window.setTimeout('OnRefresh()', 3000)//等*秒执行刷新函数
}
});
}
//intervalID=window.setInterval('OnRefresh()', 3000);//每三秒执行刷新函数
//window.showModalDialog("/{{ request.surl }}video/VideoMonitorPage/?vodid=7&ch=0" , "", "location=no;directories=no;scrollbars=no;toolbar=no;center=yes;status=0;dialogWidth=420px;dialogHeight=360px");
//取所有门或者符合条件的门
var stamp = new Date().getTime();
url = "/{{ request.surl }}iaccess/GetData/?func=doors&type=all&stamp="+ stamp;
get_doors_area_device(url);
window.setTimeout('OnRefresh()', 1000)//第一次刷新等1s执行刷新函数
{% else %}
alert(gettext("对不起,您没有访问该页面的权限,不能浏览更多信息!"));
window.location.href = "/{{ request.surl }}accounts/login/";
{% endif %}
{% endblock %}
{% else %}
alert(gettext("对不起,您没有访问该页面的权限,不能浏览更多信息!"));
window.location.href = "/{{ request.surl }}accounts/login/";
{% endif %}
{% endblock %}