HM-SPMS/web/nginx/html/js/view.js
2026-01-06 04:47:40 +08:00

1597 lines
45 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.

$(function() {
var scroll = {
top: false,
left: false
};
$("body .content").scroll(function() {
var position = $("#table tbody tr:first-child")
.find("td:first")
.offset();
var thd = $("#table thead tr:eq(1)")
.find("th:first-child")
.offset();
var leftside = parseFloat($(".content").css("margin-left"));
//判断是否出现纵向固定表头
if (position.left - leftside < 0 && scroll.left === false) {
scroll.left = true;
$("#left").show();
} else if (position.left - leftside >= 0 && scroll.left === true) {
scroll.left = false;
$("#left").hide();
}
if (scroll.left === true) {
$("#left").css("top", position.top);
$("#left").css("left", leftside + "px");
}
//判断是否出现横向向固定表头
if (position.top < 0 && scroll.top === false) {
scroll.top = true;
$("#top").show();
} else if (position.top >= 0 && scroll.top === true) {
scroll.top = false;
$("#top").hide();
}
if (scroll.top === true) {
$("#top").css("left", thd.left);
}
//公共区域表头处理
if (position.left - leftside < 0) {
if (position.top >= 0) {
$("#topleft").css("top", thd.top);
} else {
$("#topleft").css("top", 0);
}
if (position.left - leftside >= 0) {
$("#topleft").css("left", thd.left);
} else {
$("#topleft").css("left", leftside + "px");
}
if ($("#topleft").css("display") == "none") {
$("#topleft").show();
}
} else {
$("#topleft").hide();
}
});
$("#search").on("click", function() {
var index = vm.sketch_index;
var dateType = vm.cur_report_type;
var type = computed.sketch();
//判断是否对比时间
var qtList = [];
vm.checkDate = getInputDate();
if (type.value == "db") {
var all = computed.checked_contrast();
vm.timelist = [];
for (var i = 0; i < all.length; i++) {
var d = all[i];
if (d.value == 0) {
var year = moment(vm.checkDate.startTime).subtract(1, "year");
qtList.push(year.format("YYYY-MM-DD HH"));
vm.timelist.push(
new Date(year.format("YYYY-MM-DD HH:mm:ss")).getTime()
);
} else if (d.value == 1) {
var month = moment(vm.checkDate.startTime).subtract(1, "month");
qtList.push(month.format("YYYY-MM-DD HH"));
vm.timelist.push(
new Date(month.format("YYYY-MM-DD HH:mm:ss")).getTime()
);
} else if (d.value == 2) {
var _en = moment(vm.checkDate.endTime);
qtList.push(_en.format("YYYY-MM-DD HH"));
vm.timelist.push(
new Date(_en.format("YYYY-MM-DD HH:mm:ss")).getTime()
);
} else if (d.value == -1) {
var _st = moment(vm.checkDate.startTime);
qtList.push(_st.format("YYYY-MM-DD HH"));
vm.timelist.push(
new Date(_st.format("YYYY-MM-DD HH:mm:ss")).getTime()
);
}
}
var fm = "YYYY-MM-DD";
if (dateType.value == "month") {
fm = "YYYY-MM";
} else if (dateType.value == "year") {
fm = "YYYY";
}
if (vm.cur_report_style.value == 0) {
for (var i = 0; i < vm.timelist.length; i++) {
$("#table>tbody")
.find("tr:eq(" + i + ")")
.find("th>div")
.html(moment(vm.timelist[i]).format(fm));
}
} else {
for (var i = 0; i < vm.timelist.length; i++) {
$("#table>thead>tr:first+tr")
.find("th:eq(" + (i + 1) + ")>div")
.html(moment(vm.timelist[i]).format(fm));
}
}
}
if (dateType.value == "udf") {
//自定义报表
var intv = Math.floor(vm.report_interval * 60) * 1000 * 60;
var startTime = $("#start").val();
var endTime = $("#end").val();
var rh =
Math.abs(vm.report_s_hours) > 9
? Math.abs(vm.report_s_hours)
: "0" + Math.abs(vm.report_s_hours);
var stime = new Date(startTime + " " + rh + ":00:00").getTime();
var etime = new Date(endTime + " " + rh + ":00:00").getTime();
if (!startTime || !endTime || stime > etime) {
layer.alert(i18n1.viewJs.timewarn, {
icon: 1
});
return false;
}
var temp = stime;
vm.timelist = [];
//保存合计行
if (vm.cur_report_style.value == 0) {
var totals = $(
"#table>tbody>tr:gt(" +
($("#table>tbody>tr").length - vm.checked_total_index.length - 1) +
")"
).clone();
$("#table>tbody>tr:gt(0)").remove();
} else {
$("#table>tbody>tr>td").remove();
}
var head = $("#table thead tr:first+tr");
var firstth = head.find("th:first");
var thstyle = firstth.attr("style");
var totalth = head.find(
"th:gt(" + (head.length - vm.checked_total_index.length - 2) + ")"
);
var tr = $("#table>tbody>tr:first").clone();
var _i = 0,
ths = "",
tds = "",
fragment = document.createDocumentFragment();
while (temp < etime) {
vm.timelist.push(temp);
var r = udfChangeTable(temp, _i);
if (r) {
fragment.appendChild(r);
}
ths +=
'<th style="' +
thstyle +
'"><div>' +
moment(temp).format("YYYY-MM-DD HH:mm:ss") +
"</div></th>";
tds += "<td><div></div></td>";
temp += intv;
_i++;
}
if (vm.cur_report_style.value == 0) {
$("#table>tbody").append(fragment);
$("#table>tbody").append(totals);
} else {
var tabletrs = $("#table tbody tr");
var totaltds =
"<td>" +
new Array(vm.checked_total_index.length).join("</td><td>") +
"</td>";
for (var i = 0; i < tabletrs.length; i++) {
if (i == 0) {
head.html(ths);
head.prepend(firstth);
head.append(totalth);
}
$(tabletrs[i]).append(
tds + (vm.checked_total_index.length == 0 ? "" : totaltds)
);
}
}
// $("#table").css("width", "auto");
var checkDate = {
startTime: moment(stime).format("YYYY-MM-DD HH:mm:ss"),
endTime: moment(etime).format("YYYY-MM-DD HH:mm:ss")
};
} else {
var checkDate = vm.checkDate;
}
//初始参数
var parma = {
startTime: moment(checkDate.startTime).format("YYYY-MM-DD HH"),
endTime: moment(checkDate.endTime).format("YYYY-MM-DD HH"),
timeType: "0",
timeKey: vm.report_s_day,
interval: vm.report_interval,
pointList: vm._point_data,
qtList: qtList,
dtMap: {
max: false,
min: false,
avg: false
}
};
//判断timeType
if (dateType.value == "udf") {
parma.timeType = 5;
} else if (dateType.value == "day") {
parma.timeType = type.value == "db" || type.value == "tj" ? 6 : 0;
} else if (dateType.value == "month") {
parma.timeType = type.value == "db" || type.value == "tj" ? 7 : 1;
} else if (dateType.value == "year") {
parma.timeType = type.value == "db" || type.value == "tj" ? 8 : 2;
} else if (dateType.value == "td") {
parma.timeType = 3;
} else if (dateType.value == "tm") {
parma.timeType = 4;
}
//判断是否统计时间
if (type.value == "tj") {
parma.qtList.push(moment(checkDate.startTime).format("YYYY-MM-DD HH"));
}
//判断是否有统计项
var total = computed.checked_total();
for (var i = 0; i < total.length; i++) {
var v = total[i].value;
if (v.indexOf("max") !== -1) {
parma.dtMap.max = true;
} else if (v.indexOf("min") !== -1) {
parma.dtMap.min = true;
} else if (v.indexOf("avg") !== -1) {
parma.dtMap.avg = true;
}
}
postData(parma);
});
$("#excelExport").on("click", function() {
// 卸船一队用电量统计3.xls
var tit = $.fn.zTree.getZTreeObj("tree");
var node = tit.getSelectedNodes();
var href =
"/report/fileFolder/downloadExcelTable?fileName=" +
encodeURIComponent(node[0].createOperator.substr(1));
window.top.location.href = href;
// var file = JSON.parse(res.data.fileData);
// var buffer = new Uint8Array(file);
// var blob = new Blob([buffer]);
// var fileName = res.data.fileName;
// //保存下载文件夹
// if (window.navigator.msSaveOrOpenBlob) {
// navigator.msSaveBlob(blob, fileName);
// } else {
// var elink = document.createElement("a");
// var url = createObjectURL(blob);
// elink.href = url;
// elink.download = fileName;
// document.body.appendChild(elink);
// elink.click();
// window.URL.revokeObjectURL(url);
// this.$message.success(res.message);
// }
});
$("#export").on("click", function() {
var arr = [];
var grid = 0;
var exptable = $("#table").clone();
$(exptable)
.find("td,th")
.each(function(i, e) {
if ($(e).css("display") == "none") {
$(e).remove();
}
});
if (!$(exptable).find("tr")[0]) {
return false;
}
exptable.find("tr").each(function(i, e) {
if ($(e).hasClass("udf-width")) {
return;
}
var temp = {
columnHeight: parseFloat(
$("#table")
.find("tr:eq(" + i + ")")
.height(),
10
)
};
$(e)
.children()
.each(function(index, ele) {
var $e = $(ele);
temp["data" + index] = $e.text();
temp["cols" + index] = $e.attr("colspan");
temp["rows" + index] = $e.attr("rowspan");
temp["textAlign" + index] = checkAlign($e.css("text-align"));
temp["fontNo" + index] = parseFloat($e.css("font-size"));
temp["boldweight" + index] = $e.css("font-weight");
temp["columnWidth" + index] = parseFloat($e.width(), 10);
temp["cols" + index] = isNaN(temp["cols" + index])
? 1
: temp["cols" + index];
temp["rows" + index] = isNaN(temp["rows" + index])
? 1
: temp["rows" + index];
if (arr.length == 0) {
grid += Number(temp["cols" + index]);
}
});
arr.push(temp);
});
var tit = $(".table-title");
var sub = $(".table-sub");
var hl = $(".table-head").find(".tf-l");
var hr = $(".table-head").find(".tf-r");
var fl = $(".table-foot").find(".tf-l");
var fr = $(".table-foot").find(".tf-r");
if (fl.css("display") !== "none" || fr.css("display") !== "none") {
var foot = {};
if (fl.css("display") !== "none") {
setExportObj(fl, 0, foot, 2);
}
if (fr.css("display") !== "none") {
setExportObj(fr, 2, foot, 2);
}
foot.data1 = "";
foot.cols1 = grid - 4;
foot.rows1 = 1;
arr.push(foot);
}
if (hl.css("display") !== "none" || hr.css("display") !== "none") {
var head = {};
if (hl.css("display") !== "none") {
setExportObj(hl, 0, head, 2);
}
if (hr.css("display") !== "none") {
setExportObj(hr, 2, head, 2);
}
head.data1 = "";
head.cols1 = grid - 4;
head.rows1 = 1;
arr.unshift(head);
}
if (sub.css("display") !== "none") {
var sub_obj = {};
setExportObj(sub, 0, sub_obj, grid);
arr.unshift(sub_obj);
}
if (tit.css("display") !== "none") {
var tit_obj = {};
setExportObj(tit, 0, tit_obj, grid);
tit_obj.columnWidth0 = "";
arr.unshift(tit_obj);
}
$.ajax({
url: "/report/exportExcel/exportCommDataFromClient",
data: {
exportDataMs: JSON.stringify(arr),
fileName: tit.html()
},
type: "post",
// contentType : "application/json",
dataType: "json",
success: function(res) {
var href =
"/report/exportExcel/downloadFile?fileName=" +
encodeURIComponent(res.mapData.fileName);
window.top.location.href = href;
}
});
});
$("#refresh").on("click", function() {
location.reload();
});
// console.time('table');
if (vm.table !== undefined) {
initTable();
}
// console.timeEnd('table');
$("#searchExcel").on("click", function() {
var start = $("#startExcel").val();
var end = $("#endExcel").val();
var treeCode = $(".excel-report").attr("treeCode");
if (!start) {
layer.alert(i18n1.viewJs.err);
return false;
}
if ($("#endExcel").css("display") === "none") {
end = start;
} else {
if (!end) {
layer.alert(i18n1.viewJs.err);
return false;
}
}
layer.load(1, {
shade: [0.5, "#282C34"]
});
$.ajax({
url: "/report/fileFolder/findExcelReportData",
data: {
startTime: start,
endTime: end,
treeCode: treeCode
},
type: "post",
dataType: "json",
success: function(res) {
initExcelReport(res.reportData);
layer.closeAll();
}
});
});
});
function copeTable() {
var tb = $("#table");
// var tbody=tb.find('tbody').clone();//左侧表头
var tbody = tb.find("tbody").clone(); //左侧表头
var thead = tb.find("thead").clone(); //顶部表头
var th = tb.find("thead").clone(); //公共表头
var comColspan = $("#table thead>tr:eq(1)>th:first-child").attr("colspan");
var first = tb.find("thead tr:first-child").clone(); //用于添加进左侧边头和顶部表头
first.find("td").remove(); //删除多余
//处理左侧表头
tbody.find("td").remove();
//处理隐藏列
// tbody.find('th').each(function(i,e){
// if($(e).css('display')==='none'){
// // first.find('th:eq('+i+')').css('display','none')
// // // first.find('th:eq('+i+')').remove();
// }
// });
// tbody.find('th:hidden').remove();
first.find("th:gt(" + (comColspan - 1) + ")").remove(); //删除影藏列
//统计宽度
var leftWidth = 0;
first.find("th").each(function(i, e) {
leftWidth += $(e).width();
});
//设置高度
tb.find("tbody>tr").each(function(i, e) {
$(e)
.find("th:first")
.each(function(index, element) {
var height = parseFloat($(element).css("height"));
if (!height) {
height = 27;
} else {
height++;
}
tbody
.find("tr:eq(" + i + ")>th:eq(" + index + ")")
.css("height", height + "px");
});
});
var _bgcolor_ = $(".content").css("background-color");
if (_bgcolor_ !== "rgba(0, 0, 0, 0)") {
$("#left").css("background-color", _bgcolor_);
$("#top").css("background-color", _bgcolor_);
$("#topleft").css("background-color", _bgcolor_);
}
$("#left")
.find("table")
.css("width", leftWidth + "px")
.html("<thead>" + first[0].outerHTML + "</thead>" + tbody[0].outerHTML)
.attr("class", $("#table").attr("class"));
//处理顶部表头
$("#top")
.find("table")
.html(thead)
.css("width", $("#table").css("width"));
//处理公共表头
var colspan = comColspan - 2;
th.find("tr:gt(1)").remove();
th.find("tr:eq(0)>td").remove();
// if(colspan<0){
// }else{
// th.find('tr>td:gt('+colspan+')').remove();
// }
th.find("tr:gt(0)>th:not(:first-child)").remove();
th.find("tr:gt(0)>th:first-child").css(
"height",
$("#table thead")
.find("tr:gt(0)>th:first-child")
.css("height")
);
//处理隐藏列
// tbody.find('tr:first-child>th').each(function(i,e){
// if($(e).css('display')==='none'){
// th.find('tr.udf-width>th:eq('+i+')').css('display','none')
// }
// });
th.find("tr.udf-width th:gt(" + (comColspan - 1) + ")").remove(); //删除影藏列
$("#topleft")
.find("table")
.css("width", leftWidth + "px")
.html(th);
}
function checkAlign(str) {
if (str.indexOf("center") !== -1) {
return "center";
} else if (str.indexOf("right") !== -1) {
return "right";
} else {
return "left";
}
}
function setExportObj($e, index, temp, num) {
temp["data" + index] = $e.text();
temp["textAlign" + index] = checkAlign($e.css("text-align"));
temp["fontNo" + index] = parseFloat($e.css("font-size"));
temp["boldweight" + index] = $e.css("font-weight");
temp["columnWidth" + index] = parseFloat($e.width(), 10);
temp["columnHeight"] = parseFloat($e.height(), 10);
temp["cols" + index] = num;
temp["rows" + index] = 1;
}
function initTable() {
// console.time('init');
init();
// console.timeEnd('init');
//判断如果是自定义,纵向的报表,取消宽度
$("#table").css(
"width",
vm.cur_report_type.value === "udf" && vm.cur_report_style.value == 1
? "auto"
: vm.tb_width
);
// var table=$('#table').clone();
// $('#table').find('td>div').each(function(i,e){
// var w=$(e).css('width');
// table.find('td>div:eq('+i+')').css('width',w);
// });
// $('#table').html(table.html());
}
function udfChangeTable(time, _i) {
if (vm.cur_report_style.value == 0) {
var tr = $("#table>tbody>tr:first").clone();
tr.find("th:first>div").html(moment(time).format("YYYY-MM-DD HH:mm:ss"));
var cur_tr = $("#table>tbody>tr:eq(" + _i + ")");
if (cur_tr[0]) {
$("#table>tbody>tr:eq(" + _i + ")").html(tr.html());
return "";
} else {
return tr[0];
}
}
}
/**
* @desc 根据开始时间结束时间修正时间轴
* @param {*} obj
*/
function setTimeY(obj) {
var s = new Date(obj.startTime).getTime();
var e = new Date(obj.endTime).getTime();
var type = vm.cur_report_type.value;
var t = computed.sketch();
var arr = [];
if (t.value == "tj") {
arr.push(new Date(moment(s).format("YYYY/MM/DD HH:mm:ss")).getTime());
} else if (t.value == "db") {
} else {
if (type == "month") {
var itv = 24 * 3600 * 1000;
for (var i = s; i < e; i = i + itv) {
arr.push(i);
}
} else if (type == "day") {
var itv = Math.floor(vm.report_interval * 60) * 60 * 1000;
var end =
computed.sketch().value === "cr"
? new Date(moment(s).add(8, "hours")).getTime()
: e;
for (var i = s; i < end; i = i + itv) {
arr.push(i);
}
} else if (type == "year") {
for (var i = 0; i < 12; i++) {
arr.push(
new Date(
moment(s)
.add(i, "month")
.format("YYYY/MM/DD HH:mm:ss")
).getTime()
);
}
} else if (type == "tm") {
for (var i = 0; i < 3; i++) {
arr.push(
new Date(
moment(s)
.add(i, "month")
.format("YYYY/MM/DD HH:mm:ss")
).getTime()
);
}
} else if (type == "td") {
for (var i = 0; i < 7; i++) {
arr.push(
new Date(
moment(s)
.add(i, "day")
.format("YYYY/MM/DD HH:mm:ss")
).getTime()
);
}
}
}
return arr;
}
/**
* @desc 获取和处理开始时间结束时间
*/
function getInputDate(startTime, endTime) {
var start_m = vm.report_s_month;
var start_d = vm.report_s_day;
var start_h = vm.report_s_hours;
var dateType = vm.cur_report_type;
var type = computed.sketch();
startTime = startTime || $("#start").val();
endTime = endTime || $("#end").val();
if (!startTime) {
return false;
}
if (dateType.value == "udf" || type.value == "db") {
//当报表类型为自定义或对比时,如果没有结束时间默认为开始时间
if (!endTime) {
endTime = startTime;
}
} else {
//当报表不是类型为自定义或对比时,结束时间默认为空
endTime = "";
}
var len = startTime.split("-").length;
var _tempfn = function(len) {
var arr = ["-01", "-01", " 00"],
type = ["year", "month", "day"],
str = "";
var end_flag = !endTime;
for (var l = arr.length, i = l; len <= i; i--) {
str = arr[i - 1] + str;
}
startTime = moment(startTime + str).format("YYYY-MM-DD HH:mm:ss");
//根据是否显示结束时间处理结束时间
if (end_flag) {
endTime = moment(startTime)
.add(1, type[len - 1])
.format("YYYY-MM-DD HH:mm:ss");
} else {
endTime = moment(endTime + str).format("YYYY-MM-DD HH:mm:ss");
}
};
_tempfn(len);
var _tempMonth = function() {
var days = start_d;
var daye = start_d;
if (start_d < 0) {
days = lastBmd > start_d * -1 ? -lastBmd - start_d - 1 : -1;
daye = bmd > start_d * -1 ? -bmd - start_d - 1 : -1;
} else {
days--;
daye--;
days = days > bmd ? bmd - 1 : days;
daye = daye > nextBmd ? nextBmd - 1 : daye;
}
return {
s: days,
e: daye
};
};
var obj = {},
hours = 0,
day = 0,
month = 0;
var bmd = moment(startTime).daysInMonth(); //本月天数
var lastBmd = moment(startTime)
.subtract(1, "month")
.daysInMonth(); //上月天数
var nextBmd = moment(startTime)
.add(1, "month")
.daysInMonth(); //下月天数
var _beg = moment(startTime);
var _end = moment(endTime);
switch (len) {
case 1:
month = start_m < 0 ? -(13 + start_m) : start_m;
_beg.add(start_m < 0 ? month : month - 1, "month");
_end.add(start_m < 0 ? month : month - 1, "month");
case 2:
// day=start_d<0?(-lastBmd-start_d-1):(start_d>1?(start_d-1>bmd?bmd:start_d-1):start_d);
day = _tempMonth();
case 3:
hours = start_h < 0 ? -24 - start_h : start_h;
}
if (_beg.daysInMonth() < day.s) {
day.s = _beg.daysInMonth();
}
if (_end.daysInMonth() < day.e) {
day.e = _end.daysInMonth();
}
// var t=computed.sketch();
var t = vm.cur_report_type.value;
obj.startTime = _beg
.add(day.s, "day")
.add(hours, "hours")
.format("YYYY-MM-DD HH:mm:ss");
if (t == "tm") {
obj.endTime = moment(obj.startTime)
.add(3, "month")
.format("YYYY-MM-DD HH:mm:ss");
} else if (t == "td") {
obj.endTime = moment(obj.startTime)
.add(7, "day")
.format("YYYY-MM-DD HH:mm:ss");
} else {
obj.endTime = _end
.add(day.e, "day")
.add(hours, "hours")
.format("YYYY-MM-DD HH:mm:ss");
}
return obj;
}
function init() {
$(".content").attr(
"style",
"margin:auto;" +
(userGroup.length > 1 ? "margin-left:236px;" : "width:100%;") +
computed.panel_style()
);
$("#table")
.addClass(vm.row_chang_color)
.html(vm.table);
$(".table-title")
.text(vm.tb_title.name)
.attr("style", computed.tb_title_style())
.css("width", "100%");
$(".table-sub")
.text(vm.tb_sub.name)
.attr("style", computed.tb_sub_style())
.css("width", "100%");
$(".table-head>.tf-l")
.text(vm.tb_detailed_1.name)
.attr("style", computed.tb_detailed_1_style());
$(".table-head>.tf-r")
.text(vm.tb_detailed_2.name)
.attr("style", computed.tb_detailed_2_style());
$(".table-foot>.tf-l")
.text(vm.tb_detailed_3.name)
.attr("style", computed.tb_detailed_3_style());
$(".table-foot>.tf-r")
.text(vm.tb_detailed_4.name)
.attr("style", computed.tb_detailed_4_style());
//处理时间弹框
initDatePlug(true);
//查询数据
}
function initDatePlug(trigger) {
var index = vm.sketch_index;
var dateType = vm.cur_report_type;
var type = computed.sketch();
var lay = {};
//判断时间插件类型
if (
dateType.value == "udf" ||
dateType.value == "day" ||
dateType.value == "td"
) {
lay.type = 2;
lay.format = "yyyy-mm-dd";
} else if (dateType.value == "year") {
lay.type = 4;
lay.format = "yyyy";
} else if (dateType.value == "tm" || dateType.value == "month") {
lay.type = 3;
lay.format = "yyyy-mm";
}
vm.checkDate = getInputDate(moment().format(lay.format.toLocaleUpperCase()));
vm.timelist = setTimeY(vm.checkDate);
//判断是否显示两个时间
if (dateType.value == "udf" || type.value == "db") {
var str = type.value == "db" ? i18n1.viewJs.dbtime : i18n1.viewJs.endtime;
$("#start")
.show()
.prev("span")
.html(i18n1.viewHtml.statrTime);
$("#end")
.show()
.prev("span")
.html(str)
.show();
$("#end").datetimepicker("remove");
$("#end").val(moment().format(lay.format.toUpperCase()));
$("#end")
.initdate(lay.format, lay.type)
.off("hide")
.on("hide", function(event) {
$("#end").blur();
setTimeout(function() {
$("#search").trigger("click");
}, 200);
});
} else {
$("#start")
.show()
.prev("span")
.html(i18n1.viewHtml.queryTime);
$("#end")
.hide()
.prev("span")
.hide();
}
$("#start").datetimepicker("remove");
if (dateType.value == "udf" || type.value == "db") {
$("#start").val(
moment()
.subtract(1, lay.type == 2 ? "day" : lay.type == 4 ? "year" : "month")
.format(lay.format.toUpperCase())
);
$("#end").val(moment().format(lay.format.toUpperCase()));
} else {
$("#start").val(moment().format(lay.format.toUpperCase()));
}
$("#start")
.initdate(lay.format, lay.type)
.off("hide")
.on("hide", function(event) {
changeTable(event, lay);
});
if (trigger) {
changeTable({ date: $("#start").val() }, lay, true);
}
}
function changeTable(event, lay, trigger) {
//根据开始时间结束时间修正时间轴显示
$("#start").blur();
var eventdate = $("#start").val();
var value = moment(eventdate).format(lay.format.toLocaleUpperCase());
var type = computed.sketch().value;
var rt = vm.cur_report_type.value;
if (rt == "udf" || type == "db") {
return false;
}
vm.checkDate = getInputDate(value);
vm.timelist = setTimeY(vm.checkDate);
//统计报表不需要修正表格
if (type == "tj") {
if (!trigger) {
setTimeout(function() {
$("#search").trigger("click");
}, 200);
}
return false;
}
var total_length = vm.checked_total_index.length;
var list_length = vm.timelist.length;
var tr_length = $("#table").find("tbody>tr").length;
//根据时间轴修正月报表时显示的时间
if (rt == "month") {
if (vm.cur_report_style.value == 0) {
var day = moment(vm.timelist[list_length - 1]).get("date");
var len = tr_length - total_length - 1;
var th = 0,
bool = false;
while (len >= 0) {
var tr = $("#table").find("tbody>tr:eq(" + len + ")");
th = tr
.find("th:first>div")
.html()
.split("-");
th = th[th.length - 1];
if (th == 1) {
bool = true;
}
if ((day >= th || bool) && vm.timelist[len] !== undefined) {
tr.find("th:first>div").html(
moment(vm.timelist[len]).format("YYYY-MM-DD")
);
tr.show();
} else {
tr.hide();
}
len--;
}
} else {
//计算要隐藏多少单元格
var cha = 31 - list_length;
var ll = list_length;
//循环每行
var trs = $("#table").find("tr");
for (var i = 0; i < trs.length; i++) {
var tr = $(trs[i]);
//找到统计行第一个对应的index
var tds = i !== 1 ? tr.find("td") : tr.find("th");
var len = total_length;
var length = cha;
for (var l = tds.length - 1; l >= 0; l--, len--) {
if (len > 0) {
continue;
}
var td = $(tds[l]);
var dis = td.css("display");
//判断显示单元格是否隐藏
if (length > 0) {
td.hide();
} else {
if (i == 1) {
td.find("div").html(
moment(vm.timelist[--ll]).format("YYYY-MM-DD")
);
}
td.show();
}
if (length < 0 && dis !== "none" && i !== 1) {
break;
}
length--;
}
}
}
} else if (rt == "td" || rt == "tm") {
var num = rt == "td" ? 7 : 3;
var timetype = rt == "td" ? "day" : "month";
var formattype = rt == "td" ? "YYYY-MM-DD" : "YYYY-MM";
if (vm.cur_report_style.value == 0) {
for (var i = 0; i < num; i++) {
var tr = $("#table").find("tbody>tr:eq(" + i + ")");
tr.find("th:first>div").html(
moment(value)
.add(i, timetype)
.format(formattype)
);
}
} else {
for (var i = 0; i < num; i++) {
var tr = $("#table").find("tr:eq(1)>th:eq(" + (i + 1) + ")");
tr.html(
moment(value)
.add(i, timetype)
.format(formattype)
);
}
}
} else {
var start = new Date(vm.timelist[0]);
var end = new Date(vm.timelist[list_length - 1]);
var _fmt = "HH:mm";
if (start.getFullYear() !== end.getFullYear()) {
_fmt = "YYYY-MM-DD HH:mm";
} else if (start.getMonth() !== end.getMonth()) {
_fmt = "MM-DD HH:mm";
} else if (start.getDate() !== end.getDate()) {
_fmt = "MM-DD HH:mm";
}
var formattype = rt !== "day" ? "YYYY-MM" : _fmt;
if (vm.cur_report_style.value == 0) {
for (var i = 0; i < list_length; i++) {
var tr = $("#table").find("tbody>tr:eq(" + i + ")");
tr.find("th:first>div").html(moment(vm.timelist[i]).format(formattype));
}
} else {
for (var i = 0; i < list_length; i++) {
var tr = $("#table").find("tr:eq(1)>th:eq(" + (i + 1) + ")");
tr.html(moment(vm.timelist[i]).format(formattype));
}
}
}
if (!trigger) {
setTimeout(function() {
$("#search").trigger("click");
}, 200);
}
}
/**
* @请求参数说明
* startTime
* endTime
* timeType报表类型
* interval:时间间隔
* pointList点信息
* qtList对比时间列表
* @param {*} parma
*/
function postData(parma) {
var layid = layer.load(1, {
shade: [0.5, "#282C34"]
});
var url = [
"/report/monitorBusiness/findProfitMSByParam",
"/report/reportTable/queryCommonEnergyData"
];
$.ajax({
url: computed.sketch().value == "sy" ? url[0] : url[1],
data: JSON.stringify(parma),
contentType: "application/json",
type: "post",
dataType: "json",
success: function(res) {
var obj = res.mapData;
if (computed.sketch().value === "sy") {
if (typeof res.rows !== "object" || !res.rows.length) {
layer.alert(i18n1.viewJs.err);
return false;
}
} else {
if (typeof obj !== "object") {
layer.alert(i18n1.viewJs.err);
return false;
}
}
var arr = (obj.accumulateDataList || [])
.concat(obj.analogDataList || [])
.concat(obj.mixDataList || []);
var yxarr = obj.digitalDataList;
if (computed.sketch().value === "sy") {
arr = res.rows;
}
for (var i = 0, point = {}; i < arr.length; i++) {
var d = arr[i],
_e = vm._point_obj[d.sname].e || 1;
for (var _k in d) {
if (typeof d[_k] === "number") {
d[_k] = d[_k] * _e;
}
}
if (point[d.time] === undefined) {
point[d.time] = {};
}
if (point[d.time][d.sname] === undefined) {
point[d.time][d.sname] = d;
} else {
point[d.time][d.sname].typeList = point[d.time][
d.sname
].typeList.concat(d.typeList);
assignObj(point[d.time][d.sname], d);
}
}
//处理遥信数据
for (var i = 0; i < (!yxarr ? 0 : yxarr.length); i++) {
var d = yxarr[i],
_e = vm._point_obj[d.sname].e || 1;
for (var _k in d) {
if (typeof d[_k] === "number") {
d[_k] = d[_k] * _e;
}
}
if (point[d.time] === undefined) {
point[d.time] = {};
}
if (point[d.time][d.sname] === undefined) {
// point[d.time][d.sname] = d;
point[d.time][d.sname] = { yx: {} };
}
if (point[d.time][d.sname].yx[d.data] === undefined) {
point[d.time][d.sname].yx[d.data] = d;
} else {
point[d.time][d.sname].yx[d.data].typeList = point[d.time][
d.sname
].yx[d.data].typeList.concat(d.typeList);
assignObj(point[d.time][d.sname].yx[d.data], d);
}
}
if (computed.sketch().value == "tj") {
creatTJTable(point);
} else {
if (vm.cur_report_style.value == 0) {
creatColTable(point);
} else {
//处理测点信息拆分typeList每个属性一个对象
for (
var i = 0, pointArr = [], _obj = {};
i < vm._point_data.length;
i++
) {
var d = Object.assign({}, vm._point_data[i]);
if (d.typeList.length > 0) {
for (var n = 0; n < d.typeList.length; n++) {
var ind = n;
var obj = {
measurType: d.measurType,
sname: d.sname,
typeList: [d.typeList[ind]]
};
if (_obj[d.sname + "" + d.typeList[ind]] === undefined) {
_obj[d.sname + "" + d.typeList[ind]] = obj;
pointArr.push(obj);
}
}
}
}
creatRowTable(point, pointArr);
}
}
setTimeout(function() {
copeTable();
}, 200);
},
complete: function() {
layer.close(layid);
}
});
}
function creatTJTable(point) {
var data = vm._point_data;
var crsv = vm.cur_report_style.value;
var dev = crsv == 0 ? vm.dev_map : vm.tjArr;
var prop = crsv == 0 ? vm.tjArr : vm.dev_map;
var reporttime = moment(vm.timelist[0]).format("YYYY-MM-DD HH:mm:ss");
var table = $("#table>tbody");
var line = 0;
for (var i = 0; i < prop.length; i++) {
var row = 0;
for (var k = 0; k < dev.length; k++) {
var obj =
point[reporttime][
crsv == 0
? dev[k].code + "." + prop[i].sname
: prop[i].code + "." + dev[k].sname
];
var len = crsv == 0 ? prop[i].typeList : dev[k].typeList;
for (var l = 0; l < len.length; l++) {
var pkey = len[l].split("@@");
if (crsv == 0) {
var trl = line + l;
var tdl = k;
} else {
var trl = line;
var tdl = row + l;
}
var _r =
pkey[1] === undefined
? obj[vm.codekey[pkey[0]]]
: obj.yx[pkey[1]][vm.codekey[pkey[0]]];
if (_r === undefined || _r === "" || _r === null) {
_r = "";
} else if (!isNaN(_r)) {
_r = decimalDigits(_r);
}
if (
table.find("tr:eq(" + trl + ")>td:eq(" + tdl + ")").text() !== "\\"
) {
table
.find("tr:eq(" + trl + ")>td:eq(" + tdl + ")")
.find("div")
.html(obj.numStatus === "true" && _r < 0 ? "-" : _r);
}
}
if (crsv != 0) {
row += len.length;
} else {
row++;
}
}
if (crsv == 0) {
line += len.length;
} else {
line++;
}
}
}
function creatRowTable(point, pointList) {
var ot = {
max: {},
maxTime: {},
min: {},
minTime: {},
avg: {},
sum: {}
};
var tot = computed.checked_total();
//纵向报表
var zxbb = function(
el,
row_id,
col_id,
timeKey,
snameKey,
propindex,
propKey
) {
if (timeKey !== undefined) {
var pkey = propindex.split("@@");
var obj =
point[moment(timeKey).format("YYYY-MM-DD HH:mm:ss")][snameKey] || {};
if (pkey[1] !== undefined) {
obj = obj.yx[pkey[1]];
}
var v = obj[propKey];
v = obj.numStatus === "true" && v < 0 ? "" : v;
if (propindex == "yc_0") {
changeData(ot, obj);
}
if (v !== 0 && !v) {
v = "";
} else {
v = isNaN(v) ? v : decimalDigits(v);
}
if ($(el).text() !== "\\") {
if (obj.numStatus === "true" && obj[propKey] < 0) {
$(el)
.find("div")
.html("-");
} else {
$(el)
.find("div")
.html(v);
if (ot.sum[snameKey] === undefined) {
ot.sum[snameKey] = {};
}
if (ot.sum[snameKey][propindex] === undefined) {
ot.sum[snameKey][propindex] = [v || ""];
} else {
ot.sum[snameKey][propindex].push(v || "");
}
}
}
} else {
var ind = col_id - vm.timelist.length;
var key = tot[ind].value;
var v = ot[key][snameKey];
if ($(el).text() == "\\") {
return;
}
if (v !== undefined) {
if (key == "avg") {
v = sum(ot[key][snameKey]);
if (!v) {
v =
sum(ot.sum[snameKey][propindex]) /
ot.sum[snameKey][propindex].length;
} else {
v = v / ot[key][snameKey].length;
}
} else if(key == "sum"){
v = sum(ot[key][snameKey][propindex]);
}
} else {
v = "";
}
if (propindex != "yc_0" && key != "sum") {
v = "";
}
if (v !== 0 && !v) {
v = "";
} else {
v = isNaN(v) ? v : decimalDigits(v);
}
$(el).html(v);
}
};
// 横向报表
var hxbb = function(
el,
row_id,
col_id,
timeKey,
snameKey,
propindex,
propKey
) {};
var lastPoint = [0, 0],
del = 0;
$("#table")
.find("tbody td")
.each(function(index, el) {
var row_id = $(el)
.parent()
.index();
var col_id = $(el).index();
if ($(el).css("display") == "none") {
del++;
return;
}
//记录每行的第一个坐标用于方便记录后面td的下标。
if (index == 0 || lastPoint[0] != row_id) {
lastPoint[0] = row_id;
lastPoint[1] = col_id;
del = 0;
}
col_id = col_id - lastPoint[1] - del;
var timeKey = vm.timelist[col_id]; //时间key
var snameKey = pointList[row_id].sname;
var propindex = pointList[row_id].typeList[0];
var propKey =
vm.codekey[
propindex.indexOf("@@") == -1
? propindex
: propindex.substring(0, propindex.indexOf("@@"))
];
if (vm.cur_report_style.value == 0) {
hxbb(el, row_id, col_id, timeKey, snameKey, propindex, propKey);
} else {
zxbb(el, row_id, col_id, timeKey, snameKey, propindex, propKey);
}
});
}
function creatColTable(point) {
var ot = {
max: {},
maxTime: {},
min: {},
minTime: {},
avg: {},
sum: {}
};
var tot = computed.checked_total();
var del_length = 0;
var total_length = vm.checked_total_index.length;
var list_length = vm.timelist.length;
var table = $("#table").clone();
var tr_length = table.find("tbody>tr").length;
table.find("tbody>tr").each(function(index, el) {
var td_index = 0;
var tds = $(el).find("td");
//删除行
if (index >= list_length && index < tr_length - total_length) {
// $(el).remove();
del_length++;
return;
}
var rowtime = moment(vm.timelist[index]);
if (vm.timelist[index] === undefined) {
var ttl_len = index - list_length - del_length;
//设置统计项
var key = tot[ttl_len].value;
for (var i = 0; i < vm._point_cols.length; i++) {
var len = vm._point_cols[i].typeList.length;
var v = ot[key][vm._point_cols[i].sname];
var avg_flag;
if (key == "avg") {
if (!sum(v)) {
avg_flag = true;
v = ot.sum[vm._point_cols[i].sname];
} else {
avg_flag = false;
}
}
if (key == "sum" || avg_flag) {
for (var ii in v) {
var _v = sum(v[ii]);
if (key == "avg") {
_v = _v / v[ii].length;
}
if (_v !== 0 && !_v) {
_v = "";
} else {
_v = isNaN(_v) ? _v : decimalDigits(_v);
}
if ($(tds[td_index]).text() !== "\\") {
$(tds[td_index]).html(_v);
}
td_index++;
}
if (Object.keys(v).length == 0) {
if ($(tds[td_index]).text() !== "\\") {
$(tds[td_index]).html("");
}
td_index++;
}
} else {
if (key == "avg") {
v = sum(v) / v.length;
}
if (v !== 0 && !v) {
v = "";
} else {
v = isNaN(v) ? v : decimalDigits(v);
}
var cl = $(tds[td_index]).attr("colspan");
if (!cl) {
cl = 0;
}
// $(tds[td_index]).attr('colspan', len).html(v);
var $el = $(tds[td_index]);
if ($el.text() !== "\\") {
$(tds[td_index]).html(v);
}
// $(tds[td_index]).find('div').html(v);
// while ((len - cl) > 1) {
// // $(tds[td_index]).next('td').remove();
// len--;
// // td_index++;
// }
td_index += len;
}
}
} else {
var t = rowtime.format("YYYY-MM-DD HH:mm:ss");
for (var i = 0; i < vm._point_cols.length; i++) {
var d = vm._point_cols[i];
var sname = d.sname;
if (d.measurType === "fml") {
var sarr = sname.match(/\[[^\]]+(?=\])/g);
for (var _i = 0, _sn = sname, ft = 0; _i < sarr.length; _i++) {
var _code = sarr[_i].substring(1);
var data =
point[t][_code].instantData === undefined
? point[t][_code].endData
: point[t][_code].instantData;
if (isNaN(data) || data === "") {
ft++;
}
data = Number(data);
_sn = _sn.replace("[" + _code + "]", "(" + data + ")");
}
try {
var v = eval(_sn);
} catch (err) {
layer.alert(i18n1.viewJs.calerr);
v = "!";
}
if (ft == _i) {
v = "";
} else {
v = isNaN(v) ? v : decimalDigits(v);
}
if (ot.sum[sname] === undefined) {
ot.sum[sname] = {};
}
if (ot.sum[sname][0] === undefined) {
ot.sum[sname][0] = [v || ""];
} else {
ot.sum[sname][0].push(v || "");
}
$(tds[td_index]).html(v);
td_index++;
continue;
} else {
var data = point[t] && point[t][sname];
}
if (data === undefined) {
data = {};
}
//统计值
changeData(ot, data);
//设置值
for (var k = 0; k < d.typeList.length; k++) {
var sub_index = d.typeList[k].split("@@");
var key = vm.codekey[sub_index[0]];
var ndata = sub_index[1] === undefined ? data : data.yx[sub_index[1]];
var v = ndata[key];
v = ndata.numStatus === "true" && v < 0 ? "" : v;
if (ot.sum[sname] === undefined) {
ot.sum[sname] = {};
}
if (
$(tds[td_index]).text() !== "\\"
) {
if (v !== 0 && !v) {
v = "";
} else {
v = isNaN(v) ? v : decimalDigits(v);
}
if (ndata.numStatus === "true" && ndata[key] < 0) {
$(tds[td_index])
.find("div")
.html("-");
} else {
$(tds[td_index])
.find("div")
.html(v);
if (
!(computed.sketch().value == "sy" && d.typeList[k] == "yc_0")
) {
if (ot.sum[sname][d.typeList[k]] === undefined) {
ot.sum[sname][d.typeList[k]] = [];
}
if (v !== "" && v !== undefined && v !== null) {
ot.sum[sname][d.typeList[k]].push(v);
}
} else {
ot.sum[sname][d.typeList[k]] = [];
}
}
}
td_index++;
}
}
}
});
$("#table").html(table.html());
}
function changeData(ot, obj) {
if (obj === undefined) {
return;
}
var sname = obj.sname;
if (
obj.maxData !== "" &&
(ot.max[sname] === undefined || obj.maxData > ot.max[sname])
) {
ot.max[sname] = obj.maxData;
ot.maxTime[sname] = obj.maxDataTime;
}
if (
obj.minData !== "" &&
(ot.min[sname] === undefined || obj.minData < ot.min[sname])
) {
ot.min[sname] = obj.minData;
ot.minTime[sname] = obj.minDataTime;
}
if (ot.avg[sname] === undefined) {
ot.avg[sname] = [];
}
if (
obj.averageData !== "" &&
obj.averageData !== undefined &&
obj.averageData !== null
) {
ot.avg[sname].push(obj.averageData);
}
}
function assignObj() {
var arr = arguments;
var obj = arr[0] || {};
for (var i = 1; i < arr.length; i++) {
for (var k in arr[i]) {
if (!!arr[i][k] && !arr[0][k]) {
arr[0][k] = arr[i][k];
}
}
}
return obj;
}
function sum(arr) {
if (!(arr instanceof Array)) {
arr = [];
}
return arr.reduce(function(o, v, i) {
if (!v || isNaN(v) || v < 0) {
v = 0;
}
return o + Number(v);
}, 0);
}