初始化项目

This commit is contained in:
2024-04-01 09:20:31 +08:00
commit fefd704e6e
4694 changed files with 1869737 additions and 0 deletions

View File

@@ -0,0 +1,805 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>Excel报表</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrap/bootstrap.css">
<link rel="stylesheet" href="${ctx}/css/plugin/datatimepicker/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="${ctx}/js/plugin/layui/css/layui.css">
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrapSwitch/bootstrap-switch.min.css">
<link rel="stylesheet" href="${ctx}/js/plugin/dateRangePicker/daterangepicker.css">
<link rel="stylesheet" href="${ctx}/css/basic.css">
<style type="text/css">
body {
overflow: hidden;
}
.layui-left {
float: left;
}
.form-control {
padding: 4px 12px;
}
.self-style {
margin: 9px;
position: absolute;
left: 280px;
top: 40px;
bottom: 0;
z-index: 1;
}
table {
border-collapse: collapse;
border-spacing: 0;
text-align: left;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 0px !important;
}
td {
white-space: nowrap;
padding: 1px !important
}
.redColor {
color: red;
}
.styleFixd {
table-layout:fixed;
}
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{
padding: 1px 6px;
font-size: 12px;
line-height: 18px;
}
</style>
</head>
<body>
<%--终端树区域--%>
<%@include file="../include/deviceTree.jsp" %>
<%--Tab选项卡区域--%>
<div class="layui-left layui-tab self-style">
<ul class="layui-tab-title" style="box-sizing:content-box;!important">
<li class="layui-this" id="myLi" style="font-size: 12px;">非谐波</li>
<li style="font-size: 12px;">谐波电压</li>
<li style="font-size: 12px;">谐波电流</li>
<li style="font-size: 12px;">合格率</li>
</ul>
<div id="myTab" class="layui-tab-content" style="padding: 5px;overflow: auto;height: 100%;">
<div class="layui-tab-item layui-show">
<div id="pointInfo"></div>
<div id="voltage"></div>
<div id="power"></div>
<div id="flicker"></div>
<idv id="distortion"></idv>
<div id="vdeviation"></div>
<div id="frequency"></div>
<div id="threephase"></div>
</div>
<div class="layui-tab-item">
<div id="vPointInfo"></div>
<div id="voltageRate">
</div>
</div>
<div class="layui-tab-item">
<div id="iPointInfo"></div>
<div id="icurrent"></div>
</div>
<div class="layui-tab-item">
<div id="fpyPointInfo"></div>
<div id="fpy"></div>
</div>
</div>
</div>
<%--时间区域--%>
<form class="form-inline header" style="margin-top: 2px;position: absolute;z-index: 99;width: calc(100% - 280px);height: 50px;right: 0;text-align: right">
<label class="form-group">时间间隔:</label>
<div class="form-group has-feedback">
<select class="form-control" id="interval">
<option value="年份">年份</option>
<option value="季度">季度</option>
<option value="月份">月份</option>
<option value="周">周</option>
<option value="天">天</option>
<option value="自定义">自定义</option>
</select>
</div>
<div class="form-group">
<input type="text" class="form-control form_datetime con"
id="startTime" style="width: 140px">
</div>
&nbsp;—
<div class="form-group">
<input type="text" class="form-control form_datetime con"
id="endTime" style="width: 140px">
</div>
<button type="button" class="njcn btn themeBGColor" id="before">
<i class="glyphicon glyphicon-backward"></i>
</button>
<div class="form-group" id="present">
<button type="button" class="njcn btn themeBGColor">当前</button>
</div>
<button type="button" class="njcn btn themeBGColor" id="next">
<span class="glyphicon glyphicon-forward" aria-hidden="true"></span>
</button>
<div class="form-inline pdr15" style="display: inline-block;">
<label style="font-size: 10px;margin-left: 5px;">模板选择:</label>
<%--value与模板的id绑定--%>
<select class="form-control" id="ploy" style="display: inline;font-size:10px;width:125px;"
onchange="changeEvent(this.value)">
<option value="##">默认模板</option>
</select>
<%--检修时间--%>
<input type="checkbox" id="check"
style="margin-left: 5px;width:16px;height: 16px;margin-bottom: 5px;vertical-align: middle;">
<label style="font-size: 10px;margin-left: 3px;">检修时间</label>
<button type="button" class="btn btn-primary" id="timeSet" disabled="disabled">
<i class='glyphicon glyphicon-cog'>检修时间</i>
</button>
<input style="margin-left: 5px;height: 20px" type="checkbox" checked id="dayOrDate"/>
<%--查询按钮--%>
<button type="button" class="btn btn-primary" style="width: 50px" id="query">
<i class="glyphicon glyphicon-search"></i>
</button>
<%--导出按钮--%>
<button type="button" class="btn btn-primary" id="export">
<i class='glyphicon glyphicon-share'>导出</i>
</button>
</div>
</form>
<%-- bootstrap模态框Modal --%>
<div class="modal fade" id="timeModel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" style="width:405px;">
<div class="modal-content" style="width:405px;">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">检修时间</h4>
</div>
<div class="modal-body" style="width: 405px;">
<div>
<label style="font-weight:normal;font-size: 14px;">时段一:</label>
<div class="layui-input-inline">
<input id="first" placeholder="检修时段一"
style="height: 25px; line-height: 25px; cursor: pointer; border: 1px solid #e2e2e2; width: 310px;"/>
</div>
</div>
<div style="margin-top: 5px;">
<label style="font-weight:normal;font-size: 14px;">时段二:</label>
<div class="layui-input-inline">
<input id="second" placeholder="检修时段二"
style="height: 25px; line-height: 25px; cursor: pointer; border: 1px solid #e2e2e2; width: 310px;"/>
</div>
</div>
<div style="margin-top: 5px;">
<label style="font-weight:normal;font-size: 14px;">时段三:</label>
<div class="layui-input-inline">
<input id="thrid" placeholder="检修时段三"
style="height: 25px; line-height: 25px; cursor: pointer; border: 1px solid #e2e2e2; width: 310px;"/>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" style="font-size: 15px;" class="btn btn-default"
onclick="clearData()">重置
</button>
<button type="button" style="font-size: 15px;" class="btn btn-default"
data-dismiss="modal">
关闭
</button>
</div>
</div>
</div>
</div>
<script src="${ctx}/js/plugin/bootstrap/bootstrap.min.js"></script>
<script src="${ctx}/js/plugin/layui/layui.js"></script>
<script src="${ctx}/js/plugin/xss/xss.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/moment.min.js"></script>
<script src="${ctx}/js/plugin/bootstrapSwitch/bootstrap-switch.min.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/daterangepicker.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
<script>
// 用户切换时间间隔,时间会发生变化
$("#interval").change(function () {
var interval = $(this).val();
judgeInterval(interval)
var endTime = getEndTime();
var startTime = getStartTime(interval, endTime);
$("#startTime").val(startTime);
if(interval !== '自定义'){
let tem = endTime.split("-")
endTime = tem[0]+"-"+tem[1]+"-"+tem[2]
}
$("#endTime").val(endTime);
});
//隐藏前进后退按钮
function judgeInterval(interval) {
if (interval === "自定义") {
$('.form_datetime').datetimepicker({
minView: "0", //选择日期后,不会再跳转去选择时分秒
language: 'zh-CN',
format: 'yyyy-mm-dd hh:ii:ss',
todayBtn: false,//今日按钮
autoclose: 1,
});
$("#present").css("display", "none");
$("#before").css("display", "none");
$("#next").css("display", "none");
$("#startTime").removeProp("disabled");
$("#endTime").removeProp("disabled");
} else {
$('.form_datetime').datetimepicker({
minView: "month", //选择日期后,不会再跳转去选择时分秒
language: 'zh-CN',
format: 'yyyy-mm-dd',
todayBtn: false,//今日按钮
autoclose: 1,
});
$("#present").css("display", "inline-block");
$("#before").css("display", "inline-block");
$("#next").css("display", "inline-block");
$("#startTime").prop("disabled", "true");
$("#endTime").prop("disabled", "true");
}
}
//向前
$("#before").click(function () {
var interval = $("#interval").val();
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
var year = parseInt(startTime.substring(0, 4));
var month = parseInt(startTime.substring(5, 7));
var date = parseInt(startTime.substring(8, 10));
if (interval == "月份") {
// 换年份
if (month == 1) {
year = year - 1;
startTime = year + "-12-01";
endTime = year + "-12-31";
} else if (month <= 10) {
month = month - 1;
startTime = year + "-0" + month + "-01";
var day = getDays(year, month);
endTime = year + "-0" + month + "-" + day;
} else {
month = month - 1;
startTime = year + "-" + month + "-01";
var day = getDays(year, month);
endTime = year + "-" + month + "-" + day;
}
} else if (interval == "周") {
//根据开始时间推
var start = new Date(year, month - 1, date);
start.setDate(start.getDate() - 7);
startTime = formatTime(start);
var end = new Date(start);
end.setDate(start.getDate() + 6);
endTime = formatTime(end);
} else if (interval == "季度") {
// 换年份
if (month == 1) {
year = year - 1;
startTime = year + "-10-01";
endTime = year + "-12-31";
} else {
// 还是本年
month = month - 3;
startTime = year + "-0" + month + "-01";
month = month + 2;
var day = getDays(year, month);
endTime = year + "-0" + month + "-" + day;
}
} else if (interval == "自定义") {
} else if (interval == "年份") {
year = year - 1;
startTime = year + "-01-01";
endTime = year + "-12-31";
} else if (interval == "半年") {
if (month <= 6) {
year = year - 1;
startTime = year + "-07-01";
endTime = year + "-12-31";
}else{
startTime = year + "-01-01";
endTime = year + "-06-30";
}
}else if(interval == "天"){
var start = new Date(year, month - 1, date);
start.setDate(start.getDate() -1);
startTime = formatTime(start);
var end = new Date(start);
endTime = formatTime(end);
}
$("#startTime").val(startTime);
$("#endTime").val(endTime);
// 判断向后键的状态
var temp = getEndTime();
judgeNext(temp, endTime);
});
// 当前
$("#present").click(function () {
var interval = $("#interval").val();
var endTime = getEndTime();
var startTime = getStartTime(interval, endTime);
$("#startTime").val(startTime);
$("#endTime").val(endTime);
// 判断向后键的状态
var temp = getEndTime();
judgeNext(temp, endTime);
});
// 向后
function back() {
var interval = $("#interval").val();
var startTime = $("#startTime").val();
// 获取年份
var year = parseInt(startTime.substring(0, 4));
// 获取月份
var month = parseInt(startTime.substring(5, 7));
var date = parseInt(startTime.substring(8, 10));
var endTime = $("#endTime").val();
var now = new Date();
// 获取当前年份
var presentY = now.getFullYear();
// 获取当前月份
var presentM = now.getMonth() + 1;
// 获取当前日期
var presentD = now.getDate();
if (interval == "月份") {
if (month == 12) {
year = year + 1;
// 年份进位后,大于当前的年份,是不科学的
if (presentY < year) {
startTime = presentY + "-12-01";
if (presentD < 10) {
endTime = presentY + "-12" + "-0" + presentD;
} else {
endTime = presentY + "-12" + "-" + presentD;
}
// 年份进位后,等于当前的年份
} else if (presentY == year) {
startTime = year + "-01-01";
if (presentM > 1) {
endTime = year + "-01-31";
} else {
if (presentD < 10) {
endTime = year + "-01" + "-0" + presentD;
} else {
endTime = year + "-01" + "-" + presentD;
}
}
// 年份进位后,依旧小于当前的年份
} else {
startTime = year + "-01-01";
endTime = year + "-01-31";
}
} else {
month = month + 1;
// 年份等于当前年份
if (presentY == year) {
// 月份超过当前月份,是不科学的
if (month >= presentM) {
if (presentM < 10) {
startTime = year + "-0" + presentM + "-01";
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
} else {
startTime = year + "-" + presentM + "-01";
if (presentD < 10) {
endTime = year + "-" + presentM + "-0" + presentD;
} else {
endTime = year + "-" + presentM + "-" + presentD;
}
}
} else {
if (month < 10) {
startTime = year + "-0" + month + "-01";
var day = getDays(year, month);
endTime = year + "-0" + month + "-" + day;
} else {
startTime = year + "-" + month + "-01";
var day = getDays(year, month);
endTime = year + "-" + month + "-" + day;
}
}
// 年份小于当前的年份
} else {
if (month < 10) {
startTime = year + "-0" + month + "-01";
var day = getDays(year, month);
endTime = year + "-0" + month + "-" + day;
} else {
startTime = year + "-" + month + "-01";
var day = getDays(year, month);
endTime = year + "-" + month + "-" + day;
}
}
}
} else if (interval == "季度") {
// 前进需要年份进位
if (month == 10) {
year = year + 1;
// 年份进位后大于当前年份是不科学的
if (year > presentY) {
startTime = presentY + "-10-01";
if (presentD < 10) {
endTime = year + "-" + presentM + "-0" + presentD;
} else {
endTime = year + "-" + presentM + "-" + presentD;
}
} else if (year == presentY) {
startTime = year + "-01-01";
// 当前月份大约3月份
if (presentM > 3) {
endTime = year + "-03-31";
} else {
// 当前月份也在第一季度里
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
}
} else {
startTime = year + "-01-01";
endTime = year + "-03-31";
}
} else {
month = month + 3;
// 季度进位后,超过当前月份是不科学的
if (year == presentY) {
if (month >= presentM) {
// 当季度进位后大于当前月,以当前月的时间显示季度
if (presentM > 0 && presentM < 4) {// 第一季度
startTime = year + "-01-01";
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
} else if (presentM > 3 && presentM < 7) {// 第二季度
startTime = year + "-04-01";
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
} else if (presentM > 6 && presentM < 10) {// 第三季度
startTime = year + "-07-01";
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
} else {// 第四季度
startTime = year + "-10-01";
if (presentD < 10) {
endTime = year + "-" + presentM + "-0" + presentD;
} else {
endTime = year + "-" + presentM + "-" + presentD;
}
}
} else {
if (month == 10) {
startTime = year + "-" + month + "-01";
} else {
startTime = year + "-0" + month + "-01";
}
month = month + 2;
if (month >= presentM) {
endTime = getEndTime();
;
} else {
var day = getDays(year, month);
endTime = year + "-" + month + "-" + day;
}
}
} else {
if (month == 10) {
startTime = year + "-" + month + "-01";
month = month + 2;
var day = getDays(year, month);
endTime = year + "-" + month + "-" + day;
} else {
startTime = year + "-0" + month + "-01";
month = month + 2;
var day = getDays(year, month);
endTime = year + "-0" + month + "-" + day;
}
}
}
} else if (interval == "自定义") {
} else if (interval == "周") {
//根据开始时间推
var start = new Date(year, month - 1, date);
start.setDate(start.getDate() + 7);
startTime = formatTime(start);
var end = new Date(start);
end.setDate(start.getDate() + 6);
endTime = formatTime(end);
if (parseInt((end - new Date()) / 1000 / 60) > 24) { //相差小时大于24小时即超过当天置为当天日期
endTime = formatTime(new Date());
}
} else if (interval == "年份") {
year = year + 1;
// 年份进位后大于当前年份,是不科学的
if (year >= presentY) {
startTime = presentY + "-01-01";
if (presentM < 10) {
if (presentD < 10) {
endTime = presentY + "-0" + presentM + "-0" + presentD;
} else {
endTime = presentY + "-0" + presentM + "-" + presentD;
}
} else {
endTime = presentY + "-" + presentM + "-" + presentD;
}
} else {
startTime = year + "-01-01";
endTime = year + "-12-31";
}
} else if (interval == "半年") {
// 前进需要年份进位
if (month > 6) {
year = year + 1;
// 年份进位后大于当前年份是不科学的
if (year >= presentY) {
startTime = presentY + "-01-01";
if(presentM > 6){
endTime = year + "-06-30";
}else{
if (presentD < 10) {
endTime = year + "-" + presentM + "-0" + presentD;
} else {
endTime = year + "-" + presentM + "-" + presentD;
}
}
} else {
startTime = year + "-01-01";
endTime = year + "-06-30";
}
} else {
if (year == presentY) {
startTime = presentY + "-07-01";
// 进位后大于当前月,以当前月的时间显示
if (presentM < 10) {
if (presentD < 10) {
endTime = year + "-0" + presentM + "-0" + presentD;
} else {
endTime = year + "-0" + presentM + "-" + presentD;
}
}else{
if (presentD < 10) {
endTime = year + "-" + presentM + "-0" + presentD;
} else {
endTime = year + "-" + presentM + "-" + presentD;
}
}
} else {
startTime = year + "-07-01";
endTime = year + "-12-31";
}
}
}else if(interval == "天"){
var start = new Date(year, month - 1, date);
start.setDate(start.getDate() + 1);
startTime = formatTime(start);
var end = new Date(start);
endTime = formatTime(end);
}
// 判断向后键的状态
var temp = getEndTime();
judgeNext(temp, endTime);
$("#startTime").val(startTime);
$("#endTime").val(endTime);
}
$("#next").click(function () {
back();
});
// 判断next按钮的状态
function judgeNext(temp, endTime) {
if (temp == endTime) {
$("#next").attr("class", "njcn btn");
$("#next").unbind();
} else {
restoreNext();
}
}
// 恢复向后键的所有时间点击事件、button变化事件
function restoreNext() {
var $events = $._data($("#next")[0], "events");
if ($events && $events["click"]) {
} else {
$("#next").attr("class", "njcn btn btn-primary");
$("#next").bind("click", function () {
back();
})
}
if ($events && $events["mouseover"]) {
} else {
$("#next").bind("mouseover", function () {
$(this).attr("class", "njcn btn");
})
}
if ($events && $events["mouseout"]) {
} else {
$("#next").bind("mouseout", function () {
$(this).attr("class", "njcn btn btn-primary");
})
}
}
// 获取月份的天数
function getDays(year, month) {
var max = new Date(year, month, 0).getDate();
return max;
}
// 时间格式化
function formatTime(time) {
return time.getFullYear() + '-' + ((time.getMonth() + 1) < 10 ? '0' : '') + (time.getMonth() + 1) + '-' + (time.getDate() < 10 ? '0' : '') + time.getDate();
}
$(function () {
var interval = $("#interval").val();
var endTime = getEndTime();
var startTime = getStartTime(interval, endTime);
$("#startTime").val(startTime);
$("#endTime").val(endTime);
$("#next").attr("class", "njcn btn");
$("#next").unbind();
// 除了自定义其他时间间隔用户可以选择日期
if (interval === "自定义") {
$("#present").css("display", "none");
$("#before").css("display", "none");
$("#next").css("display", "none");
$("#startTime").removeProp("disabled");
$("#endTime").removeProp("disabled");
} else {
$("#present").css("display", "inline-block");
$("#before").css("display", "inline-block");
$("#next").css("display", "inline-block");
$("#startTime").prop("disabled", "true");
$("#endTime").prop("disabled", "true");
}
});
// 获取当前日期,精确到日
function getEndTime() {
var now = new Date();
var sep = "-";
var year = now.getFullYear();
var month = now.getMonth() + 1;
if (month < 10) {
month = "0" + month;
}
var date = now.getDate();
if (date < 10) {
date = "0" + date;
}
// 拼接当前的日期
var endTime = year + sep + month + sep + date;
return endTime;
}
// 获取起始日期
function getStartTime(interval, endTime) {
var now = new Date();
var sep = "-";
var arr = endTime.split("-");
var year = arr[0];
var month = arr[1];
var date = arr[2];
// 按月份间隔
if (interval == "月份") {
date = "01";
// 按季度间隔
} else if (interval == "季度") {
if (month > 0 & month < 4) {// 第一季度
month = "01";
date = "01";
} else if (month > 3 && month < 7) {// 第二季度
month = "04";
date = "01";
} else if (month > 6 && month < 10) {// 第三季度
month = "07";
date = "01";
} else {// 第四季度
month = 10;
date = "01";
}
} else if (interval == "年份") {
month = "01";
date = "01";
} else if (interval == "半年") {
if (month < 7){
month = "01";
date = "01";
}else{
month = "07";
date = "01";
}
} else if (interval == '周') {
var start = new Date(year, month - 1, date);
var dayOfWeek = (start.getDay() == 0) ? 7 : start.getDay(); // 如果为周日则置为7天
start.setDate(start.getDate() - dayOfWeek + 1);// 计算开始时间
if (formatTime(new Date()) != endTime) { // 如果结束时间不是当前时间
var end = new Date(start);
end.setDate(end.getDate() + 6);
$("#endTime").val(formatTime(end));
}
return formatTime(start);
}else if(interval == '天'){
var start = new Date(year, month - 1, date);
return formatTime(start);
}
var startTime = year + sep + month + sep + date;
return startTime;
}
</script>
<script src="${ctx}/jspJS/utils/judgeAjaxStatus.js"></script>
<script src="${ctx}/jspJS/utils/loading.js"></script>
<script src="${ctx}/jspJS/report/excel.js"></script>
</body>
</html>

View File

@@ -0,0 +1,281 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>生成报告</title>
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrap/bootstrap.css">
<link rel="stylesheet"
href="${ctx}/css/plugin/datatimepicker/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="${ctx}/js/plugin/layui/css/layui.css">
<link rel="stylesheet"
href="${ctx}/js/plugin/dateRangePicker/daterangepicker.css">
<link rel="stylesheet" href="${ctx}/css/basic.css">
<style type="text/css">
html {
overflow: hidden;
}
.layui-left {
float: left;
}
.self-style {
margin: 0px;
position: absolute;
left: 280px;
top: 25px;
bottom: 0;
z-index: 1;
}
.width1 {
width: 85px;
!
important
}
.width2 {
width: 140px;
!
important
}
.form-control {
height: 26px;
!important
}
</style>
</head>
<body class="bg-white">
<%@include file="../include/deviceTree.jsp" %>
<%--Tab选项卡区域--%>
<div class="layui-left layui-tab self-style pd10">
<table class="table" id="device" frame="border" rules="groups">
<tr>
<td align="right" class="width1">一次接线图:</td>
<td align="left" class="width2">
<form class="form-inline ml12"
enctype="multipart/form-data" id="uploadForm">
<input type="file" name="file" id="inputfile">
</form>
</td>
<td align="left">
<button type="button" id="importimg"
class="btn themeBGColor">上传
</button>
</td>
</tr>
<tr>
<td align="right" class="width1">报告编号:</td>
<td align="left" class="width2"><input type="text"
name="reportNumber" id="reportNumber"></td>
<td></td>
</tr>
<tr>
<td align="right" class="width1">客户名称:</td>
<td align="left" class="width2"><input type="text"
name="crmName" id="crmName"></td>
<td></td>
</tr>
<tr>
<td align="right" class="width1"></td>
<td align="left" class="width2">
<button type="button"
id="exportWord" class="btn themeBGColor">生成
</button>
</td>
<td></td>
</tr>
</table>
</div>
<%--时间区域--%>
<form class="form-inline header"
style="float: left; margin-top: 2px; position: relative; z-index: 99">
<%@include file="../include/time.jsp" %>
</form>
<input type="hidden" id="imgFlag" value="0">
<input type="hidden" id="lineIndex" name="lineIndex">
<input type="hidden" id="lineName" name="lineName">
<script src="${ctx}/js/plugin/bootstrap/bootstrap.min.js"></script>
<script src="${ctx}/js/plugin/layui/layui.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/moment.min.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/daterangepicker.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
<script
src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="${ctx}/jspJS/utils/judgeAjaxStatus.js"></script>
<script src="${ctx}/jspJS/utils/timeControl.js"></script>
<script src="${ctx}/jspJS/utils/loading.js"></script>
<script src="${ctx}/js/basic.js"></script>
<script type="text/javascript">
$("#importimg").click(
function () {
var i;
var uploadEventFile = $("#inputfile").val();
/**
* xuyang
* 前端对所选文件的大小做个简单判断
*/
var uploadFile = document.getElementById("inputfile").files;
//文件大小
var size = uploadFile[0].size;
//判断文件大小
if (Math.floor(size/1024) <= 3072){
if (uploadEventFile == '') {
layer.msg("请选择图片!", {
icon: 5,
time: 2000
}, function () {
layer.closeAll()
});
} else if (uploadEventFile.toLowerCase().lastIndexOf(".jpg") < 0
&& uploadEventFile.toLowerCase().lastIndexOf(".png") < 0) {
layer.msg("只能上传图片文件", {
icon: 5,
time: 2000
}, function () {
layer.closeAll()
});
} else {
layer.confirm('确定上传?', function (index) {
var formData = new FormData($('#uploadForm')[0]);
$.ajax({
method: "post",
url: "/pqs9000/exportmodel/importImg",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (data) {
if (data == "namefail") {
layer.msg("上传失败!请选择图片文件", {
icon: 5,
time: 2000
})
} else if (data == "fail") {
layer.msg("上传失败!请重新选择图片文件", {
icon: 5,
time: 2000
})
} else if (data == "sizefail") {
layer.msg("上传失败,图片大小超过3M!", {
icon: 5,
time: 2000
})
} else {
layer.msg("上传成功!", {
icon: 1,
time: 2000
}, function () {
$("#imgFlag").val("1");
})
}
}
})
})
}
}else {
layer.msg("上传失败,文件大小超过3M!",{icon:5,time:2000},function(){
layer.closeAll()});
}
})
$("#exportWord").click(function () {
var tips, picdefult;
var uploadEventFile = $("#imgFlag").val();
if (uploadEventFile == "0") {
tips = '将使用默认一次接线图,确定生成?';
picdefult = '1';
} else {
tips = '确定生成?';
picdefult = '0';
}
var pointNode = getTreeSelected(2);
var startTime = $("#startTime").val();
var endTime = $("#endTime").val();
var lineIndex = $("#lineIndex").val();
var name = $("#lineName").val();
var reportNumber = $("#reportNumber").val();
var crmName = $("#crmName").val();
if(lineIndex == null || lineIndex == ''){
layer.msg("请选择监测点",{icon:2})
return
}
layer.confirm(tips, function (index) {
var idea;
idea = ityzl_SHOW_LOAD_LAYER();
$.ajax({
method: "post",
url: "/pqs9000/exportmodel/exportModel",
data: {
startTime: startTime,
endTime: endTime,
lineIndex: lineIndex,
name: name,
reportNumber: reportNumber,
crmName: crmName,
picdefault: picdefult
},
dataType: 'text',
async: false,
success: function (data) {
if (data == "pathfail") {
layer.msg("生成失败,模板路径错误!", {
icon: 5,
time: 2000
}, function () {
parent.layer.closeAll()
});
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
} else if (data == "readerror") {
layer.msg("服务器无法打开WORD模板!", {
icon: 5,
time: 2000
}, function () {
parent.layer.closeAll()
});
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
} else if (data == "filefail") {
layer.msg("生成失败,上传图片文件有误!", {
icon: 5,
time: 2000
}, function () {
parent.layer.closeAll()
});
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
} else if (data == "exportworld") {
layer.msg("生成失败,数据有误!", {
icon: 5,
time: 2000
}, function () {
parent.layer.closeAll()
});
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
} else {
layer.msg("生成成功!", {
icon: 1,
time: 2000
}, function () {
self.location.href = "/pqs9000/exportmodel/downloadModel";
});
}
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(idea);
}
});
})
})
</script>
</body>
</html>

View File

@@ -0,0 +1,392 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>合格率报告</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrap/bootstrap.min.css">
<link rel="stylesheet" href="${ctx}/css/plugin/datatables/buttons.dataTables.min.css">
<link rel="stylesheet" href="${ctx}/css/plugin/datatables/datatables.bootstrap.css">
<link rel="stylesheet" href="${ctx}/css/plugin/datatimepicker/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="${ctx}/css/plugin/ztree/zTreeStyle.css">
<link rel="stylesheet" href="${ctx}/css/plugin/fontawesome/font-awesome.min.css">
<link rel="stylesheet" href="${ctx}/css/basic.css">
<link rel="stylesheet" href="${ctx}/css/plugin/basicButton.css">
<link rel="stylesheet" href="${ctx}/css/tip.css">
<style>
body {
overflow: hidden;
}
#integritylist {
min-width: 2000px;
}
.tr {
text-align: center;
}
.td {
text-align: center;
height: 48px;
line-height: 48px
}
.table > tbody > tr > td {
padding: 5px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.pagination > li > a, .pagination > li > span {
padding: 6px 12px;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="form-inline header mt10">
<label class="form-group">区域:</label>
<div class="form-group has-feedback mr10">
<div class="disinlineb">
<input id="area" class="form-control" style="width: 140px" readonly>
<i class="fa fa-caret-down areaicon"></i>
<i class="fa fa-caret-up treeUpIcon disnone"
style="color: #C9CBCE;position: absolute;left: 60px;font-size: 18px;z-index: 9999;top: 20px"></i>
<div class=" ztree treeUpDiv disnone " id="areaTree"
style="position: absolute;width: 140px;height: 147px;border: 2px solid #C9CBCE;overflow: auto;top: 32px;background: #fff;z-index: 100;border-radius: 2px">
</div>
</div>
</div>
<%@include file="../include/time.jsp" %>
<button id="query" type="button" class="btn btn-primary ml5">
<i class="glyphicon glyphicon-search"></i>
</button>
<div class="form-group fr mr10" id="fliteData">
<label>筛选数据:</label>
<input type="text" class="form-control" onkeyup="searchResult(this.value)" placeholder="空格分开多条件筛选数据">
</div>
</div>
<table id="integritylist" class="table table-striped table-bordered dataTable no-footer width100">
<thead>
<tr>
<th>序号</th>
<th>变电站</th>
<th>监测点名称</th>
<th>行业类型</th>
<th>分类等级</th>
<th>电压等级</th>
<th>上级变电站</th>
<th>挂接线路</th>
<th>PT变比</th>
<th>CT变比</th>
<th>短路容量(MVA)</th>
<th>设备容量(MVA)</th>
<th>协议容量(MVA)</th>
<th>数据完整率</th>
<th>谐波情况</th>
<th>电能质量情况</th>
</tr>
</thead>
</table>
</div>
</body>
<script src="${ctx}/js/plugin/jquery/jquery.min.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap.min.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="${ctx}/js/plugin/datatables/datatables.jquery.js"></script>
<script src="${ctx}/js/plugin/datatables/dataTables.buttons.min.js"></script>
<script src="${ctx}/js/plugin/datatables/datatables.bootstrap.js"></script>
<script src="${ctx}/js/plugin/datatables/buttons.html5.min.js"></script>
<script src="${ctx}/js/plugin/layui/layer.js"></script>
<script src="${ctx}/jspJS/utils/loading.js"></script>
<script src="${ctx}/jspJS/utils/timeControl.js"></script>
<script src="${ctx}/js/plugin/ztree/jquery.ztree.core.js"></script>
<script src="${ctx}/js/area.js"></script>
<script src="${ctx}/js/plugin/xss/xss.js"></script>
<script src="${ctx}/jspJS/utils/judgeAjaxStatus.js"></script>
<script src="${ctx}/js/color.js"></script>
<script type="text/javascript">
var $area = $("#area");
var $startTime = $("#startTime");
var $endTime = $("#endTime");
var dataTable = null;
var resultData = null;
var areaInfo;
$("#interval").val("周");
$(function () {
//初始化区域
$.ajax({
type: "POST",
url: "/pqs9000/user/getAreasInfo",
dataType: 'json',
success: function (data) {
areaInfo = data;
$("#area").val(data[0].name);
$("#area").attr("index", data[0].id);
areaTree = $.fn.zTree.init($("#areaTree"), settingAreaTree, data);
//初始化页面内容
var area = $area.eq(0).attr("index");
var startTime = $startTime.eq(0).val();
var endTime = $endTime.eq(0).val();
refresh(area, startTime, endTime);
}
})
})
//点击确定,去后台请求参数
$("#query").click(function () {
var area = $area.eq(0).attr("index");
var startTime = $startTime.eq(0).val();
var endTime = $endTime.eq(0).val();
refresh(area, startTime, endTime);
});
//获取表格数据
function refresh(area, startTime, endTime) {
var i;
$.ajax({
type: "get",
url: "/pqs9000/fpyreport/qualifiedRate",
dataType: "json",
data: {
startTime: startTime,
endTime: endTime,
area: area
},
beforeSend: function () {
i = ityzl_SHOW_LOAD_LAYERLONG();
},
success: function (data) {
if (data.code === 500) {
layer.msg(data.message, {icon: 2, time: 2000})
//没有数据
resultData = null;
} else {
resultData = data.body;
}
startQuery();
//***********关闭loading
ityzl_CLOSE_LOAD_LAYER(i);
}
});
}
function startQuery() {
//实时刷新时间单位为毫秒
it = setInterval('refreshQuery()', 100);
}
/* 刷新查询 */
function refreshQuery() {
var width = $("#integritylist").width();
if (width > 100) {
initTable(resultData);
window.clearInterval(it)
}
}
//实例化表格
function initTable(data) {
var height = $(window).height() - 155;
var length = Math.floor(height / 28);
if (length < 1) {
length = 1;
}
dataTable = $("#integritylist").DataTable();
dataTable.clear().draw();
dataTable = $('#integritylist').DataTable({
columnDefs: [
{
orderable: false,
targets: [0]
}
],
columns: [
{width: "2%", data: null},
{
width: "10%", data: "bdName", render: function (data, type, full, meta) {
var value = data;
if (data.length > 10) {
value = data.substring(0, 9) + "...";
value = "<span title=" + data + ">" + value + "</span>";
}
return value;
}
},
{
width: "10%", data: "lineName", render: function (data, type, full, meta) {
var value = data;
if (data.length > 12) {
value = data.substring(0, 11) + "...";
value = "<span title=" + data + ">" + value + "</span>";
}
return value;
}
},
{width: "6%", data: "businessType"},
{width: "6%", data: "calssificationGrade", render: function (data, type, full, meta) {
return data==null?"/":data;
}},
{width: "5%", data: "scale"},
{width: "6%", data: "superiorsSubstation", render: function (data, type, full, meta) {
return data==null?"/":data;
}},
{width: "6%", data: "hangLine", render: function (data, type, full, meta) {
return data==null?"/":data;
}},
{width: "5%", data: "pt"},
{width: "5%", data: "ct"},
{width: "6%", data: "dlcmp"},
{width: "6%", data: "devcmp"},
{width: "6%", data: "xycmp"},
{
width: "6%", data: "integrity",
render: function (data, type, full, meta) {
var temp = Number(data);
if (temp > 100) {
return 100;
} else if (temp < 0) {
return 0;
} else {
return temp;
}
}
},
{width: "8%", data: "harmDes"},
{
width: "20%", data: "powerDes", render: function (data, type, full, meta) {
var value = data;
if (data.length > 21) {
value = data.substring(0, 20) + "...";
value = "<span title=" + data + ">" + value + "</span>";
}
return value;
}
},
],
destroy: true,
data: data,
lengthChange: false,
searching: true,
dom: 'rtip',
scrollY: height,
scrollX: true,
lengthMenu: [length],
language: {
url: '/pqs9000/json/chine.json'
},
fnDrawCallback: function (oTable) {
$("#integritylist_info").addClass("fl");
$("#integritylist_paginate").addClass("fr");
$("#integritylist_paginate").append("<div style='float:right;padding-top:4px;padding-left:10px'>到第 <input type='text' id='changePage' class='input-text' style='width:50px;height:28px;'> 页 <button class='btn btn-primary' id='dataTable-btn'>确定</button></div>");
var table = $("#integritylist").dataTable();
$('#dataTable-btn').click(function (e) {
if ($("#changePage").val() && $("#changePage").val() > 0) {
var redirectpage = $("#changePage").val() - 1;
} else {
var redirectpage = 0;
}
table.fnPageChange(redirectpage);
});
}
});
var name = $area.find("option:selected").text();
var startTime = $startTime.eq(0).val();
var endTime = $endTime.eq(0).val();
startTime.replace("-", "");
endTime.replace("-", "");
new $.fn.dataTable.Buttons(dataTable, {
buttons: [
{
extend: 'csv',
title: name + startTime + '至' + endTime + '合格率',//导出csv名称
exportOptions: {
columns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
format: {
body: function (data, rID, cID) {
if (cID === 0) {
return rID + 1;
} else if (cID === 1 | cID === 2 | cID === 6 | cID === 7 | cID === 15) {
let result;
if (data.indexOf("title") > 0) {
result = data.substring(data.indexOf("=") + 1, data.indexOf(">"));
} else {
result = data
}
if(cID === 1){
if (result.lastIndexOf("_") > 0) {
result = result.substring(0,result.lastIndexOf("_"));
}
}
if (cID === 15) {
let arr = result.split(";")
if (arr.length == 0) {
return result;
} else {
let resultStr = "";
for (let i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
resultStr += arr[i] + ';\n';
}
}
return resultStr;
}
}
return result;
} else {
return data;
}
}
}
}
}
]
});
modifyCss(dataTable);
dataTable.on('order.dt search.dt',
function () {
dataTable.column(0, {
search: 'applied',
order: 'applied'
}).nodes().each(function (cell, i) {
cell.innerHTML = i + 1;
});
}).draw();
}
function modifyCss(dataTable) {
dataTable.buttons().container().css("display", "inline-block");
dataTable.buttons().container().css("float", "right");
dataTable.buttons().container().css("top", "4px");
dataTable.buttons().container().find("a").prepend("<i class='glyphicon glyphicon-share'></i>");
dataTable.buttons().container().appendTo('.header');
dataTable.buttons().container().after($("#fliteData")[0]);
}
//特殊处理,表头紧缩问题--start
var it = null;
//搜索表中的数据
function searchResult(value) {
dataTable.search(value).draw();
}
</script>
</html>

View File

@@ -0,0 +1,51 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>合格率报表</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<link rel="stylesheet" href="${ctx}/css/plugin/bootstrap/bootstrap.css">
<link rel="stylesheet" href="${ctx}/css/plugin/datatimepicker/bootstrap-datetimepicker.css">
<link rel="stylesheet" href="${ctx}/js/plugin/layui/css/layui.css">
<link rel="stylesheet" href="${ctx}/js/plugin/dateRangePicker/daterangepicker.css">
<link rel="stylesheet" href="${ctx}/css/basic.css">
<style type="text/css">
body {
overflow: hidden;
}
.form-group .form-control {
height: 26px;
}
</style>
</head>
<body>
<%@include file="../include/deviceTree.jsp" %>
<form class="form-inline header" style="float: right;margin-top:5px;position: relative;z-index: 99">
<%@include file="../include/time.jsp" %>
<div class="form-inline pdr15" style="display: inline-block;">
<button type="button" class="btn btn-primary" id="export">
<i class='glyphicon glyphicon-share'>生成报表</i>
</button>
</div>
</form>
<scrqipt src="${ctx}/js/plugin/bootstrap/bootstrap.min.js"></scrqipt>
<script src="${ctx}/js/plugin/layui/layui.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/moment.min.js"></script>
<script src="${ctx}/js/plugin/dateRangePicker/daterangepicker.js"></script>
<script src="${ctx}/js/plugin/ztree/jquery.ztree.excheck.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.js"></script>
<script src="${ctx}/js/plugin/bootstrap/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="${ctx}/jspJS/utils/judgeAjaxStatus.js"></script>
<script src="${ctx}/jspJS/utils/timeControl.js"></script>
<script src="${ctx}/jspJS/utils/loading.js"></script>
<script src="${ctx}/jspJS/report/percent.js"></script>
</body>
</html>