Загрузка данных
<!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>
<script type="text/javascript" src="<c:url value='/js/${version}/queryAction.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/${version}/queryTable.js'/>"></script>
<script type="text/javascript">
var skip_url_app = false;
const urlParams = new URLSearchParams(window.location.search);
// Идентификатор реестра из параметров запуска
function application() {
var smevRegId = urlParams.get('id');
if(smevRegId !== null){
return {
id: smevRegId
}
}else{
return {
id: null
}
}
};
function clickSecondaryTable() {
var sid = urlParams.get('sid');
var id = urlParams.get('id')
if (sid && id) {
$('#queryTable_Bzii4pNc td').filter(function() {
return $(this).text().trim().toLowerCase().includes(sid);
}).click();
}
}
$(function () {
let filter_show_list = false;
var registerTable = new QueryTable("ICeUPwKE", {
initComplete: function (settings, json) {
registerTable.insertActionButton("addNewRegister", "Создать", addNewRegister, "btn-success", false,0);
registerTable.addActionButton("exportRegister", "Сформировать xml c проверкой", exportRegister, "btn-primary", true);
registerTable.addActionButton("uploadRegister", "Отправить в СФР", uploadRegister, "btn-primary", true);
// KKP (12/02/2026) registerTable.addActionButton("editComment", "Изменить комментарий", editComment, "btn-primary", true);
registerTable.addActionButton("createNotification", "Создать уведомление на упразднение", createNotification, "btn-primary", true);
registerTable.addActionButton("deleteRegister", "Удалить", deleteRegister, "btn-danger", true);
// кнопка "Обновить"
registerTable.addActionButton("updateRegisterTable", "Обновить", updateRegister, "btn-primary", false, 0);
$("#updateRegisterTable").prepend('<span class="glyphicon glyphicon-refresh" style="text-align:center; padding-right: 5px;"></span>');
},
onRowSelect: function (data, index) {
dataTable.reload();
if (data.accepted){
$("#editComment").attr("disabled", "disabled")
}
myStorage = window.localStorage;
localStorage.setItem("documentNumber", data ? data.number : null); // documentNumber
localStorage.setItem("registerDate", data ? data.c1 : null); // registerDate
},
onRowDeselect: function (data, index) {
dataTable.reload();
localStorage.clear();
},
drawCallback: function (settings) {
skip_url_app = (settings.oAjaxData.queryTableFilter.size != 0);
dataTable.reload();
}
},
function () {
var appData = registerTable.data();
var data = {};
data.registerType ="ЗСПННПФ";
/*let id_register = application().id;
if(skip_url_app) {
data.id = -1;
}else{
data.id = id_register;
}
return data;*/
return {
registerType: "ЗСПННПФ",
id: skip_url_app ? -1 : application().id,
filter_created_at_from: $("#created_at_from").val(),
filter_created_at_to: $("#created_at_to").val(),
filter_register_number: $("#register_number").val(),
filter_status: $("#filter_status").val(),
filter_sent_from: $("#sent_from").val(),
filter_sent_to: $("#sent_to").val(),
filter_application_type: $("#application_type").val(),
};
},
{order: [[0, 'desc']], selectFirstRow: true}
);
var dataTable = new QueryTable("Bzii4pNc",{
drawCallback: function(settings) {
clickSecondaryTable();
}
},
function () {
var appData = registerTable.data();
var data = {};
data.registerId = (appData ? appData.id : -1);
var sid = urlParams.get('sid');
if (sid) {
data.id = sid;
}
return data;
}
);
function uploadRegister(){
var validationResult = [];
var mes = {};
var message_level = 'info';
var appData = registerTable.data();
if(appData.verified_file_id == '' || appData.verified_file_id == null ){
mes = {messageType: message_level, message: 'Отсутствует документ в СФР'};
validationResult.push(mes);
showMessages(validationResult);
return;
}
if(appData.sfr_status != 'Успешно' && appData.sfr_status != 'Выгружен' && appData.sfr_status != 'ФЛК пройден'){
mes = {messageType: message_level, message: 'Документ в СФР не прошёл форматно-логический контроль'};
validationResult.push(mes);
showMessages(validationResult);
return;
}
// remove the extension from the file name (as we constructing archive name)
var archiveName = appData.sfr_file_name;
var dotPosition = (archiveName).lastIndexOf('.');
if(dotPosition != -1){
archiveName = archiveName.slice(0, dotPosition);
}
archiveName = archiveName + '.tar.gz';
$.ajax({
url: "queryAction/action",
type: "POST",
async: false,
data: {
viewCode: 'POpUV6Xq',
queryActionCode: 'DaizGytc',
record_id: appData.v_file_id,
unload_mode: 1,
unload_format: 'gzp',
unload_archive_name: archiveName
},
dataType: "json",
success: function (data) {
if(data){
if(data.data == 0){
mes = {messageType: message_level, message: 'Файл выгружен.'};
validationResult.push(mes);
}
if(data.data == 1){
mes = {messageType: message_level, message: 'Файл с таким именем уже существует во внешнем хранилище.'};
validationResult.push(mes);
}
if(data.data != 0 && data.data != 1){
mes = {messageType: message_level, message: 'Ошибка: код процесса выгрузки ' + data};
validationResult.push(mes);
}
showMessages(validationResult);
registerTable.reload();
}
}
});
}
function deleteRegister(){
var result = confirm("Вы хотите удалить реестр?");
if(!result){
return;
}
var appData = registerTable.data();
$.ajax({
url: "queryAction/action",
type: "POST",
async: false,
data: {
viewCode: 'POpUV6Xq',
queryActionCode: '9piSIFL0',
id: appData.id,
},
dataType: "json",
success: function (data) {
if(data){
if(data.messages){
showMessages(data.messages);
}
}
registerTable.reload();
}
});
}
function addNewRegister(){
openNewWindow("view?viewCode=k175zHtr");
}
function exportRegister(){
var data = registerTable.data();
var registerId = (data ? data.id : -1);
var param ='registerId=' + registerId + '&';
param = param + "id=" + registerId;
window.open("queryModel/file?queryModelCode=WD0qvPiV&queryModelCharset=UTF-8&viewCode=POpUV6Xq&"+param, '_blank');
}
function editComment(){
var data = registerTable.data();
$("#id").val(data ? data.id : null);
$("#description").val(data ? data.description : null);
$("#CommentformModal").modal('show');
}
// Обновить главную таблицу
function updateRegister() {
registerTable.reload();
}
// Создать уведомление на упразднение
function createNotification(){
window.location.href = "view?viewCode=3xgRagsW";
}
//Операция сохранения комментария
var saveComment = new QueryAction("kvydblUg", {
initComplete: function (queryAction) {
saveComment.enable();
},
actionComplete: function (data) {
$("#CommentformModal").modal('hide');
registerTable.reload();
}
}, getCommentData);
function getCommentData(){
var data = {};
$("#editCommentForm").serializeArray().map(function (x) {
data[x.name] = x.value;
});
return data;
}
function uuid() {
function randomDigit() {
if (crypto && crypto.getRandomValues) {
var rands = new Uint8Array(1);
crypto.getRandomValues(rands);
return (rands[0] % 16).toString(16);
} else {
return ((Math.random() * 16) | 0).toString(16);
}
}
var crypto = window.crypto || window.msCrypto;
return 'xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx'.replace(/x/g, randomDigit);
}
$("#application_type").select2({
placeholder: "Типы уведомлений",
allowClear: true,
minimumInputLength: 0,
id: function (e) {
return e.value;
},
ajax: {
url: "queryModel?queryModelCode=0o3kIHaq",
dataType: 'json',
data: function (term, page) {
return {
term: term,
maxResults: 10,
type: 0
};
},
results: function (data, page) {
return {
results: data.list
};
}
},
formatResult: (data) => `<div>\${data.value}</div>`,
formatSelection: (data) => {
/*$("#paramnameType").text(data.type);
$("#paramnameType").removeClass('hidden');*/ // показать тип выбранного элемента списка
return data.value;
},
}).on("change", function (e) {
//$("#param").attr("value", e.val);
});
$("#filter_status").select2({
placeholder: "Статус",
allowClear: true,
minimumInputLength: 0,
id: function (e) {
return e.id;
},
data: {results: [
{id: 1, text: 'Сформирован'},
{id: 2, text: 'Проверяется'},
{id: 3, text: 'ФЛК пройден'},
{id: 4, text: 'Ошибка ФЛК'},
{id: 5, text: 'Отправлен'}
]},
});
// календари
$("#created_at_from").datetimepicker({
useCurrent: false,
locale: 'ru',
format: 'DD.MM.YYYY'
});
$("#created_at_to").datetimepicker({
useCurrent: false,
locale: 'ru',
format: 'DD.MM.YYYY'
});
$("#sent_from").datetimepicker({
useCurrent: false,
locale: 'ru',
format: 'DD.MM.YYYY'
});
$("#sent_to").datetimepicker({
useCurrent: false,
locale: 'ru',
format: 'DD.MM.YYYY'
});
// кнопка "Найти"
$("#sendRequest").on('click', (e) => {
// обновить таблицу
registerTable.reload();
e.preventDefault();
});
// кнопка "Очистить"
$("#clearRequest").on('click', (e) => {
$("#created_at_from").val('').trigger('change');
$("#created_at_to").val('').trigger('change');
$("#register_number").val('').trigger('change');
$("#sent_from").val('').trigger('change');
$("#sent_to").val('').trigger('change');
$("#filter_status").select2('val', null);
$("#application_type").select2('val', null);
// обновить таблицу
registerTable.reload();
e.preventDefault();
});
});
</script>
<jsp:include page="header.jsp"/>
<jsp:include page="navbar.jsp"/>
<!-- CommentformModal-->
<div id="CommentformModal" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="CommentformModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<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="editCommentForm" class="form-vertical" role="form">
<input style="display: none" name="id" id="id">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label for="description">Комментарий</label>
<textarea rows="10" id="description" class="form-control" name="description"></textarea>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<jsp:include page="queryAction.jsp">
<jsp:param name="queryActionCode" value="kvydblUg"/>
</jsp:include>
<button class="btn btn-default" type="button" data-dismiss="modal">
<s:message code="button.cancel"/></button>
</div>
</div>
</div>
</div>
<!--END CommentformModal-->
<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="https://portal.futurenpf.ru/knowledgebase/category/29349/"/>
<div class="row">
<h4 class="col-sm-12">Уведомление об обращениях за выплатой СПН</h4>
<form class="form-vertical" id="searchForm">
<div class="row">
<div class="col-sm-12" style="display: flex; align-items: center; margin-top: 20px;">
<div class="col-sm-3">
<div class="form-group">
<label class="control-label">Статус</label>
<input type="text" class="form-control" id="filter_status" name="filter_status"/>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="created_at_from">Дата реестра от</label>
<input type="text" class="form-control date-picker-on"
id="created_at_from"
name="created_at_from" placeholder="Дата">
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="created_at_to">Дата реестра по</label>
<input type="text" class="form-control date-picker-on"
id="created_at_to"
name="created_at_to" placeholder="Дата">
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="register_number">Номер реестра</label>
<input type="text" id="register_number" name="register_number" class="form-control" placeholder="Номер реестра">
</div>
</div>
</div>
<div class="col-sm-12" style="display: flex; align-items: center; margin-top: 20px;">
<div class="col-sm-3">
<div class="form-group">
<label class="control-label">Тип уведомления</label>
<input type="text" class="form-control" id="application_type" name="application_type"/>
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="sent_from">Дата отправки от</label>
<input type="text" class="form-control date-picker-on"
id="sent_from"
name="sent_from" placeholder="Дата">
</div>
</div>
<div class="col-sm-3">
<div class="form-group">
<label for="sent_to">Дата отправки по</label>
<input type="text" class="form-control date-picker-on"
id="sent_to"
name="sent_to" placeholder="Дата">
</div>
</div>
</div>
<div class="col-sm-12" style="display: flex; align-items: center; margin-bottom: 20px;">
<div class="col-sm-2" style="display: flex; flex-direction: row; gap: 10px; margin-top: 10px;">
<button id="sendRequest" name="sendRequest" type="button" class="btn btn-success">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span> Найти
</button>
<button id="clearRequest" name="clearRequest" type="button" class="btn btn-warning">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Сбросить
</button>
</div>
</div>
</div>
</form>
<div class="col-sm-12">
<input type="hidden" name="documentNumber" id="documentNumber">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="ICeUPwKE"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</div>
<hr>
<div class="col-sm-12">
<form class="form-vertical" id="paramForm">
<jsp:include page="queryTable.jsp">
<jsp:param name="queryTableCode" value="Bzii4pNc"/>
<jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
</jsp:include>
</form>
</div>
</div>
</div>
</div>
</div>
<jsp:include page="footer.jsp"/>
</div>
</body>
</html>