Files
system-jibei/pqs9000/src/main/webapp/jspJS/overview/onlineRate.js
2024-04-01 09:20:31 +08:00

450 lines
14 KiB
JavaScript
Raw 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.

var picHeight, endTime, startTime;
var tiggleValue = "系统";
var areaResult = null;
var companyResult = null;
var areLength;//区域的个数
var companyLength;//厂家个数
$(function () {
//开关初始化
$(".wanzheng").bootstrapSwitch({
onText: "系统", // 设置ON文本
offText: "网公司", // 设置OFF文本
onColor: "primary",// 设置ON文本颜色 (info/success/warning/danger/primary)
offColor: "primary", // 设置OFF文本颜色 (info/success/warning/danger/primary)
size: "small", // 设置控件大小,从小到大 (mini/small/normal/large)
handleWidth: "40",//设置控件宽度
// 当开关状态改变时触发
onSwitchChange: function (event, state) {
if (state == true) {
tiggleValue = "系统";
} else {
tiggleValue = "网公司";
}
//重新画图
reDrawAllPic();
}
});
var i;
picHeight = $(window).height() * 0.5 - 5;
endTime = getEndTime();
startTime = getMonthStartTime(endTime);
$.ajax({
url: '/pqs9000/overview/onlineRate',
data: {
startTime: startTime,
endTime: endTime
},
type: 'post',
dataType: 'json',
beforeSend: function () {
i = ityzl_SHOW_LOAD_LAYER();
},
success: function (data) {
if (data.code === 500 | data.body === null) {
drawAreaPic(null);
drawCompanyPic(null);
initAreaTable(null);
initCompanyTable(null);
} else {
areLength = data.body.area === null ? 0 : data.body.area.length;
companyLength = data.body.interval === null ? 0 : data.body.interval.length;
if (parseInt(areLength) > parseInt(barspaclength)) {
drawAreaPic(data.body.area, 1);
} else {
drawAreaPic(data.body.area, 0);
}
if (parseInt(companyLength) > parseInt(barspaclength)) {
drawCompanyPic(data.body.interval, 1);
} else {
drawCompanyPic(data.body.interval, 0);
}
companyResult = data.body.interval;
areaResult = data.body.area;
initAreaTable(data.body.area);
initCompanyTable(data.body.interval);
}
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
}
})
})
//描绘区域图
function drawAreaPic(area, intervals) {
var xTip;
if (tiggleValue === "系统") {
xTip = '地区\n(终端数)\n';
} else {
xTip = '地区\n(监测点数)\n';
}
$("#area").css("height", picHeight);
var areaOption = echarts.init($("#area")[0]);
var rate = [];
var areas = [];
if (null != area) {
for (var i = 0; i < area.length; i++) {
var onlineRate;
if (tiggleValue === "系统") {
areas[i] = area[i].name + "\n(" + area[i].amounts + ")";
onlineRate = Number(area[i].online);
} else {
areas[i] = area[i].name + "\n(" + area[i].gwamounts + ")";
onlineRate = Number(area[i].gwonline);
}
var singleData = {};
var item = {};
item.color = getColor(onlineRate);
if (onlineRate < 3.1414) {
singleData.value = 3.1415;
item.actual = onlineRate;
} else {
singleData.value = onlineRate;
}
singleData.areaIndex = area[i].deptsIndex;
singleData.itemStyle = item;
rate[i] = singleData;
}
}
var option = {
backgroundColor: canvasBG,//背景色
title: {
text: '区域',
x: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function (params) {
var color = params[0].color;
var tips = "";
tips += params[0].name;
if (color === noMonitor) {
tips += '<br/>' + params[0].seriesName + ' : /';
} else if (color === noData) {
tips += '<br/>' + params[0].seriesName + ' : (暂无数据)';
} else {
if (params[0].data.itemStyle.actual !== undefined) {
tips += '<br/>' + params[0].seriesName + ' : ' + params[0].data.itemStyle.actual;
} else {
tips += '<br/>' + params[0].seriesName + ' : ' + params[0].value;
}
}
return tips;
}
},
//控制图标在dataroom中的位置大小
grid: {
left: '1%',
right: '10%',
bottom: '3%',
containLabel: true
},
xAxis: [{
type: 'category',
data: areas,
name: xTip,
splitLine: {
show: false
},
axisLabel: {
show: true,
interval: intervals
}
}],
yAxis: [{
type: 'value',
name: '%',
min: '0',
max: '100'
}],
series: [{
name: '在线率',
type: 'bar',
barMaxWidth: barMax,
data: rate
}]
};
areaOption.setOption(option);
areaOption.on('click', function (params) {
if (getRole("/pqs9000/area/onlineratetable") == 1) {
var city = params.data.areaIndex;
window.top.addTab('/pqs9000/area/onlineratetable?startTime=' + startTime + '&endTime=' + endTime + '&area=' + city + '&interval=月份', '在线率列表')
}
});
}
//填充区域表格
function initAreaTable(data) {
var height = picHeight - 50;
if (data == null) {
data = [];
}
$("#areaTable").DataTable({
data: data,
autoWidth: false,
columnDefs: [
{"width": "33%", "targets": 0},
{"width": "33%", "targets": 1},
{"width": "33%", "targets": 2}
],
order: [2, "desc"],
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 === "系统") {
return full.amounts;
} else {
return full.gwamounts;
}
}
},
{
data: 'online', render: function (data, type, full, meta) {
if (tiggleValue === "系统") {
data = full.online;
} else {
data = full.gwonline;
}
if (Number(data) === 3.1415) {
return "/";
} else if (Number(data) === 3.14159) {
return "(暂无数据)";
} else {
return data;
}
}
}
],
})
}
//描绘终端厂家图
function drawCompanyPic(company, intervals) {
var xTip;
if (tiggleValue === "系统") {
xTip = '终端厂家\n(终端数)\n';
} else {
xTip = '终端厂家\n(监测点数)\n';
}
$("#company").css("height", picHeight);
var comOption = echarts.init($("#company")[0]);
var rate = [];
var areas = [];
if (null != company) {
for (var i = 0; i < company.length; i++) {
var onlineRate;
if (tiggleValue === "系统") {
areas[i] = company[i].name + "\n(" + company[i].amounts + ")";
onlineRate = Number(company[i].online);
} else {
areas[i] = company[i].name + "\n(" + company[i].gwamounts + ")";
onlineRate = Number(company[i].gwonline);
}
var singleData = {};
var item = {};
item.color = getColor(onlineRate);
if (onlineRate < 3.1414) {
singleData.value = 3.1415;
item.actual = onlineRate;
} else {
singleData.value = onlineRate;
}
singleData.itemStyle = item;
rate[i] = singleData;
}
}
var option = {
backgroundColor: canvasBG,//背景色
title: {
text: '终端厂家',
x: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function (params) {
var color = params[0].color;
var tips = "";
tips += params[0].name;
if (color === noMonitor) {
tips += '<br/>' + params[0].seriesName + ' : /';
} else if (color === noData) {
tips += '<br/>' + params[0].seriesName + ' : (暂无数据)';
} else {
if (params[0].data.itemStyle.actual !== undefined) {
tips += '<br/>' + params[0].seriesName + ' : ' + params[0].data.itemStyle.actual;
} else {
tips += '<br/>' + params[0].seriesName + ' : ' + params[0].value;
}
}
return tips;
}
},
//控制图标在dataroom中的位置大小
grid: {
left: '1%',
right: '10%',
bottom: '3%',
containLabel: true
},
xAxis: [{
type: 'category',
data: areas,
name: xTip,
splitLine: {
show: false
},
axisLabel: {
show: true,
interval: intervals
}
}],
yAxis: [{
type: 'value',
name: '%',
min: '0',
max: '100'
}],
series: [{
name: '在线率',
type: 'bar',
barMaxWidth: barMax,
data: rate
}]
};
comOption.setOption(option);
comOption.on('click', function (params) {
if (getRole("/pqs9000/area/onlineratetable") == 1) {
window.top.addTab('/pqs9000/area/onlineratetable?startTime=' + startTime + '&endTime=' + endTime + '&interval=月份', '在线率列表')
}
});
}
//填充终端厂家表格
function initCompanyTable(data) {
var height = picHeight - 50;
if (data == null) {
data = [];
}
$("#companyTable").DataTable({
data: data,
autoWidth: false,
columnDefs: [
{"width": "33%", "targets": 0},
{"width": "33%", "targets": 1},
{"width": "33%", "targets": 2}
],
order: [2, "desc"],
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 === "系统") {
return full.amounts;
} else {
return full.gwamounts;
}
}
},
{
data: 'online', render: function (data, type, full, meta) {
if (tiggleValue === "系统") {
data = full.online;
} else {
data = full.gwonline;
}
if (Number(data) === 3.1415) {
return "/";
} else if (Number(data) === 3.14159) {
return "(暂无数据)";
} else {
return data;
}
}
}
],
})
}
/**
* 获取指定区域下终端的在线率具体数据最多10条
*/
function showDetailData(content, title) {
layer.open({
type: 2,
title: title + '终端在线率详情前10',
shadeClose: true,
resize: false,
area: '650px',
scrollbar: false,
content: content
})
}
//开关触发图片更新
function reDrawAllPic() {
if (tiggleValue === "系统") {
$("#typeTitle").html("终端数");
$("#typeTitle1").html("终端数");
} else {
$("#typeTitle").html("监测点数");
$("#typeTitle1").html("监测点数");
}
if (areaResult === null) {
drawAreaPic(null);
initAreaTable(null);
} else {
drawAreaPic(areaResult);
initAreaTable(areaResult);
}
if (companyResult === null) {
drawCompanyPic(null);
initCompanyTable(null);
} else {
drawCompanyPic(companyResult);
initCompanyTable(companyResult);
}
}
//根据在线率获取颜色
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;
}
}