1597 lines
45 KiB
JavaScript
1597 lines
45 KiB
JavaScript
$(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);
|
||
}
|