????

Your IP : 216.73.216.209


Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/views/sohoa/
Upload File :
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/views/sohoa/duyethoso.eta

<% layout('../layouts/userLayout.eta') %>
<style>
  #fileTable .dropdown.show .btn {
    background-color: #467fcf !important;
  }

  #fileTable .dropdown.show .caret {
    transform: rotate(-90deg);
  }
</style>
<div class="content">
  <div class="page-inner">
    <div class="page-header">
      <h4 class="page-title">Duyệt hồ sơ</h4>
      <ul class="breadcrumbs">
        <li class="nav-home"><a href="/"><i class="flaticon-home"></i></a></li>
        <li class="separator"><i class="flaticon-right-arrow"></i></li>
        <li class="nav-item"><a href="/main">Giao diện chính</a></li>
        <li class="separator"><i class="flaticon-right-arrow"></i></li>
        <li class="nav-item">Duyệt hồ sơ</a></li>
      </ul>
    </div>
    <div class="row">
      <div class="col">
        <div class="card">
          <div class="card-body table-responsive">
            <table id="fileTable" role="table" class="table table-bordered table-striped table-sm w-100">
              <thead role="rowgroup">
                <tr role="row">
                  <!-- <th style="width: 10px"></th> -->
                  <th style="max-width: 150px">Phông</th>
                  <th style="width: 10px">Mục lục</th>
                  <th style="width: 10px">Hộp</th>
                  <th style="width: 20px">Hồ sơ</th>
                  <th style="min-width: 250px">Tiêu đề</th>
                  <th style="max-width: 100px">Thời gian</th>
                  <th style="width: 10px">Số trang</th>
                  <th style="width: 10px">Số tờ</th>
                  <th style="max-width: 100px">Người nộp</th>
                  <th class="control" style="max-width: 50px"></th>
                </tr>
              </thead>
            </table>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<!--Modal sửa hồ sơ-->
<%~ includeFile('../partials/editFile.eta') %>
<!-- Modal sửa văn bản -->
<%~ includeFile('../partials/editDoc.eta') %>
<!--Modal xem chi tiết văn bản trong hồ sơ-->
<div id="detail-win">
  <table id="detailTable" class="table table-bordered table-striped w-100">
    <thead>
      <tr>
        <!-- <th style="width: 10px"></th> -->
        <th style="width: 10px">STT</th>
        <th>Số và ký hiệu</th>
        <th style="min-width: 300px">Trích yếu</th>
        <th>Ngày ban hành</th>
        <th style="width: 10px">Số trang</th>
        <th style="width: 10px">Số tờ</th>
        <th style="width: 10px">Tờ số</th>
        <th>Chức năng</th>
      </tr>
    </thead>
  </table>
</div>
<!-- Popup lịch sử văn bản -->
<div id="history-popup" class="p-3">
  <h4 class="text-primary">Lịch sử số hóa hồ sơ</h4>
  <div class="detail"></div>
</div>
<script type="text/javascript" src="/js/sohoa/suahoso.js"></script>
<script type="text/javascript" src="/js/sign/base64.js"></script>
<script type="text/javascript" src="/js/sign/vgcaplugin.js"></script>
<script type="text/javascript" src="/js/sign/sign.js"></script>
<script type="text/javascript">
  $(function () {
    //Danh sách hồ sơ
    var fileTable = $("#fileTable").DataTable({
      ajax: {
        url: "?list=true",
        dataType: "json",
        data: function (data) {
          delete data.columns;
        }
      },
      // select: { style: 'single' },
      processing: true,
      serverSide: true,
      ordering: false,
      language: { url: "/js/plugin/datatables/Vietnamese.json" },
      columns: [
        {
          data: "FondCode",
          className: 'text-justify',
          render: function (data, type, row) {
            return `${row.FondName}`;
          }
        },
        {
          data: "FileCatalog",
          className: 'text-center',
          render: function (data, type, row) {
            return `${data.toString().padStart(2, '0')}`;
          }
        },
        {
          data: "BoxNumber",
          width: "10px",
          render: function (data, type, row) {
            return `${data.toString().padStart(2, '0')}`;
          }
        },
        { data: "FileNumber", width: "10px" },
        { data: "Title" },
        {
          data: "StartDate",
          className: 'text-center',
          render: function (data, type, row) {
            var date = [];
            if (data) date.push(moment(data).format("DD/MM/YYYY"));
            if (row.EndDate) date.push(moment(row.EndDate).format("DD/MM/YYYY"));
            return date.join('\n');
          }
        },
        { data: "PageNumber" },
        { data: "SheetNumber" },
        { data: 'nameEdit' },
        {
          data: 'countPerform',
          orderable: false,
          className: 'text-center',
          render: function (data, type, row) {
            return `<div class="dropdown">
                      <button class="btn btn-xs btn-default" data-toggle="dropdown">
                        <span class="btn-label"><i class="fas fa-bars"></i></span>
                        <span class="caret"></span>
                      </button>
                      <div class="dropdown-menu border border-dark" style="background-color: #f9fbfd">
                        <a href="javascript:void(0)" class="dropdown-item edit-btn"><i class="fas fa-edit fa-lg mr-3 text-warning"></i> Sửa hồ sơ</a>
                        <a href="javascript:void(0)" class="dropdown-item delete-btn"><i class="fas fa-trash-alt fa-lg mr-3 text-danger"></i> Xóa hồ sơ</a>
                        <a href="javascript:void(0)" class="dropdown-item list-btn"><i class="fas fa-list-alt fa-lg mr-3 text-primary"></i> Xem danh sách văn bản</a>
                        <div class="dropdown-divider"></div>
                        <a href="javascript:void(0)" class="dropdown-item note-btn"><i class="fas fa-history fa-lg mr-3 text-dark"></i> Lịch sử số hóa</a>
                        <a href="javascript:void(0)" class="dropdown-item accept-btn"><i class="fas fa-thumbs-up fa-lg mr-3 text-success"></i> Duyệt hồ sơ</a>
                        <a href="javascript:void(0)" class="dropdown-item sendback-btn"><i class="fas fa-reply fa-lg mr-3 text-danger"></i> Trả lại hồ sơ</a>
                      </div>
                    </div>`;
          }
        }
      ]
    });
    $('#detail-win').kendoWindow({
      width: '90%',
      position: { top: 0, left: '5%' },
      title: 'Danh sách văn bản trong hồ sơ',
      animation: {
        open: { duration: 500 },
        close: { duration: 500 }
      },
      modal: true,
      visible: false,
      actions: ['Pin', 'Minimize', 'Maximize', 'Close'],
      close: function (e) {
        fileTable.ajax.reload(null, false);
      }
    });
    $('#detailTable').on('xhr.dt', function (e, settings, json, xhr) {
      if (json['data'] && json['data'].length) $('#detail-win').data('kendoWindow').open();
    });
    var detailTable = $('#detailTable').DataTable({
      ajax: {
        url: "/sohoa/vanban",
        dataType: "json",
        headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
      },
      language: {
        url: "/js/plugin/datatables/Vietnamese.json"
      },
      ordering: false,
      columns: [
        { data: "DocOrdinal" },
        {
          data: null,
          render: function (data, type, row) {
            var code = [];
            if (row.CodeNumber) code.push(row.CodeNumber);
            if (row.CodeNotation) code.push(row.CodeNotation);
            return code.join("/");
          }
        },
        { data: "Subject" },
        {
          data: "IssuedDate",
          render: function (data, type, row) {
            return data ? moment(data).format("DD/MM/YYYY") : "";
          }
        },
        { data: "PageAmount" },
        { data: "SheetAmount" },
        { data: "SheetIndex" },
        {
          data: "UUID",
          className: 'text-center',
          orderable: false,
          render: function (data, type, row) {
            return `<div class="dropdown">
                      <button class="btn btn-xs btn-default" data-toggle="dropdown">
                        <span class="btn-label"><i class="fas fa-bars"></i></span>
                        <span class="caret"></span>
                      </button>
                      <div class="dropdown-menu border border-dark" style="background-color: #f9fbfd">
                        <a href="javascript:void(0)" class="dropdown-item edit-btn"><i class="fas fa-edit fa-lg mr-3 text-warning"></i> Sửa văn bản</a>
                        <a href="javascript:void(0)" class="dropdown-item delete-btn"><i class="fas fa-trash-alt fa-lg mr-3 text-danger"></i> Xóa văn bản</a>
                        <a href="javascript:void(0)" class="dropdown-item preview-btn"><i class="fas fa-eye fa-lg mr-3 text-success"></i> Xem trước</a>
                        <a href="javascript:void(0)" class="dropdown-item sign-btn"><i class="fas fa-file-signature fa-lg mr-3 text-secondary"></i> Ký số</a>
                        <a href="/sohoa/vanban/${data}?download=true" class="dropdown-item"><i class="fas fa-download fa-lg mr-3 text-primary"></i> Tải xuống</a>
                      </div>
                    </div>`
          }
        }
      ]
    });
    $("#fileTable").on("click", ".list-btn", function (e) {
      var $tr = $(this).closest('tr');
      var fileId = fileTable.row($tr).data().UUID;
      detailTable.ajax.url(`/sohoa/vanban?fileId=${fileId}`).load();
    });
    //Bảng chi tiết văn bản
    $("#detailTable").on("click", ".preview-btn", function (e) {
      var docId = $("#detailTable").DataTable().row($(this).closest("tr")).data().UUID;
      $("<div/>").kendoDialog({
        width: '70%',
        height: '100%',
        title: 'Xem trước nội dung văn bản',
        content: `<iframe class="w-100 h-100" src="/viewer/${window.encodePath(`/sohoa/vanban/${docId}`)}"></iframe>`,
        modal: true,
        closable: true,
        buttonLayout: 'normal',
        animation: {
          open: { duration: 500 },
          close: { duration: 500 }
        },
        actions: [{ text: 'Đóng lại', primary: true }],
        open: function () { $('#detail-win').data('kendoWindow').close() },
        close: function (e) { $('#detail-win').data('kendoWindow').open(); e.sender.destroy() }
      }).data('kendoDialog').open();
    });
    $("#detailTable").on("click", ".delete-btn", function (e) {
      var data = $("#detailTable").DataTable().row($(this).closest("tr")).data();
      $("<div/>").kendoDialog({
        title: 'Xác nhận',
        content: 'Bạn có chắc muốn xóa văn bản trên?',
        modal: true,
        closable: true,
        buttonLayout: 'normal',
        animation: {
          open: { duration: 500 },
          close: { duration: 500 }
        },
        actions: [
          {
            text: 'Đồng ý xóa',
            primary: true,
            action: function (e) {
              $.ajax({
                url: "/sohoa/vanban",
                type: "DELETE",
                data: { id: data.UUID },
                headers: {
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                success: function (data, textStatus, jqXHR) {
                  $('<span/>').kendoNotification({
                    position: { top: 0, left: '50%' }
                  }).data('kendoNotification').show("Đã xóa thành công văn bản", 'info');
                  $("#detailTable").DataTable().ajax.reload(null, false);
                },
                error: function (jqXHR, textStatus, err) {
                  $('<span/>').kendoNotification({
                    position: { top: 20, left: '50%' }
                  }).data('kendoNotification').show(jqXHR.responseText, 'error');
                }
              });
            }
          },
          { text: 'Không xóa' }
        ],
        open: function () { $('#detail-win').data('kendoWindow').close() },
        close: function (e) { $('#detail-win').data('kendoWindow').open(); e.sender.destroy() }
      }).data('kendoDialog').open();
    });

    $('#edit-doc-modal').on('show.bs.modal', function (e) {
      if (this == e.target) $('#detail-win').data('kendoWindow').close();
    });
    $('#edit-doc-modal').on('hide.bs.modal', function (e) {
      if (this == e.target) $('#detail-win').data('kendoWindow').open();
    });
    // Xem lịch sử số hóa
    var historyPopup = $('#history-popup').kendoPopup().data('kendoPopup');
    $("#fileTable").on("click", ".note-btn", function (e) {
      var $tr = $(this).closest("tr");
      var fileId = fileTable.row($tr).data().UUID;
      $.ajax({
        url: '/sohoa/hoso/note/' + fileId,
        method: 'GET',
        dataType: 'json',
        success: function (data, text, jqXHR) {
          var content = '';
          for (var i = 0; i < data.length; i++) {
            var job = '';
            if (data[i].Job == 0) job = 'nộp';
            else if (data[i].Job == 1 && data[i].State == 0) job = 'trả lại';
            else if (data[i].Job == 1 && data[i].State == 2) job = 'duyệt';
            if (job) content += `<span class="text-muted">+ Ngày ${moment(data[i].Date).format("DD/MM/YYYY")}: [${data[i].FullName} ${job}] ${data[i]['Note'] ? ' - ' + data[i]['Note'] : ""}</p>`;
          }
          $('#history-popup .detail').html(content);
          historyPopup.setOptions({ anchor: $tr.find('.dropdown') });
          historyPopup.open();
        },
        error: function (jqXHR, text, err) { }
      })
    })
    //Duyệt hồ sơ
    $("#fileTable").on("click", ".accept-btn", function (e) {
      var fileId = fileTable.row($(this).closest("tr")).data().UUID;
      Swal.fire({
        title: 'Duyệt hồ sơ',
        text: 'Ghi chú duyệt hồ sơ',
        input: 'text',
        inputPlaceholder: 'Ghi chú',
        showCancelButton: true,
        confirmButtonColor: '#467fcf',
        cancelButtonColor: '#cd201f',
        confirmButtonText: 'Duyệt',
        cancelButtonText: 'Hủy'
      }).then(function (result) {
        if (typeof result['value'] != 'undefined') {
          $.ajax({
            url: '',
            method: "POST",
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            data: { UUID: fileId, kind: 2, error: result['value'] },
            success: function (data, text, jqXHR) { fileTable.ajax.reload(null, false) },
            error: function (jqXHR, text, err) { Swal.fire('Lỗi', jqXHR.responseText, 'error') }
          })
        }
      })
    });
    //Trả hồ sơ
    $("#fileTable").on("click", ".sendback-btn", function (e) {
      var fileId = fileTable.row($(this).closest("tr")).data().UUID;
      Swal.fire({
        title: 'Trả lại hồ sơ',
        text: 'Lý do trả lại hồ sơ',
        input: 'text',
        inputPlaceholder: 'Lý do trả hồ sơ',
        showCancelButton: true,
        confirmButtonColor: '#4b9500',
        cancelButtonColor: '#cd201f',
        confirmButtonText: 'Trả lại',
        cancelButtonText: 'Hủy',
        preConfirm: function (input) {
          if (input) {
            $.ajax({
              url: '',
              method: "POST",
              headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
              data: { UUID: fileId, kind: 0, error: input },
              success: function (data, text, jqXHR) { return data },
              error: function (jqXHR, text, err) { Swal.fire('Lỗi', jqXHR.responseText, 'error') }
            })
          } else { Swal.showValidationMessage('Vui lòng nhập lý do trả lại') }
        }
      }).then(function (result) { if (result['value']) fileTable.ajax.reload(null, false) })
    });
    // Ký số
    $('#detailTable').on('click', '.sign-btn', function (e) {
      var docId = $("#detailTable").DataTable().row($(this).closest("tr")).data().UUID;
      var sessionId = $('meta[name="sid"]').attr('content');
      var filename = `${location.origin}/kyso/${docId}`;
      var metadata = [
        { Key: '_csrf', Value: $('meta[name="csrf-token"]').attr('content') },
        { Key: 'docId', Value: docId }
      ];
      exc_sign_file('', filename, metadata);
    });
  });
</script>