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

689 lines
27 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>报表查看</title>
<link rel="stylesheet" type="text/css" href="../css/common.css">
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png">
<link rel="stylesheet" type="text/css" href="../plugin/lay/theme/default/layer.css">
<link rel="stylesheet" href="../plugin/bootstrap_datetimepicker/css/bootstrap-datetimepicker.css">
<link rel="stylesheet" type="text/css" href="../plugin/ztree/css/zTreeStyle/zTreeStyle.css">
<script src="../js/theme.js"></script>
<script id="themeStyle">
(function(){
var d=null,arr=[];
var urlParam = decodeURIComponent(location.search);
if (urlParam.indexOf("theme") !== -1) {
arr = urlParam.substr(urlParam.indexOf("theme")).split(/[\=\&]/g);
}
getThemeJson({
async: false,
success: function(data) {
d = JSON.parse(data);
filesName = d[(arr&&arr[1])||d.theme].name;
},
error: function() {
console.error("获取主题失败");
}
});
var link='';
link+='<link rel="stylesheet" type="text/css" href="../css/theme/'+((arr&&arr[1])||d.theme)+'/design.min.css"/>';
link+='<link rel="stylesheet" type="text/css" href="../css/theme/'+((arr&&arr[1])||d.theme)+'/view.min.css"/>';
document.getElementById('themeStyle').outerHTML=link;
})();
</script>
<style>
.ztree * {
font-size: 14px;
font-family: noset;
}
</style>
</head>
<body>
<script>
var userInfo='';
if(window.opener&&window.opener.vm){//从报表设计跳转到报表查看
userInfo=window.opener.vm.userInfo? window.opener.vm.userInfo:'';
}else{
userInfo=parent.getData?parent.getData():'';
}
</script>
<div class="aside flag simscroll">
<em class="toggle left hide flag">>></em>
<p class="headerP"><span i18n-content='reportLib'></span><em
class="toggle right">
<<</em> </p> <ul id="tree" class="ztree" style="margin:10px;">
</ul>
</div>
<button id="refresh" class="searchbtn" type="button" icon="el-icon-refresh" i18n-content='refresh'></button>
<div class="simscroll content flag" style=display:none;">
<div class="no-report flag">
<h3 style="padding-left: 10px;color: #fff;font-size: 20px;padding-top: 40px;width: 28px;display: none;"
i18n-content='selectRe'></h3>
</div>
<div class="step-report">
<h2 class="table-title curpo"> </h2>
<h4 class="table-sub curpo"></h4>
<div class="search-bar">
<div class="date-bar">
<label><span></span><input class="date " readonly type="text" name="startTime"
id="start"></label>
<label><span></span><input class="date dn" type="text" readonly name="endTime" id="end"></label>
<button class="bgsearch searchbtn" i18n-content='search' id="search" type="button" icon="el-icon-search"></button>
<button class="bgdownload searchbtn" i18n-content='export' id="export" type="button" icon="el-icon-upload2"></button>
</div>
</div>
<div class="table-head clearfix">
<p class="tf-l curpo"></p>
<p class="tf-r curpo"></p>
</div>
<div id="left" class="bg-color" style="position: fixed;left:0;display: none;font-weight: 400;">
<table></table>
</div>
<div id="top" class="bg-color" style="position: fixed;top:0;display: none;font-weight: 400;">
<table></table>
</div>
<div id="topleft" class="bg-color" style="position: fixed;left:0;top:0;display: none;font-weight: 400;">
<table></table>
</div>
<div class="table-content">
<table id="table"></table>
</div>
<div class="table-foot clearfix">
<p class="tf-l curpo"></p>
<p class="tf-r curpo"></p>
</div>
</div>
<div class="excel-report" style="display:none;">
<div class="date-bar">
<label><span></span><input class="date " readonly type="text" name="startTimeExcel"
id="startExcel"></label>
<label style="margin-left:20px;"><span></span><input class="date dn" type="text" readonly name="endTimeExcel" id="endExcel"></label>
<button i18n-content='search' id="searchExcel" class="searchbtn" type="button" icon="el-icon-search"></button>
<button i18n-content='export' id="excelExport" class="searchbtn" type="button" icon="el-icon-upload2"></button>
</div>
<div class="excel-table">
</div>
</div>
</div>
<script src="../plugin/jquery-3.7.0.min.js"></script>
<script src="../plugin/pako/pako.min.js"></script>
<script src="../plugin/ztree/js/jquery.ztree.all.min.js"></script>
<script src="../plugin/lay/layer.js"></script>
<script src="../plugin/bootstrap_datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../plugin/bootstrap_datetimepicker/js/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../plugin/moment.min.js"></script>
<script src="../js/proConfig.js"></script>
<script>
var p = getToken();
//设置统计接口请求信息
if (p.token) {
$.ajaxSetup({
headers: {
"Authorization": 'Bearer ' + p.token
}
})
}
var i18n1 = {};
var language = i18n();
var userGroup = location.href.split('userGroup=');
//中英文
if (userGroup.length > 1) {
$.ajax({
url: "../locales/" + language + "/report.json",
type: 'get',
async: false,
dataType: 'json',
success: function (res) {
i18n1 = res;
}
})
}else{
if(window.opener&&window.opener.vm){
i18n1=window.opener.vm.i18n||'cn';
}else{
i18n1=localStorage.getItem('i18n')||'cn';
}
}
$('[i18n-content]').each(function () {
var key = $(this).attr('i18n-content');
$(this).text(i18n1.viewHtml[key]);
})
$(function () {
$('#shohi').on('click', function () {
var el = $('#table').clone();
var t = +new Date();
})
$('em.toggle').on('click', function () {
var side = $('.aside');
var ctnt = $('.content');
var tlg = $('em.toggle.left');
if ($(this).hasClass('right')) {
side.css('margin-left', '-236px');
ctnt.css({
'margin-left': 0,
'width': '100%'
});
tlg.removeClass('hide');
tlg.show();
} else {
side.css('margin-left', '0');
ctnt.css({
'margin-left': '236px',
'width': 'calc(100% - 236px)'
});
tlg.addClass('hide');
tlg.hide();
}
});
});
var layid = layer.load(1, {
shade: [0.5, '#282C34'],
time: 60000
});
var separator = connector(); //不同系统使用不同的分隔符,可以在这里调整
var vm = {},
computed = {},
tree;
if (userGroup.length > 1) {
$('.aside').removeClass('flag').show();
$('em.toggle.flag').show();
$('.no-report>h3').show(600);
$('.content').removeClass('flag');
var parma = userGroup[1].split('&')[0];
var url = '/report/fileFolder/findFileFolderByPermUserGroup';
if (parma == 'flag') {
url = '/report/fileFolder/findFileFolderMs';
}
$.ajax({
url: url,
type: 'get',
asyn: false,
data: {
userGroup: userGroup[1].split('&')[0]
},
dataType: 'json',
success: function (res) {
var data = res.mapData.fileFolderList;
if (data instanceof Array) {
data.map(function (v, i, a) {
if (v.type == 0) {
v.isParent = true;
} else {
v.isParent = false;
}
});
}
tree = $.fn.zTree.init($('#tree'), {
data: {
key: {
name: 'name'
},
simpleData: {
enable: true,
idKey: 'treeCode',
pIdKey: 'treePCode'
}
},
callback: {
onClick: function (event, id, node) {
if (node.type != 1) {
return false;
}
$('#left').find('table').empty();
$('#top').find('table').empty();
$('#topleft').find('table').empty();
layid = layer.load(1, {
shade: [0.5, '#282C34']
});
getFile(node.treeCode);
}
}
}, data);
var node = tree.getNodes()[0];
while (node && node.isParent) {
node = node.children[0];
}
tree.selectNode(node, false, false);
},
complete: function () {
layer.close(layid);
}
})
function getFile(treeCode) {
$.ajax({
url: '/report/fileFolder/findFileFolderByTreeCodeMs',
data: {
treeCode: treeCode
},
type: 'get',
dataType: 'json',
success: function (res) {
var obj = {}
var rmff=res.mapData.fileFolder;
try {
if(rmff.sourceType==3){
$('.step-report').hide();
var formmat= rmff.timeType.split('~');
formmatDate(formmat,rmff.startTime,rmff.endTime);
initExcelReport(rmff.fileDetail);
$('.excel-report').attr('treeCode',rmff.treeCode).show();
}else{
$('.excel-report').hide().find('.excel-table').html('');
obj = JSON.parse(rmff.fileDetail).vm;
obj.codekey = vm.codekey;
vm = obj;
initVm();
initTable();
$('.step-report').show();
}
} catch (err) {
layer.alert(i18n1.viewJs.fileerr, {
icon: 5
});
}
},
complete: function () {
$('.no-report').fadeOut(500);
layer.close(layid);
$('.content').show();
}
})
}
} else {
var _layid = layer.load(1, {
shade: [0.5, '#282C34']
});
try {
var jsonStr=pako.ungzip(sessionStorage.getItem('vm'), {
to: "string"
});
vm = JSON.parse(jsonStr);
if (!vm.dev_tree) {
vm.dev_tree = JSON.parse((pako.ungzip(sessionStorage.getItem('dev_tree'), {
to: "string"
})));
}
initVm();
} catch (err) {
console.error(err)
layer.alert(i18n1.viewJs.dataerr, {
icon: 5
});
}
layer.close(_layid);
$('.no-report.flag').fadeOut();
}
function initVm() {
computed = {
totals: function () {
var obj = getALLTotals();
if (vm.all_totals) {
obj = JSON.parse(JSON.stringify(vm.all_totals));
}
if (this.sketch().value == 'sy' || this.sketch().value == 'dd') {
return [obj[obj.length - 1]];
} else {
return obj;
}
},
checked_dev_node: function () {
return vm.check_dev[vm.checked_dev_index];
},
checked_total: function () {
var arr = this.totals();
var index = vm.checked_total_index;
for (var i = 0, n = []; i < index.length; i++) {
n.push(arr[index[i]]);
}
return n;
},
checked_contrast: function () {
var arr = getAllContrasts();
var index = vm.checked_contrast_index;
for (var i = 0, n = []; i < index.length; i++) {
n.push(arr[index[i]]);
}
return n;
},
sketch: function () {
var arr = vm.cur_report_type.type;
var index = vm.sketch_index;
return arr[index];
},
border_style: function () {
return 'border-style:' + vm.border_type + ';border-color:' + vm.border_bgcolor +
';border-width:' + vm.border_zise + 'px;height:' + vm.row_line_height + 'px';
},
th_style: function () {
return 'background-color:' + vm.th_bgcolor + ';color:' + vm.th_color;
},
panel_style: function () {
return 'background-color:' + vm.report_bgcolor + ';color:' + vm.report_color +
';font-family:' + vm.report_font +
';font-size:' + vm.report_size + ';' + vm.report_textarea
},
papers: function () {
var o = vm.paper_size[vm.paper_type];
for (var i = 0, arr = []; i < 100; i++) {
var str = "";
if (vm.paper_orientation == 'col') {
str = "width:" + o.col + 'px;height:' + o.row + 'px;';
} else {
str = "height:" + o.col + 'px;width:' + o.row + 'px;';
}
arr.push(str);
}
return arr;
},
tb_title_style: function () {
var obj = vm.tb_title;
return 'margin:auto;width:' + vm.tb_width + ';' + setStyle(obj);
},
tb_sub_style: function () {
var obj = vm.tb_sub;
return 'margin:auto;width:' + vm.tb_width + ';' + setStyle(obj);
},
tb_detailed_1_style: function () {
var obj = vm.tb_detailed_1;
return setStyle(obj);
},
tb_detailed_2_style: function () {
var obj = vm.tb_detailed_2;
return setStyle(obj);
},
tb_detailed_3_style: function () {
var obj = vm.tb_detailed_3;
return setStyle(obj);
},
tb_detailed_4_style: function () {
var obj = vm.tb_detailed_4;
return setStyle(obj);
}
}
var _temp_;
if (computed.sketch().value == 'tj') {
_temp_=getDevInfoTj();
vm._point_data = _temp_.rul;
vm._point_obj = _temp_.pobj;
} else {
_temp_ = getDevInfo();
vm._point_data = _temp_.pointList;
vm._point_cols = _temp_.cols;
vm._point_obj = _temp_.pointObj;
}
if (vm.ck_sx === undefined) {
vm.ck_sx = !!(computed.sketch.value == 'yx' || computed.sketch.value == 'dd' || computed.sketch.value ==
'bb' || computed.sketch.value == 'cr');
}
//设置居中
if(viewCenter()){
if (parseFloat(vm.tb_width) < ($('body').width() - 236)) {
$('.content>div:last-child').css({
'margin-left': '50%',
'transform': 'translate(-50%)'
});
} else {
$('.content>div:last-child').css({
'margin-left': '',
'transform': ''
});
}
}
getCodekey(computed.sketch().cdtype||computed.sketch().value);
}
/**
* @desc 初始化时间插件的方法
* @param format 时间格式
* @param view 时间插件展示的层级(2月视图,3年视图,4十年视图)
* */
$.fn.initdate = function (format, view) {
var temp = this.datetimepicker({
language: language,
format: format,
weekStart: 1,
todayBtn: 0,
autoclose: 1,
todayHighlight: 1,
startView: view==0?2:view,
minView: view,
maxView: 4,
forceParse: 0
});
return temp;
}
function setStyle(form) {
var style = 'padding:' + form.top + 'px ' + form.right + 'px ' + form.bottom + 'px ' + form.left + 'px ' +
(form.font_family ? ';font-family:' + form.font_family : '') +
(form.font_color ? ';color:' + form.font_color : '') +
(form.font_size ? ';font-size:' + form.font_size : '') +
(form.align ? ';text-align:' + form.align : '') +
(form.is_show ? ';display:' + form.is_show : '');
return style;
}
//逐时点信息
function getDevInfo() {
var dev = vm.dev_tree;
var time = vm.time_tree;
var map = vm.dev_map;
//获取所有设备对象;
var obj = devObj(dev);
//根据设备对象解析成数据
var poco = {
pointList: [],
cols: [],
}
var pointObj = {},
pobj = {},
isRepeat=false;
for (var k = 0; k < map.length; k++) {
var key = map[k].tid;
if (obj.all[key].nodetype === 'fml') {
poco.cols.push({
measurType: obj.all[key].nodetype,
sname: obj.all[key].code,
typeList: [],
});
continue;
}
var property_type = '';
var c = '';
while (obj.all[key] && obj.all[key].nodetype !== 'dev') {
if (obj.all[key].nodetype === 'property') {
property_type = obj.all[key].tid;
}
key = obj.all[key].ptid;
}
if(obj.all[key]===undefined){
console.log("getDevInfo -> obj.all[key]", key,obj.all)
}
var code = obj.all[key].code + (!property_type ? '' : (separator + obj.all[property_type].code));
var type = obj.all[property_type] ? obj.all[property_type].type : 'yc';
var tid = obj.all[key].tid;
if (pointObj[tid + '__' + code] === undefined) {
pointObj[tid + '__' + code] = {
measurType: type,
e: obj.all[key].e||defaulte(),
sname: computed.sketch().value === 'sy' ? map[k].code : code,
typeList: computed.sketch().value === 'sy' ? type == 'yc' ? ['yc_0'] : ['ym_1'] : [map[k].code]
}
pobj[computed.sketch().value === 'sy'?map[k].code:code] = pointObj[tid + '__' + code];
poco.cols.push(pointObj[tid + '__' + code]);
} else {
if(pointObj[tid + '__' + code].typeList.filter(function(v){return v===map[k].code}).length==0){
pointObj[tid + '__' + code].typeList.push(map[k].code);
}else{
isRepeat=true;
}
}
if(poco.pointList.filter(function(v){return v.measurType==pointObj[tid + '__' + code].measurType&&v.sname==pointObj[tid + '__' + code].sname}).length==0){
poco.pointList.push(pointObj[tid + '__' + code]);
}else{
isRepeat=true;
}
}
poco.pointObj = pobj
if(isRepeat){
// layer.alert(i18n1.viewJs.duplicateCode, {
// icon: 5
// });
console.error(i18n1.viewJs.duplicateCode)
}
return poco;
}
function devObj(arr, key) {
if (key === undefined) {
key = 'dev'
}
for (var i = 0, obj = {
all: {},
dev: {}
}; i < arr.length; i++) {
var d = arr[i];
obj.all[d.tid] = d;
if (d.nodetype == key) {
obj.dev[d.tid] = d;
}
if (d.children && d.children.length > 0) {
var temp = devObj(d.children,key)
obj.dev = Object.assign(obj.dev, temp.dev);
obj.all = Object.assign(obj.all, temp.all);
}
}
return obj;
}
function getDevInfoTj() {
var dev = vm.dev_tree;
var time = vm.time_tree;
var map = vm.dev_map;
var obj = devObj(time, 'property');
for (var i = 0, arr = []; i < vm.time_map.length; i++) {
var _obj = {
measurType: "",
sname: "",
typeList: []
}
var tm = vm.time_map[i];
_obj.measurType = obj.dev[tm.ptid].type;
_obj.sname = obj.dev[tm.ptid].code;
_obj.typeList.push(tm.code);
if (i > 0 && arr[arr.length - 1].sname == _obj.sname) {
arr[arr.length - 1].typeList.push(_obj.typeList[0]);
} else {
arr.push(_obj);
}
}
vm.tjArr = arr, pobj = {};
for (var n = 0, rul = []; n < map.length; n++) {
var code = map[n].code;
for (var i = 0; i < arr.length; i++) {
var _temp = Object.assign({}, arr[i]);
_temp.sname = code + separator + _temp.sname;
rul.push(_temp);
pobj[_temp.sname] = map[n];
if(!pobj[_temp.sname].e){
pobj[_temp.sname].e=defaulte();
}
}
}
return {
rul:rul,
pobj:pobj
};
}
function getCodekey(param) {
if(!param){param=''}
vm.codekey = {}
$.ajax({
url: '/report/dic/findDictonaryMS?mCode=MeasurinDataType&type='+param,
type: 'get',
dataType: 'json',
success: function (res) {
var data = res.mapData.dicList;
for (var i = 0; i < data.length; i++) {
var d = data[i];
vm.codekey[d.dcode] = d.nameEn;
}
}
});
}
function decimalDigits(num) {
num = isNaN(num) ? 0 : Number(num);
num = num.toFixed(vm.data_point);
if (!vm.digits_fixed) {
num = Number(num);
}
return num;
}
//初始化excel表格
function initExcelReport(html){
var el=$(html);
var width=0;
el.find('colgroup>col').each(function(i,e){
width+=parseFloat($(e).attr('width'));
});
el.find('colgroup').parent().css('width',width+'px');
$('.excel-report>.excel-table').html(el);
}
//初始化excel时间插件
function formmatDate(formmatList,startlabel,endlabel){
var options=[
{
type : 2,
format : "yyyy-mm-dd"
},
{
type : 3,
format : "yyyy-mm"
},
{
type : 4,
format : "yyyy"
},
{
type : 0,
format : "yyyy-mm-dd hh:mm"
}
];
var formmat=formmatList[0].toLowerCase();
var type=options.filter(function(v){
return v.format===formmat;
})[0].type;
var today=moment().format(formmatList[0])
$('#startExcel').initdate(formmat.replace('hh:mm','hh:ii'), type).off('hide').on('hide', function(event){
// changeTable(event,lay);
}).val(today).prev('span').html(startlabel);
if(formmatList.length>1){
$('#endExcel').initdate(formmat.replace('hh:mm','hh:ii'), type).off('hide').on('hide', function(event){
// changeTable(event,lay);
}).val(today).show().prev('span').html(endlabel);
}else{
$('#endExcel').hide().prev('span').html('')
}
}
</script>
<script src="../js/view.js"></script>
</body>
</html>