1882 lines
73 KiB
Plaintext
1882 lines
73 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||
pageEncoding="UTF-8" %>
|
||
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
|
||
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
|
||
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<title>终端状态</title>
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport"
|
||
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/slide/reset.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrap/bootstrap.min.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/datatimepicker/bootstrap-datetimepicker.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/datatables/datatables.bootstrap.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrapSwitch/bootstrap-switch.min.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/ztree/zTreeStyle.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/fontawesome/font-awesome.min.css">
|
||
<link rel="stylesheet" href="${ctx}/css/basic.css">
|
||
<link rel="stylesheet" href="${ctx}/css/plugin/basicButton.css">
|
||
<style>
|
||
html, body {
|
||
background-color: #F9F9F9 !important;
|
||
}
|
||
|
||
table {
|
||
font-size: 12px !important;
|
||
}
|
||
|
||
#before,#next,#query{
|
||
height: 20px !important;
|
||
}
|
||
.wanzhengdiv {
|
||
position: absolute;
|
||
z-index: 100;
|
||
top:70px;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container-fluid">
|
||
<div class="form-inline mt5 wanzhengdiv">
|
||
<div class="form-group has-feedback mr10">
|
||
<span class=' font12 fontBold'>终端状态(左柱) <span class='run'><span class='inB bg-run smallBlock'></span> 投运 </span><span class='breaks'><span class='inB bg-breaks smallBlock'></span> 热备用 </span><span class='grey'><span class='inB bg-grey smallBlock'></span> 停运 </span></span>
|
||
<span class=' font12 fontBold' > 终端在线率(右柱) <span class='info'><span class='inB bg-info smallBlock'></span> 在线率≥90%</span><span class='warn'> <span class='inB bg-warn smallBlock'></span> 60%≤在线率<90% </span><span class='error'> <span class='inB bg-error smallBlock'></span> 在线率<60%</span> </span>
|
||
</div>
|
||
</div>
|
||
<div class="form-inline mt10">
|
||
<div class="form-group has-feedback mr10" >
|
||
<label >分类方式:</label>
|
||
<select class="width3 form-control" id="datatype">
|
||
<option selected value="0">区域</option>
|
||
<option value="1">电压等级</option>
|
||
<option value="2">终端厂家</option>
|
||
<option value="3">干扰源类型</option>
|
||
</select>
|
||
</div>
|
||
<div class="form-group has-feedback mr10" >
|
||
<label >统计类型:</label>
|
||
<input type="checkbox" checked class="checkbox" />
|
||
</div>
|
||
<div class="form-group">
|
||
<%@include file="../../include/time.jsp"%>
|
||
<button type="button" class="btn btn-primary " id="query">
|
||
<i class="glyphicon glyphicon-search"></i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-inline mt10">
|
||
<div class="form-group has-feedback" >
|
||
<label >区域:</label>
|
||
<div class="disinlineb">
|
||
<input id="area" class="form-control" style="width: 140px" readonly>
|
||
<i class="fa fa-caret-down areaicon"></i>
|
||
<i class="fa fa-caret-up treeUpIcon disnone"
|
||
style="color: #C9CBCE;position: absolute;left: 60px;font-size: 18px;z-index: 9999;top: 20px"></i>
|
||
<div class=" ztree treeUpDiv disnone " id="areaTree"
|
||
style="position: absolute;width: 140px;height: 147px;border: 2px solid #C9CBCE;overflow: auto;top: 32px;background: #fff;z-index: 100;border-radius: 2px">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group has-feedback mr10" >
|
||
<label >电压等级:</label>
|
||
<select class="width3 form-control" id="scale"></select>
|
||
</div>
|
||
<div class="form-group has-feedback mr10" >
|
||
<label >终端厂家:</label>
|
||
<select class="width3 form-control" id="manc"></select>
|
||
</div>
|
||
<div class="form-group has-feedback mr10" >
|
||
<label >干扰源类型:</label>
|
||
<select class="width3 form-control" id="loadtype"></select>
|
||
</div>
|
||
</div>
|
||
<div class="row mt5">
|
||
<%--区域模块--%>
|
||
<div class="col-sm-7" id="areaDepts"></div>
|
||
<div class="col-sm-5" id="areaT">
|
||
<table id="areaTable" class="table table-striped table-bordered dataTable no-footer">
|
||
<thead>
|
||
<tr>
|
||
<th>区域</th>
|
||
<th>终端个数</th>
|
||
<th>投运</th>
|
||
<th>热备用</th>
|
||
<th>停运</th>
|
||
<th>在线率(%)</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<%-- 终端厂家模块 --%>
|
||
<div class="col-sm-7" id="company" style="display: none;"></div>
|
||
<div class="col-sm-5" id="companyT" style="display: none;">
|
||
<table id="companyTable" class="table table-striped table-bordered dataTable no-footer">
|
||
<thead>
|
||
<tr>
|
||
<th>厂家</th>
|
||
<th>终端个数</th>
|
||
<th>投运</th>
|
||
<th>热备用</th>
|
||
<th>停运</th>
|
||
<th>在线率(%)</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<%-- 电压等级模块 --%>
|
||
<div class="col-sm-7" id="vol" style="display: none;"></div>
|
||
<div class="col-sm-5" id="volT" style="display: none;">
|
||
<table id="volTable" class="table table-striped table-bordered dataTable no-footer">
|
||
<thead>
|
||
<tr>
|
||
<th>电压等级</th>
|
||
<th>终端个数</th>
|
||
<th>投运</th>
|
||
<th>热备用</th>
|
||
<th>停运</th>
|
||
<th>在线率(%)</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<%-- 干扰源模块 --%>
|
||
<div class="col-sm-7" id="loadtypep" style="display: none;"></div>
|
||
<div class="col-sm-5" id="loadtypeT" style="display: none;">
|
||
<table id="loadtypeTable" class="table table-striped table-bordered dataTable no-footer">
|
||
<thead>
|
||
<tr>
|
||
<th>干扰源类型</th>
|
||
<th>终端个数</th>
|
||
<th>投运</th>
|
||
<th>热备用</th>
|
||
<th>停运</th>
|
||
<th>在线率(%)</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="${ctx}/js/plugin/jquery/jquery.min.js"></script>
|
||
<script src="${ctx}/js/plugin/echarts/echarts.js"></script>
|
||
<script src="${ctx}/js/plugin/layui/layer.js"></script>
|
||
<script src="${ctx}/js/plugin/jquery/jquery.contextMenu.js"></script>
|
||
<script src="${ctx}/js/plugin/jquery/jquery.cleverTabs.js"></script>
|
||
<script src="${ctx}/js/plugin/datatables/datatables.jquery.js"></script>
|
||
<script src="${ctx}/js/plugin/datatables/datatables.bootstrap.js"></script>
|
||
<script src="${ctx}/jspJS/utils/loading.js"></script>
|
||
<script src="${ctx}/js/color.js"></script>
|
||
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
|
||
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
|
||
<script src="${ctx}/jspJS/utils/judgeAjaxStatus.js"></script>
|
||
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
|
||
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
|
||
<script src="${ctx}/js/plugin/bootstrapSwitch/bootstrap-switch.min.js"></script>
|
||
<script src="${ctx}/js/plugin/ztree/jquery.ztree.core.js"></script>
|
||
<script src="${ctx}/js/area.js"></script>
|
||
<script src="${ctx}/js/basic.js"></script>
|
||
<script src="${ctx}/jspJS/utils/timeControl.js"></script>
|
||
<script src="${ctx}/jspJS/utils/barUtil.js"></script>
|
||
<script>
|
||
var picHeight;
|
||
var tabs;
|
||
var $area = $("#area");
|
||
var $startTime = $("#startTime");
|
||
var $endTime = $("#endTime");
|
||
var areaResult = null;
|
||
var volResult = null;
|
||
var companyResult = null;
|
||
var loadtypeResult = null;
|
||
var tiggleValue = "";
|
||
var areLength;//区域的个数
|
||
var volLength;
|
||
var companyLength;//厂家个数
|
||
var loadtypeLength;
|
||
$("#interval").val("月份");
|
||
var showtype = 0;
|
||
var buttonname;
|
||
var companyname;
|
||
|
||
// 新增tab页
|
||
function addTab(url, label) {
|
||
tabs.add({url: url, label: label});
|
||
}
|
||
|
||
$("#datatype").on("change",function() {
|
||
var startTime = $startTime.eq(0).val();
|
||
var endTime = $endTime.eq(0).val();
|
||
var area = $area.eq(0).attr("index");
|
||
if($("option:selected",this).val() == 0){
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/pqs9000/user/getAreasInfo",
|
||
dataType: 'json',
|
||
async:false,
|
||
success: function (data) {
|
||
$("#area").val(data[0].name);
|
||
$("#area").attr("index", data[0].id);
|
||
areaTree = $.fn.zTree.init($("#areaTree"), settingAreaTree, data);
|
||
}
|
||
})
|
||
$("#area").attr("disabled",true);
|
||
$("#scale").attr("disabled",false);
|
||
$("#manc").attr("disabled",false);
|
||
$("#loadtype").attr("disabled",false);
|
||
|
||
showtype = 0;
|
||
var area = $area.eq(0).attr("index");
|
||
var scale = $("#scale").val();
|
||
var manc = $("#manc").val();
|
||
var loadtype = $("#loadtype").val();
|
||
refresh(startTime, endTime, area,scale,manc,loadtype)
|
||
}else if($("option:selected",this).val() == 1){
|
||
loadselect("电压等级","scale");
|
||
$("#area").attr("disabled",false);
|
||
$("#scale").attr("disabled",true);
|
||
$("#manc").attr("disabled",false);
|
||
$("#loadtype").attr("disabled",false);
|
||
|
||
$("#area").css("background-color","#fff");
|
||
showtype = 1;
|
||
var area = $area.eq(0).attr("index");
|
||
var scale = $("#scale").val();
|
||
var manc = $("#manc").val();
|
||
var loadtype = $("#loadtype").val();
|
||
refresh(startTime, endTime, area,scale,manc,loadtype);
|
||
}else if($("option:selected",this).val() == 2){
|
||
loadselect("制造厂商","manc");
|
||
$("#area").attr("disabled",false);
|
||
$("#scale").attr("disabled",false);
|
||
$("#manc").attr("disabled",true);
|
||
$("#loadtype").attr("disabled",false);
|
||
$("#area").css("background-color","#fff");
|
||
showtype = 2;
|
||
var scale = $("#scale").val();
|
||
var manc = $("#manc").val();
|
||
var loadtype = $("#loadtype").val();
|
||
refresh(startTime, endTime, area,scale,manc,loadtype);
|
||
}else if($("option:selected",this).val() == 3){
|
||
loadselect("干扰源类型","loadtype");
|
||
$("#area").attr("disabled",false);
|
||
$("#scale").attr("disabled",false);
|
||
$("#manc").attr("disabled",false);
|
||
$("#loadtype").attr("disabled",true);
|
||
$("#area").css("background-color","#fff");
|
||
showtype = 3;
|
||
var area = $area.eq(0).attr("index");
|
||
var scale = $("#scale").val();
|
||
var manc = $("#manc").val();
|
||
var loadtype = $("#loadtype").val();
|
||
refresh(startTime, endTime, area,scale,manc,loadtype);
|
||
}
|
||
})
|
||
|
||
$(function () {
|
||
var start = $startTime.eq(0).val();
|
||
var end = $endTime.eq(0).val();
|
||
|
||
$.ajax({
|
||
type: "POST",
|
||
data:{
|
||
start: start,
|
||
end: end
|
||
},
|
||
async:false,
|
||
url: "/pqs9000/device/getMsgInfo",
|
||
dataType: 'json',
|
||
success: function (data) {
|
||
buttonname = data.body.name;
|
||
tiggleValue = data.body.name;
|
||
}
|
||
})
|
||
|
||
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/pqs9000/theme/getThemeInfo",
|
||
async: false,
|
||
dataType: 'json',
|
||
success: function (data) {
|
||
companyname = data.body.name;
|
||
}
|
||
})
|
||
|
||
loadselect("电压等级","scale");
|
||
loadselect("制造厂商","manc");
|
||
loadselect("干扰源类型","loadtype");
|
||
|
||
$(".checkbox").bootstrapSwitch({
|
||
onText: buttonname, // 设置ON文本
|
||
offText: companyname, // 设置OFF文本
|
||
onColor: "primary",// 设置ON文本颜色 (info/success/warning/danger/primary)
|
||
offColor: "primary", // 设置OFF文本颜色 (info/success/warning/danger/primary)
|
||
size: "small", // 设置控件大小,从小到大 (mini/small/normal/large)
|
||
handleWidth: "60",//设置控件宽度
|
||
// 当开关状态改变时触发
|
||
onSwitchChange: function (event, state) {
|
||
if (state === true) {
|
||
tiggleValue = buttonname;
|
||
} else {
|
||
tiggleValue = companyname;
|
||
}
|
||
//重新画图
|
||
reDrawAllPic();
|
||
}
|
||
});
|
||
picHeight = ($(window).height() - 90);
|
||
tabs = $('#tabs').cleverTabs();
|
||
$.ajax({
|
||
type: "POST",
|
||
url: "/pqs9000/user/getAreasInfo",
|
||
dataType: 'json',
|
||
success: function (data) {
|
||
$("#area").val(data[0].name);
|
||
$("#area").attr("index", data[0].id);
|
||
areaTree = $.fn.zTree.init($("#areaTree"), settingAreaTree, data);
|
||
|
||
$("#area").attr("disabled",true);
|
||
$("#scale").attr("disabled",false);
|
||
$("#manc").attr("disabled",false);
|
||
$("#loadtype").attr("disabled",false);
|
||
//初始化页面内容
|
||
var area = $area.eq(0).attr("index");
|
||
var startTime = $startTime.eq(0).val();
|
||
var endTime = $endTime.eq(0).val();
|
||
refresh(startTime, endTime, area);
|
||
}
|
||
})
|
||
})
|
||
|
||
$("#query").click(function () {
|
||
var area = $area.eq(0).attr("index");
|
||
var startTime = $startTime.eq(0).val();
|
||
var endTime = $endTime.eq(0).val();
|
||
var scale = $("#scale").val();
|
||
var manc = $("#manc").val();
|
||
var loadtype = $("#loadtype").val();
|
||
refresh(startTime, endTime, area,scale,manc,loadtype);
|
||
});
|
||
|
||
function refresh(startTime, endTime,area,scale,manc,loadtype) {
|
||
var i;
|
||
$.ajax({
|
||
url: '/pqs9000/area/deviceStatus',
|
||
type: 'post',
|
||
data: {
|
||
startTime: startTime,
|
||
endTime: endTime,
|
||
area: area,
|
||
scale:scale,
|
||
manc:manc,
|
||
loadtype:loadtype
|
||
},
|
||
dataType: 'json',
|
||
beforeSend: function () {
|
||
i = ityzl_SHOW_LOAD_LAYER();
|
||
},
|
||
success: function (data) {
|
||
if (data.code === 500 | data.body === null) {
|
||
companyResult = null;
|
||
volResult = null;
|
||
areaResult = null;
|
||
loadtypeResult = null;
|
||
} else {
|
||
areLength = data.body.area === null ? 0 : data.body.area.length;
|
||
companyLength = data.body.interval === null ? 0 : data.body.interval.length;
|
||
volLength = data.body.vol === null ? 0 : data.body.vol.length;
|
||
loadtypeLength = data.body.loadtype === null ? 0 : data.body.loadtype.length;
|
||
|
||
companyResult = data.body.interval;
|
||
areaResult = data.body.area;
|
||
volResult = data.body.vol;
|
||
loadtypeResult = data.body.loadtype;
|
||
}
|
||
startQuery();
|
||
//***********关闭loading
|
||
ityzl_CLOSE_LOAD_LAYER(i);
|
||
}
|
||
})
|
||
}
|
||
|
||
//按区域进行统计
|
||
function drawAreaPic(area, lineFeed,route) {
|
||
//给div指定宽高
|
||
$("#areaDepts").css("height", picHeight);
|
||
var normal = [];
|
||
var breaks = [];
|
||
var shutdown = [];
|
||
var areas = [];
|
||
var rate=[];
|
||
|
||
if (null != area) {
|
||
for (var i = 0; i < area.length; i++) {
|
||
var monitors;
|
||
var onlineRate;
|
||
if (tiggleValue === buttonname) {
|
||
monitors=area[i].amounts;
|
||
areas[i] = area[i].name + lineFeed+"(" + area[i].amounts + ")";
|
||
onlineRate = Number(area[i].online);
|
||
var singleDataNormal = {};
|
||
var singleDatabreal = {};
|
||
var singleDatashutdown = {};
|
||
singleDataNormal.value = area[i].status.normal;
|
||
singleDataNormal.areaIndex = area[i].deptsIndex;
|
||
normal[i]= singleDataNormal;
|
||
singleDatabreal.value = area[i].status.breaks;
|
||
singleDatabreal.areaIndex = area[i].deptsIndex;
|
||
breaks[i] = singleDatabreal;
|
||
singleDatashutdown.value = area[i].status.shutdown;
|
||
singleDatashutdown.areaIndex = area[i].deptsIndex;
|
||
shutdown[i] = singleDatashutdown;
|
||
} else {
|
||
monitors=area[i].gwamounts;
|
||
areas[i] = area[i].name + lineFeed+"(" + area[i].gwamounts + ")";
|
||
onlineRate = Number(area[i].gwonline);
|
||
if(null!==area[i].gdStatus){
|
||
var singleDataNormal = {};
|
||
var singleDatabreal = {};
|
||
var singleDatashutdown = {};
|
||
singleDataNormal.value = area[i].status.normal;
|
||
singleDataNormal.areaIndex = area[i].deptsIndex;
|
||
normal[i]= singleDataNormal;
|
||
singleDatabreal.value = area[i].status.breaks;
|
||
singleDatabreal.areaIndex = area[i].deptsIndex;
|
||
breaks[i] = singleDatabreal;
|
||
singleDatashutdown.value = area[i].status.shutdown;
|
||
singleDatashutdown.areaIndex = area[i].deptsIndex;
|
||
shutdown[i] = singleDatashutdown;
|
||
}else{
|
||
var singleData = {};
|
||
var item = {};
|
||
singleData.value = 3.1415;
|
||
item.color = noMonitor;
|
||
singleData.itemStyle = item;
|
||
singleData.areaIndex = area[i].deptsIndex;
|
||
normal[i] = singleData;
|
||
breaks[i] = 0;
|
||
shutdown[i] = 0;
|
||
}
|
||
}
|
||
if (Number(monitors) === 0) {
|
||
var singleData = {};
|
||
var item = {};
|
||
singleData.value = 3.1415;
|
||
item.color = noMonitor;
|
||
singleData.itemStyle = item;
|
||
singleData.areaIndex = area[i].deptsIndex;
|
||
normal[i] = singleData;
|
||
rate[i]=singleData;
|
||
breaks[i] = 0;
|
||
shutdown[i] = 0;
|
||
} else {
|
||
var singleData = {};
|
||
var normalData = {};
|
||
var itemStyle = {};
|
||
normalData.color = getColor(onlineRate);
|
||
if (onlineRate < 3.1414) {
|
||
singleData.value = 3.1415;
|
||
normalData.actual = onlineRate;
|
||
} else {
|
||
singleData.value = onlineRate;
|
||
}
|
||
itemStyle.normal = normalData;
|
||
singleData.itemStyle = itemStyle;
|
||
singleData.areaIndex = area[i].deptsIndex;
|
||
rate[i] = singleData;
|
||
}
|
||
}
|
||
}
|
||
var option = {
|
||
backgroundColor: canvasBG,//背景色
|
||
title: {
|
||
text: '区域',
|
||
left: '50%',
|
||
padding: [
|
||
25, // 上
|
||
0, // 右
|
||
0, // 下
|
||
0, // 左
|
||
]
|
||
},
|
||
color: [runColor, breaksColor, grey],
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
},
|
||
position: function (point, params, dom, rect, size) {
|
||
// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下
|
||
// 提示框位置
|
||
var x = 0; // x坐标位置
|
||
var y = 0; // y坐标位置
|
||
// 当前鼠标位置
|
||
var pointX = point[0];
|
||
var pointY = point[1];
|
||
// 外层div大小
|
||
// var viewWidth = size.viewSize[0];
|
||
// var viewHeight = size.viewSize[1];
|
||
// 提示框大小
|
||
var boxWidth = size.contentSize[0];
|
||
var boxHeight = size.contentSize[1];
|
||
// boxWidth > pointX 说明鼠标左边放不下提示框
|
||
if (boxWidth > pointX) {
|
||
x = 5;
|
||
} else { // 左边放的下
|
||
x = pointX - boxWidth;
|
||
}
|
||
// boxHeight > pointY 说明鼠标上边放不下提示框
|
||
if (boxHeight > pointY) {
|
||
y = 5;
|
||
} else { // 上边放得下
|
||
y = pointY - boxHeight;
|
||
}
|
||
return [x, y];
|
||
},
|
||
formatter: function (params) {
|
||
var tips="";
|
||
tips+='<font style="font-size: 12px">'+params[0].name+'</font>';
|
||
var color = params[0].color;
|
||
tips +='<br/><font style="font-size: 12px">终端状态(%)</font>';
|
||
if (color === noMonitor) {
|
||
tips += '<br/><font style="font-size: 10px">投运 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">热备用 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">停运 : /</font>';
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
tips+='<br/><font style="font-size: 10px">/</font>';
|
||
}else{
|
||
for (var i = 0; i < 3; i++) {
|
||
tips+='<br/><font style="font-size: 10px">'+params[i].seriesName+' : '+params[i].value+'</font>';
|
||
}
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
var onlineRate;
|
||
if(Number(params[3].value)===3.14159){
|
||
onlineRate='暂无数据';
|
||
}else if(Number(params[3].value)===3.1415){
|
||
onlineRate='/';
|
||
}else{
|
||
onlineRate=params[3].value;
|
||
}
|
||
tips+='<br/><font style="font-size: 10px">'+onlineRate+'</font>';
|
||
}
|
||
return tips;
|
||
}
|
||
},
|
||
//控制图标在dataroom中的位置大小
|
||
grid: {
|
||
left: '1%',
|
||
right: '11%',
|
||
bottom: '3%',
|
||
containLabel: true
|
||
},
|
||
xAxis: [{
|
||
type: 'category',
|
||
data: areas,
|
||
name: '地区\n(终端个数)\n',
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
show:true,
|
||
interval: 0,
|
||
rotate:route,
|
||
fontSize:10
|
||
}
|
||
}],
|
||
yAxis: [{
|
||
type: 'value',
|
||
name: '%',
|
||
max: 100
|
||
}],
|
||
series: [{
|
||
name: '投运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: normal
|
||
}, {
|
||
name: '热备用',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: breaks
|
||
}, {
|
||
name: '停运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: shutdown
|
||
},{
|
||
name: '在线率',
|
||
type: 'bar',
|
||
barGap: 0,
|
||
barMaxWidth: barMax,
|
||
data: rate
|
||
}]
|
||
};
|
||
var district = echarts.init(document.getElementById('areaDepts'));
|
||
district.setOption(option);
|
||
district.on('click', function (params) {
|
||
if (getRole("/pqs9000/business/runtime") === 1) {
|
||
var city=params.data.areaIndex;
|
||
window.top.addTab('runtime?area='+city, '终端运行情况')
|
||
}
|
||
});
|
||
}
|
||
|
||
//填充区域表格
|
||
function initAreaTable(data) {
|
||
var height = picHeight - 50;
|
||
if (data == null) {
|
||
data = [];
|
||
}
|
||
$("#areaTable").DataTable({
|
||
data: data,
|
||
autoWidth: false,
|
||
order:[1,"desc"],
|
||
columnDefs : [
|
||
{ orderable: false, targets: [0,2,3,4] }
|
||
],
|
||
paging: false,
|
||
lengthChange: false,
|
||
searching: false,
|
||
destroy: true,
|
||
scrollY: height,
|
||
info: false,
|
||
language: {
|
||
url: '/pqs9000/json/chine.json',
|
||
},
|
||
columns: [
|
||
{data: 'name'},
|
||
{data: 'amounts', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "0";
|
||
}
|
||
return full.amounts;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "0";
|
||
}
|
||
return full.gwamounts;
|
||
}
|
||
}, type: "number-fate"},
|
||
{
|
||
data: 'status.normalData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.normalData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.normalData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.breaksData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.breaksData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.breaksData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.shutdownData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.shutdownData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.shutdownData;
|
||
}
|
||
}, type: "number-fate"
|
||
}, {data:'online', render:function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
data = full.online;
|
||
} else {
|
||
data = full.gwonline;
|
||
}
|
||
if (Number(data) === 3.1415) {
|
||
return "/";
|
||
} else if (Number(data) === 3.14159) {
|
||
return "(暂无数据)";
|
||
} else {
|
||
return data;
|
||
}
|
||
}, type: "number-fate"},
|
||
],
|
||
})
|
||
}
|
||
|
||
|
||
//按终端厂家进行统计
|
||
function drawCompanyPic(companys, lineFeed,route) {
|
||
$("#company").css("height", picHeight);
|
||
var run = [];
|
||
var breaks = [];
|
||
var shutdown = [];
|
||
var rate=[];
|
||
var areas = [];
|
||
if (null != companys) {
|
||
for(var i=0;i<companys.length;i++){
|
||
var monitors;
|
||
var onlineRate;
|
||
if (tiggleValue === buttonname) {
|
||
monitors=companys[i].amounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].amounts + ")";
|
||
onlineRate = Number(companys[i].online);
|
||
run[i]=companys[i].status.normal;
|
||
breaks[i]=companys[i].status.breaks;
|
||
shutdown[i]=companys[i].status.shutdown;
|
||
} else {
|
||
monitors=companys[i].gwamounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].gwamounts + ")";
|
||
onlineRate = Number(companys[i].gwonline);
|
||
if(null!==companys[i].gdStatus){
|
||
run[i] = companys[i].gdStatus.normal;
|
||
breaks[i] = companys[i].gdStatus.breaks;
|
||
shutdown[i] = companys[i].gdStatus.shutdown;
|
||
}else{
|
||
var singleData = {};
|
||
var item = {};
|
||
singleData.value = 3.1415;
|
||
item.color = noMonitor;
|
||
singleData.itemStyle = item;
|
||
run[i] = singleData;
|
||
breaks[i] = 0;
|
||
shutdown[i] = 0;
|
||
}
|
||
}
|
||
if(Number(monitors)===0){
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
singleData.value=3.1415;
|
||
normal.color=noMonitor;
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
run[i]=singleData;
|
||
rate[i]=singleData;
|
||
breaks[i]=0;
|
||
shutdown[i]=0;
|
||
}else{
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
normal.color = getColor(onlineRate);
|
||
if(onlineRate<3.1414){
|
||
singleData.value = 3.1415;
|
||
normal.actual = onlineRate;
|
||
}else{
|
||
singleData.value = onlineRate;
|
||
}
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
rate[i]=singleData;
|
||
}
|
||
}
|
||
}
|
||
var option = {
|
||
backgroundColor: canvasBG,//背景色
|
||
title: {
|
||
text: '终端厂家',
|
||
left: '50%',
|
||
padding: [
|
||
15, // 上
|
||
0, // 右
|
||
0, // 下
|
||
0, // 左
|
||
]
|
||
},
|
||
color: [runColor, breaksColor, grey],
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
},
|
||
position: function (point, params, dom, rect, size) {
|
||
// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下
|
||
// 提示框位置
|
||
var x = 0; // x坐标位置
|
||
var y = 0; // y坐标位置
|
||
// 当前鼠标位置
|
||
var pointX = point[0];
|
||
var pointY = point[1];
|
||
// 外层div大小
|
||
// var viewWidth = size.viewSize[0];
|
||
// var viewHeight = size.viewSize[1];
|
||
// 提示框大小
|
||
var boxWidth = size.contentSize[0];
|
||
var boxHeight = size.contentSize[1];
|
||
// boxWidth > pointX 说明鼠标左边放不下提示框
|
||
if (boxWidth > pointX) {
|
||
x = 5;
|
||
} else { // 左边放的下
|
||
x = pointX - boxWidth;
|
||
}
|
||
// boxHeight > pointY 说明鼠标上边放不下提示框
|
||
if (boxHeight > pointY) {
|
||
y = 5;
|
||
} else { // 上边放得下
|
||
y = pointY - boxHeight;
|
||
}
|
||
return [x, y];
|
||
},
|
||
formatter: function (params) {
|
||
var tips="";
|
||
tips+='<font style="font-size: 12px">'+params[0].name+'</font>';
|
||
var color = params[0].color;
|
||
tips +='<br/><font style="font-size: 12px">终端状态(%)</font>';
|
||
if (color === noMonitor) {
|
||
tips += '<br/><font style="font-size: 10px">投运 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">热备用 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">停运 : /</font>';
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
tips+='<br/><font style="font-size: 10px">/</font>';
|
||
}else{
|
||
for (var i = 0; i < 3; i++) {
|
||
tips+='<br/><font style="font-size: 10px">'+params[i].seriesName+' : '+params[i].value+'</font>';
|
||
}
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
var onlineRate;
|
||
if(Number(params[3].value)===3.14159){
|
||
onlineRate='暂无数据';
|
||
}else if(Number(params[3].value)===3.1415){
|
||
onlineRate='/';
|
||
}else{
|
||
onlineRate=params[3].value;
|
||
}
|
||
tips+='<br/><font style="font-size: 10px">'+onlineRate+'</font>';
|
||
}
|
||
return tips;
|
||
}
|
||
},
|
||
//控制图标在dataroom中的位置大小
|
||
grid: {
|
||
left: '1%',
|
||
right: '11%',
|
||
bottom: '3%',
|
||
containLabel: true
|
||
},
|
||
xAxis: [{
|
||
type: 'category',
|
||
data: areas,
|
||
name: '终端厂家\n(终端个数)\n',
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
show:true,
|
||
interval: 0,
|
||
rotate:route,
|
||
fontSize:10
|
||
}
|
||
}],
|
||
yAxis: [{
|
||
type: 'value',
|
||
name: '%',
|
||
min: '0',
|
||
max: '100'
|
||
}],
|
||
series: [{
|
||
name: '投运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: run
|
||
}, {
|
||
name: '热备用',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: breaks
|
||
}, {
|
||
name: '停运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: shutdown
|
||
},{
|
||
name: '在线率',
|
||
type: 'bar',
|
||
barGap: 0,
|
||
barMaxWidth: barMax,
|
||
data: rate
|
||
}]
|
||
};
|
||
var factory = echarts.init(document.getElementById('company'));
|
||
factory.setOption(option);
|
||
factory.on('click', function () {
|
||
if (getRole("/pqs9000/business/runtime") == 1) {
|
||
window.top.addTab('runtime', '终端运行情况')
|
||
}
|
||
});
|
||
}
|
||
|
||
//填充终端厂家表格
|
||
function initCompanyTable(data) {
|
||
var height = picHeight - 50;
|
||
if (data == null) {
|
||
data = [];
|
||
}
|
||
$("#companyTable").DataTable({
|
||
data: data,
|
||
autoWidth: false,
|
||
order:[1,"desc"],
|
||
columnDefs : [
|
||
{ orderable: false, targets: [0,2,3,4] }
|
||
],
|
||
paging: false,
|
||
lengthChange: false,
|
||
searching: false,
|
||
destroy: true,
|
||
scrollY: height,
|
||
info: false,
|
||
language: {
|
||
url: '/pqs9000/json/chine.json',
|
||
},
|
||
columns: [
|
||
{data: 'name'},
|
||
{data: 'amounts', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "0";
|
||
}
|
||
return full.amounts;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "0";
|
||
}
|
||
return full.gwamounts;
|
||
}
|
||
}, type: "number-fate"},
|
||
{
|
||
data: 'status.normalData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.normalData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.normalData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.breaksData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.breaksData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.breaksData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.shutdownData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.shutdownData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.shutdownData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{data:'online', render:function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
data = full.online;
|
||
} else {
|
||
data = full.gwonline;
|
||
}
|
||
if (Number(data) === 3.1415) {
|
||
return "/";
|
||
} else if (Number(data) === 3.14159) {
|
||
return "(暂无数据)";
|
||
} else {
|
||
return data;
|
||
}
|
||
}, type: "number-fate"},
|
||
],
|
||
})
|
||
}
|
||
|
||
//按电压等级进行统计
|
||
function drawVolPic(companys, lineFeed,route) {
|
||
$("#vol").css("height", picHeight);
|
||
var run = [];
|
||
var breaks = [];
|
||
var shutdown = [];
|
||
var rate=[];
|
||
var areas = [];
|
||
if (null != companys) {
|
||
for(var i=0;i<companys.length;i++){
|
||
var monitors;
|
||
var onlineRate;
|
||
if (tiggleValue === buttonname) {
|
||
monitors=companys[i].amounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].amounts + ")";
|
||
onlineRate = Number(companys[i].online);
|
||
run[i]=companys[i].status.normal;
|
||
breaks[i]=companys[i].status.breaks;
|
||
shutdown[i]=companys[i].status.shutdown;
|
||
} else {
|
||
monitors=companys[i].gwamounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].gwamounts + ")";
|
||
onlineRate = Number(companys[i].gwonline);
|
||
if(null!==companys[i].gdStatus){
|
||
run[i] = companys[i].gdStatus.normal;
|
||
breaks[i] = companys[i].gdStatus.breaks;
|
||
shutdown[i] = companys[i].gdStatus.shutdown;
|
||
}else{
|
||
var singleData = {};
|
||
var item = {};
|
||
singleData.value = 3.1415;
|
||
item.color = noMonitor;
|
||
singleData.itemStyle = item;
|
||
run[i] = singleData;
|
||
breaks[i] = 0;
|
||
shutdown[i] = 0;
|
||
}
|
||
}
|
||
if(Number(monitors)===0){
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
singleData.value=3.1415;
|
||
normal.color=noMonitor;
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
run[i]=singleData;
|
||
rate[i]=singleData;
|
||
breaks[i]=0;
|
||
shutdown[i]=0;
|
||
}else{
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
normal.color = getColor(onlineRate);
|
||
if(onlineRate<3.1414){
|
||
singleData.value = 3.1415;
|
||
normal.actual = onlineRate;
|
||
}else{
|
||
singleData.value = onlineRate;
|
||
}
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
rate[i]=singleData;
|
||
}
|
||
}
|
||
}
|
||
var option = {
|
||
backgroundColor: canvasBG,//背景色
|
||
title: {
|
||
text: '电压等级',
|
||
left: '50%',
|
||
padding: [
|
||
15, // 上
|
||
0, // 右
|
||
0, // 下
|
||
0, // 左
|
||
]
|
||
},
|
||
color: [runColor, breaksColor, grey],
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
},
|
||
position: function (point, params, dom, rect, size) {
|
||
// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下
|
||
// 提示框位置
|
||
var x = 0; // x坐标位置
|
||
var y = 0; // y坐标位置
|
||
// 当前鼠标位置
|
||
var pointX = point[0];
|
||
var pointY = point[1];
|
||
// 外层div大小
|
||
// var viewWidth = size.viewSize[0];
|
||
// var viewHeight = size.viewSize[1];
|
||
// 提示框大小
|
||
var boxWidth = size.contentSize[0];
|
||
var boxHeight = size.contentSize[1];
|
||
// boxWidth > pointX 说明鼠标左边放不下提示框
|
||
if (boxWidth > pointX) {
|
||
x = 5;
|
||
} else { // 左边放的下
|
||
x = pointX - boxWidth;
|
||
}
|
||
// boxHeight > pointY 说明鼠标上边放不下提示框
|
||
if (boxHeight > pointY) {
|
||
y = 5;
|
||
} else { // 上边放得下
|
||
y = pointY - boxHeight;
|
||
}
|
||
return [x, y];
|
||
},
|
||
formatter: function (params) {
|
||
var tips="";
|
||
tips+='<font style="font-size: 12px">'+params[0].name+'</font>';
|
||
var color = params[0].color;
|
||
tips +='<br/><font style="font-size: 12px">终端状态(%)</font>';
|
||
if (color === noMonitor) {
|
||
tips += '<br/><font style="font-size: 10px">投运 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">热备用 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">停运 : /</font>';
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
tips+='<br/><font style="font-size: 10px">/</font>';
|
||
}else{
|
||
for (var i = 0; i < 3; i++) {
|
||
tips+='<br/><font style="font-size: 10px">'+params[i].seriesName+' : '+params[i].value+'</font>';
|
||
}
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
var onlineRate;
|
||
if(Number(params[3].value)===3.14159){
|
||
onlineRate='暂无数据';
|
||
}else if(Number(params[3].value)===3.1415){
|
||
onlineRate='/';
|
||
}else{
|
||
onlineRate=params[3].value;
|
||
}
|
||
tips+='<br/><font style="font-size: 10px">'+onlineRate+'</font>';
|
||
}
|
||
return tips;
|
||
}
|
||
},
|
||
//控制图标在dataroom中的位置大小
|
||
grid: {
|
||
left: '1%',
|
||
right: '11%',
|
||
bottom: '3%',
|
||
containLabel: true
|
||
},
|
||
xAxis: [{
|
||
type: 'category',
|
||
data: areas,
|
||
name: '电压等级\n(终端个数)\n',
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
show:true,
|
||
interval: 0,
|
||
rotate:route,
|
||
fontSize:10
|
||
}
|
||
}],
|
||
yAxis: [{
|
||
type: 'value',
|
||
name: '%',
|
||
min: '0',
|
||
max: '100'
|
||
}],
|
||
series: [{
|
||
name: '投运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: run
|
||
}, {
|
||
name: '热备用',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: breaks
|
||
}, {
|
||
name: '停运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: shutdown
|
||
},{
|
||
name: '在线率',
|
||
type: 'bar',
|
||
barGap: 0,
|
||
barMaxWidth: barMax,
|
||
data: rate
|
||
}]
|
||
};
|
||
var factory = echarts.init(document.getElementById('vol'));
|
||
factory.setOption(option);
|
||
factory.on('click', function () {
|
||
if (getRole("/pqs9000/business/runtime") == 1) {
|
||
window.top.addTab('runtime', '终端运行情况')
|
||
}
|
||
});
|
||
}
|
||
|
||
//填充电压等级表格
|
||
function initVolTable(data) {
|
||
var height = picHeight - 50;
|
||
if (data == null) {
|
||
data = [];
|
||
}
|
||
$("#volTable").DataTable({
|
||
data: data,
|
||
autoWidth: false,
|
||
order:[1,"desc"],
|
||
columnDefs : [
|
||
{ orderable: false, targets: [0,2,3,4] }
|
||
],
|
||
paging: false,
|
||
lengthChange: false,
|
||
searching: false,
|
||
destroy: true,
|
||
scrollY: height,
|
||
info: false,
|
||
language: {
|
||
url: '/pqs9000/json/chine.json',
|
||
},
|
||
columns: [
|
||
{data: 'name'},
|
||
{data: 'amounts', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "0";
|
||
}
|
||
return full.amounts;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "0";
|
||
}
|
||
return full.gwamounts;
|
||
}
|
||
}, type: "number-fate"},
|
||
{
|
||
data: 'status.normalData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.normalData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.normalData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.breaksData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.breaksData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.breaksData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.shutdownData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.shutdownData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.shutdownData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{data:'online', render:function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
data = full.online;
|
||
} else {
|
||
data = full.gwonline;
|
||
}
|
||
if (Number(data) === 3.1415) {
|
||
return "/";
|
||
} else if (Number(data) === 3.14159) {
|
||
return "(暂无数据)";
|
||
} else {
|
||
return data;
|
||
}
|
||
}, type: "number-fate"},
|
||
],
|
||
})
|
||
}
|
||
|
||
//按干扰源类型进行统计
|
||
function drawloadtypePic(companys, lineFeed,route) {
|
||
$("#loadtypep").css("height", picHeight);
|
||
var run = [];
|
||
var breaks = [];
|
||
var shutdown = [];
|
||
var rate=[];
|
||
var areas = [];
|
||
if (null != companys) {
|
||
for(var i=0;i<companys.length;i++){
|
||
var monitors;
|
||
var onlineRate;
|
||
if (tiggleValue === buttonname) {
|
||
monitors=companys[i].amounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].amounts + ")";
|
||
onlineRate = Number(companys[i].online);
|
||
run[i]=companys[i].status.normal;
|
||
breaks[i]=companys[i].status.breaks;
|
||
shutdown[i]=companys[i].status.shutdown;
|
||
} else {
|
||
monitors=companys[i].gwamounts;
|
||
areas[i] = companys[i].name + lineFeed+"(" + companys[i].gwamounts + ")";
|
||
onlineRate = Number(companys[i].gwonline);
|
||
if(null!==companys[i].gdStatus){
|
||
run[i] = companys[i].gdStatus.normal;
|
||
breaks[i] = companys[i].gdStatus.breaks;
|
||
shutdown[i] = companys[i].gdStatus.shutdown;
|
||
}else{
|
||
var singleData = {};
|
||
var item = {};
|
||
singleData.value = 3.1415;
|
||
item.color = noMonitor;
|
||
singleData.itemStyle = item;
|
||
run[i] = singleData;
|
||
breaks[i] = 0;
|
||
shutdown[i] = 0;
|
||
}
|
||
}
|
||
if(Number(monitors)===0){
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
singleData.value=3.1415;
|
||
normal.color=noMonitor;
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
run[i]=singleData;
|
||
rate[i]=singleData;
|
||
breaks[i]=0;
|
||
shutdown[i]=0;
|
||
}else{
|
||
var singleData={};
|
||
var normal={};
|
||
var itemStyle={};
|
||
normal.color = getColor(onlineRate);
|
||
if(onlineRate<3.1414){
|
||
singleData.value = 3.1415;
|
||
normal.actual = onlineRate;
|
||
}else{
|
||
singleData.value = onlineRate;
|
||
}
|
||
itemStyle.normal=normal;
|
||
singleData.itemStyle=itemStyle;
|
||
rate[i]=singleData;
|
||
}
|
||
}
|
||
}
|
||
var option = {
|
||
backgroundColor: canvasBG,//背景色
|
||
title: {
|
||
text: '干扰源类型',
|
||
left: '50%',
|
||
padding: [
|
||
15, // 上
|
||
0, // 右
|
||
0, // 下
|
||
0, // 左
|
||
]
|
||
},
|
||
color: [runColor, breaksColor, grey],
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
type: 'shadow'
|
||
},
|
||
position: function (point, params, dom, rect, size) {
|
||
// 鼠标坐标和提示框位置的参考坐标系是:以外层div的左上角那一点为原点,x轴向右,y轴向下
|
||
// 提示框位置
|
||
var x = 0; // x坐标位置
|
||
var y = 0; // y坐标位置
|
||
// 当前鼠标位置
|
||
var pointX = point[0];
|
||
var pointY = point[1];
|
||
// 外层div大小
|
||
// var viewWidth = size.viewSize[0];
|
||
// var viewHeight = size.viewSize[1];
|
||
// 提示框大小
|
||
var boxWidth = size.contentSize[0];
|
||
var boxHeight = size.contentSize[1];
|
||
// boxWidth > pointX 说明鼠标左边放不下提示框
|
||
if (boxWidth > pointX) {
|
||
x = 5;
|
||
} else { // 左边放的下
|
||
x = pointX - boxWidth;
|
||
}
|
||
// boxHeight > pointY 说明鼠标上边放不下提示框
|
||
if (boxHeight > pointY) {
|
||
y = 5;
|
||
} else { // 上边放得下
|
||
y = pointY - boxHeight;
|
||
}
|
||
return [x, y];
|
||
},
|
||
formatter: function (params) {
|
||
var tips="";
|
||
tips+='<font style="font-size: 12px">'+params[0].name+'</font>';
|
||
var color = params[0].color;
|
||
tips +='<br/><font style="font-size: 12px">终端状态(%)</font>';
|
||
if (color === noMonitor) {
|
||
tips += '<br/><font style="font-size: 10px">投运 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">热备用 : /</font>';
|
||
tips += '<br/><font style="font-size: 10px">停运 : /</font>';
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
tips+='<br/><font style="font-size: 10px">/</font>';
|
||
}else{
|
||
for (var i = 0; i < 3; i++) {
|
||
tips+='<br/><font style="font-size: 10px">'+params[i].seriesName+' : '+params[i].value+'</font>';
|
||
}
|
||
tips += '<br/><font style="font-size: 12px">终端在线率(%)</font>';
|
||
var onlineRate;
|
||
if(Number(params[3].value)===3.14159){
|
||
onlineRate='暂无数据';
|
||
}else if(Number(params[3].value)===3.1415){
|
||
onlineRate='/';
|
||
}else{
|
||
onlineRate=params[3].value;
|
||
}
|
||
tips+='<br/><font style="font-size: 10px">'+onlineRate+'</font>';
|
||
}
|
||
return tips;
|
||
}
|
||
},
|
||
//控制图标在dataroom中的位置大小
|
||
grid: {
|
||
left: '1%',
|
||
right: '11%',
|
||
bottom: '3%',
|
||
containLabel: true
|
||
},
|
||
xAxis: [{
|
||
type: 'category',
|
||
data: areas,
|
||
name: '干扰源类型\n(终端个数)\n',
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
show:true,
|
||
interval: 0,
|
||
rotate:route,
|
||
fontSize:10
|
||
}
|
||
}],
|
||
yAxis: [{
|
||
type: 'value',
|
||
name: '%',
|
||
min: '0',
|
||
max: '100'
|
||
}],
|
||
series: [{
|
||
name: '投运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: run
|
||
}, {
|
||
name: '热备用',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: breaks
|
||
}, {
|
||
name: '停运',
|
||
type: 'bar',
|
||
stack: 'sum',
|
||
barMaxWidth: barMax,
|
||
data: shutdown
|
||
},{
|
||
name: '在线率',
|
||
type: 'bar',
|
||
barGap: 0,
|
||
barMaxWidth: barMax,
|
||
data: rate
|
||
}]
|
||
};
|
||
var factory = echarts.init(document.getElementById('loadtypep'));
|
||
factory.setOption(option);
|
||
factory.on('click', function () {
|
||
if (getRole("/pqs9000/business/runtime") == 1) {
|
||
window.top.addTab('runtime', '终端运行情况')
|
||
}
|
||
});
|
||
}
|
||
|
||
//填充干扰源类型表格
|
||
function initloadtypeTable(data) {
|
||
var height = picHeight - 50;
|
||
if (data == null) {
|
||
data = [];
|
||
}
|
||
$("#loadtypeTable").DataTable({
|
||
data: data,
|
||
autoWidth: false,
|
||
order:[1,"desc"],
|
||
columnDefs : [
|
||
{ orderable: false, targets: [0,2,3,4] }
|
||
],
|
||
paging: false,
|
||
lengthChange: false,
|
||
searching: false,
|
||
destroy: true,
|
||
scrollY: height,
|
||
info: false,
|
||
language: {
|
||
url: '/pqs9000/json/chine.json',
|
||
},
|
||
columns: [
|
||
{data: 'name'},
|
||
{data: 'amounts', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "0";
|
||
}
|
||
return full.amounts;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "0";
|
||
}
|
||
return full.gwamounts;
|
||
}
|
||
}, type: "number-fate"},
|
||
{
|
||
data: 'status.normalData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.normalData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.normalData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.breaksData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.breaksData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.breaksData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{
|
||
data: 'status.shutdownData', render: function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
if(full.amounts==0){
|
||
return "/";
|
||
}
|
||
return full.status.shutdownData;
|
||
} else {
|
||
if(full.gwamounts==0){
|
||
return "/";
|
||
}
|
||
if(null===full.gdStatus){
|
||
return "0"
|
||
}
|
||
return full.gdStatus.shutdownData;
|
||
}
|
||
}, type: "number-fate"
|
||
},
|
||
{data:'online', render:function (data, type, full, meta) {
|
||
if (tiggleValue === buttonname) {
|
||
data = full.online;
|
||
} else {
|
||
data = full.gwonline;
|
||
}
|
||
if (Number(data) === 3.1415) {
|
||
return "/";
|
||
} else if (Number(data) === 3.14159) {
|
||
return "(暂无数据)";
|
||
} else {
|
||
return data;
|
||
}
|
||
}, type: "number-fate"},
|
||
],
|
||
})
|
||
}
|
||
|
||
//特殊处理,表头紧缩问题--start
|
||
var it = null;
|
||
|
||
function startQuery() {
|
||
//实时刷新时间单位为毫秒
|
||
it = setInterval('refreshQuery()', 100);
|
||
|
||
}
|
||
|
||
/* 刷新查询 */
|
||
function refreshQuery() {
|
||
if(showtype == 0){
|
||
$("#areaDepts").css("display", "");
|
||
$("#areaT").css("display", "");
|
||
$("#vol").css("display", "none");
|
||
$("#volT").css("display", "none");
|
||
$("#company").css("display", "none");
|
||
$("#companyT").css("display", "none");
|
||
$("#loadtypep").css("display", "none");
|
||
$("#loadtypeT").css("display", "none");
|
||
|
||
if (parseInt(areLength) > parseInt(barUpperLimit7)) {
|
||
drawAreaPic(areaResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawAreaPic(areaResult, lineFeed,barRouteZero);
|
||
}
|
||
initAreaTable(areaResult);
|
||
}else if(showtype == 1){
|
||
$("#areaDepts").css("display", "none");
|
||
$("#areaT").css("display", "none");
|
||
$("#vol").css("display", "");
|
||
$("#volT").css("display", "");
|
||
$("#company").css("display", "none");
|
||
$("#companyT").css("display", "none");
|
||
$("#loadtypep").css("display", "none");
|
||
$("#loadtypeT").css("display", "none");
|
||
|
||
if (parseInt(companyLength) > parseInt(barUpperLimit7)) {
|
||
drawVolPic(volResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawVolPic(volResult, lineFeed,barRouteZero);
|
||
}
|
||
initVolTable(volResult);
|
||
}else if(showtype == 2){
|
||
$("#areaDepts").css("display", "none");
|
||
$("#areaT").css("display", "none");
|
||
$("#vol").css("display", "none");
|
||
$("#volT").css("display", "none");
|
||
$("#company").css("display", "");
|
||
$("#companyT").css("display", "");
|
||
$("#loadtypep").css("display", "none");
|
||
$("#loadtypeT").css("display", "none");
|
||
|
||
if (parseInt(companyLength) > parseInt(barUpperLimit7)) {
|
||
drawCompanyPic(companyResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawCompanyPic(companyResult, lineFeed,barRouteZero);
|
||
}
|
||
initCompanyTable(companyResult);
|
||
}else if(showtype == 3){
|
||
$("#areaDepts").css("display", "none");
|
||
$("#areaT").css("display", "none");
|
||
$("#company").css("display", "none");
|
||
$("#companyT").css("display", "none");
|
||
$("#vol").css("display", "none");
|
||
$("#volT").css("display", "none");
|
||
$("#loadtypep").css("display", "");
|
||
$("#loadtypeT").css("display", "");
|
||
|
||
if (parseInt(companyLength) > parseInt(barUpperLimit7)) {
|
||
drawloadtypePic(loadtypeResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawloadtypePic(loadtypeResult, lineFeed,barRouteZero);
|
||
}
|
||
initloadtypeTable(loadtypeResult);
|
||
}
|
||
window.clearInterval(it)
|
||
}
|
||
|
||
//根据在线率获取颜色
|
||
function getColor(data) {
|
||
if (data >= 90) {
|
||
return green;
|
||
} else if (data === 3.1415) {
|
||
return noMonitor;
|
||
} else if (data === 3.14159) {
|
||
return noData;
|
||
} else if (data < 60) {
|
||
return red;
|
||
} else {
|
||
return yellow;
|
||
}
|
||
}
|
||
|
||
|
||
//开关触发图片更新
|
||
function reDrawAllPic() {
|
||
if(showtype == 0){
|
||
if (areaResult === null) {
|
||
drawAreaPic(null);
|
||
initAreaTable(null);
|
||
} else {
|
||
if (parseInt(areLength) > parseInt(barUpperLimit7)) {
|
||
drawAreaPic(areaResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawAreaPic(areaResult, lineFeed,barRouteZero);
|
||
}
|
||
initAreaTable(areaResult);
|
||
}
|
||
}else if(showtype == 1){
|
||
if (volResult === null) {
|
||
drawVolPic(null);
|
||
initVolTable(null);
|
||
} else {
|
||
if (parseInt(volLength) > parseInt(barUpperLimit7)) {
|
||
drawVolPic(volResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawVolPic(volResult, lineFeed,barRouteZero);
|
||
}
|
||
initVolTable(volResult);
|
||
}
|
||
}else if(showtype == 2){
|
||
if (companyResult === null) {
|
||
drawCompanyPic(null);
|
||
initCompanyTable(null);
|
||
} else {
|
||
if (parseInt(companyLength) > parseInt(barUpperLimit7)) {
|
||
drawCompanyPic(companyResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawCompanyPic(companyResult, lineFeed,barRouteZero);
|
||
}
|
||
initCompanyTable(companyResult);
|
||
}
|
||
}else if(showtype == 3){
|
||
if (loadtypeResult === null) {
|
||
drawloadtypePic(null);
|
||
initloadtypeTable(null);
|
||
} else {
|
||
if (parseInt(loadtypeLength) > parseInt(barUpperLimit7)) {
|
||
drawloadtypePic(loadtypeResult, noLineFeed,barRouteIncline);
|
||
} else {
|
||
drawloadtypePic(loadtypeResult, lineFeed,barRouteZero);
|
||
}
|
||
initloadtypeTable(companyResult);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 数字排序自定义start
|
||
*/
|
||
jQuery.fn.dataTableExt.oSort['number-fate-asc'] = function (s1, s2) {
|
||
if(s1==="/" ){
|
||
s1=0;
|
||
}
|
||
if(s2==="/" ){
|
||
s2=0;
|
||
}
|
||
return Number(s1) - Number(s2);
|
||
};
|
||
|
||
jQuery.fn.dataTableExt.oSort['number-fate-desc'] = function (s1, s2) {
|
||
if(s1==="/" ){
|
||
s1=0;
|
||
}
|
||
if(s2==="/" ){
|
||
s2=0;
|
||
}
|
||
return Number(s2) - Number(s1);
|
||
};
|
||
|
||
function loadselect(dictypeName,div){
|
||
var part='#'+div;
|
||
$(part).find("option").remove();
|
||
$.ajax({
|
||
method : "post",
|
||
url : "/pqs9000/device/getselect",
|
||
data : {
|
||
dictypeName:dictypeName
|
||
},
|
||
async:false,
|
||
success : function(data) {
|
||
if(data == null){
|
||
var message = dictypeName + '信息加载失败';
|
||
layer.msg(message,{icon:1,time:1000});
|
||
}else{
|
||
var option0 = $("<option selected value='"
|
||
+ null + "'>"
|
||
+ "全部" + "</option>");
|
||
$(part).append(option0);
|
||
$.each(data, function(i, item) {
|
||
var option = $("<option value='"
|
||
+ item.dicIndex + "'>"
|
||
+ item.dicName + "</option>");
|
||
$(part).append(option);
|
||
})
|
||
}
|
||
}
|
||
})
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|