Загрузка данных


<!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">&times;</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>