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


<!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>

<style>
 #registerFilterBlock {
   margin-bottom: 15px;
 }
 #registerFilterBlock .filter-field {
   margin-bottom: 10px;
 }
 #registerFilterBlock .register-filter-buttons {
   margin-top: 8px;
   margin-bottom: 18px;
   padding-left: 15px;
   white-space: nowrap;
 }
 #registerFilterBlock .register-filter-buttons .btn {
   margin-right: 8px;
 }
 #filter_register_status {
   width: 100%;
 }
 #registerFilterBlock .select2-container {
   width: 100% !important;
 }
</style>

<script type="text/javascript">

 var skip_url_app = false;
 const urlParams = new URLSearchParams(window.location.search);
 var registerTypeValue = "УЗЕВ-ДДС-НПФ";

 function application() {
   var smevRegId = urlParams.get('id');
   if (smevRegId !== null) {
     return { id: smevRegId };
   } else {
     return { id: null };
   }
 }

 function clickSecondaryTableZev() {
   var sid = urlParams.get('sid');
   var id  = urlParams.get('id');
   if (sid && id) {
     $('#queryTable_NOd4LnJR tr').filter(function () {
       return $(this).text().trim().toLowerCase().includes(sid);
     }).click();
   }
 }

 function clickSecondaryTableEpgu() {
   var sid = urlParams.get('sid');
   var id  = urlParams.get('id');
   if (sid && id) {
     $('#queryTable_W7cDAp2Z td').filter(function () {
       return $(this).text().trim().toLowerCase().includes(sid);
     }).click();
   }
 }

 $(function () {

   // Select2 для статуса ЗЕВ (фильтр нижних таблиц)
   $("#filterStatus").select2({
     placeholder: "Статус ЗЕВ",
     allowClear: true,
     data: [
       { id: 'Удовлетворено СФР',    text: 'Удовлетворено СФР' },
       { id: 'Не удовлетворено СФР', text: 'Не удовлетворено СФР' },
       { id: 'Сформировано',         text: 'Сформировано' },
       { id: 'Отклонено',            text: 'Отклонено' },
       { id: 'Принято',              text: 'Принято' },
       { id: 'Зарегистрировано',     text: 'Зарегистрировано' },
       { id: 'Аннулировано',         text: 'Аннулировано' },
       { id: 'Удалено',              text: 'Удалено' },
       { id: 'Отказано',             text: 'Отказано' }
     ],
     multiple: false
   });

   // Select2 для статуса реестра (фильтр верхней таблицы)
   $("#filter_register_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: 'Отправлен' }
     ]}
   });

   // Кнопки фильтра нижних таблиц
   $("#filter_search").click(function () {
     dataTable_zev.reload();
     dataTable_epgu.reload();
   });

   $('#filter_clean').click(function () {
     $('#filterForm')[0].reset();
     $('#filterStatus').select2('val', null);
     dataTable_epgu.reload();
     dataTable_zev.reload();
   });

   // Кнопки фильтра верхней таблицы реестров
   $('#filter\\.search').click(function () {
     var hasFilter = $('#filter_register_status').val()
       || $('#filter\\.created_at_from').val()
       || $('#filter\\.created_at_to').val()
       || $('#filter\\.register_number').val();

     if (!hasFilter) {
       showMessages([{ messageType: 'info', message: 'Задайте хотя бы один фильтр для поиска' }]);
       return;
     }
     skip_url_app = true;
     registerTable.reload();
   });

   $('#filter\\.cleanFilter').click(function () {
     $('#filter_register_status').select2('val', '');
     $('#filter\\.created_at_from').val('');
     $('#filter\\.created_at_to').val('');
     $('#filter\\.register_number').val('');
     skip_url_app = false;
     registerTable.reload();
   });

   // Верхняя таблица реестров
   var registerTable = new QueryTable("k6uzt3IS", {

     initComplete: function (settings, json) {
       registerTable.addActionButton("addNewRegister", "Создать", addNewRegister, "btn-success", false);
       registerTable.addActionButton("exportRegister", "Сформировать xml c проверкой", exportRegister, "btn-primary", true);
       registerTable.addActionButton("uploadRegister", "Отправить в СФР", uploadRegister, "btn-primary", true);
       registerTable.addActionButton("deleteRegister", "Удалить", deleteRegister, "btn-danger", true);
     },

     onRowSelect: function (data, index) {
       dataTable_zev.reload();
       dataTable_epgu.reload();
     },

     onRowDeselect: function (data, index) {
       dataTable_zev.reload();
       dataTable_epgu.reload();
     },

     drawCallback: function (settings) {
       skip_url_app = (settings.oAjaxData.queryTableFilter.size != 0);
       dataTable_zev.reload();
       dataTable_epgu.reload();
     }
   },
   function () {
     var data = {};
     data.registerType = registerTypeValue;
     var id_register = application().id;
     if (skip_url_app) {
       data.id = -1;
     } else {
       data.id = id_register;
     }
     data.filter_status    = $("#filter_register_status").val();
     data.filter_date_from = $("#filter\\.created_at_from").val();
     data.filter_date_to   = $("#filter\\.created_at_to").val();
     data.filter_number    = $("#filter\\.register_number").val();
     return data;
   },
   { order: [[0, 'desc']], selectFirstRow: true });

   // Нижняя таблица ЗЕВ
   var dataTable_zev = new QueryTable("NOd4LnJR", {
     drawCallback: function (settings) {
       clickSecondaryTableZev();
     }
   },
   function () {
     var appData = registerTable.data();
     var data = {};
     data.registerId = (appData ? appData.id : -1);
     var sid = urlParams.get('sid');
     if (sid) { data.id = sid; }
     if ($("#filterStatus").val())   { data.filterStatus   = $("#filterStatus").val(); }
     if ($("#filterDateFrom").val()) { data.filterDateFrom = $("#filterDateFrom").val(); }
     if ($("#filterDateTo").val())   { data.filterDateTo   = $("#filterDateTo").val(); }
     return data;
   }, { selectFirstRow: true });

   // Нижняя таблица ЕПГУ
   var dataTable_epgu = new QueryTable("W7cDAp2Z", {
     drawCallback: function (settings) {
       clickSecondaryTableEpgu();
     }
   },
   function () {
     var appData = registerTable.data();
     var data = {};
     data.registerId = (appData ? appData.id : -1);
     var sid = urlParams.get('sid');
     if (sid) { data.id = sid; }
     if ($("#filterStatus").val())   { data.filterStatus   = $("#filterStatus").val(); }
     if ($("#filterDateFrom").val()) { data.filterDateFrom = $("#filterDateFrom").val(); }
     if ($("#filterDateTo").val())   { data.filterDateTo   = $("#filterDateTo").val(); }
     return data;
   }, { selectFirstRow: true });

   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.ready_to_upload) {
       mes = { messageType: message_level, message: 'Документ в СФР не прошёл форматно-логический контроль' };
       validationResult.push(mes);
       showMessages(validationResult);
       return;
     }
     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: 'esnVAXlT',
         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);
         }
       }
     });
   }

   function deleteRegister() {
     var result = confirm("Вы хотите удалить реестр?");
     if (!result) { return; }
     var appData = registerTable.data();
     var deleteCode = 'jhTAl89Q';
     if (registerTypeValue == 'УЗЕВ-ДДС-НПФ-ЕПГУ') { deleteCode = 'jWJGcqjO'; }
     $.ajax({
       url: "queryAction/action",
       type: "POST",
       async: false,
       data: {
         viewCode: 'esnVAXlT',
         queryActionCode: deleteCode,
         id: appData.id
       },
       dataType: "json",
       success: function (data) {
         if (data && data.messages) { showMessages(data.messages); }
         registerTable.reload();
       }
     });
   }

   function addNewRegister() {
     openNewWindow("view?viewCode=zOH3yED0");
   }

   function exportRegister() {
     var data = registerTable.data();
     var registerId = (data ? data.id : -1);
     var param = 'registerId=' + registerId + '&id=' + registerId;
     if (registerTypeValue == 'УЗЕВ-ДДС-НПФ') {
       window.open("queryModel/file?queryModelCode=kMHGMtuj&queryModelCharset=UTF-8&viewCode=esnVAXlT&" + param, '_blank');
     } else {
       window.open("queryModel/file?queryModelCode=lVgpeDZS&queryModelCharset=UTF-8&viewCode=esnVAXlT&" + param, '_blank');
     }
   }

   // Переключатель ЗЕВ-ЕПГУ
   $('#zev-epgu').on('change', function () {
     registerTypeValue = this.checked ? 'УЗЕВ-ДДС-НПФ-ЕПГУ' : 'УЗЕВ-ДДС-НПФ';
     registerTable.reload();
     var tableContainerZev  = document.getElementById('table_zev');
     var tableContainerEpgu = document.getElementById('table_epgu');
     if (this.checked) {
       tableContainerZev.hidden  = true;
       tableContainerEpgu.hidden = false;
     } else {
       tableContainerZev.hidden  = false;
       tableContainerEpgu.hidden = true;
     }
   });

 });
</script>

<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="https://portal.futurenpf.ru/knowledgebase/category/30252/"/>

       <%-- Верхний блок: фильтры реестра + таблица реестров --%>
       <div class="row">
         <div class="col-sm-12">

           <div id="registerFilterBlock">
             <div class="col-sm-3 filter-field">
               <label class="control-label">Статус</label>
               <input type="text" class="form-control" id="filter_register_status" name="filter_register_status"/>
             </div>
             <div class="col-sm-3 filter-field">
               <label for="filter.created_at_from">Дата реестра с</label>
               <input type="date" id="filter.created_at_from" name="filter.created_at_from" class="form-control">
             </div>
             <div class="col-sm-3 filter-field">
               <label for="filter.created_at_to">Дата реестра по</label>
               <input type="date" id="filter.created_at_to" name="filter.created_at_to" class="form-control">
             </div>
             <div class="col-sm-3 filter-field">
               <label for="filter.register_number">Номер реестра</label>
               <input type="text" id="filter.register_number" name="filter.register_number" class="form-control" placeholder="Номер реестра">
             </div>
             <div class="clearfix"></div>
             <div class="col-sm-12 register-filter-buttons">
               <button id="filter.search" type="button" class="btn btn-success">
                 <span class="glyphicon glyphicon-search" aria-hidden="true"></span> Найти
               </button>
               <button id="filter.cleanFilter" type="button" class="btn btn-warning">
                 <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Сбросить
               </button>
             </div>
             <div class="clearfix"></div>
           </div>

           <form class="form-vertical" id="paramForm">
             <input type="hidden" name="registerId" id="registerId">
             <jsp:include page="queryTable.jsp">
               <jsp:param name="queryTableCode" value="k6uzt3IS"/>
               <jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
             </jsp:include>
           </form>

         </div>
       </div>

       <hr>

       <%-- Нижний блок: галочка + фильтры ЗЕВ + таблицы --%>
       <div class="row">
         <div class="col-sm-12">

           <form id="filterForm" class="form-horizontal" style="margin-bottom:15px;">
             <div class="form-group">
               <div class="col-sm-12" style="margin-bottom:10px;">
                 <input type="checkbox" style="margin: 0 10px;" id="zev-epgu" name="zev-epgu">
                 <label for="zev-epgu">ЗЕВ-ЕПГУ</label>
               </div>
               <div class="col-sm-2">
                 <label class="control-label">Статус ЗЕВ</label>
                 <div type="text" class="form-control" id="filterStatus" name="filterStatus"></div>
               </div>
               <div class="col-sm-2">
                 <label for="filterDateFrom">Дата регистрации С</label>
                 <input type="text"
                        class="form-control date-picker-on"
                        name="filterDateFrom"
                        value="<fmt:formatDate value='${currentDate}' pattern='dd.MM.yyyy' />"
                        id="filterDateFrom" placeholder="Дата">
               </div>
               <div class="col-sm-2">
                 <label for="filterDateTo">Дата регистрации ПО</label>
                 <input type="text"
                        class="form-control date-picker-on"
                        name="filterDateTo"
                        value="<fmt:formatDate value='${currentDate}' pattern='dd.MM.yyyy' />"
                        id="filterDateTo" placeholder="Дата">
               </div>
             </div>
             <div class="form-group col-sm-12 btn-group">
               <button id="filter_search" name="filter_search" type="button" class="btn btn-success">
                 <span class="glyphicon glyphicon-search" aria-hidden="true"></span> Найти
               </button>
               <button id="filter_clean" name="filter_clean" type="button" class="btn btn-warning">
                 <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Сбросить
               </button>
             </div>
           </form>

           <div class="dynamic-table" id="table_zev">
             <jsp:include page="queryTable.jsp">
               <jsp:param name="queryTableCode" value="NOd4LnJR"/>
               <jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
             </jsp:include>
           </div>
           <div class="dynamic-table" id="table_epgu" hidden>
             <jsp:include page="queryTable.jsp">
               <jsp:param name="queryTableCode" value="W7cDAp2Z"/>
               <jsp:param name="queryTableStyle" value="white-space:nowrap;"/>
             </jsp:include>
           </div>

         </div>
       </div>

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

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

</body>
</html>