HM-SPMS/web/nginx/html/js/qushi.js

1750 lines
53 KiB
JavaScript
Raw Normal View History

2026-01-06 04:47:40 +08:00
window.series = [];
window.flag = true;
// var xyFontColor = "#999"; //曲线XY轴默认字体颜色
// var boderColor = "#D2D5D9"; //曲线边框默认颜色
// if (userInfo != "") {
//根据外层框架信息切换主题色
var theme = localStorage.getItem('configTheme');
xyFontColor = theme == 'dark' ? '#fff' : '#000';
boderColor = theme == 'dark' ? '#3a548a' : '#dcdfe6';
// }
function getCollect() {
$.ajax({
url: '/report/monitorBusiness/selectTrendCollection',
dataType: 'json',
type: 'get',
success: function(res) {
if (res.operateFlag) {
for (var i = 0, str = ''; i < res.rows.length; i++) {
var d = res.rows[i];
var v = JSON.parse(d.SNAME);
for (
var j = 0, treeCode = '', sname = '';
j < v.length;
j++
) {
var temp = v[j];
treeCode =
treeCode + (!treeCode ? '' : ';') + temp.treeCode;
sname = sname + (!sname ? '' : ';') + temp.sanme;
}
str +=
'<li class="" data-id="' +
d.ID +
'" data-treeCode="' +
treeCode +
'" data-sanme="' +
sname +
'"><span >' +
d.NAME +
'</span><em class="collectdelete">×</em></li>';
}
$('#collectlist').html(str);
}
}
});
}
getCollect();
var propertyNode, allNodes;
$.ajax({
url: '/report/emsBusiness/findStationLocationMS',
type: 'get',
data: {
type: 2
},
dataType: 'json',
success: function(res) {
if (res.operateFlag) {
var obj = dataOp(res.mapData.stationLocationMS, []);
initTree(obj.all);
propertyNode = obj.obj;
allNodes = res.mapData.stationLocationMS.reduce(function(o, v, i) {
o[v.treeCode] = v;
return o;
}, {});
initEcharts('chart');
// getDevice(obj.ids.join(';'), obj.all, function (param, treeData) {
// // initTree(obj.all);
// getProperty(param.join(';'), treeData, function (p, t) {
// // var z=initTree(t);
// });
// });
}
}
});
function getDevice(param, treeData, fn) {
$.ajax({
url: '/report/emsBusiness/findDeviceMSByLocationCode',
type: 'get',
data: {
locations: param
},
dataType: 'json',
success: function(res) {
if (res.operateFlag) {
var obj = dataOp(res.mapData.deviceMS);
Array.prototype.push.apply(treeData, obj.all);
fn(obj.ids, treeData);
}
}
});
}
function getProperty(param, treeData, fn) {
$.ajax({
url: '/report/emsBusiness/findDevicePropertyMS',
type: 'post',
data: {
devices: param
},
dataType: 'json',
success: function(res) {
if (res.operateFlag) {
var obj = dataOp(res.mapData.devicePropertyMS);
Array.prototype.push.apply(treeData, obj.all);
fn(obj.ids, treeData);
}
}
});
}
function dataOp(arr) {
var result = [],
ids = [],
obj = {};
// var tree = $.fn.zTree.getZTreeObj('device_list');
for (var i = 0; i < arr.length; i++) {
var d = arr[i];
ids.push(d.type == 1 ? d.id : d.code);
if (d.type == 1) {
d.treePCode = 'root';
}
var _flag = isNaN(d.type) || d.type > 3;
var _data = {
treeCode: d.treeCode,
treePCode: d.treePCode,
code: d.sname || d.code,
sname: d.sname || d.code,
unitCode: d.unitCode,
unitName: d.unitName,
oid: d.id,
name: d.name,
type: !d.type ? 3 : d.type,
nocheck: !_flag,
isParent: !_flag,
isHidden: false
};
if (!_flag) {
result.push(_data);
}
if (obj[d.treePCode] === undefined) {
obj[d.treePCode] = {
node: {},
child: []
};
// obj[d.treePCode].node = tree.getNodeByParam('treeCode', d.treePCode);
}
// tree.addNodes(obj[d.treePCode].node,-1,_data,true);
obj[d.treePCode].child.push(_data);
}
// for (var k in obj) {
// tree.addNodes(obj[k].node, -1, obj[k].child, true);
// }
return {
ids: ids,
all: result,
obj: obj
};
}
var Timer;
function gethis() {
if (Timer) {
clearTimeout(Timer);
}
Timer = setTimeout(function() {
getData('treeCode');
}, 200);
}
function getrtdata(node) {
var tree = $.fn.zTree.getZTreeObj('device_list');
var nodes = tree.getCheckedNodes();
var checkednodes = {};
var code = nodes.reduce(function(o, v, i) {
// if (v.code !== node.code||(v.code == node.code&&node.check)) {
if (o) {
o = o + ';';
}
checkednodes[v.sname] = v;
checkednodes[v.code] = v;
o = o + v.code;
// }
return o;
}, '');
$.fn.checkednodes = checkednodes;
if (wsb) {
wsb.send({
code: code
});
}
// var param = {};
// param[node.type] = node.treeCode;
// getHistoryData(param);
}
function initTree(data) {
var setting = {
data: {
simpleData: {
enable: true,
idKey: 'treeCode',
pIdKey: 'treePCode',
rootPId: ''
}
},
view: {
showLine: false,
expandSpeed: 'fast',
showIcon: false
},
check: {
enable: true,
chkStyle: 'checkbox'
},
callback: {
onCheck: function(event, id, node) {
$('#linedb').removeClass('cur'); //取消对比效果
var el = $('#collectlist').find('.cur'); //查询收藏中选中的项
if (el[0]) {
//如果有就清空
el.removeClass('cur');
Commdata = {};
}
var len = Object.keys(Commdata);
if (node.checked && len.length >= 10) {
var tree = $.fn.zTree.getZTreeObj('device_list');
layer.msg(langJson.itemTooMuch);
tree.checkNode(node, false, true);
return false;
}
//处理数据
if (!node.checked) {
//如果是取消就设置选中
var ec = echarts.getInstanceByDom(
document.getElementById('chart')
);
var name = node.name + '[' + node.treeCode + ']';
setTimeout(function() {
ec.dispatchAction({
type: 'legendSelect',
name: name
});
}, 16);
delete Commdata[node.code];
} else {
Commdata[node.code] = [];
}
codeData(node);
tabelDom(node);
},
onClick: function(event, id, node) {
var tree = $.fn.zTree.getZTreeObj('device_list');
if (node.isParent) {
// 有可能第一次展开时可能children还没渲染用expandNode无法展开需要手动点+号展开。
if (node.children === undefined) {
$(event.target)
.closest('li')
.children('span:first-child')
.trigger('click');
} else {
tree.expandNode(node, true);
}
} else {
tree.checkNode(node, undefined, false, true);
}
},
beforeExpand: function(id, node) {
// getProperty(node.treeCode+';', [], function (p, t,obj) {
// console.log(obj)
// });
if (
node.isParent &&
node.children &&
node.children.length > 0
) {
return true;
}
var tree = $.fn.zTree.getZTreeObj('device_list');
var pnode = propertyNode[node.treeCode];
if (pnode === undefined) {
pnode = {};
}
tree.addNodes(node, 0, pnode.child, true);
return true;
}
}
};
var zTreeObj = $.fn.zTree.init($('#device_list'), setting, data);
//删除在顶层显示,而不是顶层的数据
// zTreeObj.getNodes().map(function(v, i, a) {
// if (v.type != 1) {
// (function(v) {
// setTimeout(function() {
// zTreeObj.removeNode(v);
// }, 20);
// })(v);
// }
// });
// //删除没有子级的父级节点
// zTreeObj.getNodesByParam("isParent", true).map(function(v, i, a) {
// if (zTreeObj.getNodesByParam("treePCode", v.treeCode).length == 0) {
// (function(v) {
// setTimeout(function() {
// zTreeObj.removeNode(v);
// }, 20);
// })(v);
// }
// });
return zTreeObj;
}
function codeData(node) {
if ($('.small.cur').attr('data-date') !== 'time') {
gethis();
} else {
//处理实时数据
if (!node.checked) {
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
var option = ec.getOption();
//去除echart线
var name = node.name + '[' + node.treeCode + ']';
var temp = [];
option.series.map(function(v, i, a) {
if (v.name != name) {
temp.push(v);
} else {
a.splice(i, 1);
}
});
ec.setOption(option, true);
}
}
getrtdata(node);
}
function getXAxis(timestrap) {
var date = !timestrap ? dayjs() : dayjs(timestrap);
var xAxis = {
color: xyFontColor,
type: 'time',
splitNumber: 10,
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: boderColor
}
},
axisLabel: {
color: xyFontColor
}
};
var cur = $('.small.cur').attr('data-date');
if (cur == 'time') {
xAxis.max = date.endOf('minutes').valueOf();
xAxis.min = date
.endOf('minutes')
.subtract(10, 'minutes')
.valueOf();
xAxis.axisLabel.formatter = function(time, index) {
var t = dayjs(time).format('HH:mm:ss');
if (time === '') {
return '';
}
return t;
};
} else {
var param = getSelectedDate();
xAxis.min = param.start.valueOf();
xAxis.max = param.end.valueOf();
}
return xAxis;
}
function getDefaultOption() {
var xAxis = getXAxis();
return {
title: {
textAlign: 'left',
textStyle: {
color: xyFontColor
}
},
tooltip: {
trigger: 'axis',
appendToBody: true,
confine: true
},
grid: {
left: 60,
right: 30,
top: 10,
bottom: 34,
show: true,
containLabel: false, //是否包含坐标轴的刻度标签
/*backgroundColor:'#ccc',*/
borderColor: boderColor,
borderWidth: 1
},
legend: {
show: false
},
dataZoom: {
type: 'inside',
filterModel: 'none',
start: 0,
end: 100,
minSpan: 10
},
xAxis: xAxis,
yAxis: [
{
type: 'value',
// min: function(value) {
// return value.min > 0 ? 0 : value.min;
// },
boundaryGap: ['20%', '20%'],
scale: true,
splitLine: {
lineStyle: {
color: boderColor
}
},
axisLine: {
lineStyle: {
color: boderColor
}
},
axisLabel: {
color: xyFontColor,
formatter: '{value}'
}
}
]
};
}
function initEcharts(id, flag) {
var dom = document.getElementById(id);
if (!dom) {
return false;
}
if (window.ec) {
echarts.dispose(dom);
}
if (flag) {
return false;
}
var mec = echarts.init(dom, 'halloween' /*,ops*/);
// var op = ;
//点击弹出事件弹框
// mec.on('click', function (param) {
// var bt = dayjs(param.data[0]),
// fm = 'YYYY-MM-DD HH:mm:ss';
// var obj = {
// startTime: bt.format(fm),
// snames: param.seriesId,
// endTime: ''
// }
// switch ($('.small.cur').attr('data-date')) {
// case 'day':
// obj.endTime = bt.add(5, 'minute').format(fm);
// break;
// case 'week':
// obj.endTime = bt.add(30, 'minute').format(fm);
// break;
// case 'month':
// obj.endTime = bt.add(2, 'hour').format(fm);
// break;
// case 'season':
// obj.endTime = bt.add(6, 'hour').format(fm);
// break;
// case 'year':
// obj.endTime = bt.add(1, 'day').format(fm);
// break;
// }
// getEvent(obj);
// $('#dialog').show();
// });
// var timer;
//缩放事件
// mec.on('datazoom', function (event) {
// if (timer) {
// clearTimeout(timer);
// }
// var start = +new Date(2019, 0, 1, 0, 0, 0, 0);
// timer = setTimeout(function () {
// var end = dayjs(Math.round(start + (event.batch[0].end * 1000 * 3600 * 24 * 365 / 100))).format('YYYY-MM-DD HH:mm:ss');
// var sta = dayjs(Math.round(start + (event.batch[0].start * 1000 * 3600 * 24 * 365 / 100))).format('YYYY-MM-DD HH:mm:ss');
// }, 300)
// })
mec.setOption(getDefaultOption(), true);
window.ec = mec;
window.onresize = function() {
//ecahrts窗口自适应
window.ec.resize();
};
// window.series = mec.getOption().series;
}
function hisEchartSetOption(data, param) {
var tree = $.fn.zTree.getZTreeObj('device_list');
if (tree) {
var nodelist = tree.getCheckedNodes(true);
for (var i = 0, obj = {}, nodearr = []; i < nodelist.length; i++) {
var d = nodelist[i];
if (d.isParent) {
continue;
}
obj[d.treeCode] = d;
nodearr.push({
code: d.treeCode,
name: d.name
});
}
}
var defaultOption=getDefaultOption();
var series = [],
yAxis = [
{
type: 'value',
show: true,
position: 'left',
scale: true,
offset: 0,
splitLine: {
lineStyle: {
color: boderColor
}
},
axisLine: {
lineStyle: {
color: boderColor
}
},
axisLabel: {
color: xyFontColor,
formatter: '{value}'
}
}
],
xAxis = Object.assign({}, defaultOption.xAxis,{
type: 'time',
splitNumber: 10,
splitLine: {
show: false
},
axisLine: {
lineStyle: {
color: boderColor
}
},
axisLabel: {
color: xyFontColor
}
});
for (var i = 0; i < nodearr.length; i++) {
var k = nodearr[i].code;
series.push({
name: nodearr[i].name + '[' + k + ']',
id: k,
yAxisIndex: 0,
type: 'line',
sampling: 'average',
lineStyle: {
normal: {
width: 1
},
width: 1
},
symbol: 'roundRect',
symbolSize: 1,
showAllSymbol: false,
data: data[k] === undefined ? [] : data[k].arr
});
yAxis.push({
type: 'value',
show: false,
position: 'left',
scale: true,
offset: 0,
axisLabel: {
formatter: '{value}'
}
});
}
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
var option = ec.getOption();
ec.clear();
var sj = '';
option.xAxis = xAxis;
option.yAxis = yAxis;
option.series = series;
// sj='事件:' + data[p.seriesName].obj[p.value[0]].eventNum;
option.tooltip = {
trigger: 'axis',
formatter: function(param) {
for (var i = 0, str = ''; i < param.length; i++) {
var p = param[i];
str +=
'<tr style="color:' +
p.color +
'"><td rowspan="2">' +
p.marker +
'</td><td colspan="2">' +
obj[p.seriesId].name +
'</td></tr>' +
'<tr style="color:' +
p.color +
'"><td>' +
langJson.value +
'' +
p.value[1] +
'</td><td>' +
sj +
'</td></tr>';
}
str = '<p>' + param[0].value[0] + '</p><table>' + str + '</table>';
return str;
}
};
ec.setOption(option, true);
}
function setDefaultX(param) {
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
ec.setOption({
xAxis: {
max: param.startTime,
min: param.endTime
}
});
}
function getData() {
var codes = getNode('treeCode');
if (!codes) {
//清除ec数据
hisEchartSetOption();
return false;
}
var param = getSelectedDate();
if(isNaN(param.interval)){
return false
}
if (Object.keys(codes).length == 0) {
param.snames = '';
} else {
param.snames = JSON.stringify(codes);
}
//设置默认X轴
// setDefaultX(param)
layer.load(1, {
shade: [0.1, '#000']
});
$.ajax({
url: '/report/monitorBusiness/queryTrendDataFromInfuxdb',
type: 'post',
data: {
startTime: param.startTime,
endTime: param.endTime,
interval: param.interval,
snames: param.snames
},
dataType: 'json',
success: function(res) {
curData = res.rows || [];
layer.closeAll();
if (res.operateFlag == false) {
layer.msg(langJson.err);
return false;
}
// var _temp_ = [1, 10, 100];
var tree = $.fn.zTree.getZTreeObj('device_list');
for (var i = 0, obj = {}, _obj = {}; i < res.rows.length; i++) {
var d = res.rows[i];
var node = tree.getNodeByParam('treeCode', d.sname);
d.dateTime = d.dateTime.replace(/[\-]/g, '/');
if (obj[d.sname] === undefined) {
obj[d.sname] = {
arr: [],
obj: {}
// _random_: _temp_[Math.round(Math.random() * 10) % 3]
};
}
if (_obj[node.sname] === undefined) {
_obj[node.sname] = {
arr: [],
obj: {}
// _random_: _temp_[Math.round(Math.random() * 10) % 3]
};
}
if (isNaN(d.data) || d.data === '' || d.data === null) {
//实际取值
d.data = '';
//模拟数据
// var numb = obj[d.sname]._random_;
// d.data = Math.round(Math.random() * (numb * 100 - numb * 10) + (numb * 10));
} else {
d.data = Number(d.data).toFixed(2);
}
obj[d.sname].arr.push([d.dateTime, d.data]);
obj[d.sname].obj[d.dateTime] = d;
_obj[node.sname].arr.push([d.dateTime, d.data]);
_obj[node.sname].obj[d.dateTime] = d;
}
//设置曲线
try {
hisEchartSetOption(obj, param);
} catch (error) {
console.error(error);
}
//设置表格的值
try {
initTable(_obj);
} catch (error) {
console.error(error);
}
// 重置
try {
$('#tbody')
.find('tbody')
.html(makeTbody(['dateTime', 'sname', 'data']));
} catch (error) {
console.error(error);
}
},
complete: function() {
layer.closeAll();
}
});
}
function tabelDom(node) {
var color = [
'#ff7200',
'#fff600',
'#46d500',
'#00ffba',
'#00adf6',
'#00f6ff',
'#cc00ff',
'#ffa200',
'#35dc8b',
'#006cff',
'#c23531',
'#2f4554',
'#61a0a8',
'#d48265',
'#91c7ae',
'#749f83',
'#ca8822',
'#bda29a',
'#c4ccd3'
];
// if ($('.table').find('table')[0] && node && node.checked) {
// var c = $('.table').find('tr').length - 1;
// $('.table').find('table').append('<tr><td><label><input type="checkbox" name="t_row" value="' + node.treeCode + '" checked>' + node.name + '</label></td><td><i class="show-color" style="background-color:' + color[c % color.length] + '"></i></td>' +
// '<td></td><td></td><td></td><td>' + node.unitName + '</td></tr>');
// return false;
// }
var tree = $.fn.zTree.getZTreeObj('device_list');
if (tree) {
var nodelist = tree.getCheckedNodes(true);
for (var i = 0, o = {}, nodearr = []; i < nodelist.length; i++) {
var d = nodelist[i];
if (d.isParent) {
continue;
}
o[d.code] = d;
nodearr.push(d.code);
}
}
var tdlist = [
'<tr><th>' +
langJson.name +
'</th><th>' +
langJson.color +
'</th><th>' +
langJson.max +
'</th><th>' +
langJson.min +
'</th><th>' +
langJson.average +
'</th><th>' +
langJson.unit +
'</th></tr>'
];
for (var l = 0; l < nodearr.length; l++) {
var k = nodearr[l];
str =
'<tr><td><label><input type="checkbox" name="t_row" value="' +
k +
'" checked>' +
o[k].name +
'</label></td><td><i class="show-color" style="background-color:' +
color[l % color.length] +
'"></i></td>' +
'<td></td><td></td><td></td><td>' +
o[k].unitName +
'</td></tr>';
tdlist.push(str);
}
$('.table').html('<table>' + tdlist.join('') + '</table>');
}
function initTable(obj) {
var tdlist = {};
for (var l in obj) {
var k = obj[l];
for (
var i = 0, max = '', min = '', sum = 0;
i < obj[l].arr.length;
i++
) {
var _d = obj[l].arr[i];
if (_d instanceof Array) {
_d = _d[1];
} else {
_d = _d.value[1];
}
if (isNaN(_d) || _d === '' || _d === null) {
continue;
} else {
_d = Number(_d);
}
if (max === '' || _d > max) {
max = _d;
}
if (min === '' || _d < min) {
min = _d;
}
sum = sum + _d;
}
max = isNaN(max) || max === null ? '' : max;
min = isNaN(min) || min === null ? '' : min;
tdlist[l] = {
k: l,
max: max,
min: min,
avg: Number((sum / obj[l].arr.length).toFixed(2))
};
}
var key;
$('.table td').each(function(i, e) {
// var pindex=$(e).parent().index();
var sindex = $(e).index();
if (sindex === 0) {
key = $(e)
.find('input')
.val();
} else if (sindex === 2) {
$(e).html(tdlist[key] ? tdlist[key].max : '');
} else if (sindex === 3) {
$(e).html(tdlist[key] ? tdlist[key].min : '');
} else if (sindex === 4) {
$(e).html(tdlist[key] ? tdlist[key].avg : '');
}
});
}
function getSelectedDate() {
var seasonList = [
{
name: '第一季度',
start: '01-01',
end: '03-31'
},
{
name: '第二季度',
start: '04-01',
end: '06-30'
},
{
name: '第三季度',
start: '07-01',
end: '09-30'
},
{
name: '第四季度',
start: '10-01',
end: '12-31'
}
];
var param = {
curtime: $('#datetime').val(),
interval: 5 // / 60
};
if (!param.curtime) {
param.curtime = dayjs().format('YYYY-MM-DD');
}
//interval=5/60,30/60,2,6,24
var cls = $('.small.cur').attr('data-date');
var _str = ' 00:00:00';
if (cls == 'week') {
param.interval = 30 // 60;
param.startTime = dayjs(param.curtime + _str)
.startOf('week')
.format('YYYY-MM-DD');
param.endTime = dayjs(param.curtime + _str)
.endOf('week')
.format('YYYY-MM-DD');
param.start = dayjs(param.curtime + _str).startOf('week');
param.end = param.start.add(1, 'week');
} else if (cls == 'month') {
param.interval = 2*60;
param.startTime = dayjs(param.curtime + _str)
.startOf('month')
.format('YYYY-MM-DD');
param.endTime = dayjs(param.curtime + _str)
.endOf('month')
.format('YYYY-MM-DD');
param.start = dayjs(param.curtime + _str).startOf('month');
param.end = param.start.add(1, 'month');
} else if (cls == 'season') {
param.interval = 6*60;
var seaYear = dayjs(param.curtime + _str).year();
for (var i = 0; i < seasonList.length; i++) {
var v = seasonList[i];
if (
!dayjs(param.curtime + _str).isAfter(
dayjs(seaYear + '-' + v.end + _str)
)
) {
param.startTime = dayjs(seaYear + '-' + v.start + _str)
.startOf('month')
.format('YYYY-MM-DD');
param.endTime = dayjs(seaYear + '-' + v.end + _str)
.endOf('month')
.format('YYYY-MM-DD');
param.start = dayjs(seaYear + '-' + v.start + _str).startOf(
'month'
);
param.end = param.start.add(3, 'month');
break;
}
}
} else if (cls == 'year') {
param.interval = 24*60;
param.startTime = dayjs(param.curtime + _str)
.startOf('year')
.format('YYYY-MM-DD');
param.endTime = dayjs(param.curtime + _str)
.endOf('year')
.format('YYYY-MM-DD');
param.start = dayjs(param.curtime + _str).startOf('year');
param.end = param.start.add(1, 'year');
} else if (cls == 'day') {
param.interval = 5 // 60;
param.startTime = dayjs(param.curtime + _str).format('YYYY-MM-DD');
param.endTime = dayjs(param.curtime + _str).format('YYYY-MM-DD');
param.start = dayjs(param.curtime + _str);
param.end = dayjs(param.curtime + _str).add(1, 'day');
} else if (cls == 'defined') {
var start = $('#startDate').val();
var end = $('#endDate').val();
param.interval = $('#definedInterval').val();
param.startTime = dayjs(start + _str).format('YYYY-MM-DD');
param.endTime = dayjs(end + _str).format('YYYY-MM-DD');
param.start = dayjs(start + _str);
param.end = dayjs(end + _str).add(1, 'day');
}
return param;
}
function getNode(key) {
var tree = $.fn.zTree.getZTreeObj('device_list');
var codes = {};
if (tree) {
var nodelist = tree.getCheckedNodes(true);
nodelist.length == 0 && (codes = false);
for (var i = 0; i < nodelist.length; i++) {
var d = nodelist[i];
if (d.isParent) {
continue;
}
if (!codes[d.type]) {
codes[d.type] = [];
}
codes[d.type].push(d[key]);
}
}
return codes;
}
function getEvent(obj) {
// obj.snames='qy1.dlq_a04;qy1.glkg_a04_1;qy1.jgxh_a01';
// obj.startTime='2019-01-01 01:40:00';
// obj.endTime='2019-01-19 01:40:00';
$('#page').initPage({
ajax: {
url: '/report/monitorBusiness/queryEventMsFromInfuxdb',
type: 'post',
data: obj,
dataType: 'json',
success: function(res) {
var head = [
{
name: langJson.time,
key: 'TIME_STAMP'
},
{
name: langJson.priority,
key: 'PRIORITY_NAME'
},
{
name: langJson.location,
key: 'LOCATION_ID_NAME'
},
{
name: langJson.almStatus,
key: 'ALM_STATUS_NAME'
},
{
name: langJson.devType,
key: 'DEV_TYPE_NAME'
},
{
name: langJson.content,
key: 'CONTENT'
}
];
createTable(head, res.rows);
$('#dialog').show();
}
},
resKey: {
pageSize: 'rows',
curPage: 'page',
sumPage: 'records'
},
pageSize: 1000,
curPage: 1
});
}
function createTable(head, rows) {
for (var i = 0, hstr = '<th></th>', barr = []; i < head.length; i++) {
var _h = head[i];
hstr += '<th>' + _h.name + '</th>';
for (var r = 0; r < rows.length; r++) {
var _d = rows[r];
if (i === 0) {
barr[r] = '<td></td>';
}
barr[r] += '<td>' + _d[_h.key] + '</td>';
}
}
var table = $('#table');
table.find('thead').html('<tr>' + hstr + '</tr>');
table.find('tbody').html('<tr>' + barr.join('</tr><tr>') + '</tr>');
}
function makeTbody(keys) {
var exception = [];
$('.table')
.find('input[type=checkbox]:not(:checked)')
.each(function(i, e) {
exception.push($(e).val());
});
var tree = $.fn.zTree.getZTreeObj('device_list').getCheckedNodes(true);
var names = tree.reduce(function(o, v, i) {
o[v.sname] = v.name;
return o;
}, {});
return curData.reduce(function(o, v, i) {
if (!(exception.length > 0 && exception.indexOf(v.sname) !== -1)) {
o +=
'<tr>' +
keys.reduce(function(r, c) {
if (c == 'sname') {
r += '<td>' + names[v[c]] + '</td>';
} else {
r += '<td>' + v[c] + '</td>';
}
return r;
}, '') +
'</tr>';
}
return o;
}, '');
}
function definedQuery(){
$('.small.cur').trigger('click');
}
$(function() {
$('#datetime').val(dayjs().format('YYYY-MM-DD'));
$('#endDate').val(dayjs().format('YYYY-MM-DD'));
$('#startDate').val(
dayjs()
.subtract(1, 'day')
.format('YYYY-MM-DD')
);
function initInterval(){
var options={
5:{
interval:5,
label:'五分钟',
diffDays:1,// 间隔对应的最大相差天数
},
10:{
interval:10,
label:'十分钟',
diffDays:3,
},
30:{
interval:30,
label:'三十分钟',
diffDays:7,
},
60:{
interval:60,
label:'一小时',
diffDays:15,
},
120:{
interval:120,
label:'两小时',
diffDays:31,
},
360:{
interval:360,
label:'六小时',
diffDays:92,
},
480:{
interval:480,
label:'八小时',
diffDays:122,
},
720:{
interval:720,
label:'十二小时',
diffDays:185,
},
1440:{
interval:1440,
label:'一天',
diffDays:366,
},
}
var intervalList=Object.keys(options).sort(function(a,b){return b-a});
var start = $('#startDate').val();
var end = $('#endDate').val();
var diffDays=Math.abs(dayjs(end).diff(dayjs(start),'day'));
// 开始时间大于结束时间
if (dayjs(start).isAfter(dayjs(end))) {
layer.msg('开始时间大于结束时间');
return false;
}
// 开始时间和结束时间相差1年以上
if(diffDays>options[intervalList[0]].diffDays){
layer.msg('开始时间和结束时间相差1年以上');
return false;
}
var optionsStr='';
for (var i = 0; i < intervalList.length; i++) {
var intv = options[intervalList[i]];
if(diffDays<=intv.diffDays){
var optiv=options[intervalList[i+1]]
var selected=optiv&&diffDays>optiv.diffDays;
optionsStr='<option value="'+intv.interval+'" data-diff="'+intv.diffDays+'" '+(selected?"selected":"")+'>'+intv.label+'</option>'+optionsStr
}else{
break;
}
}
$('.defined-interval').html(optionsStr);
}
$('.Wdate').on('click', function() {
var option = {
el: this,
isShowClear: false,
firstDayOfWeek: 1,
dateFmt: 'yyyy-MM-dd',
onpicked: function(date) {
initInterval();
}
};
WdatePicker(option);
});
initInterval();
$('.show-chart').on('click', function() {
$(this).hide(200);
$('#chart_table').hide(200);
$('.show-table').show(200);
$('#chart').show(200);
return false;
});
$('.show-table').on('click', function() {
$(this).hide(200);
$('#chart').hide(200);
$('.show-chart').show(200);
$('#chart_table').show(200);
return false;
});
$('#collectlist').on('click', 'em.collectdelete', function() {
var el = $(this);
var id = el.parent().attr('data-id');
layer.confirm(
langJson.deleteFavorite,
{
title: langJson.delete,
skin: 'colldialog',
btn: [langJson.confirm, langJson.cancel]
},
function() {
$.ajax({
url: '/report/monitorBusiness/deleteTrendCollectionList',
data: {
ids: id
},
type: 'get',
dataType: 'json',
success: function(res) {
if (res.operateFlag) {
layer.closeAll();
layer.msg(langJson.delSuccess);
el.parent().remove();
}
}
});
}
);
return false;
});
function addNodeFromParent(treeCode) {
var tree = $.fn.zTree.getZTreeObj('device_list');
var node = null,
code = [treeCode];
while (node === null) {
var last = code[code.length - 1];
node = tree.getNodeByParam('treeCode', last);
if (node === null) {
code.push(allNodes[last].treePCode);
}
}
for (var i = code.length - 1; i > 0; i--) {
tree.addNodes(node, 0, propertyNode[code[i]].child, true);
node = tree.getNodeByParam('treeCode', code[i]);
}
if (treeCode === node.treeCode) {
return node;
} else {
return tree.getNodeByParam('treeCode', treeCode);
}
}
$('#collectlist').on('dblclick', 'li', function() {
var tree = $.fn.zTree.getZTreeObj('device_list');
tree.checkAllNodes(false);
$('.table table').remove();
// initEcharts("chart");
Commdata = {};
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
var option = ec.getOption();
option.series = [];
ec.setOption(option, true);
var treeCode = $(this)
.attr('data-treeCode')
.split(';');
for (var i = 0; i < treeCode.length; i++) {
var node = tree.getNodeByParam('treeCode', treeCode[i]);
if (node === null) {
node = addNodeFromParent(treeCode[i]);
}
tree.checkNode(node, true, true, true);
var _p = node.getParentNode();
while (_p) {
tree.expandNode(_p, true);
_p = _p.getParentNode();
}
}
$(this)
.parent()
.find('.cur')
.removeClass('cur');
$(this).addClass('cur');
});
$('#collect').on('click', function() {
var checked = [];
var tree = $.fn.zTree.getZTreeObj('device_list');
$('input[name=t_row]:checked').each(function(i, e) {
var v = $(e).val();
var node = tree.getNodeByParam('code', v);
checked.push({
treeCode: node.treeCode,
sname: node.sname
});
});
$('input[name=collectname]').val('');
if (checked.length == 0) {
layer.msg(langJson.noSelect);
} else {
layer.open({
type: 1,
title: langJson.collection,
skin: 'colldialog',
area: ['326px', '230px'],
btn: [langJson.submit, langJson.cancel],
content: $('#collectdialog'),
yes: function() {
var name = $('input[name=collectname]').val();
if (!name) {
layer.msg(langJson.collectName);
return false;
}
if (!name.match(/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/)) {
layer.msg(langJson.hasSpecial);
return false;
}
var flag = true;
$('#collectlist li').each(function(i, e) {
var str = $(e)
.find('span')
.html();
if (str == name) {
flag = false;
return false;
}
});
if (!flag) {
layer.msg(langJson.hasRepeat);
return false;
}
$.ajax({
url: '/report/monitorBusiness/inserTrendCollection',
data: {
name: name,
snames: JSON.stringify(checked)
},
type: 'post',
dataType: 'json',
success: function(res) {
if (res.operateFlag) {
layer.closeAll();
layer.msg(langJson.collectSuc);
getCollect();
}
}
});
}
});
}
});
$('#changecollect').on('click', 'a.btn', function() {
if ($(this).hasClass('collectlist')) {
$('#device_list').hide();
$('#device_list')
.prev()
.hide();
$('#collectlist').show();
} else {
$('#collectlist').hide();
$('#device_list').show();
$('#device_list')
.prev()
.show();
}
$(this)
.parent()
.find('.cur')
.removeClass('cur');
$(this).addClass('cur');
});
$('#treeFilter').on('click', function() {
var tree = $.fn.zTree.getZTreeObj('device_list');
var metaChar = '[\\[\\]\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]';
var rexMeta = new RegExp(metaChar, 'gi');
var nodelist = tree.getNodes();
var txt = $('#filterText').val() || '';
if (txt === '') {
var nodes = tree.getNodesByParam('isHidden', true);
tree.showNodes(nodes);
return false;
} else {
var nodes = tree.getNodesByParam('isHidden', false);
tree.hideNodes(nodes);
}
txt = txt.replace(rexMeta, function(matchStr) {
return '\\' + matchStr;
});
var data = {
nodelist: nodelist,
result: []
};
function fliterNodes(nodes, str) {
var nodelist = nodes.nodelist;
var result = [];
var list = [];
if (nodelist instanceof Array && nodelist.length) {
for (var i = 0; i < nodelist.length; i++) {
var node = nodelist[i];
if (node.name.indexOf(str) !== -1) {
result.push(node);
} else if (node.children && node.children.length) {
list = list.concat(node.children);
}
}
return fliterNodes(
{
nodelist: list,
result: result.concat(nodes.result)
},
str
);
}
return nodes;
}
var showPids = {}; //记录处理过的treeCode,减少消耗
function getPNode(node) {
var result = [];
while (node !== null && node.treeCode) {
if (showPids[node.treeCode] === undefined) {
result.push(node);
showPids[node.treeCode] = 1;
node = node.getParentNode();
} else {
break;
}
}
// if(result.length>0&&showPids[node.treeCode]===undefined){result.push(node)}
return result;
}
var result = fliterNodes(data, txt);
var needShowNodes = [];
for (var i = 0; i < result.result.length; i++) {
var node = result.result[i];
// 获取父节点
var pnode = getPNode(node);
//获取子节点
var child = tree.getNodesByFilter(
function(n) {
return true;
},
false,
node
);
needShowNodes = needShowNodes.concat(pnode, child);
}
tree.showNodes(needShowNodes);
});
$('.table').on('click', 'input[type=checkbox]', function() {
var flag = $(this).is(':checked');
var val = $(this).val();
var text = $(this)
.parent()
.text();
// var name = text + "[" + val + "]";
var name = text;
//判断是不是实时
if ($('button.small.cur').attr('data-date') !== 'time') {
//截掉前面三个.的编码
val = val
.split('.')
.splice(3)
.join('.')
.replace('.value', '');
}
name += '[' + val + ']';
//$("#tbody")
// .find("tbody")
// .html(makeTbody(["dateTime", "sname", "data"]));
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
if (flag) {
ec.dispatchAction({
type: 'legendSelect',
name: name
});
} else {
ec.dispatchAction({
type: 'legendUnSelect',
name: name
});
}
});
$('#btn_option').on('click', 'button', function() {
var keys = Object.keys(Commdata);
if (keys.length == 0) {
layer.msg(langJson.nullItem);
return false;
}
var cls = $(this).hasClass('prev-item');
var val = $('#datetime').val();
var format = $('.small.cur').attr('data-date');
if (format === 'time') {
return false;
}
var m = dayjs(val).month();
if (m <= 2) {
m = 2;
} else if (m <= 5) {
m = 5;
} else if (m <= 8) {
m = 8;
} else if (m <= 11) {
m = 11;
}
if (cls) {
if (format === 'season') {
$('#datetime').val(
dayjs(val)
.month(m)
.subtract(3, 'month')
.format('YYYY-MM-DD')
);
} else {
$('#datetime').val(
dayjs(val)
.subtract(1, format)
.format('YYYY-MM-DD')
);
}
} else {
if (format === 'season') {
$('#datetime').val(
dayjs(val)
.month(m)
.add(3, 'month')
.format('YYYY-MM-DD')
);
} else {
$('#datetime').val(
dayjs(val)
.add(1, format)
.format('YYYY-MM-DD')
);
}
}
setTimeout(function() {
getData();
}, 60);
});
$('.small').on('click', function() {
// echarts.dispose(document.getElementById('chart'));
$('.show-chart').trigger('click');
$('#datetime').val(dayjs().format('YYYY-MM-DD'));
var el = $('.small.cur');
var ele = $(this);
var _name = $(this).attr('data-date');
el.removeClass('cur');
ele.addClass('cur');
initEcharts('chart');
if (_name === 'time') {
$('#btn_option').hide();
$('#linedb').hide();
rtsetEchartOption();
return false;
}
switch (_name) {
case 'day':
$('#btn_option .prev-item').html(langJson.preDay);
$('#btn_option .next-item').html(langJson.nextDay);
break;
case 'week':
$('#btn_option .prev-item').html(langJson.preWeek);
$('#btn_option .next-item').html(langJson.nextWeek);
break;
case 'month':
$('#btn_option .prev-item').html(langJson.preMonth);
$('#btn_option .next-item').html(langJson.nextMonth);
break;
case 'season':
$('#btn_option .prev-item').html(langJson.preSeason);
$('#btn_option .next-item').html(langJson.nextSeason);
break;
case 'year':
$('#btn_option .prev-item').html(langJson.preYear);
$('#btn_option .next-item').html(langJson.nextYear);
break;
}
$('#btn_option').show();
$('#linedb').show();
if (_name === 'defined') {
$('#definedDate').show();
$('#btn_option').hide();
} else {
$('#definedDate').hide();
$('#btn_option').show();
}
getData();
//重置表格选中状态
$('input[name=t_row]').each(function(i, e) {
e.checked = true;
});
});
$('#dialog').on('click', 'p.close em', function() {
$('#dialog').hide();
});
$('#linedb').on('click', function() {
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
var option = ec.getOption();
var series = [];
for (var i = 0; i < option.series.length; i++) {
var d = option.series[i];
if ($(this).hasClass('cur')) {
d.yAxisIndex = 0;
} else {
d.yAxisIndex = i + 1;
}
d.lineStyle.width = 1;
d.lineStyle.normal.width = 1;
series.push(Object.assign({}, d));
}
option.series = series;
if ($(this).hasClass('cur')) {
option.yAxis[0].max = null;
option.yAxis[0].min = null;
} else {
option.yAxis[0].max = 100;
option.yAxis[0].min = 0;
}
$(this).toggleClass('cur');
ec.setOption(option, true);
});
initEcharts('chart');
});
function rtsetEchartOption(time) {
if (!time) {
time = window.restime;
}
if (window.flag && document.visibilityState != 'hidden') {
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
//数据
var obj = JSON.parse(JSON.stringify(Commdata));
window.flag = false;
var tabledata = {};
//echarts
var option = ec.getOption();
var series = [];
//zTree
var tree = $.fn.zTree.getZTreeObj('device_list');
var nodes = tree.getCheckedNodes();
nodes.map(function(v) {
series.push({
name: v.name + '[' + v.code + ']',
id: v.code,
yAxisIndex: 0,
type: 'line',
symbol: 'roundRect',
symbolSize: 1,
showAllSymbol: false,
sampling: 'average',
lineStyle: {
width: 1,
normal: {
width: 1
}
},
data: obj[v.code]
});
tabledata[v.code] = {
arr: obj[v.code]
};
});
// for (var i = 0; i < series.length; i++) {
// var d = series[i];
// d.yAxisIndex = 0;
// if (obj[d.id] !== undefined) {
// d.data = obj[d.id];
// delete obj[d.id];
// }
// tabledata[d.id] = {
// arr: d.data
// };
// }
// for (var k in obj) {
// series.push({
// name: $.fn.checkednodes[k].name + "[" + k + "]",
// id: k,
// yAxisIndex: 0,
// type: "line",
// symbol: "roundRect",
// symbolSize: 1,
// showAllSymbol: false,
// sampling: "average",
// lineStyle: {
// width: 1
// },
// data: obj[k]
// });
// tabledata[k] = {
// arr: obj[k]
// };
// }
option.series = series;
option.tooltip = {
trigger: 'axis',
appendToBody: true,
confine: true
};
// Object.assign({},option.tooltip,{
// formatter: false
// });
option.xAxis = getXAxis(time);
ec.setOption(option, true);
initTable(tabledata);
window.flag = true;
}
}
function setOption(option) {
var ec = echarts.getInstanceByDom(document.getElementById('chart'));
// ec.setOption(
// {
// xAxis: {
// },
// tooltip: {
// formatter: false
// },
// series: series
// },
// false
// );
window.flag = true;
}