Загрузка данных
<!DOCTYPE html>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html lang="ru">
<jsp:include page="head.jsp"/>
<body>
<%--Максимальное колличество решений для печати, когда решения кажное на своей станице--%>
<c:set var="maxDecisions" value="1000"/>
<script type="text/javascript">
const urlParams = new URLSearchParams(window.location.search);
$(function () {
var paramDecisionsTable = {};
//Таблица реестра
var registerTable = new QueryTable("${tableRegister}", {
initComplete: function (queryAction) {
registerTable.insertActionButton("createRegisterButton", "Создать", createRegister, "btn-success", false, 0);
registerTable.insertActionButton("printRegisterButton", "Печать реестра", printRegister, "btn-info", true, 2);
decisionsTable.reload();
},
onRowSelect: function (data, index) {
decisionsTable.reload();
},
onRowDeselect: function (data, index) {
decisionsTable.reload();
},
drawCallback: function (settings) {
decisionsTable.reload();
}
}, function () {
var dataSort = {};
$("#filterForm").serializeArray().map(function (x) {
dataSort[x.name] = x.value;
});
dataSort.register_id = $("#register_id").val();
paramDecisionsTable = dataSort;
dataSort.filterShowList = Object.values(dataSort).some(value => value !== null && value !== undefined && value !== "")
// ввели параметр в расширенном фильтре
|| registerTable.filter().parts.some(function(value) {
return ['VALUE', 'PREDICATE'].includes(value.type) || value.id.includes('NULL')});
dataSort.paymentType = "${paymentType}";
return dataSort;
},
{ selectFirstRow: true,
showFilter: true,
showExportToExcelButton: true,
paginate: true,
order: [[ 0, 'desc' ]],
});
function printRegister() {
if ('${paymentType}' == 'Перевод СПН из РОПС'){
var registerData = registerTable.data();
var registerId = registerData ? registerData.id : null;
var report = new QueryReport("${reportCode}", null, {
id: registerId
});
report.run();
}else if ( ['Ежегодная передача в РОПС','Ежемесячная передача в РОПС'].includes('${paymentType}') ) {
openReportParamModal()
}else{
showErrorMessage('Не удалось определить шаблон для печати');
}
}
function openReportParamModal(){
var registerData = registerTable.data();
if (registerData && registerData.decisionCount && registerData.decisionCount>"${maxDecisions}"){
$('#reportType_decisionInNewPage').attr('disabled',true);
$('#reportType_decisionInOnePage').prop("checked", true);
}else{
$('#reportType_decisionInNewPage').attr('disabled',false);
}
$("#reportParamModal").modal('show');
}
$('#printReport').bind("click", function () {
var reportType = document.querySelector('input[name="reportType"]:checked').value;
var registerData = registerTable.data();
getReport(reportType, (registerData ? registerData.id : null), null);
$("#reportParamModal").modal('hide');
});
//reportType - тип формирования отчета
//decisionInOneTable - распечатать все решения в одной таблице
//decisionInNewPage - распечатать каждое решение на новой странице
//registerId - id реестра
//decisionId - id решения
function getReport(reportType, registerId, decisionId){
var report = new QueryReport("${reportCode}", null, {
reportType: reportType,
registerId: registerId,
decisionId: decisionId
});
report.run();
}
function createRegister(){
openNewWindow("view?viewCode=${createRegisterCode}");
}
//Таблица решений
var decisionsTable = new QueryTable("${tableDecision}", {
initComplete: function (queryAction) {
if ( ['Ежегодная передача в РОПС','Ежемесячная передача в РОПС'].includes('${paymentType}') ){
decisionsTable.insertActionButton("printDecisionButton", "Печать решения", printDecision, "btn-info", true, 1);
}
}
}, function () {
var registerData = registerTable.data();
paramDecisionsTable.register_id = (registerData ? registerData.id : $("#register_id").val());
return paramDecisionsTable;
},
{ selectFirstRow: false,
showFilter: true,
showExportToExcelButton: true,
paginate: true,
order: [[ 0, 'asc' ]],
});
function printDecision(){
var registerData = registerTable.data();
var decisionData = decisionsTable.data();
getReport('decisionInOneTable', (registerData ? registerData.id : null), (decisionData ? decisionData.id : null));
}
// Найти
$("#filter_search").click(function () {
registerTable.reload();
});
// Сбросить
$('#filter_clean').click(async function () {
$('#filterForm').trigger('reset');
$('#filterForm :input.select2-offscreen').each(function() {
$(this).trigger('change');
});
if( urlParams.get('register_id') !== '') {
$("#register_id").val(null);
urlParams.set('requestId', '');
history.replaceState(null,null,'view?viewCode=${view.code}')
}
registerTable.reload();
});
if( urlParams.get('register_id') !== '') {
$("#register_id").val(urlParams.get('register_id'));
$("#filter_search").click();
}
});
</script>
<!-- reportParam-->
<div id="reportParamModal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="reportParamModal" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4>Варианты печати</h4>
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
<span class="sr-only"><s:message code="dialog.close"/></span></button>
</div>
<div class="modal-body">
<form id="reportParam" class="form-vertical" role="form">
<div class="row">
<div class="col-sm-10">
<div class="form-group">
<input type="radio" id = "reportType_decisionInOnePage" name="reportType" value="decisionInOneTable" checked = "true">
<label for="reportType_decisionInOnePage">распечатать все решения в одной таблице</label>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-10">
<div class="form-group">
<input type="radio" id = "reportType_decisionInNewPage" name="reportType" value="decisionInNewPage">
<label for="reportType_decisionInNewPage">распечатать каждое решение на новой странице (до ${maxDecisions} решений в реестре)</label>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="printReport" class="btn btn-primary" style="">Сформировать</button>
<button class="btn btn-default" type="button" data-dismiss="modal">
<s:message code="button.cancel"/></button>
</div>
</div>
</div>
</div>
<!--END reportParam-->
<jsp:include page="header.jsp"/>
<jsp:include page="navbar.jsp"/>
<div class="container" id="mainContainer">
<div class="page-header">
<h1>${view.name}</h1>
</div>
<div class="container-fluid">
<div class="row row-main">
<jsp:include page="sidebar.jsp"/>
<div class="col-sm-10">
<tags:breadcrumbs path="${breadcrumbsPath}"/>
<h4 class="col-sm-12">${view.name}</h4>
<div>
<input id="register_id" name="register_id" style="display: none"/>
<c:if test="${not empty viewСodeFilter}">
<div style="background-color: #d4edda; margin: -21px -15px 0px; padding: 20px 20px 10px;" >
<div class="row">
<form id="filterForm" class="form-horizontal" role="form" >
<jsp:include page="${viewСodeFilter}.jsp"/>
</form>
</div>
<div class="row">
<div class="form-group col-sm-12 btn-group">
<button id="filter_search" name="filter_search" type="button" class="btn btn-success" data-loading-text="Отбор...">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
Найти
</button>
<button id="filter_clean" name="filter_clean" type="button" class="btn btn-warning" data-loading-text="Очистка...">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Сбросить
</button>
</div>
</div>
</div>
</c:if>
<div class="row">
<div class="col-sm-12">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="${tableRegister}"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="${tableDecision}"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<jsp:include page="footer.jsp"/>
</body>
</html>