Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/main_HQAQ.jsp
2026-01-16 14:13:44 +08:00

2003 lines
97 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="com.sipai.entity.base.ServerObject" %>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security" %>
<%@ page import="com.sipai.tools.Mqtt" %>
<%@ page import="org.springframework.context.ApplicationContext" %>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
<% ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
Mqtt mqtt = (Mqtt) ctx.getBean("mqtt");
request.setAttribute("mqttStatus", mqtt.getStatus());
request.setAttribute("hostWeb", mqtt.getHostWeb());
request.setAttribute("username", mqtt.getUsername());
request.setAttribute("password", mqtt.getPassword());
%>
<!DOCTYPE html>
<head>
<title><%= ServerObject.atttable.get("TOPTITLE")%>
</title>
<!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<!-- 开关按钮-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-switch/dist/js/bootstrap-switch.min.js" charset="utf-8"></script>
<%-- mqtt依赖--%>
<script src="<%=request.getContextPath()%>/JS/mqtt/mqtt.min.js" type="text/javascript"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js" charset="utf-8"></script>
<style>
body {
overflow-x: auto;
}
.body-wrapper{
height: 1080px;
width: 1920px;
background-size: 100% 100%;
background-repeat:no-repeat;
background-position:center center;
}
.body-wrapper-1{
background-image: url(<%=request.getContextPath()%>/IMG/main_bg_hqaq.png);
}
.body-wrapper-2{
background-image: url(<%=request.getContextPath()%>/IMG/main_bg_hqaq2.png);
}
.factory-area-1{
height: 667px;
width: 642px;
/*background-image: url(<%=request.getContextPath()%>/IMG/main_bg_hqaq_1.png);
background-size: 100% 100%;
background-repeat:no-repeat;
background-position:center center;*/
position: absolute;
top: 186px;
left: 673px;
}
.factory-area-2{
height: 814px;
width: 637px;
/*background-image: url(<%=request.getContextPath()%>/IMG/main_bg_hqaq_2.png);
background-size: 100% 100%;
background-repeat:no-repeat;
background-position:center center;*/
position: absolute;
top: 119px;
left: 673px;
display: none;
}
.factory-area-text-hide{
display: none;
}
.body-data{
width: 18.5%;
height: 87.5%;
background: rgba(0,0,0,0.68);
position: absolute;
top:4%;
color: #ffffff;
font-size: 14px;
font-weight: 400;
}
.body-title{
width: 100%;
font-size: 18px;
font-weight: 700;
text-align: center;
color: #03f6f6;
text-shadow: 1px 1px 2px 0px rgba(45,157,255,0.77);
padding: 14px;
}
.body-line{
width: 100%;
height: 2px;
background: linear-gradient(89deg,rgba(0,176,255,0.00) 0%, #00f6ff 45%, rgba(0,153,255,0.00) 99%);
}
.body-content{
width: 100%;
padding: 10px 20px;
}
.body-score{
height: 50.7%;
}
.body-user{
height: 33.8%;
}
.body-manage{
height: 46%;
padding: 10px 0;
}
.body-count{
height: 38.6%;
}
.body-left{
left:1%;
}
.body-center{
top: 5%;
left: 35%;
height: 920px;
width: 750px;
display: none;
}
.body-perimeter{
top: 0;
left: 32%;
height: 1080px;
width: 846px;
}
.perimeter-round{
width: 24px;
height: 24px;
border-radius: 50%;
color: #000000;
position: absolute;
text-align: center;
line-height: 1.8;
}
.perimeter-round-blue{
background: #00fff7;
}
.perimeter-round-red{
background: #FF0000;
}
.perimeter-round-grey{
background: #c1c1c1;
}
.body-right{
right:1%;
}
.echarts_score{
width: 130px;
height: 130px;
}
.echarts_alarm{
width: 120px;
height: 120px;
}
.echarts_line{
width: 315px;
height: 250px;
}
.font-color-green{
color: #00FF55;
}
.font-color-lightgreen{
color: #00F6FF;
}
.font-color-yellow{
color: #FFEE00;
}
.font-color-red{
color: #FF0000;
}
.font-color-orange{
color: #FF9100;
}
.font-color-blue{
color: #00B1FF;
}
.font-color-purple{
color: #DF0DFF;
}
.font-color-lightblue{
color: #0D96FF;
}
.font-color-lightorange{
color: #FF9E0D;
}
.font-color-lineblue{
color: #00FFF7;
}
.font-color-white{
color: #ffffff;
text-shadow: 0px 1px 2px rgb(0 0 0 / 99%);
}
.font-size-18{
font-size: 18px;
}
.font-size-20{
font-size: 20px;
}
.font-size-36{
font-size: 36px;
}
.padding-top-20{
padding-top: 20px;
}
.padding-top-15{
padding-top: 15px;
}
.padding-top-10{
padding-top: 10px;
}
.padding-top-5{
padding-top: 5px;
}
.padding-bottom-10{
padding-bottom: 10px;
}
.padding-bottom-15{
padding-bottom: 15px;
}
.padding-bottom-20{
padding-bottom: 20px;
}
.padding-10{
padding: 10px;
}
.margin-top-1{
margin-top: 1px;
}
.table-border-top{
border-top: 2px solid #3f6a77;
}
.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 {
padding-right: 5px;
padding-left: 5px;
}
.bootstrap-switch,.bootstrap-switch-handle-on,.bootstrap-switch-handle-off {
border-radius: 50px;
}
.bootstrap-switch-container{
background: #00A8FF;
}
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary {
background: #ffffff;
}
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
line-height: 1;
}
.bootstrap-switch .bootstrap-switch-label {
background: #00a8ff;
}
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default {
background: #5D909F;
}
.bootstrap-switch-off .bootstrap-switch-label,
.bootstrap-switch-off .bootstrap-switch-container
{
background: #315c72;
}
.body-manage table{
width: 100%;
}
.body-manage table>tbody>tr>td {
padding: 5px 5px 2px 20px;
}
.cursor-pointer{
cursor: pointer;
}
.manage-click{
cursor: pointer;
}
.manage-active{
background: #1169b7;
border-radius: 5px;
}
.canvas,.center-icon,.body-center-text{
position: absolute;
}
.exit-icon{
background: transparent;
}
.exit-icon-1{
width: 24px;
height: 24px;
}
.exit-icon-2{
width: 14px;
height: 14px;
}
.background-color-blue{
background: #0098c8;
border: 1px solid #00d3ff;
}
.background-color-red{
background: #c80000;
border: 1px solid #ff0000;
}
.background-color-yellow{
background: #ff9e0d;
}
.background-color-orange{
background: #ff8000;
}
.center-alarm-region{
width: 140px;
height: 30px;
border-radius: 6px;
padding: 6px;
font-size: 14px;
text-align: center;
color: #ffffff;
line-height: 1.3;
}
.center-alarm-region > i{
margin-left: 5px;
margin-right: 5px;
}
.line-lightblue{
border: 1px solid #00c2ff;
margin: 0;
}
.line-yellow{
border: 1px solid #ff9e0d;
margin: 0;
}
.line-red{
border: 1px solid #c80000;
margin: 0;
}
.line-orange{
border: 1px solid #ff8000;
margin: 0;
}
.special-type-text{
width: 152px;
height: 39px;
border-radius: 4px;
font-size: 12px;
text-align: center;
color: #ffffff;
padding: 5px;
}
</style>
<script type="text/javascript">
var height = 995;
var width = 1870;
var heightV =1;
var widthV =1;
var color = ['#ffff13','#31ff7d','#ff2ee3','#2e97ff','#ffb536'];
var bizid = "";
var body_content_width = 0;
var body_content_height = 0;
var factory_area_1_width = 0;
var factory_area_1_height = 0;
var factory_area_1_top = 0;
var factory_area_1_left = 0;
var factory_area_2_width = 0;
var factory_area_2_height = 0;
var factory_area_2_top = 0;
var factory_area_2_left = 0;
var echarts_score_width = 0
var echarts_score_height = 0;
var echarts_alarm_width = 0;
var echarts_alarm_height = 0;
var echarts_line_width = 0;
var echarts_line_height = 0;
var body_center_width = 0;
var body_center_height = 0;
var body_perimeter_width = 0;
var body_perimeter_height = 0;
var alarm_bar_height = 0;
var context;
var canvas;
var manageShow = false;
var tzsb_state = false;
$(function () {
$(window).width(width);
$(window).height(height);
$(document).width(width);
$(document).height(height);
$("body").width(width);
$("body").height(height);
bizid = unitId;
body_content_width = $('.body-wrapper').width();
body_content_height = $('.body-wrapper').height();
factory_area_1_width = $('.factory-area-1').width();
factory_area_1_height = $('.factory-area-1').height();
factory_area_2_width = $('.factory-area-2').width();
factory_area_2_height = $('.factory-area-2').height();
factory_area_1_top = $('.factory-area-1').css("top");
factory_area_1_left = $('.factory-area-1').css("left");
factory_area_2_top = $('.factory-area-2').css("top");
factory_area_2_left = $('.factory-area-2').css("left");
echarts_score_width = $('.echarts_score').width();
echarts_score_height = $('.echarts_score').height();
echarts_alarm_width = $('.echarts_alarm').width();
echarts_alarm_height = $('.echarts_alarm').height();
echarts_line_width = $('.echarts_line').width();
echarts_line_height = $('.echarts_line').height();
body_center_width = $('.body-center').width();
body_center_height = $('.body-center').height();
body_perimeter_width = $('.body-perimeter').width();
body_perimeter_height = $('.body-perimeter').height();
alarm_bar_height = $('.alarm-bar').height();
showElement();
$('#switch_exit').bootstrapSwitch({ //初始化按钮
onText:" ",
offText:" ",
onColor:"primary",
offColor:"default",
size:"mini",
handleWidth:10,
labelWidth:20,
onSwitchChange:function(event,state){
if(state==true){
$('.exit-icon').show();
}else{
$('.exit-icon').hide();
}
}
});
$('#switch_zjwl').bootstrapSwitch({ //初始化按钮
onText:" ",
offText:" ",
onColor:"primary",
offColor:"default",
size:"mini",
handleWidth:10,
labelWidth:20,
onSwitchChange:function(event,state){
if(state==true){
$('.body-perimeter').show();
}else{
$('.body-perimeter').hide();
}
}
});
$('#switch_tzsb').bootstrapSwitch({ //初始化按钮
onText:" ",
offText:" ",
onColor:"primary",
offColor:"default",
size:"mini",
handleWidth:10,
labelWidth:20,
onSwitchChange:function(event,state){
tzsb_state=!state;
if(state==true){
$('.special-type').show();
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
$('.factory-area').hide();
$('.factory-area-'+checkValue).show();
$('.factory-area-text-'+checkValue).show();
}else{
$('.special-type').hide();
}
}
});
$('.manage-click').click(function(){
let manage = $(this).data('id');
if($(this).hasClass("manage-active")){
$(this).removeClass("manage-active");
$(this).find(".manage-icon").removeClass("fa-check").addClass("fa-times");
$(this).find(".manage-text").html("未开启");
if(manage=='manage'){
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
$('.body-center-'+checkValue).hide();
manageShow = false;
}
}else {
$(this).addClass("manage-active");
$(this).find(".manage-icon").removeClass("fa-times").addClass("fa-check");
$(this).find(".manage-text").html("已开启");
if(manage=='manage') {
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
$('.body-center-'+checkValue).show();
manageShow = true;
}
}
});
$('input:radio[name="optionsRadios"]').click(function(){
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
$('.factory-area').hide();
$('.factory-area-'+checkValue).show();
$('.factory-area-text-'+checkValue).show();
$('.body-wrapper').removeClass("body-wrapper-1");
$('.body-wrapper').removeClass("body-wrapper-2");
$('.body-wrapper').addClass("body-wrapper-"+checkValue);
if(manageShow){
$('.body-center').hide();
$('.body-center-'+checkValue).show();
}
exitIcon(checkValue);
});
//初始化mqtt
if ('${mqttStatus}' == '0') {
let mqttId = '${cu.name}'+ '_web'+ Math.random() + new Date();
initialMqtt(mqttId);
} else {
console.log('mq已关闭')
}
});
window.onresize = function () {
showElement();
}
function initialMqtt(mqttId) {
const options = {
clean: true,
connectTimeout: 10000,
clientId: mqttId,
username: '${username}',
password: '${password}',
}
const connectUrl = '${hostWeb}';
const client = mqtt.connect(connectUrl, options);
//当重新连接启动触发回调
client.on('reconnect', function () {
// console.log('正在重连.....');
});
//连接断开后触发的回调
client.on("close", function () {
console.log('客户端已断开连接.....');
});
//从broker接收到断开连接的数据包后发出。MQTT 5.0特性
client.on("disconnect", function (packet) {
console.log('从broker接收到断开连接的数据包.....' + packet);
});
//客户端脱机下线触发回调
client.on("offline", function () {
console.log('客户端脱机下线.....');
});
//当客户端无法连接或出现错误时触发回调
client.on("error", (error) => {
console.log('客户端出现错误.....' + error);
});
//当客户端发送任何数据包时发出。这包括published()包以及MQTT用于管理订阅和连接的包
client.on("packetsend", (packet) => {
// console.log('客户端已发出数据包:' + packet);
});
//当客户端接收到任何数据包时发出。这包括来自订阅主题的信息包以及MQTT用于管理订阅和连接的信息包
client.on("packetreceive", (packet) => {
// console.log('收到:' + packet);
});
//成功连接后触发的回调
client.on("connect", function (connack) {
// layer.msg('成功连接上mq服务器');
console.log('成功连接上mqtt服务器');
//订阅某主题
/**
* client.subscribe(topic/topic array/topic object, [options], [callback])
* topic:一个string类型的topic或者一个topic数组,也可以是一个对象
* options
*/
client.subscribe(['hq_alarm_num'], {qos: 0});
//每隔2秒发布一次数据
// setInterval(publish, 2000)
});
function publish() {
//发布数据
/**
* client.publish(topic,message,[options], [callback])
*
* message: Buffer or String
* options:{
* qos:0, //默认0
* retain:false, //默认false
* dup:false, //默认false
* properties:{}
* }
* callback:function (err){}
*/
const message = "h5 message " + Math.random() + new Date();
client.publish("testtopic/123", message, {qos: 2});
}
//当客户端接收到发布消息时触发回调
/**
* topic:收到的数据包的topic
* message:收到的数据包的负载playload
* packet:收到的数据包
*/
client.on('message', (topic, message, packet) => {
if (topic == 'hq_alarm_num' || topic == 'web_topic') {
var json = JSON.parse(message.toString());
var datatype = json.datatype;
var data = json.data;
if(datatype=='TypeNumer'){
$('#alarm_aqyj').html(data.aqyj);
$('#alarm_xfqj').html(data.xfqj);
$('#alarm_wsdj').html(data.wsdj);
$('#alarm_ywj').html(data.ywj);
$('#alarm_lhq').html(data.lhq);
$('#alarm_jw').html(data.jw);
$('#alarm_all').html(data.all);
$('#alarm_bjcll').html((data.bjcll*100).toFixed(0));
$('#alarm_numAQRW').html(data.numAQRW);
$('#alarm_numAISJ').html(data.numAISJ);
$('#alarm_numWLJS').html(data.numWLJS);
$('.alarm_num_a').html(data.numIngA);
$('.alarm_num_b').html(data.numIngB);
$('.alarm_num_c').html(data.numIngC);
$('.alarm_num_d').html(data.numIngD);
var numIngA = data.numIngA-0;
var numIngB = data.numIngB-0;
var numIngC = data.numIngC-0;
var numIngD = data.numIngD-0;
$('#alarm_num_all').html(numIngA+numIngB+numIngC+numIngD);
var value = [data.numA,data.numB,data.numC,data.numD]
doBar4Alarm("alarm-bar",value);
var pievalue = [
{ value: data.numAQRW, name: '安全任务' },
{ value: data.numAISJ, name: 'AI视觉' },
{ value: data.numWLJS, name: '物联监视' }
];
doPie("echarts_alarm",pievalue);
}
if(datatype=='TypeZhouJie'){
showPerimeter(data,1);
}
if(datatype=='TypeZhouJie2'){
showPerimeter(data,2);
}
if(datatype=='TypeArea'){
showRegion(data);
}
if(datatype=='TypeEquipment'){
showSpecialType(data);
}
// alarm_num_all();
}
});
//页面离开自动断开连接
$(window).bind("beforeunload", () => {
// console.log("客户端窗口关闭,断开连接");
client.disconnect();
})
}
function alarm_num_all() {
var nums = 0;
var aqyj = $('#alarm_aqyj').html()-0;
var xfqj = $('#alarm_xfqj').html()-0;
var wsdj = $('#alarm_wsdj').html()-0;
var ywj = $('#alarm_ywj').html()-0;
var lhq = $('#alarm_lhq').html()-0;
var jw = $('#alarm_jw').html()-0;
if((aqyj+xfqj+wsdj+ywj+lhq+jw)!=null && (aqyj+xfqj+wsdj+ywj+lhq+jw)!='' && (aqyj+xfqj+wsdj+ywj+lhq+jw)>0){
nums = aqyj+xfqj+wsdj+ywj+lhq+jw;
}
var alarm_zjwl = $('#alarm_zjwl').html()-0;
var alarm_tzsb = $('#alarm_tzsb').html()-0;
$('#alarm_num_all').html(nums+alarm_zjwl+alarm_tzsb);
}
function showElement() {
/*height = $(window).height();
width = $(window).width();*/
height = 995;
width = 1870;
if (height < (global_height * 0.1)) {
height = global_height;
}
if (width < (global_width * 0.1)) {
width = global_width;
}
heightV = height / 1080;
widthV = width / 1920;
$('.body-wrapper').height(body_content_height*heightV);
$('.body-wrapper').width(body_content_width*widthV);
$('.factory-area-1').height(factory_area_1_height*heightV);
$('.factory-area-1').width(factory_area_1_width*widthV);
$('.factory-area-1').css("top", (parseFloat(factory_area_1_top)*heightV)+"px");
$('.factory-area-1').css("left", (parseFloat(factory_area_1_left)*widthV)+"px");
$('.factory-area-2').height(factory_area_2_height*heightV);
$('.factory-area-2').width(factory_area_2_width*widthV);
$('.factory-area-2').css("top", (parseFloat(factory_area_2_top)*heightV)+"px");
$('.factory-area-2').css("left", (parseFloat(factory_area_2_left)*widthV)+"px");
$('.echarts_score').height(echarts_score_height*heightV);
$('.echarts_score').width(echarts_score_width*widthV);
$('.echarts_alarm').height(echarts_alarm_height*heightV);
$('.echarts_alarm').width(echarts_alarm_width*widthV);
$('.echarts_line').height(echarts_line_height*heightV);
$('.echarts_line').width(echarts_line_width*widthV);
$('.body-center').height(body_center_height*heightV);
$('.body-center').width(body_center_width*widthV);
$('.body-perimeter').height(body_perimeter_height*heightV);
$('.body-perimeter').width(body_perimeter_width*widthV);
document.getElementById('body-center-1').width=body_center_width*widthV;
document.getElementById('body-center-1').height=body_center_height*heightV;
document.getElementById('body-center-2').width=body_center_width*widthV;
document.getElementById('body-center-2').height=body_center_height*heightV;
document.getElementById('body-perimeter').width=body_perimeter_width*widthV;
document.getElementById('body-perimeter').height=body_perimeter_height*heightV;
var data = {
value: 100,
}
doBar("echarts_score",data);
exitIcon(1);
showRegion(null);
showSpecialType(null);
showPerimeter(null,1);
var text=[
{name:"反硝化深床滤池",elementLeft:53,elementTop:168,direction:0,width:'',height:'',line_height:''},
{name:"高效沉淀池",elementLeft:96,elementTop:215,direction:0,width:'',height:'',line_height:''},
{name:"二沉池",elementLeft:110,elementTop:313,direction:0,width:'',height:'',line_height:''},
{name:"反硝化深床滤池",elementLeft:336,elementTop:166,direction:0,width:'',height:'',line_height:''},
{name:"高效沉淀池",elementLeft:376,elementTop:215,direction:0,width:'',height:'',line_height:''},
{name:"二沉池",elementLeft:392,elementTop:313,direction:0,width:'',height:'',line_height:''},
{name:"锅炉房",elementLeft:411,elementTop:89,direction:0,width:'',height:'',line_height:''},
{name:"食堂",elementLeft:544,elementTop:70,direction:0,width:'',height:'',line_height:''},
{name:"综合楼",elementLeft:611,elementTop:56,direction:0,width:'',height:'',line_height:''},
{name:"紫外消毒池",elementLeft:491,elementTop:145,direction:1,width:14,height:82,line_height:16},
{name:"加药间",elementLeft:516,elementTop:145,direction:1,width:14,height:50,line_height:16},
{name:"出水提升泵房",elementLeft:586,elementTop:144,direction:0,width:'',height:'',line_height:''},
{name:"污泥脱水机房",elementLeft:551,elementTop:260,direction:0,width:'',height:'',line_height:''},
{name:"生反池",elementLeft:110,elementTop:542,direction:0,width:'',height:'',line_height:''},
{name:"生反池",elementLeft:391,elementTop:543,direction:0,width:'',height:'',line_height:''},
{name:"35kv高配间",elementLeft:555,elementTop:429,direction:0,width:'',height:'',line_height:''},
{name:"鼓风机房",elementLeft:553,elementTop:521,direction:0,width:'',height:'',line_height:''},
{name:"细格栅及曝气沉砂池",elementLeft:300,elementTop:746,direction:0,width:'',height:'',line_height:''},
{name:"粗格栅及进水泵房",elementLeft:452,elementTop:739,direction:0,width:56,height:35,line_height:''},
{name:"门卫",elementLeft:544,elementTop:826,direction:0,width:'',height:'',line_height:''}
]
var arr2 = {
rows: [{id:'1',name:"反硝化深床滤池,高效沉淀池,二沉池",elementLeft:560,elementTop:210,postion:'0,135;1,373;259,373;260,137;',managelevel:1},
{id:'2',name:"生反池",elementLeft:560,elementTop:370,postion:'0,392;2,877;514,877;515,795;260,796;259,392;',managelevel:1},
{id:'3',name:"门卫",elementLeft:560,elementTop:610,postion:'540,817;533,837;548,843;554,821;',managelevel:3},
{id:'4',name:"粗格栅及进水泵房",elementLeft:560,elementTop:610,postion:'443,710;443,794;515,794;515,709;',managelevel:1},
{id:'5',name:"细格栅及曝气沉砂池",elementLeft:560,elementTop:610,postion:'281,709;280,794;443,794;443,710;',managelevel:2},
{id:'6',name:"生反池",elementLeft:560,elementTop:610,postion:'281,392;281,709;539,709;539,393;',managelevel:1},
{id:'7',name:"深度处理区",elementLeft:560,elementTop:610,postion:'281,136;281,372;539,373;540,236;482,236;482,138;',managelevel:1},
{id:'8',name:"紫外消毒池",elementLeft:560,elementTop:610,postion:'482,138;482,236;540,236;540,166;636,165;637,136;',managelevel:2},
{id:'9',name:"污泥脱水机房",elementLeft:560,elementTop:610,postion:'540,166;540,373;637,373;636,165;',managelevel:1},
{id:'10',name:"鼓风机房",elementLeft:560,elementTop:610,postion:'539,393;539,568;581,568;580,393;',managelevel:2},
{id:'11',name:"锅炉房",elementLeft:560,elementTop:610,postion:'409,75;408,110;451,111;452,75;',managelevel:1},
{id:'12',name:"食堂",elementLeft:560,elementTop:610,postion:'533,56;532,96;584,94;585,56;',managelevel:3},
{id:'13',name:"综合楼",elementLeft:560,elementTop:610,postion:'596,43;597,82;667,81;668,44;',managelevel:2}
],
}
showManage('body-center-2',arr2,text);
var arr1 = {
rows: [{id:'1',name:"深度处理区",elementLeft:560,elementTop:210,postion:'0,135;1,373;259,373;259,203;203,201;203,136;',managelevel:1},
{id:'2',name:"生反池",elementLeft:560,elementTop:370,postion:'0,392;0,794;259,793;259,392;',managelevel:1},
{id:'3',name:"门卫",elementLeft:560,elementTop:610,postion:'540,817;533,837;548,843;554,821;',managelevel:3},
{id:'4',name:"粗格栅及进水泵房",elementLeft:560,elementTop:610,postion:'443,710;443,794;515,794;515,709;',managelevel:1},
{id:'5',name:"细格栅及曝气沉砂池",elementLeft:560,elementTop:610,postion:'281,709;280,794;443,794;443,710;',managelevel:2},
{id:'6',name:"生反池",elementLeft:560,elementTop:610,postion:'281,392;281,709;539,709;539,393;',managelevel:1},
{id:'7',name:"深度处理区",elementLeft:560,elementTop:610,postion:'281,136;281,372;539,373;539,235;482,234;482,138;',managelevel:1},
{id:'8',name:"紫外消毒池",elementLeft:560,elementTop:610,postion:'482,138;482,236;540,236;540,166;636,165;637,136;',managelevel:2},
{id:'9',name:"污泥脱水机房",elementLeft:560,elementTop:610,postion:'540,166;540,373;637,373;636,165;',managelevel:1},
{id:'10',name:"鼓风机房",elementLeft:560,elementTop:610,postion:'539,393;539,568;581,568;580,393;',managelevel:2},
{id:'11',name:"锅炉房",elementLeft:560,elementTop:610,postion:'409,75;408,110;451,111;452,75;',managelevel:1},
{id:'12',name:"食堂",elementLeft:560,elementTop:610,postion:'533,56;532,96;584,94;585,56;',managelevel:3},
{id:'13',name:"综合楼",elementLeft:560,elementTop:610,postion:'596,43;597,82;667,81;668,44;',managelevel:2}
],
}
showManage('body-center-1',arr1,text);
$('.alarm-bar').height(alarm_bar_height*heightV);
let legenddata = ['评分'];
let seriesdata = [
{
name: legenddata[0],
type: 'line',
smooth: true,
symbol: 'none',
data: [['2023-08-01 00:00:00',0],['2023-08-02 00:00:00',0],['2023-08-03 00:00:00',0],['2023-08-04 00:00:00',0],['2023-08-05 00:00:00',0]
,['2023-08-06 00:00:00',0],['2023-08-07 00:00:00',0]]
},
]
echartsLine('echarts_line',seriesdata,legenddata,'最近7天评分趋势',['#00E917']);
echarts_data();
echarts_data2();
//一小时一次
setInterval("echarts_data()",3600000);
//3秒级
setInterval("echarts_data2()",3000);
}
function echarts_data(){
var beginTimeStore = moment().subtract(7, 'days').format('YYYY-MM-DD HH:mm');
var endTimeStore = moment().subtract(0, 'days').format('YYYY-MM-DD HH:mm');
$.post(ext.contextPath + '/data/getDetailData.do', {mpcode:"HQWS_Secure_Score",sdt:beginTimeStore,edt:endTimeStore} , function(result) {
let legenddata = ['评分'];
let seriesdata = [
{
name: legenddata[0],
type: 'line',
smooth: true,
symbol: 'none',
data: result[0].data
},
]
echartsLine('echarts_line',seriesdata,legenddata,'最近7天评分趋势',['#00E917']);
},'json');
}
function echarts_data2(){
$.post(ext.contextPath + '/hqconfig/hqAlarmRecord/getSecureScore.do' , function(result) {
var data = result.data;
var value = {
value: data.toFixed(0),
}
doBar("echarts_score",value);
},'json');
}
function exitIcon(area){
$('.exit-icon').remove();
$.post(ext.contextPath + '/work/channelPortConfig/getModalList.do', {
area: area
}, function(data) {
var arr = data.rows;
/*var arr = {
rows: [{id:'1',elementLeft:920,elementTop:185},
{id:'2',elementLeft:1160,elementTop:185},
{id:'3',elementLeft:1190,elementTop:185}],
}*/
if(arr != null && arr != undefined && arr != '') {
var ChannelPort1 = 0;
var ChannelPort2 = 0;
for (var i = 0; i < arr.length; i++) {
var element = arr[i];
var type = element.type;
var heightAlone = 1;
var widthAlone = 1;
if(type==1){
ChannelPort1++;
}
if(type==2){
ChannelPort2++;
}
if (element.remarks != null && element.remarks != undefined && element.remarks != '') {
var remarks = element.remarks.split(",");
var elementLeft = remarks[0]-28;
var elementTop = remarks[1]-15;
if (element.windowsHeight != null && element.windowsHeight != undefined && element.windowsHeight != '') {
heightAlone = height / element.windowsHeight;
} else {
heightAlone = heightV;
}
if (element.windowsWidth != null && element.windowsWidth != undefined && element.windowsWidth != '') {
widthAlone = width / element.windowsWidth;
} else {
widthAlone = widthV;
}
var elements = '<div id="' + element.id + '" class="center-icon exit-icon exit-icon-'+type+' cursor-pointer" onclick="showExit(\'' + element.id + '\')" ' +
'style=" left: ' + (elementLeft * widthAlone) + 'px;top: ' + (elementTop * heightAlone) + 'px;"></div>';
$('.factory-area-' + area).append(elements);
}
}
$('#ChannelPort1').html(ChannelPort1+"个");
$('#ChannelPort2').html(ChannelPort2+"个");
}
},'json');
}
function regionAlarm(id,name,url){
parent.addTab(id,name,url)
}
var userPositionsNum = {};
function showRegion(alarms){
$('.center-alarm-region').remove();
$('.center-alarm-line').remove();
var arr = {
rows: [{id:'twam0005',name:"深度处理区",elementLeft:510,elementTop:210,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=0581671e06754de0a0c97973aa40aa57&unitId=021HQWS'},
{id:'twam0004',name:"二沉池",elementLeft:510,elementTop:370,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=ddfbc43cfb0f4c32a474861683d5b9ca&unitId=021HQWS'},
{id:'twam0007',name:"锅炉房",elementLeft:910,elementTop:130,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:3,width: 140,
url:'process/dataVisualFrame/view.do?frameId=73619741d93549b0950cd95b1c73b4d9&unitId=021HQWS'},
{id:'scqtqy0009',name:"西侧生物反应池",elementLeft:510,elementTop:610,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=c9261231ea884f0ab41e08e7ef826bbc&unitId=021HQWS'},
{id:'xcqtqy00005',name:"东侧生物反应池",elementLeft:1240,elementTop:610,alarmvalue:0,lineType:1,lineWidth:45,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=c6f1418b124340e78fce7d762a6c371f&unitId=021HQWS'},
{id:'twam0002',name:"展厅",elementLeft:510,elementTop:792,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=a29d4ee5b9f94edfae17db0578de9b40&unitId=021HQWS'},
{id:'twam0009',name:"调蓄池",elementLeft:510,elementTop:792,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:2,width: 140,
url:'process/dataVisualFrame/view.do?frameId=f360feabe015405cabba945408bec7d5&unitId=021HQWS'},
{id:'153b16eea70c4a2bbfae83fd9eb678e0',name:"出水区及加药区",elementLeft:1333,elementTop:190,alarmvalue:0,lineType:1,lineWidth:44,uservalue:0,layer:3,width: 190,
url:'process/dataVisualFrame/view.do?frameId=d03679d7ac74492cb48fbbe8d75aa7f5&unitId=021HQWS'},
{id:'6a20e6a94815492ca0ad530bd0c5ade0',name:"污泥处理区上层",elementLeft:1350,elementTop:269,alarmvalue:0,lineType:1,lineWidth:50,uservalue:0,layer:1,width: 190,
url:'process/dataVisualFrame/view.do?frameId=33b28f4e789940cc860ece34c5cfacad&unitId=021HQWS'},
{id:'2a5758e042bf49ee870e423f47aafac1',name:"污泥处理区下层",elementLeft:1350,elementTop:269,alarmvalue:0,lineType:1,lineWidth:50,uservalue:0,layer:2,width: 190,
url:'process/dataVisualFrame/view.do?frameId=addc3b27ec9c482f80dab977f77dd65e&unitId=021HQWS'},
{id:'twam0001',name:"鼓风机房和高压配电区",elementLeft:1292,elementTop:535,alarmvalue:0,lineType:1,lineWidth:45,uservalue:0,layer:1,width: 220,
url:'process/dataVisualFrame/view.do?frameId=439d9745121d4301b4361b39f3d98ee7&unitId=021HQWS'},
{id:'43c12e7b35634f3aaa34038bccdb95e2',name:"预处理区上层",elementLeft:1310,elementTop:782,alarmvalue:0,lineType:1,lineWidth:129,uservalue:0,layer:1,width: 190,
url:'process/dataVisualFrame/view.do?frameId=d5659b0c4ccc410695d5dbe8d6eac9d7&unitId=021HQWS'},
{id:'f242e04ebdb54247afb9c2355ae2da99',name:"预处理区下层",elementLeft:1310,elementTop:782,alarmvalue:0,lineType:1,lineWidth:129,uservalue:0,layer:2,width: 190,
url:'process/dataVisualFrame/view.do?frameId=c3e651f04a8842ce9c6b65b5f819352e&unitId=021HQWS'},
{id:'twam0006',name:"上层廊道",elementLeft:510,elementTop:420,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:1,width: 140,
url:'process/dataVisualFrame/view.do?frameId=c6a11cd6a1cc415f99beaa753014105a&unitId=021HQWS'},
{id:'twam0008',name:"下层廊道",elementLeft:510,elementTop:420,alarmvalue:0,lineType:0,lineWidth:36,uservalue:0,layer:2,width: 140,
url:'process/dataVisualFrame/view.do?frameId=2546797d09fe4ef781ab14bc795abbd2&unitId=021HQWS'}
],
}
for(var i=0;i<arr.rows.length;i++){
var element= arr.rows[i];
var id = element.id;
if(alarms!=null && alarms.length>0){
$.each(alarms,function(key,value){
if(id==value.id){
element.alarmvalue = value.num;
return false;
}
})
}
if(userPositionsNum!=null && userPositionsNum.length>0){
$.each(userPositionsNum,function(key,value){
if(id==value.areaid){
element.uservalue = value.fid;
return false;
}
})
}
var heightAlone = 0;
var widthAlone = 0;
if(element.windowsHeight != null && element.windowsHeight != undefined && element.windowsHeight != ''){
heightAlone = height/element.windowsHeight;
}else{
heightAlone = heightV;
}
if(element.windowsWidth != null && element.windowsWidth != undefined && element.windowsWidth != ''){
widthAlone = width/element.windowsWidth;
}else{
widthAlone = widthV;
}
var backgroundColor= 'background-color-blue';
var lineColor = 'line-lightblue';
if(element.alarmvalue>0){
backgroundColor= 'background-color-red';
lineColor = 'line-red';
}
var line=element.width;
if(element.lineType==1){
line=0-element.lineWidth;
}
var value = '';
if(element.alarmvalue!=null && element.alarmvalue>0){
value += ' <i class="glyphicon glyphicon-exclamation-sign"></i>'+element.alarmvalue;
}
value += ' <span id="'+element.id+'_user">';
if(element.uservalue!=null && element.uservalue>0){
value += '<i class="fa fa-user"></i> '+element.uservalue;
}
value += '</span>';
var layer = element.layer;
var layerClass = "";
if(layer!=3){
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
if(checkValue==layer){
layerClass = " factory-area factory-area-text factory-area-text-"+layer+"";
}else{
layerClass = " factory-area factory-area-text factory-area-text-"+layer+" factory-area-text-hide";
}
}
var elements = '<div id="'+element.id+'" class="center-icon center-alarm-region cursor-pointer '+backgroundColor+layerClass+'" onclick="regionAlarm(\''+element.id+'\',\''+element.name+'\',\''+element.url+'\')" ' +
'style=" left: '+(element.elementLeft*widthAlone)+'px;top: '+(element.elementTop*heightAlone)+'px;width: '+element.width+'px;" >'+element.name+value+'</div>' +
'<hr class="center-icon center-alarm-line '+lineColor+layerClass+'" style="width:'+element.lineWidth+'px; left: '+(element.elementLeft*widthAlone+line)+'px;top: '+(element.elementTop*heightAlone+15)+'px;">';
$('.body-wrapper').append(elements);
}
}
function showSpecialType(alarms){
var arr = {
rows: [{id:'60d0a184e782497fb84264a603f7bb8a',name:"1#起重设备",elementLeft:1030,elementTop:790,value:0,time:'下次年检:-',ileft:-70,itop:0,layer:1},
{id:'a976d8a12df348f0b84990e92c3767ca',name:"2#起重设备",elementLeft:1280,elementTop:395,value:0,time:'下次年检:-',ileft:0,itop:0,layer:1},
{id:'e4e368e5c953412986943192f6e6a63d',name:"3#起重设备",elementLeft:1230,elementTop:290,value:0,time:'下次年检:-',ileft:-70,itop:0,layer:1},
{id:'0571bfdeb5e54b7182c9b610b2bc410b',name:"1#压力容器",elementLeft:1221,elementTop:394,value:0,time:'下次年检:-',ileft:-150,itop:0,layer:1},
{id:'1fd6126cba11468fa625636e38ed07e9',name:"2#压力容器",elementLeft:1221,elementTop:394,value:0,time:'下次年检:-',ileft:-150,itop:45,layer:1},
{id:'1ed5bba797c643edb8c9135990115dfa',name:"3#压力容器",elementLeft:1221,elementTop:394,value:0,time:'下次年检:-',ileft:-150,itop:90,layer:1},
{id:'bca713f400534a5294217adaa664901b',name:"1-3#锅炉",elementLeft:1108,elementTop:130,value:0,time:'下次年检:-',ileft:-70,itop:0,layer:3},
{id:'669ecec9ebe748179cae05bdf6618890',name:"电梯",elementLeft:1226,elementTop:110,value:0,time:'下次年检:-',ileft:0,itop:0,layer:3}
]
}
var alarm_tzsb = 0;
for(var i=0;i<arr.rows.length;i++){
var element= arr.rows[i];
var id = element.id;
var value = element.value;
if(alarms!=null && alarms.length>0){
$.each(alarms,function(key,value){
if(id==value.id){
value = value.status;
return false;
}
})
}
var heightAlone = 0;
var widthAlone = 0;
if(element.windowsHeight != null && element.windowsHeight != undefined && element.windowsHeight != ''){
heightAlone = height/element.windowsHeight;
}else{
heightAlone = heightV;
}
if(element.windowsWidth != null && element.windowsWidth != undefined && element.windowsWidth != ''){
widthAlone = width/element.windowsWidth;
}else{
widthAlone = widthV;
}
var backgroundColor= 'background-color-yellow';
var iColor = 'font-color-lightorange';
if(value==1){
backgroundColor= 'background-color-red';
iColor = 'font-color-red';
alarm_tzsb ++;
}
var layer = element.layer;
var layerClass = "";
if(layer!=3){
var checkValue = $('input:radio[name="optionsRadios"]:checked').val();
if(checkValue==layer){
layerClass = " factory-area factory-area-text factory-area-text-"+layer+"";
}else{
layerClass = " factory-area factory-area-text factory-area-text-"+layer+" factory-area-text-hide";
}
}
var hideSt = "";
if(tzsb_state){
hideSt = "display: none;";
}
var time = element.time;
if($('#'+id+'_NextTime').length>0){
time = $('#'+id+'_NextTime').text();
}
var ileft=element.ileft;
var itop=element.itop;
var elements = '<div id="'+element.id+'" class="center-icon special-type special-type-text cursor-pointer '+backgroundColor+layerClass+'" onclick="regionAlarm(\''+element.id+'\')" ' +
'style=" left: '+(element.elementLeft*widthAlone+ileft)+'px;top: '+(element.elementTop*heightAlone-45+itop)+'px;'+hideSt+'"><div>'+element.name+'</div><div id="'+element.id+'_NextTime">'+time+'</div></div>' +
'<img src="<%=request.getContextPath()%>/IMG/hqaq/special.png" width="20px" height="30px" class="center-icon special-type '+layerClass+'" style="left: '+(element.elementLeft*widthAlone)+'px;top: '+(element.elementTop*heightAlone)+'px;'+hideSt+'"/>';
/*'<i class="center-icon special-type font-size-20 fa fa-fw fa-map-marker '+iColor+'" style="left: '+(element.elementLeft*widthAlone)+'px;top: '+(element.elementTop*heightAlone)+'px;">';*/
$('.body-wrapper').append(elements);
getNextTime(element.id);
}
$('#alarm_tzsb').html(alarm_tzsb);
}
function getNextTime(id){
$.ajax({
type: 'GET',
url: ext.contextPath + '/timeEfficiency/patrolPlan/getNextTime.do',
dataType: 'json',
data: {
id: id, // 特种设备 或 任务点id
type: 0, // 类型: 0为特种设备1为安全用具或消防器具
},
error: function () {
console.log(id+'获取下次年检时间失败');
},
success: function (data) {
var code = data.code;
if(code>0){
var result = data.result;
$('#'+id+'_NextTime').html('下次年检:'+result);
}
}
});
}
function showManage(id,arr,text){
canvas = document.getElementById(id);
//drawBeauty();
let manage = document.getElementById(id);
manage.width = manage.width;
let gd = manage.getContext('2d');
for(var a=0;a<arr.rows.length;a++){
var element= arr.rows[a];
let managelevel= element.managelevel;
let postion = element.postion;
var pos = postion.split(';');
var p = pos[0].split(',');
if(managelevel==0){
let color = 'rgba(255,0,0,0.3)';
gd.beginPath();
gd.strokeStyle='rgb(255,0,0)';
gd.moveTo(p[0]*widthV,p[1]*heightV);
for(var i = 1;i <pos.length;i++){
var px = pos[i].split(',');
gd.lineTo(px[0]*widthV,px[1]*heightV);
}
gd.lineTo(p[0]*widthV,p[1]*heightV);
gd.stroke();
gd.fillStyle = color;
gd.fill();
}else if(managelevel==1){
let color = 'rgba(255,145,0,0.3)';
gd.beginPath();
gd.strokeStyle='rgb(255,145,0)';
gd.moveTo(p[0]*widthV,p[1]*heightV);
for(var i = 1;i <pos.length;i++){
var px = pos[i].split(',');
gd.lineTo(px[0]*widthV,px[1]*heightV);
}
gd.lineTo(p[0]*widthV,p[1]*heightV);
gd.stroke();
gd.fillStyle = color;
gd.fill();
}else if(managelevel==2){
let color = 'rgba(255,213,0,0.3)';
gd.beginPath();
gd.strokeStyle='rgb(255,221,0)';
gd.moveTo(p[0]*widthV,p[1]*heightV);
for(var i = 1;i <pos.length;i++){
var px = pos[i].split(',');
gd.lineTo(px[0]*widthV,px[1]*heightV);
}
gd.lineTo(p[0]*widthV,p[1]*heightV);
gd.stroke();
gd.fillStyle = color;
gd.fill();
}else if(managelevel==3){
let color = 'rgba(0,102,255,0.30)';
gd.beginPath();
gd.strokeStyle='rgb(20,93,255)';
gd.moveTo(p[0]*widthV,p[1]*heightV);
for(var i = 1;i <pos.length;i++){
var px = pos[i].split(',');
gd.lineTo(px[0]*widthV,px[1]*heightV);
}
gd.lineTo(p[0]*widthV,p[1]*heightV);
gd.stroke();
gd.fillStyle = color;
gd.fill();
}
}
for(var i=0;i<text.length;i++){
let widthStr ='';
let heightStr ='';
let lineheightStr ='';
if(text[i].width!=''){
widthStr = 'width:'+text[i].width+'px;';
}
if(text[i].height!=''){
heightStr = 'height:'+text[i].height+'px;';
}
if(text[i].line_height!=''){
lineheightStr = 'line-height:'+text[i].line_height+'px;';
}
const textStr = '<span class="body-center-text font-color-white" ' +
'style="left:'+(text[i].elementLeft*widthV)+'px;top:'+(text[i].elementTop*heightV)+'px;'+widthStr+heightStr+lineheightStr+'">'+text[i].name+'</span>';
$('#'+id+'-text').append(textStr);
}
}
var perimeterBreaKOff = false;
function showPerimeter(alarms,type){
/*canvas = document.getElementById("body-perimeter");
drawBeauty();*/
var arr = {
rows: [{id:'twamdd0014',name:"14",postion:'38.609375,175;38.609375,341',round:'4.609375,241',perimeterlevel:0},
{id:'twamdd0015',name:"15",postion:'38.609375,341;39.609375,518',round:'5.609375,441',perimeterlevel:0},
{id:'twamdd0016',name:"16",postion:'39.609375,518;39.609375,658',round:'5.609375,576',perimeterlevel:0},
{id:'twamdd0017',name:"17",postion:'39.609375,658;37.609375,822',round:'4.609375,744',perimeterlevel:0},
{id:'twamdd0018',name:"18",postion:'37.609375,822;32.609375,961',round:'0,901',perimeterlevel:0},
{id:'twamdd0019',name:"19",postion:'32.609375,961;153.609375,986',round:'67.609375,981',perimeterlevel:0},
{id:'twamdd0020',name:"20",postion:'153.609375,986;303.609375,1016',round:'208.609375,1013',perimeterlevel:0},
{id:'twamdd0021',name:"21",postion:'303.609375,1016;426.609375,1042',round:'346.609375,1043',perimeterlevel:0},
{id:'twamdd0022',name:"22",postion:'426.609375,1042;559.609375,1069',round:'471.609375,1018',perimeterlevel:0},
{id:'twamdd0023',name:"23",postion:'559.609375,1069;593.609375,956',round:'593.609375,1001',perimeterlevel:0},
{id:'twamdd0024',name:"24",postion:'593.609375,956;625.609375,848',round:'622.609375,909',perimeterlevel:0},
{id:'twamdd0001',name:"1",postion:'625.609375,848;660.609375,728',round:'659.609375,785',perimeterlevel:0},
{id:'twamdd0002',name:"2",postion:'660.609375,728;689.609375,625',round:'694.609375,673',perimeterlevel:0},
{id:'twamdd0003',name:"3",postion:'689.609375,625;722.609375,520',round:'724.609375,583',perimeterlevel:0},
{id:'twamdd0004',name:"4",postion:'722.609375,520;755.609375,408',round:'759.609375,453',perimeterlevel:0},
{id:'twamdd0005',name:"5",postion:'755.609375,408;798.609375,262',round:'784.609375,361',perimeterlevel:0},
{id:'twamdd0006',name:"6",postion:'798.609375,262;800.609375,191',round:'817.609375,232',perimeterlevel:0},
{id:'twamdd0007',name:"7",postion:'800.609375,191;801.609375,101',round:'820.609375,142',perimeterlevel:0},
{id:'twamdd0008',name:"8",postion:'801.609375,101;804.609375,9',round:'821.609375,40',perimeterlevel:0},
{id:'twamdd0009',name:"9",postion:'804.609375,9;626.609375,55',round:'671.609375,7',perimeterlevel:0},
{id:'twamdd0010',name:"10",postion:'626.609375,55;486.609375,90',round:'532.609375,41',perimeterlevel:0},
{id:'twamdd0011',name:"11",postion:'486.609375,90;352.609375,126',round:'394.609375,75',perimeterlevel:0},
{id:'twamdd0012',name:"12",postion:'352.609375,126;177.609375,158',round:'239.609375,110',perimeterlevel:0},
{id:'twamdd0013',name:"13",postion:'177.609375,158;38.609375,175',round:'91.609375,132',perimeterlevel:0}
],
}
var alarm_zjwl = 0;
var alarmsLenght = false;
if(type==2){
if( alarms!=null && alarms.length>0){
$('#body-perimeter-round').empty();
alarmsLenght = true;
}
}else{
$('#body-perimeter-round').empty();
alarmsLenght = true;
}
if(alarmsLenght){
let perimeter = document.getElementById("body-perimeter");
perimeter.width = perimeter.width;
let gd = perimeter.getContext('2d');
for(var a=0;a<arr.rows.length;a++){
let element = arr.rows[a];
let perimeterlevel= element.perimeterlevel;
let id= element.id;
if(alarms!=null && alarms.length>0){
$.each(alarms,function(key,value){
if(type==2){
perimeterlevel = value.status;
if(perimeterlevel==1){
perimeterBreaKOff = true;
}else{
perimeterBreaKOff = false;
}
}else{
if(id==value.id){
perimeterlevel = value.status;
return false;
}
}
})
}
let postion = element.postion;
let round = element.round;
const round_postion = round.split(',');
let round_color = 'perimeter-round-blue';
const pos = postion.split(';');
const p1 = pos[0].split(',');
const p2 = pos[1].split(',');
gd.beginPath();
// 线宽为5
gd.lineWidth = 5;
if(perimeterBreaKOff){
gd.strokeStyle='rgb(193,193,193)';
round_color = 'perimeter-round-grey';
}else{
if(perimeterlevel==0){
// 线的样式颜色
gd.strokeStyle='rgb(0,255,247)';
round_color = 'perimeter-round-blue';
}else if(perimeterlevel==1){
if(type==2){
gd.strokeStyle='rgb(193,193,193)';
round_color = 'perimeter-round-grey';
}else{
gd.strokeStyle='rgb(255,0,0)';
round_color = 'perimeter-round-red';
}
alarm_zjwl ++;
}
}
gd.moveTo(p1[0]*widthV,p1[1]*heightV);
gd.lineTo(p2[0]*widthV,p2[1]*heightV);
gd.stroke();
gd.fill();
const roundStr = '<div class="perimeter-round '+round_color+'" style="left:'+round_postion[0]*widthV+'px;top:'+round_postion[1]*heightV+'px;">'+element.name+'</div>';
$('#body-perimeter-round').append(roundStr);
}
if(alarms!=null && alarms.length>0){
$.each(alarms,function(key,value){
if(type==2){
alarm_zjwl = value.status;
}
})
}
$('#alarm_zjwl').html(alarm_zjwl);
}
}
function showExit(id){
$.post(ext.contextPath + '/work/channelPortConfig/doModal.do', {
id: id
}, function(data) {
$("#subDiv").html(data);
openModal('imgModal');
});
}
function doBar(id,data){
let color = "#00FF55";
if(90<=data.value && data.value<=100){
color = "#00FF55";
}
if(60<=data.value && data.value<90){
color = "#FFEE00";
}
if(data.value<60){
color = "#FF0000";
}
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行更新。
lifeChart.setOption({
title: [
{
text: data.value,
subtext: '分',
textStyle: {
color: color,
},
subtextStyle: {
color: color,
},
},
],
series: {
data: [data.value],
itemStyle: {
normal: {
color: color
},
},
}
})
}else{
var option = {
title: [
{
text: data.value,
subtext: '分',
left: '45%',
top: '30%',
textAlign: 'center',
itemGap: 2,
textStyle: {
fontSize: '45',
fontWeight: '400',
color: color,
textAlign: 'center',
textBorderColor: 'rgba(0, 0, 0, 0)',
textShadowColor: '#000',
textShadowBlur: '0',
textShadowOffsetX: 0,
textShadowOffsetY: 1,
},
subtextStyle: {
fontSize: '13',
fontWeight: '400',
color: color,
textAlign: 'center',
textBorderColor: 'rgba(0, 0, 0, 0)',
textShadowColor: '#000',
textShadowBlur: '0',
textShadowOffsetX: 0,
textShadowOffsetY: 1,
},
},
],
polar: {
radius: ['80%', '95%'],
center: ['50%', '50%'],
},
angleAxis: {
max: 100,
clockwise: false,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
},
radiusAxis: {
type: 'category',
show: true,
axisLabel: {
show: false,
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
},
series: {
name: '',
type: 'bar',
roundCap: true,
z: 2,
showBackground: true,
data: [data.value],
coordinateSystem: 'polar',
itemStyle: {
normal: {
color: color
},
},
}
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option, true);
}
}
function doBar4Alarm(id,data) {
if ( $("#"+id).length > 0 ){
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行更新。
lifeChart.setOption({
series: [
{
label: {
show: true ,
color: '#fff' ,
fontSize: 16 ,
fontWeight: 700 ,
position: 'top' ,
},
/*itemStyle: {
borderRadius: 5 ,
},*/
barWidth: 20,
data: [
{
value: data[0],
itemStyle: {
color: '#FF0000'
}
},
{
value: data[1],
itemStyle: {
color: '#FF8000'
}
},
{
value: data[2],
itemStyle: {
color: '#FFE600'
}
},
{
value: data[3],
itemStyle: {
color: '#00DCFF'
}
},
],
type: 'bar'
}
]
})
}else{
var option = {
grid: {
left: 0,
right: 0,
bottom: 30,
top: 30,
},
xAxis: {
type: 'category',
data: ['A级', 'B级', 'C级', 'D级'],
axisLine: {
show: false ,
},
axisTick: {
show: false ,
},
splitLine: {
show: false ,
},
axisLabel: {
color: '#fff',
fontSize: 14 ,
}
},
yAxis: {
show: false ,
type: 'value'
},
series: [
{
label: {
show: true ,
color: '#fff' ,
fontSize: 16 ,
fontWeight: 700 ,
position: 'top' ,
},
/*itemStyle: {
borderRadius: 5 ,
},*/
barWidth: 20,
data: [
{
value: data[0],
itemStyle: {
color: '#FF0000'
}
},
{
value: data[1],
itemStyle: {
color: '#FF8000'
}
},
{
value: data[2],
itemStyle: {
color: '#FFE600'
}
},
{
value: data[3],
itemStyle: {
color: '#00DCFF'
}
},
],
type: 'bar'
}
]
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option, true);
}
}
};
function doPie(id,data) {
if ( $("#"+id).length > 0 ){
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行更新。
lifeChart.setOption({
series: {
data: data,
}
})
}else{
var option = {
color: ['#00B1FF','#00FF55','#FFCC00'],
tooltip: {
trigger: 'item'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '90%',
data: data,
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option, true);
}
}
};
function echartsLine(id,data,legenddata,text,color) {
if ( $("#"+id).length > 0 ) {
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行销毁。
lifeChart.dispose();
}
var option = {
color: color,
title: {
text: text,
textStyle: {
color: '#fff'
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
top: '40',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
axisLabel: {
interval: 23 ,
formatter: function (value, index) {
return value.substr(8,2);
}
},
axisLine: {
lineStyle: {
color: '#A0A0A0'
}
},
axisTick: {
alignWithLabel: true
}
},
{
type: 'category',
axisLine: {
onZero: false,
lineStyle: {
color: '#A0A0A0'
}
},
axisTick: {
alignWithLabel: true
}
}
],
yAxis: [
{
type: 'value',
axisLine: {
show: true,
lineStyle: {
color: '#A0A0A0'
}
},
splitLine: {
show: true,
type: 'dashed',
lineStyle: {
color: '#A0A0A0'
}
}
},
{
type: 'value',
axisLine: {
show: true,
lineStyle: {
color: '#A0A0A0'
}
},
}
],
series: data
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option, true);
}
}
var lnglats = "";
function windowToCanvas(e) {
var x = e.x || e.clientX,
y = e.y || e.clientY,
bbox = canvas.getBoundingClientRect();
return { x: x - bbox.left,
y: y - bbox.top
};
}
function drawBeauty(){
//点击获取坐标
canvas.onmousedown = function (e) {
var loc = windowToCanvas(e);
e.preventDefault(); // prevent cursor change
var lnglat = new Array;
lnglat[0]=loc.x;
lnglat[1]=loc.y;
lnglats+=loc.x+','+loc.y+';';
console.log(lnglats);
};
}
var websocket = null;
var restartDialog;
//判断当前浏览器是否支持WebSocket
if ('WebSocket' in window) {
websocket = new ReconnectingWebSocket(ext.basePath.replace("http", "ws") + "/PositionsNumWebSocket");
} else {
alert('当前浏览器 Not support websocket')
}
//连接发生错误的回调方法
websocket.onerror = function () {
};
//连接成功建立的回调方法
websocket.onopen = function () {
console.info('获取定位人员数量websocker开启');
}
//接收到消息的回调方法
websocket.onmessage = function (event) {
var result= JSON.parse(event.data);
$(".lower_level_area_insider").html(result.minusOne_insider);
$(".lower_level_area_visitor").html(result.minusOne_visitor);
$(".lower_level_area_contractor").html(result.minusOne_contractor);
$(".upper_level_area_insider").html(result.one_insider);
$(".upper_level_area_visitor").html(result.one_visitor);
$(".upper_level_area_contractor").html(result.one_contractor);
$(".user_num_all").html(result.minusOne_insider+result.minusOne_visitor+result.minusOne_contractor+result.one_insider+result.one_visitor+result.one_contractor);
userPositionsNum = result.countList;
}
//连接关闭的回调方法
websocket.onclose = function () {
console.info('获取定位人员数量websocker关闭');
closeWebSocket();
}
//监听窗口关闭事件当窗口关闭时主动去关闭websocket连接防止连接还没断开就关闭窗口server端会抛异常。
window.onbeforeunload = function () {
closeWebSocket();
}
//关闭WebSocket连接
function closeWebSocket() {
websocket.close();
}
</script>
</head>
<body id="body">
<div class="wrapper">
<div class="content-wrapper content-wrapper-bg-darkblue ">
<div id="subDiv">
</div>
<div class="body-wrapper body-wrapper-1">
<div class="body-data body-left">
<div class="body-title">【 安全评分 】</div>
<div class="body-line"></div>
<div class="body-content body-score">
<div class="row padding-top-10">
<div class="col-sm-6 col-xs-12 ">
<div id="echarts_score" class="echarts_score" style="margin: auto;"></div>
</div>
<div class="col-sm-6 col-xs-12 ">
<div class="row">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-green"></i> 可控</span>
<span class="col-sm-6 col-xs-12 ">90~100</span>
</div>
<div class="row padding-top-10">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-yellow"></i> 警戒</span>
<span class="col-sm-6 col-xs-12 ">60~89</span>
</div>
<div class="row padding-top-10">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-red"></i> 失控</span>
<span class="col-sm-6 col-xs-12 "><60</span>
</div>
</div>
</div>
<div class="row padding-top-15">
<div class="col-sm-6 col-xs-12 text-center cursor-pointer" onclick="regionAlarm('1f8ffdd596c143ff965a54e214a35094','风险诊断记录','hqconfig/hqAlarmRecord/showList.do?riskStatusForSelect=1')" >
<div class="row">
<span class="col-sm-12 col-xs-12">当前报警</span>
</div>
<div class="row padding-top-15">
<span class="col-sm-12 col-xs-12 font-color-blue font-size-36 alarm_num_all" id="alarm_num_all">0</span>
</div>
</div>
<div class="col-sm-6 col-xs-12 ">
<div class="row cursor-pointer" onclick="regionAlarm('1f8ffdd596c143ff965a54e214a35094','风险诊断记录','hqconfig/hqAlarmRecord/showList.do?riskStatusForSelect=1&risklevelForSelect=A')">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-red"></i> A级</span>
<span class="col-sm-6 col-xs-12 font-color-red alarm_num_a ">0</span>
</div>
<div class="row padding-top-5 cursor-pointer" onclick="regionAlarm('1f8ffdd596c143ff965a54e214a35094','风险诊断记录','hqconfig/hqAlarmRecord/showList.do?riskStatusForSelect=1&risklevelForSelect=B')">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-orange"></i> B级</span>
<span class="col-sm-6 col-xs-12 font-color-orange alarm_num_b ">0</span>
</div>
<div class="row padding-top-5 cursor-pointer" onclick="regionAlarm('1f8ffdd596c143ff965a54e214a35094','风险诊断记录','hqconfig/hqAlarmRecord/showList.do?riskStatusForSelect=1&risklevelForSelect=C')">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-yellow"></i> C级</span>
<span class="col-sm-6 col-xs-12 font-color-yellow alarm_num_c ">0</span>
</div>
<div class="row padding-top-5 cursor-pointer" onclick="regionAlarm('1f8ffdd596c143ff965a54e214a35094','风险诊断记录','hqconfig/hqAlarmRecord/showList.do?riskStatusForSelect=1&risklevelForSelect=D')">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-blue"></i> D级</span>
<span class="col-sm-6 col-xs-12 font-color-blue alarm_num_d ">0</span>
</div>
</div>
</div>
<div class="row padding-top-5">
<div class="col-sm-12 col-xs-12 ">
<div id="echarts_line" class="echarts_line" style="margin: auto;"></div>
</div>
</div>
</div>
<div class="body-title">【 人员情况 】</div>
<div class="body-line"></div>
<div class="body-content body-user">
<div class="row padding-top-20 padding-bottom-20">
<div class="col-sm-3 col-xs-12 text-center">
<div class="row">
<span class="col-sm-12 col-xs-12">人员总数</span>
</div>
<div class="row padding-top-5 cursor-pointer" onclick="regionAlarm('3b228fd52ce540ec80172eb93fc6cd12','区域进入记录','hqconfig/enterRecord/showList.do')">
<span class="col-sm-12 col-xs-12 font-color-lightgreen font-size-36 user_num_all">0</span>
</div>
</div>
<div class="col-sm-9 col-xs-12 text-center">
<div class="row">
<span class="col-sm-3 col-xs-12"></span>
<span class="col-sm-3 col-xs-12 ">内部人员</span>
<span class="col-sm-3 col-xs-12 ">承包商</span>
<span class="col-sm-3 col-xs-12 ">访客</span>
</div>
<div class="row padding-top-5">
<span class="col-sm-3 col-xs-12 ">上层区域</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen upper_level_area_insider ">0</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen upper_level_area_contractor ">0</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen upper_level_area_visitor ">0</span>
</div>
<div class="row padding-top-5">
<span class="col-sm-3 col-xs-12 ">下层区域</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen lower_level_area_insider ">0</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen lower_level_area_contractor ">0</span>
<span class="col-sm-3 col-xs-12 font-color-lightgreen lower_level_area_visitor ">0</span>
</div>
</div>
</div>
<div class="row padding-10 text-center">
<span class="col-sm-4 col-xs-12 ">出入口</span>
<label class="col-sm-2 col-xs-12 " id="ChannelPort2">0个</label>
<span class="col-sm-4 col-xs-12 ">安全出入口</span>
<label class="col-sm-2 col-xs-12 " id="ChannelPort1">0个</label>
<%--<div class="col-sm-4 col-xs-12 "><input id="switch_exit" name="switch" type="checkbox" checked></div>--%>
</div>
<%--<div class="row padding-10 margin-top-1 text-center manage-click">
<span class="col-sm-5 col-xs-12 ">人员定位</span>
<label class="col-sm-3 col-xs-12 "></label>
<div class="col-sm-4 col-xs-12"><i class="fa fa-fw fa-times manage-icon"></i><span class="manage-text">未开启</span></div>
</div>--%>
<div class="row padding-10 margin-top-1 text-center manage-click" data-id="manage">
<span class="col-sm-5 col-xs-12 ">安全管理四色图</span>
<label class="col-sm-3 col-xs-12 "></label>
<div class="col-sm-4 col-xs-12"><i class="fa fa-fw fa-times manage-icon"></i><span class="manage-text">未开启</span></div>
</div>
<div class="row padding-10 margin-top-1 text-center">
<span class="col-sm-5 col-xs-12 ">区域</span>
<div class="col-sm-3 col-xs-12">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios1" value="1" checked="">上层区域
</label>
</div>
<div class="col-sm-3 col-xs-12">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios2" value="2" >下层区域
</label>
</div>
</div>
</div>
</div>
<div class="canvas body-perimeter" id="body-perimeter-round" ></div>
<canvas class="canvas body-perimeter" id="body-perimeter" ></canvas>
<canvas class="canvas body-center body-center-1" id="body-center-1" ></canvas>
<div class="canvas body-center body-center-1" id="body-center-1-text" ></div>
<canvas class="canvas body-center body-center-2" id="body-center-2" ></canvas>
<div class="canvas body-center body-center-2" id="body-center-2-text" ></div>
<div class="body-data body-right">
<div class="body-title">【 安全管理 】</div>
<div class="body-line"></div>
<div class="body-content body-manage">
<table>
<tr>
<td></td>
<td>总数</td>
<td>报警</td>
<td></td>
</tr>
<tr class="table-border-top">
<td colspan="4">巡检点</td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/secure.png" width="20px" height="30px" /> 安全用具</td>
<td>12</td>
<td id="alarm_aqyj">0</td>
<td><%--<input id="switch_aqyj" name="switch_aqyj" type="checkbox" checked>--%></td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/firefighting.png" width="20px" height="30px" /> 消防器具</td>
<td>46</td>
<td id="alarm_xfqj">0</td>
<td><%--<input id="switch_xfqj" name="switch_xfqj" type="checkbox" checked>--%></td>
</tr>
<%--<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/patrol.png" width="20px" height="30px" /> 区域巡检</td>
<td>0</td>
<td>0</td>
<td>&lt;%&ndash;<input id="switch_qyxj" name="switch_qyxj" type="checkbox" checked>&ndash;%&gt;</td>
</tr>--%>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/special.png" width="20px" height="30px" /> 特种设备</td>
<td>10</td>
<td id="alarm_tzsb">0</td>
<td><input id="switch_tzsb" name="switch_tzsb" type="checkbox" checked></td>
</tr>
<tr>
<td colspan="4">物联监视</td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/hygrothermograph.png" width="20px" height="30px" /> 温湿度计</td>
<td>20</td>
<td id="alarm_wsdj">0</td>
<td><%--<input id="switch_wsdj" name="switch_wsdj" type="checkbox" checked>--%></td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/level.png" width="20px" height="30px" /> 液位计</td>
<td>6</td>
<td id="alarm_ywj">0</td>
<td><%--<input id="switch_ywj" name="switch_ywj" type="checkbox" checked>--%></td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/hydrogensulfide.png" width="20px" height="30px" /> 硫化氢</td>
<td>25</td>
<td id="alarm_lhq">0</td>
<td><%--<input id="switch_lhq" name="switch_lhq" type="checkbox" checked>--%></td>
</tr>
<tr>
<td><img src="<%=request.getContextPath()%>/IMG/hqaq/methane.png" width="20px" height="30px" /> 甲烷</td>
<td>6</td>
<td id="alarm_jw">0</td>
<td><%--<input id="switch_lhq" name="switch_lhq" type="checkbox" checked>--%></td>
</tr>
<tr>
<td><i class="fa fa-fw fa-minus font-color-lineblue"></i>周界围栏</td>
<td>24</td>
<td id="alarm_zjwl">0</td>
<td><input id="switch_zjwl" name="switch_zjwl" type="checkbox" checked></td>
</tr>
</table>
</div>
<div class="body-title">【 报警统计 】</div>
<div class="body-line"></div>
<div class="body-content body-count">
<div class="row text-center padding-top-10">
<div class="col-sm-6 col-xs-12">
<span class="col-sm-12 col-xs-12">本月报警总数</span>
<label class="col-sm-12 col-xs-12 font-color-lightblue font-size-36 padding-top-5" id="alarm_all">0</label>
</div>
<div class="col-sm-6 col-xs-12">
<span class="col-sm-12 col-xs-12">报警处理率</span>
<label class="col-sm-12 col-xs-12 font-color-lightblue padding-top-5"><span class="font-size-36" id="alarm_bjcll">100</span>%</label>
</div>
</div>
<div class="row">
<div class="col-sm-12 col-xs-12 alarm-bar" id="alarm-bar" style="height: 120px;">
</div>
</div>
<div class="row padding-top-5">
<div class="col-sm-5 col-xs-12 ">
<div id="echarts_alarm" class="echarts_alarm" style="margin: auto;"></div>
</div>
<div class="col-sm-7 col-xs-12 ">
<div class="row">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-blue"></i> 安全任务</span>
<span class="col-sm-6 col-xs-12 " id="alarm_numAQRW">0</span>
</div>
<div class="row padding-top-10">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-green"></i> AI视觉</span>
<span class="col-sm-6 col-xs-12 " id="alarm_numAISJ">0</span>
</div>
<div class="row padding-top-10">
<span class="col-sm-6 col-xs-12 "><i class="fa fa-fw fa-circle font-color-yellow"></i> 物联监视</span>
<span class="col-sm-6 col-xs-12 " id="alarm_numWLJS">0</span>
</div>
</div>
</div>
</div>
</div>
<div class="factory-area factory-area-1"></div>
<div class="factory-area factory-area-2"></div>
</div>
</div>
</div>
</body>
</html>