????
Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/views/quantri/ |
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/views/quantri/phong.eta |
<% layout('../layouts/userLayout.eta') %> <style> .e-rowcell { white-space: normal !important; } </style> <div class="content"> <div class="page-inner"> <div class="page-header"> <h4 class="page-title">Phông lưu trữ</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="/dashboard">Giao diện chính</a></li> <li class="separator"><i class="flaticon-right-arrow"></i></li> <li class="nav-item">Phông lưu trữ</li> </ul> </div> <div class="row"> <div class="col"> <div class="card"> <div class="card-body"> <table id="fondTable" class="table table-bordered table-striped table-hover dt-responsive"> <thead> <tr> <th class="control" style="width: 20px"></th> <th>Mã phông</th> <th>Tên phông</th> <th>Lịch sử phông</th> <th>Thời gian</th> <th>Tổng số trang đã số hóa</th> <th class="none">Tổng số mét</th> <th class="none">Công cụ tìm kiếm</th> <th class="none">Ghi chú</th> <th>Trạng thái</th> <th class="none">Nhóm tài liệu</th> <th class="control">Sửa/Xóa</th> </tr> </thead> </table> </div> </div> </div> </div> <div class="row"> <div class="col"> <div class="card"> <div class="card-header bg-primary"> <div class="card-title text-white">Tạo phông mới</div> </div> <form id="add-fond-form" action="" method="POST" role="form"> <div class="card-body"> <div class="row"> <div class="col-md-6 form-group"> <label class="placeholder">Cơ quan hình thành phông</label> <select type="text" name="organ" class="form-control" data-role="dropdownlist" data-text-field="OrganName" data-value-field="OrganId" data-placeholder="Chọn cơ quan hình thành phông" data-filter="contains" data-value-primitive="true" data-bind="source:organs,value:newFond.organ,events:{change:updateNewCode}" required></select> <span class="k-invalid-msg" data-for="organ"></span> </div> <div class="col-lg-3 col-sm-6 form-group"> <label class="placeholder">Mã phông</label> <input id="fondCode" type="text" name="code" class="k-textbox form-control" data-bind="value:newFond.code" readonly required> <span class="k-invalid-msg" data-for="code"></span> </div> <div class="col-lg-3 col-sm-6 form-group"> <label class="placeholder">Phông số</label> <input name="number" class="form-control" placeholder="Nhập số phông" type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" data-bind="value:newFond.number,events:{change:updateNewCode}" required> <span class="k-invalid-msg" data-for="number"></span> </div> </div> <div class="row"> <!-- <div class="col-md-6 form-group"> <label class="placeholder">Nhóm tài liệu</label> <select type="text" name="group" data-role="multiselect" data-value-primitive="true" data-placeholder="Chọn nhóm tài liệu" data-text-field="GroupName" data-value-field="Id" data-bind="source: filegroups, value: newFond.group" required></select> <span class="k-invalid-msg" data-for="group"></span> </div> --> <div class="col form-check"> <input id="openCheck" class="k-radio mr-5" type="radio" name="state" value="0" data-bind="checked:newFond.state,events:{change:updateNewCode}"> <label class="k-radio-label" for="openCheck">Phông mở</label> <input id="closeCheck" class="k-radio" type="radio" name="state" value="1" data-bind="checked:newFond.state,events:{change:updateNewCode}"> <label class="k-radio-label" for="closeCheck">Phông đóng</label> </div> </div> <div class="row"> <div class="col-lg-6 col-sm-12 form-group"> <label class="placeholder">Tên phông</label> <input type="text" name="name" class="k-textbox form-control" data-bind="value:newFond.name" placeholder="Nhập tên phông..." required> <span class="k-invalid-msg" data-for="name"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder">Lịch sử hình thành phông</label> <textarea name="history" class="k-textbox form-control" rows="3" data-bind="value:newFond.history" placeholder="Nhập nội dung lịch sử hình thành phông..."></textarea> </div> </div> <div class="row"> <div class="col-md-4 col-sm-6 form-group"> <label class="placeholder">Thời gian tài liệu</label> <input type="text" name="archivestime" class="k-textbox form-control" data-bind="value:newFond.archivestime" placeholder="Năm bắt đầu và kết thúc (1946-1975)"> </div> <div class="form-group col-md-4 col-sm-6"> <label class="placeholder">Tổng số mét</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" class="form-control" name="papertotal" data-bind="value:newFond.papertotal" placeholder="Nhập số mét"> </div> <div class="form-group col-md-4 col-sm-6"> <label class="placeholder">Tổng số mục lục</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" class="form-control" name="totalcatalog" data-bind="value:newFond.totalcatalog" placeholder="Nhập tổng số mục lục"> </div> </div> <div class="row"> <div class="col-md-6 form-group"> <label class="placeholder" for="language">Ngôn ngữ</label> <select name="language" data-role="multiselect" data-value-primitive="true" data-placeholder="Chọn ngôn ngữ" data-text-field="LangName" data-value-field="LangCode" data-bind="source:languages,value:newFond.language" required></select> <span class="k-invalid-msg" data-for="language"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder" for="lookuptool">Công cụ tra cứu</label> <select name="lookuptool" data-role="multiselect" data-value-primitive="true" data-value-field="Id" data-text-field="ToolName" data-placeholder="Chọn công cụ tìm kiếm" data-bind="source:lookupTools,value:newFond.lookuptool"></select> <span class="k-invalid-msg" data-for="lookuptool"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder">Ghi chú</label> <textarea name="description" class="k-textbox form-control" rows="2" data-bind="value: newFond.description" placeholder="Nhập ghi chú về phông..."></textarea> </div> </div> </div> <div class="card-footer"> <div class="clearfix"> <button id="add-fond-btn" type="button" class="btn btn-success pull-right"> <span class="btn-label"><i class="fas fa-briefcase-medical"></i> Tạo mới</span> </button> </div> </div> </form> </div> </div> </div> </div> </div> <!--Modal sửa phông--> <div class="modal fade" id="edit-modal"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Sửa phông</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <form id="edit-form" action="" method="POST"> <div class="modal-body"> <div class="row"> <div class="col-md-6 form-group"> <label class="placeholder">Cơ quan hình thành phông</label> <select id="edit-organ" name="organ" class="form-control" data-role="dropdownlist" data-placeholder="Chọn cơ quan hình thành phông" data-text-field="OrganName" data-value-field="OrganId" data-filter="contains" data-value-primitive="true" data-bind="source: organs, value: fond.OrganId, events: {change: updateCode}" required></select> <span class="k-invalid-msg" data-for="organ"></span> </div> <div class="col-lg-3 col-sm-6 form-group"> <label class="placeholder">Mã phông</label> <input id="fondCode-modal" type="text" name="code" class="k-textbox form-control form-control" data-bind="value: fond.FondCode" title="Mã phông không được để trống" readonly required> <span class="k-invalid-msg" data-for="code"></span> </div> <div class="col-lg-3 col-sm-6 form-group"> <label class="placeholder">Phông số</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" name="number" class="form-control" placeholder="Nhập số phông" data-bind="value: fond.FondNumber, events: {change: updateCode}" title="Chỉ được nhập số" required> <span class="k-invalid-msg" data-for="number"></span> </div> </div> <div class="row"> <div class="col form-check"> <label class="mr-5"> <input type="radio" name="state" data-bind="checked: fond.State, events: {change: updateCode}" value="0"> Phông mở</label> <label><input type="radio" name="state" data-bind="checked: fond.State, events: {change: updateCode}" value="1"> Phông đóng</label> <input type="hidden" name="id" data-bind="value: fond.UUID"> </div> </div> <div class="row"> <div class="col-lg-6 col-sm-12 form-group"> <label class="placeholder">Tên phông</label> <input type="text" name="name" class="k-textbox form-control" placeholder="Nhập tên phông..." data-bind="value: fond.FondName" title="Tên phông không được để trống" required> <span class="k-invalid-msg" data-for="name"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder">Lịch sử hình thành phông</label> <textarea name="history" class="k-textbox form-control" rows="2" placeholder="Nhập nội dung lịch sử hình thành phông..." data-bind="value: fond.FondHistory"></textarea> </div> </div> <div class="row"> <div class="form-group col-md-4 col-sm-6"> <label class="placeholder">Tổng số mét</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" class="form-control" name="papertotal" placeholder="Nhập số mét" data-bind="value: fond.PaperTotal"> </div> <div class="form-group col-md-4 col-sm-6"> <label class="placeholder">Tổng số mục lục</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" class="form-control" name="totalcatalog" placeholder="Nhập tổng số mục lục" data-bind="value: fond.TotalCatalog"> </div> <div class="form-group col-md-4 col-sm-6"> <label class="placeholder">Tổng số trang văn bản đã số hóa</label> <input type="text" data-min="1" data-format="n0" data-decimals="0" data-role="numerictextbox" class="form-control" name="paperdigital" placeholder="Nhập tổng số trang văn bản đã số hóa" data-bind="value: fond.PaperDigital"> </div> </div> <div class="row"> <div class="col-md-6 form-group"> <label class="placeholder" for="language">Ngôn ngữ</label> <select name="language" data-role="multiselect" data-value-primitive="true" data-placeholder="Chọn ngôn ngữ" data-text-field="LangName" data-value-field="LangCode" data-bind="source:languages,value:selectedLanguages" required></select> <span class="k-invalid-msg" data-for="language"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder" for="lookuptool">Công cụ tra cứu</label> <select name="lookuptool" data-role="multiselect" data-value-primitive="true" data-text-field="ToolName" data-value-field="Id" data-placeholder="Chọn công cụ tìm kiếm" data-bind="source:lookupTools,value:selectedTools"></select> <span class="k-invalid-msg" data-for="lookuptool"></span> </div> <div class="col-md-6 form-group"> <label class="placeholder">Ghi chú</label> <textarea name="description" class="k-textbox form-control" rows="2" placeholder="Nhập ghi chú về phông..." data-bind="value: fond.Description"></textarea> </div> </div> <div class="row"> <div class="col"> <label class="custom-control custom-checkbox"> <span class="custom-checkbox-label">Hiển thị trên biểu đồ </span> <input class="custom-checkbox-input" type="checkbox" name="isvisible" data-bind="checked: fond.IsStatisticsVisible" value="1"> </label> </div> </div> </div> <div class="modal-footer"> <button id="edit-btn" type="button" class="btn btn-warning"><i class="fas fa-edit"></i> Sửa</button> <button type="button" class="btn btn-danger" data-dismiss="modal"><i class="fas fa-times"></i> Đóng</button> </div> </form> </div> </div> </div> <script type="text/javascript"> $(function () { var fondViewModel = kendo.observable({ fond: {}, newFond: { organ: 'H08.9.23', state: 1, number: 1, code: '001', language: ['vi'], lookuptool: [1, 3] }, organs: new kendo.data.DataSource({ transport: { read: { url: "/quantri/coquan/json", dataType: "json" } } }), languages: new kendo.data.DataSource({ transport: { read: { url: "/quantri/ngonngu/json", dataType: "json" } }, schema: { data: 'data' } }), lookupTools: new kendo.data.DataSource({ transport: { read: { url: "/quantri/congcu/json", dataType: "json" } }, schema: { data: 'data' } }), selectedLanguages: [], selectedTools: [], updateNewCode: function () { var state = this.get("newFond.state"); if (parseInt(state)) this.set("newFond.code", this.get("newFond.number") ? this.get("newFond.number").toString().padStart(3, '0') : ""); else this.set("newFond.code", this.get("newFond.organ")); }, updateCode: function () { var state = this.get("fond.State"); if (parseInt(state)) this.set("fond.FondCode", this.get("fond.FondNumber") ? this.get("fond.FondNumber").toString().padStart(3, '0') : ""); else this.set("fond.FondCode", this.get("fond.OrganId")); } }); kendo.bind($("#add-fond-form"), fondViewModel); kendo.bind($("#edit-form"), fondViewModel); var fondTable = $("#fondTable").DataTable({ ajax: { url: "/quantri/phong/json", dataSrc: "" }, ordering: false, pageLength: 10, language: { url: "/js/plugin/datatables/Vietnamese.json" }, rowId: 'UUID', responsive: { details: { display: $.fn.dataTable.Responsive.display.modal({ header: function (row) { var data = row.data(); return `Chi tiết phông`; } }), renderer: $.fn.dataTable.Responsive.renderer.tableAll({ tableClass: 'table' }) } }, columns: [ { className: 'details-control', orderable: false, data: "UUID", render: function () { return `` }, type: "hidden" }, { data: "FondCode", className: 'text-center' }, { data: "FondName", className: 'text-justify' }, { data: "FondHistory", className: 'text-justify' }, { data: "ArchivesTime", className: 'text-center' }, { data: "PaperDigital", className: 'text-center' }, { data: "PaperTotal", className: 'text-center' }, { data: 'Tools', render: function (data, type, row) { return data.map(x => x['ToolName']).toString() } }, { data: "Description", className: 'text-justify' }, { data: "State", className: 'text-center', render: function (data, type, row) { return `<span class="badge ${data ? 'badge-danger">Đóng' : 'badge-success">Mở'}</span>` } }, { data: "KeyGroups", render: function (data, type, row) { var keyGroups = ''; for (var i = 0; i < data.length; i++) { keyGroups += `<tr><td>${data[i].GroupName}</td><td>${data[i].startYear || ""}-${data[i].endYear || ""}</td></tr>`; } return `<table class="table table-striped table-bordered table-hover"> <thead><tr><th>Tên nhóm tài liệu</th><th>Thời gian nhóm tài liệu</th></tr> <tbody>${keyGroups}</tbody> </table>`; } }, { data: null, className: 'text-center', render: function (data, type, row) { return `<div class="btn-group"> <button class="btn btn-warning btn-xs btn-icon edit-btn"><i class="fas fa-edit"></i></button> <button class="btn btn-danger btn-xs btn-icon delete-btn"><i class="fas fa-trash-alt"></i></button> </div>`; } } ] }); var addFondValidator = $("#add-fond-form").kendoValidator({ // errorTemplate: "<span class='text-danger'><i class='fas fa-exclamation-circle'></i> #=message#</span>", messages: { required: "Không được để trống", number: "Chỉ được nhập số" } }).data("kendoValidator"); $("#add-fond-btn").on("click", function (e) { if (addFondValidator.validate()) { var data = new FormData(document.getElementById('add-fond-form')); $.ajax({ url: "", method: "POST", data: $('#add-fond-form').serialize(), headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, success: function (data, textStatus, jqXHR) { location.replace(location.href); }, error: function (jqXHR, textStatus, err) { Swal.fire({ text: jqXHR.responseText, type: 'error', showConfirmButton: false, timer: 1500 }) } }) } else { Swal.fire({ text: "Vui lòng điền đầy đủ thông tin cần thiết", type: 'error', showConfirmButton: false, timer: 1500 }) } }); //Xóa phông $("#fondTable").on("click", ".delete-btn", function (e) { var fond = fondTable.row((this).closest("tr")).data(); Swal.fire({ title: 'Xác nhận', text: 'Bạn có muốn xóa phông?', type: 'warning', showCancelButton: true, confirmButtonColor: '#cd201f', cancelButtonColor: '#467fcf', confirmButtonText: 'Xóa phông', cancelButtonText: 'Đóng lại' }).then(function (result) { if (result.value) { $.ajax({ url: "", type: "DELETE", data: fond, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, success: function (data, textStatus, jqXHR) { Swal.fire({ text: jqXHR.responseText, type: 'info', showConfirmButton: false, timer: 1500 }).then(function () { fondTable.ajax.reload(null, false) }) }, error: function (jqXHR, textStatus, err) { Swal.fire({ text: jqXHR.responseText, type: 'error', showConfirmButton: false, timer: 1500 }) } }); } }) }); // Edit phông $("#fondTable").on("click", ".edit-btn", function (e) { var rowData = fondTable.row($(this).closest("tr")).data(); fondViewModel.set("selectedGroups", rowData.KeyGroups.map(function (x) { return `${x.Id}` })); fondViewModel.set("selectedLanguages", rowData.Language.split(",")); fondViewModel.set("selectedTools", rowData.LookupTools.split(",").map(function (x) { return parseInt(x) })); fondViewModel.set("fond", rowData); $("#edit-modal").modal("show"); }) var editFondValidator = $("#edit-form").kendoValidator({ errorTemplate: "<span class='text-danger'><i class='fas fa-exclamation-circle'></i> #=message#</span>", messages: { required: "Không được để trống", number: "Chỉ được nhập số" } }).data("kendoValidator"); $("#edit-btn").on("click", function (e) { if (editFondValidator.validate()) { $.ajax({ url: "", method: "PUT", data: $("#edit-form").serialize(), headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, success: function (data, textStatus, jqXHR) { $("#edit-modal").modal("hide"); fondTable.ajax.reload(null, false); }, error: function (jqXHR, textStatus, err) { Swal.fire({ text: "Vui lòng điền đầy đủ thông tin cần thiết", type: 'error', showConfirmButton: false, timer: 1500 }) } }) } else { Swal.fire({ text: "Vui lòng điền đầy đủ thông tin cần thiết", type: 'error', showConfirmButton: false, timer: 1500 }) } }); }); </script>