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


<!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 session="true" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

							<html lang="ru">
								<head>
									<jsp:include page="head.jsp"/>
									<style>
										th {
											text-align: center;
										}
										.filter-input {
											width: 100%;
										}
									</style>
								</head>
								<body>

									<script type="text/javascript" src="<c:url value='/js/latest/queryAction.js'/>"></script>
									<script type="text/javascript" src="<c:url value='/js/latest/queryTable.js'/>"></script>

									<script type="text/javascript">
										
										let Search_All = false;
										let sr_number = null;
let fns_journal = null;
										
										
										
										$(document).ready(function() {
											$("#filter_activity_type").select2({
												placeholder: "Вид деятельности",
												allowClear: true,
												minimumResultsForSearch: Infinity
											});

											clearFilters();
										});

										function clearFilters() {
											$("#filter_insuranceNumber").val('');
											$("#filter_activity_type").val(null).trigger('change');
											$("#filter_lastName").val('');
											$("#filter_firstName").val('');
											$("#filter_middleName").val('');
											$("#filter_contractNumber").val('');
											$('#filter_startDate').val('');
											$('#filter_endDate').val('');
											$('#filter_Number').val('');
										}

										function getSelectedFnsRows() {
    var result = null;

    $.ajax({
        type: "GET",
        url: "queryModel?queryModelCode=uw93zB4F",
        async: false,
        data: {
            query_table_code: 'VxvzLyks'
        },
        dataType: "json",
        success: function(data) {
            result = data;
        }
    });

    return result;
}
										
									
function updateSelectedRowsState() {
    const modelData = getSelectedFnsRows();
    const rows = modelData && modelData.list ? modelData.list : [];

    const hasSelection = rows.length > 0;
    const singleSelection = rows.length === 1;

    // Эти кнопки работают с одной или несколькими строками
    $('#downloadSelectedFiles').prop('disabled', !hasSelection);
    $('#sendToFnsBtn').prop('disabled', !hasSelection);

    // Редактирование — только одной строки
    $('#openModalBtn').prop('disabled', !singleSelection);

    if (singleSelection) {
        sr_number = rows[0].request_number;
    } else {
        sr_number = null;
    }
}
										
						
										
										
										$(function() {
											
											$("#downloadSelectedFiles").click(function() {
    const modelData = getSelectedFnsRows();
    const rows = modelData && modelData.list ? modelData.list : [];

    if (!rows.length) {
        return;
    }

    rows.forEach(function(row, index) {
        if (!row.model_file_id) {
            return;
        }

        setTimeout(function() {
            const link = document.createElement('a');

            link.href =
                'modelFileToVerification/modelFileToVerification/downloadSource?id='
                + encodeURIComponent(row.model_file_id);

            link.style.display = 'none';

            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }, index * 300);
    });
});
											
											 fns_journal = new QueryTable("VxvzLyks", {
												initComplete: function(queryAction) {
												//	fns_journal.addActionButton("AddButtonMain", "Отправить в ФНС", uploadRegister, "btn-primary", true);
												},
												onRowSelect: function(data, index) {
													//updateSelectedRowsState();
},
												onRowDeselect: function(data, index) {
													//updateSelectedRowsState();
} ,
												drawCallback: function(data, index) {
													updateSelectedRowsState();
} 
											}, function() {      
												return {
													filterInsuranceNumber: $("#filter_insuranceNumber").val(),
													flk_id: getQueryParam('flk_id'),
													id: getQueryParam('id'),
													startDate: $("#filter_startDate").val(),
													endDate: $("#filter_endDate").val(),
													Number: $("#filter_Number").val(),
													filterActivityType: $("#filter_activity_type").val(),
													filterLastName: $("#filter_lastName").val(),
													filterFirstName: $("#filter_firstName").val(),
													filterMiddleName: $("#filter_middleName").val(),
													filterContractNumber: $("#filter_contractNumber").val(),
													filterShowList: Search_All
												};
											},
          { multiselect: true });

											$("#filter_search_top").click(() => {
												const hasFilters = $('#filter_startDate').val().trim() || 
															$('#filter_endDate').val().trim() || 
															$('#filter_Number').val().trim() ||
															$("#filter_activity_type").val() ||
													    $("#filter_lastName").val() ||
														  $("#filter_firstName").val() ||
													    $("#filter_middleName").val() ||
													    $("#filter_contractNumber").val() ||
															$("#filter_insuranceNumber").val();

												if (!hasFilters) {
													return;
												}

												Search_All = true;
												fns_journal.reload();
											});

											$('#filter_clean_top').click(() => {
												Search_All = false;
												clearFilters();
												sr_number = null; 
												fns_journal.reload();
												
											});//

										function uploadRegister() {
    const validationResult = [];
    const message_level = 'info';

    const modelData = getSelectedFnsRows();
    const rows = modelData && modelData.list ? modelData.list : [];

    if (!rows.length) {
        return;
    }

    rows.forEach(function(appData) {

        if (!appData.model_file_id) {
            validationResult.push({
                messageType: message_level,
                message: 'Отсутствует документ в СФР'
            });
            return;
        }

        $.ajax({
            url: "queryAction/action",
            type: "POST",
            async: false,
            data: {
                viewCode: '7K6FKG8e',
                queryActionCode: 'DaizGytc',
                record_id: appData.model_file_id,
                unload_mode: 1
            },
            dataType: "json",
            success: response => handleUploadResponse(response, validationResult)
        });

        $.ajax({
            url: "queryAction/action",
            type: "POST",
            async: false,
            data: {
                viewCode: '7K6FKG8e',
                queryActionCode: 'sr8LySCh',
                model_file_to_verification_id: appData.model_file_id
            },
            dataType: "json",
            success: response => handleUploadResponse(response, validationResult)
        });
    });

    showMessages(validationResult);
    fns_journal.reload();
}

											$("#sendToFnsBtn").on("click", uploadRegister);
											
											function editNumber() {
    const validationResult = [];
    const message_level = 'info';

    const modelData = getSelectedFnsRows();
    const rows = modelData && modelData.list ? modelData.list : [];

    if (rows.length !== 1) {
        return;
    }

    const appData = rows[0];

    if (!appData.smevRegisterId) {
        validationResult.push({
            messageType: message_level,
            message: 'Отсутствует ИД Реестра'
        });
        showMessages(validationResult);
        return;
    }

    const newNumber = $('#modalInput').val();


												$.ajax({
													url: "queryAction/action",
													type: "POST",
													async: false,
													data: {
														viewCode: '7K6FKG8e',
														queryActionCode: '4eEKszab',
														smevRegisterId: appData.smevRegisterId,
														new_number: newNumber,
														model_file_id: appData.model_file_id
													},
													dataType: "json",
													//	success: response => handleUploadResponse(response, validationResult)
													success: function(response){
														if(response.result) {
															return
														}
														showMessages(response.messages)
													}
												});

												$('#editModal').modal('hide');
												showMessages(validationResult);
												fns_journal.reload();
												$('#openModalBtn').prop('disabled', true);
											}

											$('#editForm').on('submit', function (e) {
												console.log('ВВВ')
												e.preventDefault();
												editNumber();
											});

											function handleUploadResponse(response, validationResult) {
												if (response.data === 0) {
													validationResult.push({ messageType: message_level, message: 'Файл выгружен.' });
												} else if (response.data === 1) {
													validationResult.push({ messageType: message_level, message: 'Файл с таким именем уже существует во внешнем хранилище.' });
												} else {
													validationResult.push({ messageType: message_level, message: `Ошибка: код процесса выгрузки ${response.data}` });
												}
											}
									

											
										}); //

										function getQueryParam(key) {
											const url = new URL(window.location.href);
											return url.searchParams.get(key);
										}

										$(document).ready(function(){
    $('#openModalBtn').on('click', function(){

        const modelData = getSelectedFnsRows();
        const rows = modelData && modelData.list ? modelData.list : [];

        if (rows.length !== 1) {
            return;
        }

        const appData = rows[0];

        if (appData.is_sent_to_fns === 'true' || appData.is_sent_to_fns === true) {
            showWarningMessage('Редактирование невозможно: запрос уже отправлен в ФНС');
            return;
        }

        $('#modalInput').val(appData.request_number);
        $('#editModal').modal('show');
    });
});
									</script>

									<jsp:include page="header.jsp"/>
									<jsp:include page="navbar.jsp"/>

									<div class="container" id="mainContainer">
										<div class="page-header">
											<h1>Журнал запросов в ФНС</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/31164/"/>

													<form class="form-horizontal" local-storage id="searchContractFilter"
      style="background-color: #d4edda; margin: -21px -15px 0px; padding: 20px 20px 10px;">

    <div class="row">
        <div class="col-sm-2">
            <input type="text" class="form-control date-picker-on filter-input"
                   id="filter_startDate" name="filter_startDate"
                   placeholder="Дата запроса с.."/>
        </div>

        <div class="col-sm-2">
            <input type="text" class="form-control date-picker-on filter-input"
                   id="filter_endDate" name="filter_endDate"
                   placeholder="Дата запроса по.."/>
        </div>

        <div class="col-sm-2">
            <input type="text" class="form-control filter-input"
                   maxlength="20"
                   id="filter_Number" name="filter_Number"
                   placeholder="Номер запроса"/>
        </div>

        <div class="col-sm-2">
            <input type="text" class="form-control filter-input"
                   maxlength="20"
                   id="filter_contractNumber" name="filter_contractNumber"
                   placeholder="Номер договора"/>
        </div>
    </div>

    <div class="row" style="margin-top: 15px;">
        <div class="col-sm-2">
            <input type="text"
                   class="text-uppercase text-en-to-ru text-only-ru form-control filter-input"
                   maxlength="50"
                   id="filter_insuranceNumber"
                   name="filter_insuranceNumber"
                   data-mask="999-999-999 99"
                   placeholder="СНИЛС"/>
        </div>

        <div class="col-sm-2">
            <input type="text"
                   class="text-uppercase text-en-to-ru text-only-ru form-control filter-input"
                   maxlength="50"
                   id="filter_lastName"
                   name="filter_lastName"
                   placeholder="Фамилия"/>
        </div>

        <div class="col-sm-2">
            <input type="text"
                   class="text-uppercase text-en-to-ru text-only-ru form-control filter-input"
                   maxlength="50"
                   id="filter_firstName"
                   name="filter_firstName"
                   placeholder="Имя"/>
        </div>

        <div class="col-sm-2">
            <input type="text"
                   class="text-uppercase text-en-to-ru text-only-ru form-control filter-input"
                   maxlength="50"
                   id="filter_middleName"
                   name="filter_middleName"
                   placeholder="Отчество"/>
        </div>
    </div>

    <div class="row" style="margin-top: 15px;">
        <div class="col-sm-2">
            <select id="filter_activity_type" name="filter_activity_type" class="form-control filter-input">
                <option value=""></option>
                <option value="NPO">НПО</option>
                <option value="PDS">ПДС</option>
            </select>
        </div>
    </div>

    <div class="row" style="margin-top: 20px;">
        <div class="col-sm-12">
            <div class="btn-group">
                <button id="filter_search_top" name="filter_search_top" type="button" class="btn btn-success"
                        data-loading-text="Отбор...">
                    <span class="glyphicon glyphicon-search"></span> Найти
                </button>
                <button id="filter_clean_top" name="filter_clean_top" type="button" class="btn btn-warning"
                        data-loading-text="Очистка...">
                    <span class="glyphicon glyphicon-trash"></span> Сбросить
                </button>
            </div>
        </div>
    </div>
</form>

													<div class="row">
														<h3 class="col-sm-12">Журнал запросов в ФНС</h3>
														<div class="col-sm-12">
															<jsp:include page="queryTable.jsp">
																<jsp:param name="queryTableCode" value="VxvzLyks"/>
															</jsp:include>
														</div>

													<div class="mb-2" style="margin-top: 15px; margin-left: 15px;">

    <button type="button"
            class="btn btn-warning"
            id="openModalBtn"
            disabled>
        Редактировать
    </button>

    <button type="button"
            class="btn btn-primary"
            id="sendToFnsBtn"
            style="margin-left: 10px;"
            disabled>
        Отправить в ФНС
    </button>

    <button type="button"
            class="btn btn-primary"
            id="downloadSelectedFiles"
            style="margin-left: 10px;"
            disabled>
        <span class="glyphicon glyphicon-download-alt"></span>
        Скачать выбранные
    </button>

</div>

													</div>

													<div class="row">
													

														
													</div>
												</div>
											</div>
										</div>
									</div>

									<div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
										<div class="modal-dialog">
											<div class="modal-content">
												<div class="modal-header">
													<h5 class="modal-title" id="editModalLabel">Редактирование данных</h5>

												</div>
												<div class="modal-body">
													<form id="editForm">
														<div class="mb-3">
															<label for="modalInput" class="form-label">Введите новое значение:</label>
															<input type="text" class="form-control" id="modalInput" placeholder="Заполните поле...">
														</div>
													</form>
												</div>
												<div class="modal-footer">
													<button type="button" class="btn btn-secondary" data-dismiss="modal">Отмена</button>
													<button type="submit" form="editForm" class="btn btn-primary">Сохранить</button>
												</div>
											</div>
										</div>
									</div>

									<jsp:include page="footer.jsp"/>
								</body>
							</html>