update form akreditasi

This commit is contained in:
Jokoprasetio 2026-03-05 03:39:31 +07:00
parent ce8848a2b8
commit cf427020d9
8 changed files with 295 additions and 785 deletions

View File

@ -177,7 +177,7 @@ function addForm(){
</button>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-control"
name="data[${colCount}][id_unit_kerja]"
@ -186,7 +186,7 @@ function addForm(){
<option value="" disable>Select Choose</option>
</select>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-control"
name="data[${colCount}][id_sub_unit_kerja]"
@ -196,7 +196,7 @@ function addForm(){
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen <span class="text-danger">*</span></label>
<label class="form-label fw-semibold">Kategori Dokumen</label>
<select class="form-control"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}"

View File

@ -61,9 +61,9 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
function buildRow(item){
function buildRow(item){
console.log(item);
let tanggal = item.entry_at ? formatTanggal(item.entry_at) : '-';
let tanggalExp = item.tgl_expired ? formatTanggal(item.tgl_expired) : '-';
let tanggalTerbit = item.tanggal_terbit ? formatTanggal(item.tanggal_terbit) : '-';
@ -118,13 +118,13 @@ document.addEventListener('DOMContentLoaded', () => {
data-no_dokumen="${item.no_dokumen || '-'}"
data-tanggal_terbit="${item.tanggal_terbit || '-'}"
data-permission_file="${item.permission_file || '-'}">${item.nama_dokumen}</a></td>
${item.is_akre ? `<td colspan="2" class="text-center">Dokumen akreditasi</td>` :
${item.is_akre ? `<td colspan="2" class="text-center">Dokumen akreditasi</td>` :
`
<td>${item.folder || '-'}</td>
<td>${item.part || '-'}</td>
`
}
<td class="text-nowrap">${tanggalTerbit}</td>
<td class="text-nowrap">${tanggalExp}</td>
<td class="text-nowrap">${tanggal}</td>
@ -583,10 +583,12 @@ document.addEventListener('DOMContentLoaded', () => {
$(formCreate).find('.file-name').addClass('d-none').text('');
}
resetAkreFields(0);
enableAkreFields(0);
}
let akreData = [];
let akreLoaded = false;
let akreFlat = [];
function loadAkreData(){
if(akreLoaded) return Promise.resolve(akreData);
@ -594,66 +596,47 @@ document.addEventListener('DOMContentLoaded', () => {
.then(res => res.json())
.then(data => {
akreData = Array.isArray(data) ? data : [];
akreFlat = [];
akreLoaded = true;
return akreData;
})
.catch(() => {
akreData = [];
akreFlat = [];
akreLoaded = true;
return akreData;
});
}
function fillAkreType(selectEl){
function getAkreFlat(){
if(akreFlat.length) return akreFlat;
akreFlat = (akreData || []).flatMap(type => {
const segments = Array.isArray(type.segment) ? type.segment : [];
return segments.flatMap(seg => {
const children = Array.isArray(seg.turunan) ? seg.turunan : [];
return children.map(child => ({
value: `${type.name}/${seg.name}/${child.name}`,
label: `${type.name} / ${seg.name} / ${child.name}`,
type: type.name,
segment: seg.name,
item: child.name
}));
});
});
return akreFlat;
}
function fillAkreSelect(selectEl){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Type</option>';
akreData.forEach(item => {
selectEl.innerHTML = '<option value="" disabled selected>Pilih Instrumen</option>';
getAkreFlat().forEach(optData => {
const opt = document.createElement('option');
opt.value = item.name;
opt.textContent = item.name;
opt.value = optData.value;
opt.textContent = optData.label;
selectEl.appendChild(opt);
});
}
function fillAkreSegment(selectEl, typeName){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Segmen</option>';
const typeItem = akreData.find(item => item.name === typeName);
if(typeItem && Array.isArray(typeItem.segment) && typeItem.segment.length){
typeItem.segment.forEach(seg => {
const opt = document.createElement('option');
opt.value = seg.name;
opt.textContent = seg.name;
selectEl.appendChild(opt);
});
selectEl.disabled = false;
selectEl.required = true;
}else{
selectEl.disabled = true;
selectEl.required = false;
}
}
function fillAkreItem(selectEl, typeName, segmentName){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Elemen</option>';
const typeItem = akreData.find(item => item.name === typeName);
const segmentItem = typeItem?.segment?.find(seg => seg.name === segmentName);
if(segmentItem && Array.isArray(segmentItem.turunan) && segmentItem.turunan.length){
segmentItem.turunan.forEach(child => {
const opt = document.createElement('option');
opt.value = child.name;
opt.textContent = child.name;
selectEl.appendChild(opt);
});
selectEl.disabled = false;
selectEl.required = true;
}else{
selectEl.disabled = true;
selectEl.required = false;
}
}
function setKategoriRequired(index, isRequired){
const katSelect = document.getElementById(`select_kategori_${index}`);
if (!katSelect) return;
@ -665,67 +648,57 @@ document.addEventListener('DOMContentLoaded', () => {
}
function resetAkreFields(index){
const typeWrap = document.getElementById(`akre_type_wrap_${index}`);
const segmentWrap = document.getElementById(`akre_segment_wrap_${index}`);
const itemWrap = document.getElementById(`akre_item_wrap_${index}`);
const typeSelect = document.getElementById(`akre_type_${index}`);
const segmentSelect = document.getElementById(`akre_segment_${index}`);
const itemSelect = document.getElementById(`akre_item_${index}`);
if(typeWrap) typeWrap.classList.add('d-none');
if(segmentWrap) segmentWrap.classList.add('d-none');
if(itemWrap) itemWrap.classList.add('d-none');
if(typeSelect){
typeSelect.value = '';
typeSelect.disabled = true;
typeSelect.required = false;
const selectEl = document.getElementById(`akre_select_${index}`);
const typeInput = document.getElementById(`akre_type_${index}`);
const segmentInput = document.getElementById(`akre_segment_${index}`);
const itemInput = document.getElementById(`akre_item_${index}`);
if(selectEl){
selectEl.value = '';
if(window.$ && $.fn.select2) $(selectEl).val(null).trigger('change');
}
if(segmentSelect){
segmentSelect.value = '';
segmentSelect.disabled = true;
segmentSelect.required = false;
}
if(itemSelect){
itemSelect.value = '';
itemSelect.disabled = true;
itemSelect.required = false;
}
setKategoriRequired(index, true);
if(typeInput) typeInput.value = '';
if(segmentInput) segmentInput.value = '';
if(itemInput) itemInput.value = '';
setKategoriRequired(index, false);
}
function enableAkreFields(index){
const typeWrap = document.getElementById(`akre_type_wrap_${index}`);
const segmentWrap = document.getElementById(`akre_segment_wrap_${index}`);
const itemWrap = document.getElementById(`akre_item_wrap_${index}`);
const typeSelect = document.getElementById(`akre_type_${index}`);
const segmentSelect = document.getElementById(`akre_segment_${index}`);
const itemSelect = document.getElementById(`akre_item_${index}`);
if(typeWrap) typeWrap.classList.remove('d-none');
if(segmentWrap) segmentWrap.classList.remove('d-none');
if(itemWrap) itemWrap.classList.remove('d-none');
if(typeSelect){
typeSelect.disabled = false;
typeSelect.required = true;
}
if(segmentSelect){
segmentSelect.disabled = true;
segmentSelect.required = true;
}
if(itemSelect){
itemSelect.disabled = true;
itemSelect.required = true;
const selectEl = document.getElementById(`akre_select_${index}`);
if(selectEl){
selectEl.disabled = false;
selectEl.required = true;
}
setKategoriRequired(index, false);
loadAkreData().then(() => {
fillAkreType(typeSelect);
if(typeSelect?.value){
fillAkreSegment(segmentSelect, typeSelect.value);
}
if(typeSelect?.value && segmentSelect?.value){
fillAkreItem(itemSelect, typeSelect.value, segmentSelect.value);
fillAkreSelect(selectEl);
if(window.$ && $.fn.select2){
$(selectEl).select2({
dropdownParent: $('#modalCreateFile'),
placeholder: 'Pilih Instrumen'
});
}
});
}
function initKategoriSelect2(index){
if(!window.$ || !$.fn.select2) return;
const katSelect = $(`#select_kategori_${index}`);
const hukumSelect = $(`#select_kategori_hukum_${index}`);
if(katSelect.length){
katSelect.select2({
dropdownParent: $('#modalCreateFile'),
placeholder:'Pilih Kategori'
});
}
if(hukumSelect.length){
hukumSelect.select2({
dropdownParent: $('#modalCreateFile'),
placeholder:'Pilih Kategori Hukum',
allowClear:true
});
}
}
function selectOptionUnitKerjaV1(localCol){
const selectUnit = $(`#select_id_unit_kerja_${localCol}`);
const selectSubUnit = $(`#select_id_sub_unit_kerja_${localCol}`);
@ -791,7 +764,7 @@ document.addEventListener('DOMContentLoaded', () => {
</button>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_unit_kerja]"
@ -801,7 +774,7 @@ document.addEventListener('DOMContentLoaded', () => {
</select>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_sub_unit_kerja]"
@ -811,16 +784,7 @@ document.addEventListener('DOMContentLoaded', () => {
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}"
required>
<option value="" disabled selected>Pilih Kategori</option>
${katOptions}
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nomor Dokumen</label>
@ -846,7 +810,7 @@ document.addEventListener('DOMContentLoaded', () => {
type="date"
name="data[${colCount}][date_active]">
</div>
<div class="col-md-2">
<div class="col-md-3">
<div class="form-check">
<input class="form-check-input toggle-expired"
type="checkbox"
@ -863,7 +827,7 @@ document.addEventListener('DOMContentLoaded', () => {
name="data[${colCount}][tgl_expired]" disabled>
</div>
<div class="col-md-5">
<div class="col-md-4">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
@ -889,53 +853,42 @@ document.addEventListener('DOMContentLoaded', () => {
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Apakah Dokumen Akreditasi? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_akre]"
id="akre_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="akre_yes_${colCount}">Iya</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_akre]"
id="akre_no_${colCount}"
value="2"
required>
<label class="form-check-label" for="akre_no_${colCount}">Tidak</label>
</div>
</div>
</div>
<div class="col-md-4 d-none" id="akre_type_wrap_${colCount}">
<label class="form-label fw-semibold">Type Akreditasi <span class="text-danger">*</span></label>
<select class="form-select akre-type"
name="data[${colCount}][akre_type]"
id="akre_type_${colCount}"
disabled>
<option value="" disabled selected>Pilih Type</option>
<label class="form-label fw-semibold">Instrumen Akreditasi </label>
<select class="form-select akre-select" id="akre_select_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Instrumen</option>
</select>
<input type="hidden" name="data[${colCount}][akre_type]" id="akre_type_${colCount}">
<input type="hidden" name="data[${colCount}][akre_segment]" id="akre_segment_${colCount}">
<input type="hidden" name="data[${colCount}][akre_item]" id="akre_item_${colCount}">
<input type="hidden" name="data[${colCount}][is_akre]" value="1">
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_segment_wrap_${colCount}">
<label class="form-label fw-semibold">Segmen <span class="text-danger">*</span></label>
<select class="form-select akre-segment"
name="data[${colCount}][akre_segment]"
id="akre_segment_${colCount}"
disabled>
<option value="" disabled selected>Pilih Segmen</option>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Hukum</label>
<select class="form-select select-kat-hukum" name="data[${colCount}][kategori_hukum]" id="select_kategori_hukum_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Kategori Hukum</option>
<option value="Pedir - Kebijakan">Pedir - Kebijakan</option>
<option value="Keputusan Dirut - Kebijakan">Keputusan Dirut - Kebijakan</option>
<option value="Surat Edaran - Kebijakan">Surat Edaran - Kebijakan</option>
<option value="Pengumuman - Kebijakan">Pengumuman - Kebijakan</option>
<option value="Pelayanan Kesehatan - Kerjasama">Pelayanan Kesehatan - Kerjasama</option>
<option value="Management - Kerjasama">Management - Kerjasama</option>
<option value="Pemeliharan - Kerjasama">Pemeliharan - Kerjasama</option>
<option value="iklat - Kerjasama">Diklat - Kerjasama</option>
<option value="Luar Negeri - Kerjasama">Luar Negeri - Kerjasama</option>
<option value="Area Bisnis - Kerjasama">Area Bisnis - Kerjasama</option>
<option value="Pendidikan - Kerjasama">Pendidikan - Kerjasama</option>
<option value="Pengampuan KIA">Pengampuan KIA</option>
</select>
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_item_wrap_${colCount}">
<label class="form-label fw-semibold">Elemen Penilaian <span class="text-danger">*</span></label>
<select class="form-select akre-item"
name="data[${colCount}][akre_item]"
id="akre_item_${colCount}"
disabled>
<option value="" disabled selected>Pilih Elemen</option>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Lainnya</label>
<select class="form-select"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Kategori</option>
${katOptions}
</select>
</div>
@ -954,7 +907,9 @@ document.addEventListener('DOMContentLoaded', () => {
</div>`;
col.insertAdjacentHTML('beforeend', html);
selectOptionUnitKerjaV1(colCount);
setKategoriRequired(colCount, true);
initKategoriSelect2(colCount);
enableAkreFields(colCount);
setKategoriRequired(colCount, false);
colCount++;
}
@ -966,6 +921,8 @@ document.addEventListener('DOMContentLoaded', () => {
if (formCreate) {
const select0 = $('#select_id_unit_kerja_0');
if (select0.length) selectOptionUnitKerjaV1(0);
initKategoriSelect2(0);
enableAkreFields(0);
formCreate.addEventListener('submit', (e) => {
e.preventDefault();
@ -1019,38 +976,18 @@ document.addEventListener('DOMContentLoaded', () => {
}
document.addEventListener('change', function(e){
if(e.target.classList.contains('akre-type')){
if(e.target.classList.contains('akre-select')){
const id = e.target.id || '';
const idx = id.split('_').pop();
const segmentSelect = document.getElementById(`akre_segment_${idx}`);
const itemSelect = document.getElementById(`akre_item_${idx}`);
if(segmentSelect) fillAkreSegment(segmentSelect, e.target.value);
if(itemSelect){
itemSelect.innerHTML = '<option value="" disabled selected>Pilih Elemen</option>';
itemSelect.disabled = true;
}
const [typeVal = '', segmentVal = '', itemVal = ''] = (e.target.value || '').split('/');
const typeInput = document.getElementById(`akre_type_${idx}`);
const segmentInput = document.getElementById(`akre_segment_${idx}`);
const itemInput = document.getElementById(`akre_item_${idx}`);
if(typeInput) typeInput.value = typeVal;
if(segmentInput) segmentInput.value = segmentVal;
if(itemInput) itemInput.value = itemVal;
return;
}
if(e.target.classList.contains('akre-segment')){
const id = e.target.id || '';
const idx = id.split('_').pop();
const typeSelect = document.getElementById(`akre_type_${idx}`);
const itemSelect = document.getElementById(`akre_item_${idx}`);
fillAkreItem(itemSelect, typeSelect?.value || '', e.target.value);
return;
}
if(e.target.matches('input[type="radio"][name$="[is_akre]"]')){
const name = e.target.getAttribute('name') || '';
const match = name.match(/data\[(\d+)\]\[is_akre\]/);
const idx = match ? match[1] : '0';
if(e.target.value === '1'){
enableAkreFields(idx);
}else{
resetAkreFields(idx);
}
}
});
});
document.addEventListener('click', function(e){

View File

@ -154,7 +154,6 @@
</div>
</div>
</div>
@include('dashboard.modal.create')
@include('dashboard.modal.view')
<script>
const klasifikasiDok = @json($klasifikasiDok);

View File

@ -1,96 +0,0 @@
<div class="modal fade" id="modalCreateFile" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h1 class="modal-title fs-5">Aksi </h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- Modal Form -->
<form id="formFile" action="/uploadv2" enctype="multipart/form-data" method="POST" >
@csrf
<div class="modal-body">
<div class="container" style="max-height: 70vh; overflow-y:auto;">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-control unit_kerja" name="data[0][id_unit_kerja]" id="select_id_unit_kerja_0" required>
<option value="" disable>Select Choose</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-control" name="data[0][id_sub_unit_kerja]" id="select_id_sub_unit_kerja_0" required>
<option value="" disable selected>Select Choose</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen <span class="text-danger">*</span></label>
<select class="form-control" name="data[0][master_kategori_directory_id]" id="select_kategori_0" required>
<option value="" disable>Select Choose</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">{{ $kat->nama_kategori_directory }}</option>
@endforeach
</select>
</div>
<div class="col-md-6">
<label class="form-label fw-semibold">Nomor Dokumen</label>
<div class="input-group">
<span class="input-group-text">#</span>
<input type="text" class="form-control" name="data[0][no_dokumen]" placeholder="Contoh: 001/RS/IT/I/2026">
</div>
</div>
<div class="col-md-3">
<label class="form-label fw-semibold">Tanggal Terbit</label>
<input class="form-control" type="date" name="data[0][date_active]">
</div>
<div class="col-md-3">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input" type="radio" name="data[0][is_permission]" id="perm_yes" value="1" required>
<label class="form-check-label" for="perm_yes">
Iya
</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input" type="radio" name="data[0][is_permission]" id="perm_no" value="2" required>
<label class="form-check-label" for="perm_no">
Tidak
</label>
</div>
</div>
</div>
<div class="col-md-12 mb-2">
<label for="fileUpload0" class="form-label fw-semibold">📂 Upload Dokumen (PDF)</label>
<div class="border rounded-3 p-3 bg-white shadow-sm">
<input class="form-control file-input" type="file" id="fileUpload0" accept=".pdf" name="data[0][file]">
<div class="mt-2 text-success fw-semibold d-none file-name"></div>
</div>
<div class="form-text text-muted">
Format yang didukung: <b>PDF</b> Maksimal <b>10mb</b>.
</div>
</div>
<div id="col_add_file" class="col-12"></div>
</div>
<button type="button" class="btn btn-outline-primary btn-sm mt-3" onclick="addForm()">
+ Tambah Form
</button>
</div>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -153,7 +153,6 @@
</div>
</div>
</div>
@include('dataUmum.modal.create')
@include('dataUmum.modal.view')
<script>
const katDok = @json($katDok);
@ -679,144 +678,6 @@
});
}
function addFormV2(){
let col = $("#col_add_fileV2");
let html = '';
html += `
<div class="row g-3 align-items-start" id="col-${colCount}">
<hr class="my-3" />
<div class="col-12 d-flex justify-content-end">
<button type="button"
class="btn btn-sm btn-danger"
onclick="removeCol(${colCount})">
<i class="fa-solid fa-trash"></i> Hapus
</button>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_unit_kerja]"
id="select_id_unit_kerja_${colCount}"
required>
<option value="" disabled selected>Pilih Unit</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_sub_unit_kerja]"
id="select_id_sub_unit_kerja_${colCount}"
required>
<option value="" disabled selected>Pilih Sub Unit</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}"
required>
<option value="" disabled selected>Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">
{{ $kat->nama_kategori_directory }}
</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nomor Dokumen</label>
<div class="input-group">
<span class="input-group-text">#</span>
<input type="text"
class="form-control"
name="data[${colCount}][no_dokumen]"
placeholder="Contoh: 001/RS/IT/I/2026">
</div>
<div class="form-text text-muted"></div>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nama Dokumen<span class="text-danger">*</span></label>
<input type="text" class="form-control"
name="data[${colCount}][nama_dokumen]"
placeholder="Contoh: 001/RS/IT/I/2026" required>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Tanggal Terbit</label>
<input class="form-control"
type="date"
name="data[${colCount}][date_active]">
</div>
<div class="col-md-2 d-flex align-items-end">
<div class="form-check">
<input class="form-check-input toggle-expired"
type="checkbox"
id="hasExpired_${colCount}"
data-target="expiredField_${colCount}">
<label class="form-check-label" for="hasExpired_${colCount}">Ada Expired?</label>
</div>
</div>
<div class="col-md-5 d-none" id="expiredField_${colCount}">
<label class="form-label fw-semibold">Tanggal Kedaluwarsa Dokumen</label>
<input class="form-control" type="date" name="data[${colCount}][tgl_expired]">
</div>
<div class="col-md-5">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_permission]"
id="perm_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="perm_yes_${colCount}">Iya</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_permission]"
id="perm_no_${colCount}"
value="2"
required>
<label class="form-check-label" for="perm_no_${colCount}">Tidak</label>
</div>
</div>
</div>
<div class="col-md-12">
<label for="fileUpload_${colCount}" class="form-label fw-semibold">📂 Upload Dokumen (PDF)</label>
<div class="border rounded-3 p-3 bg-white shadow-sm">
<input class="form-control"
type="file"
id="fileUpload_${colCount}"
accept=".pdf"
name="data[${colCount}][file]">
<div class="mt-2 text-success fw-semibold d-none file-name" id="fileName_${colCount}"></div>
</div>
<div class="form-text text-muted">
Format yang didukung: <b>PDF</b>.
</div>
</div>
</div>
`;
col.append(html)
selectOptionUnitKerjaV1(colCount)
colCount++;
}
function removeCol(count){
$(`#col-${count}`).remove()
}

View File

@ -1,119 +0,0 @@
<div class="modal fade" id="modalCreateFile" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h1 class="modal-title fs-5">Aksi </h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<!-- Modal Form -->
<form id="formFile" action="/uploadv2" enctype="multipart/form-data" method="POST">
@csrf
<div class="modal-body">
<div class="container" style="max-height: 70vh; overflow-y:auto;">
<div class="row g-3">
<div class="col-12">
<div class="p-2 rounded-3 bg-light border">
<span class="fw-semibold">Informasi Dokumen</span>
<div class="small text-muted">Lengkapi detail dokumen sebelum upload.</div>
</div>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-control unit_kerja" name="data[0][id_unit_kerja]" id="select_id_unit_kerja_0" required>
<option value="" disable>Pilih Unit</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-control" name="data[0][id_sub_unit_kerja]" id="select_id_sub_unit_kerja_0" required>
<option value="" disable selected>Pilih Sub Unit</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen <span class="text-danger">*</span></label>
<select class="form-control" name="data[0][master_kategori_directory_id]" id="select_kategori_0" required>
<option value="" disable>Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">{{ $kat->nama_kategori_directory }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nomor Dokumen</label>
<div class="input-group">
<span class="input-group-text">#</span>
<input type="text" class="form-control" name="data[0][no_dokumen]" placeholder="Contoh: 001/RS/IT/I/2026">
</div>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nama Dokumen<span class="text-danger">*</span></label>
<input type="text" class="form-control" name="data[0][nama_dokumen]" placeholder="Contoh: Panduan Mencuci Tangan" required>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Tanggal Terbit</label>
<input class="form-control" type="date" name="data[0][date_active]">
</div>
<div class="col-md-2 d-flex align-items-end">
<div class="form-check">
<input class="form-check-input toggle-expired" type="checkbox" id="hasExpired0" data-target="expiredField_0">
<label class="form-check-label" for="hasExpired0">Ada Expired?</label>
</div>
</div>
<div class="col-md-5 d-none" id="expiredField_0">
<label class="form-label fw-semibold">Tanggal Kedaluwarsa Dokumen</label>
<input class="form-control" type="date" name="data[0][tgl_expired]">
</div>
<div class="col-md-5">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input" type="radio" name="data[0][is_permission]" id="perm_yes" value="1" required>
<label class="form-check-label" for="perm_yes">
Iya
</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input" type="radio" name="data[0][is_permission]" id="perm_no" value="2" required>
<label class="form-check-label" for="perm_no">
Tidak
</label>
</div>
</div>
</div>
<div class="col-md-12 mb-2">
<label for="fileUpload0" class="form-label fw-semibold">📂 Upload Dokumen (PDF)</label>
<div class="border rounded-3 p-3 bg-white shadow-sm">
<input class="form-control" type="file" id="fileUpload0" accept=".pdf" name="data[0][file]">
<div class="mt-2 text-success fw-semibold d-none file-name"></div>
</div>
<div class="form-text text-muted">
Format yang didukung: <b>PDF</b> Maksimal <b>10mb</b>.
</div>
</div>
<div id="col_add_fileV2" class="col-12"></div>
</div>
<button type="button" class="btn btn-outline-primary btn-sm mt-3" onclick="addFormV2()">
+ Tambah Form
</button>
</div>
</div>
<!-- Modal Footer -->
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</form>
</div>
</div>
</div>

View File

@ -4,7 +4,6 @@
.select2-container--default .select2-selection--multiple {
background: #fff !important;
border: 1px solid #ced4da !important;
min-height: 31px; /* cocok form-select-sm */
}
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
@ -85,7 +84,7 @@
</div>
<div class="d-flex flex-column flex-md-row align-items-md-center gap-2 mb-3">
<div class="d-flex flex-column flex-md-row align-items-md-center gap-2 flex-grow-1">
<select id="tableUnit" class="form-select form-select-sm unit_kerja_filter" style="max-width: 260px;" multiple></select>
<select id="tableUnit" class="form-select form-select-sm unit_kerja_filter" style="max-width: 260px;"></select>
<select id="tableKategori" class="form-select form-select-sm kategori_kerja_filter" style="max-width: 260px;" multiple>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}">
@ -253,10 +252,12 @@
formCreate.find('input[type="file"]').val('');
formCreate.find('.file-name').addClass('d-none').text('');
resetAkreFields(0);
enableAkreFields(0);
}
let akreData = [];
let akreLoaded = false;
let akreFlat = [];
function loadAkreData(){
if(akreLoaded) return Promise.resolve(akreData);
@ -264,67 +265,47 @@
.then(res => res.json())
.then(data => {
akreData = Array.isArray(data) ? data : [];
akreFlat = [];
akreLoaded = true;
return akreData;
})
.catch(() => {
akreData = [];
akreFlat = [];
akreLoaded = true;
return akreData;
});
}
function fillAkreType(selectEl){
function getAkreFlat(){
if(akreFlat.length) return akreFlat;
akreFlat = (akreData || []).flatMap(type => {
const segments = Array.isArray(type.segment) ? type.segment : [];
return segments.flatMap(seg => {
const children = Array.isArray(seg.turunan) ? seg.turunan : [];
return children.map(child => ({
value: `${type.name}/${seg.name}/${child.name}`,
label: `${type.name} / ${seg.name} / ${child.name}`,
type: type.name,
segment: seg.name,
item: child.name
}));
});
});
return akreFlat;
}
function fillAkreSelect(selectEl){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Type</option>';
akreData.forEach(item => {
selectEl.innerHTML = '<option value="" disabled selected>Pilih Instrumen</option>';
getAkreFlat().forEach(optData => {
const opt = document.createElement('option');
opt.value = item.name;
opt.textContent = item.name;
opt.value = optData.value;
opt.textContent = optData.label;
selectEl.appendChild(opt);
});
}
function fillAkreSegment(selectEl, typeName){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Segmen</option>';
const typeItem = akreData.find(item => item.name === typeName);
if(typeItem && Array.isArray(typeItem.segment) && typeItem.segment.length){
typeItem.segment.forEach(seg => {
const opt = document.createElement('option');
opt.value = seg.name;
opt.textContent = seg.name;
selectEl.appendChild(opt);
});
selectEl.disabled = false;
selectEl.required = true;
}else{
selectEl.disabled = true;
selectEl.required = false;
}
}
function fillAkreItem(selectEl, typeName, segmentName){
if(!selectEl) return;
selectEl.innerHTML = '<option value="" disabled selected>Pilih Elemen</option>';
const typeItem = akreData.find(item => item.name === typeName);
const segmentItem = typeItem?.segment?.find(seg => seg.name === segmentName);
if(segmentItem && Array.isArray(segmentItem.turunan) && segmentItem.turunan.length){
segmentItem.turunan.forEach(child => {
const opt = document.createElement('option');
opt.value = child.name;
opt.textContent = child.name;
selectEl.appendChild(opt);
});
selectEl.disabled = false;
selectEl.required = true;
}else{
selectEl.disabled = true;
selectEl.required = false;
}
}
function setKategoriRequired(index, isRequired){
const katSelect = document.getElementById(`select_kategori_${index}`);
if (!katSelect) return;
@ -336,100 +317,71 @@
}
function resetAkreFields(index){
const typeWrap = document.getElementById(`akre_type_wrap_${index}`);
const segmentWrap = document.getElementById(`akre_segment_wrap_${index}`);
const itemWrap = document.getElementById(`akre_item_wrap_${index}`);
const typeSelect = document.getElementById(`akre_type_${index}`);
const segmentSelect = document.getElementById(`akre_segment_${index}`);
const itemSelect = document.getElementById(`akre_item_${index}`);
if(typeWrap) typeWrap.classList.add('d-none');
if(segmentWrap) segmentWrap.classList.add('d-none');
if(itemWrap) itemWrap.classList.add('d-none');
if(typeSelect){
typeSelect.value = '';
typeSelect.disabled = true;
typeSelect.required = false;
const selectEl = document.getElementById(`akre_select_${index}`);
const typeInput = document.getElementById(`akre_type_${index}`);
const segmentInput = document.getElementById(`akre_segment_${index}`);
const itemInput = document.getElementById(`akre_item_${index}`);
if(selectEl){
selectEl.value = '';
if(window.$ && $.fn.select2) $(selectEl).val(null).trigger('change');
}
if(segmentSelect){
segmentSelect.value = '';
segmentSelect.disabled = true;
segmentSelect.required = false;
}
if(itemSelect){
itemSelect.value = '';
itemSelect.disabled = true;
itemSelect.required = false;
}
setKategoriRequired(index, true);
if(typeInput) typeInput.value = '';
if(segmentInput) segmentInput.value = '';
if(itemInput) itemInput.value = '';
setKategoriRequired(index, false);
}
function enableAkreFields(index){
const typeWrap = document.getElementById(`akre_type_wrap_${index}`);
const segmentWrap = document.getElementById(`akre_segment_wrap_${index}`);
const itemWrap = document.getElementById(`akre_item_wrap_${index}`);
const typeSelect = document.getElementById(`akre_type_${index}`);
const segmentSelect = document.getElementById(`akre_segment_${index}`);
const itemSelect = document.getElementById(`akre_item_${index}`);
if(typeWrap) typeWrap.classList.remove('d-none');
if(segmentWrap) segmentWrap.classList.remove('d-none');
if(itemWrap) itemWrap.classList.remove('d-none');
if(typeSelect){
typeSelect.disabled = false;
typeSelect.required = true;
}
if(segmentSelect){
segmentSelect.disabled = true;
segmentSelect.required = true;
}
if(itemSelect){
itemSelect.disabled = true;
itemSelect.required = true;
const selectEl = document.getElementById(`akre_select_${index}`);
if(selectEl){
selectEl.disabled = false;
selectEl.required = true;
}
setKategoriRequired(index, false);
loadAkreData().then(() => {
fillAkreType(typeSelect);
if(typeSelect?.value){
fillAkreSegment(segmentSelect, typeSelect.value);
}
if(typeSelect?.value && segmentSelect?.value){
fillAkreItem(itemSelect, typeSelect.value, segmentSelect.value);
fillAkreSelect(selectEl);
if(window.$ && $.fn.select2){
$(selectEl).select2({
dropdownParent: $('#modalCreateFile'),
placeholder: 'Pilih Instrumen'
});
}
});
}
function initKategoriSelect2(index){
if(!window.$ || !$.fn.select2) return;
const katSelect = $(`#select_kategori_${index}`);
const hukumSelect = $(`#select_kategori_hukum_${index}`);
if(katSelect.length){
katSelect.select2({
dropdownParent: $('#modalCreateFile'),
placeholder:'Pilih Kategori'
});
}
if(hukumSelect.length){
hukumSelect.select2({
dropdownParent: $('#modalCreateFile'),
placeholder:'Pilih Kategori Hukum',
allowClear:true
});
}
}
document.addEventListener('change', function(e){
if(e.target.classList.contains('akre-type')){
if(e.target.classList.contains('akre-select')){
const id = e.target.id || '';
const idx = id.split('_').pop();
const segmentSelect = document.getElementById(`akre_segment_${idx}`);
const itemSelect = document.getElementById(`akre_item_${idx}`);
if(segmentSelect) fillAkreSegment(segmentSelect, e.target.value);
if(itemSelect){
itemSelect.innerHTML = '<option value="" disabled selected>Pilih Elemen</option>';
itemSelect.disabled = true;
}
const [typeVal = '', segmentVal = '', itemVal = ''] = (e.target.value || '').split('/');
const typeInput = document.getElementById(`akre_type_${idx}`);
const segmentInput = document.getElementById(`akre_segment_${idx}`);
const itemInput = document.getElementById(`akre_item_${idx}`);
if(typeInput) typeInput.value = typeVal;
if(segmentInput) segmentInput.value = segmentVal;
if(itemInput) itemInput.value = itemVal;
return;
}
if(e.target.classList.contains('akre-segment')){
const id = e.target.id || '';
const idx = id.split('_').pop();
const typeSelect = document.getElementById(`akre_type_${idx}`);
const itemSelect = document.getElementById(`akre_item_${idx}`);
fillAkreItem(itemSelect, typeSelect?.value || '', e.target.value);
return;
}
if(e.target.matches('input[type="radio"][name$="[is_akre]"]')){
const name = e.target.getAttribute('name') || '';
const match = name.match(/data\[(\d+)\]\[is_akre\]/);
const idx = match ? match[1] : '0';
if(e.target.value === '1'){
enableAkreFields(idx);
}else{
resetAkreFields(idx);
}
}
});
function isPublic(permissionVal){
@ -814,6 +766,8 @@
});
selectOptionUnitKerjaV1(0);
initKategoriSelect2(0);
enableAkreFields(0);
});
function loadSubUnitKerja(unitId){
@ -851,7 +805,7 @@
</button>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_unit_kerja]"
@ -861,7 +815,7 @@
</select>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-select"
name="data[${colCount}][id_sub_unit_kerja]"
@ -871,19 +825,7 @@
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen</label>
<select class="form-select"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}">
<option value="" disabled selected>Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">
{{ $kat->nama_kategori_directory }}
</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nomor Dokumen</label>
@ -920,14 +862,14 @@
</div>
</div>
<div class="col-md-3" id="expiredField_${colCount}">
<div class="col-md-5" id="expiredField_${colCount}">
<label class="form-label fw-semibold">Tanggal Kedaluwarsa Dokumen</label>
<input class="form-control"
type="date"
name="data[${colCount}][tgl_expired]" disabled>
</div>
<div class="col-md-3">
<div class="col-md-4">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
@ -953,56 +895,47 @@
</div>
</div>
<div class="col-md-3">
<label class="form-label fw-semibold">Apakah Dokumen Akreditasi? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_akre]"
id="akre_yes_${colCount}"
value="1"
required>
<label class="form-check-label" for="akre_yes_${colCount}">Iya</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input"
type="radio"
name="data[${colCount}][is_akre]"
id="akre_no_${colCount}"
value="2"
required>
<label class="form-check-label" for="akre_no_${colCount}">Tidak</label>
</div>
</div>
</div>
<div class="col-md-4 d-none" id="akre_type_wrap_${colCount}">
<label class="form-label fw-semibold">Type Akreditasi <span class="text-danger">*</span></label>
<select class="form-select akre-type"
name="data[${colCount}][akre_type]"
id="akre_type_${colCount}"
disabled>
<option value="" disabled selected>Pilih Type</option>
<div class="col-md-4">
<label class="form-label fw-semibold">Instrumen Akreditasi </label>
<select class="form-select akre-select" id="akre_select_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Instrumen</option>
</select>
<input type="hidden" name="data[${colCount}][akre_type]" id="akre_type_${colCount}">
<input type="hidden" name="data[${colCount}][akre_segment]" id="akre_segment_${colCount}">
<input type="hidden" name="data[${colCount}][akre_item]" id="akre_item_${colCount}">
<input type="hidden" name="data[${colCount}][is_akre]" value="1">
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_segment_wrap_${colCount}">
<label class="form-label fw-semibold">Segmen <span class="text-danger">*</span></label>
<select class="form-select akre-segment"
name="data[${colCount}][akre_segment]"
id="akre_segment_${colCount}"
disabled>
<option value="" disabled selected>Pilih Segmen</option>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Hukum</label>
<select class="form-select select-kat-hukum" name="data[${colCount}][kategori_hukum]" id="select_kategori_hukum_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Kategori Hukum</option>
<option value="Pedir - Kebijakan">Pedir - Kebijakan</option>
<option value="Keputusan Dirut - Kebijakan">Keputusan Dirut - Kebijakan</option>
<option value="Surat Edaran - Kebijakan">Surat Edaran - Kebijakan</option>
<option value="Pengumuman - Kebijakan">Pengumuman - Kebijakan</option>
<option value="Pelayanan Kesehatan - Kerjasama">Pelayanan Kesehatan - Kerjasama</option>
<option value="Management - Kerjasama">Management - Kerjasama</option>
<option value="Pemeliharan - Kerjasama">Pemeliharan - Kerjasama</option>
<option value="iklat - Kerjasama">Diklat - Kerjasama</option>
<option value="Luar Negeri - Kerjasama">Luar Negeri - Kerjasama</option>
<option value="Area Bisnis - Kerjasama">Area Bisnis - Kerjasama</option>
<option value="Pendidikan - Kerjasama">Pendidikan - Kerjasama</option>
<option value="Pengampuan KIA">Pengampuan KIA</option>
</select>
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_item_wrap_${colCount}">
<label class="form-label fw-semibold">Elemen Penilaian <span class="text-danger">*</span></label>
<select class="form-select akre-item"
name="data[${colCount}][akre_item]"
id="akre_item_${colCount}"
disabled>
<option value="" disabled selected>Pilih Elemen</option>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Lainnya</label>
<select class="form-select"
name="data[${colCount}][master_kategori_directory_id]"
id="select_kategori_${colCount}" style="width: 350px;">
<option value="" disabled selected>Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">
{{ $kat->nama_kategori_directory }}
</option>
@endforeach
</select>
</div>
@ -1021,15 +954,17 @@
<div class="form-text text-muted">
Format yang didukung: <b>PDF</b>.
</div>
</div>
</div>
</div>
`;
col.append(html)
selectOptionUnitKerjaV1(colCount)
setKategoriRequired(colCount, true)
colCount++;
}
</div>
`;
col.append(html)
selectOptionUnitKerjaV1(colCount)
initKategoriSelect2(colCount)
enableAkreFields(colCount)
setKategoriRequired(colCount, false)
colCount++;
}
function removeCol(count){
$(`#col-${count}`).remove()

View File

@ -20,28 +20,19 @@
<div class="small text-muted">Lengkapi detail dokumen sebelum upload.</div>
</div>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Unit <span class="text-danger">*</span></label>
<select class="form-control unit_kerja" name="data[0][id_unit_kerja]" id="select_id_unit_kerja_0" required>
<option value="" disable>Pilih Unit</option>
</select>
</div>
<div class="col-md-4">
<div class="col-md-6">
<label class="form-label fw-semibold">Sub Unit <span class="text-danger">*</span></label>
<select class="form-control" name="data[0][id_sub_unit_kerja]" id="select_id_sub_unit_kerja_0" required>
<option value="" disable selected>Pilih Sub Unit</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Dokumen</label>
<select class="form-control" name="data[0][master_kategori_directory_id]" id="select_kategori_0">
<option value="" disable>Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">{{ $kat->nama_kategori_directory }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Nomor Dokumen</label>
<div class="input-group">
@ -57,17 +48,17 @@
<label class="form-label fw-semibold">Tanggal Terbit</label>
<input class="form-control" type="date" name="data[0][date_active]">
</div>
<div class="col-md-3">
<div class="col-md-4">
<div class="form-check">
<input class="form-check-input toggle-expired" type="checkbox" id="hasExpired0" data-target="expiredField_0">
<label class="form-check-label" for="hasExpired0">Masa Berlaku Dokumen?</label>
</div>
</div>
<div class="col-md-3" id="expiredField_0">
<div class="col-md-4" id="expiredField_0">
<label class="form-label fw-semibold">Tanggal Kedaluwarsa Dokumen</label>
<input class="form-control" type="date" name="data[0][tgl_expired]" disabled>
</div>
<div class="col-md-3">
<div class="col-md-4">
<label class="form-label fw-semibold">Boleh dilihat unit lain? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
@ -85,43 +76,45 @@
</div>
</div>
</div>
<div class="col-md-3">
<label class="form-label fw-semibold">Apakah Dokumen Akreditasi? <span class="text-danger">*</span></label>
<div class="border rounded-3 p-2 bg-light">
<div class="form-check">
<input class="form-check-input" type="radio" name="data[0][is_akre]" id="akre_yes" value="1" required>
<label class="form-check-label" for="akre_yes">
Iya
</label>
</div>
<div class="form-check mt-1">
<input class="form-check-input" type="radio" name="data[0][is_akre]" id="akre_no" value="2" required>
<label class="form-check-label" for="akre_no">
Tidak
</label>
</div>
</div>
<div class="col-md-4">
<label class="form-label fw-semibold">Instrumen Akreditasi</label>
<select class="form-select akre-select" id="akre_select_0" style="width: 350px;">
<option value="">Pilih Instrumen</option>
</select>
<input type="hidden" name="data[0][akre_type]" id="akre_type_0">
<input type="hidden" name="data[0][akre_segment]" id="akre_segment_0">
<input type="hidden" name="data[0][akre_item]" id="akre_item_0">
<input type="hidden" name="data[0][is_akre]" value="1">
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_type_wrap_0">
<label class="form-label fw-semibold">Type Akreditasi <span class="text-danger">*</span></label>
<select class="form-select akre-type" name="data[0][akre_type]" id="akre_type_0" disabled>
<option value="" disabled selected>Pilih Type</option>
</select>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori Hukum</label>
<select class="form-select select-kat-hukum" name="data[0][kategori_hukum]" id="select_kategori_hukum_0" style="width: 350px;">
<option value="">Pilih Kategori Hukum</option>
<option value="Pedir - Kebijakan">Pedir - Kebijakan</option>
<option value="Keputusan Dirut - Kebijakan">Keputusan Dirut - Kebijakan</option>
<option value="Surat Edaran - Kebijakan">Surat Edaran - Kebijakan</option>
<option value="Pengumuman - Kebijakan">Pengumuman - Kebijakan</option>
<option value="Pelayanan Kesehatan - Kerjasama">Pelayanan Kesehatan - Kerjasama</option>
<option value="Management - Kerjasama">Management - Kerjasama</option>
<option value="Pemeliharan - Kerjasama">Pemeliharan - Kerjasama</option>
<option value="iklat - Kerjasama">Diklat - Kerjasama</option>
<option value="Luar Negeri - Kerjasama">Luar Negeri - Kerjasama</option>
<option value="Area Bisnis - Kerjasama">Area Bisnis - Kerjasama</option>
<option value="Pendidikan - Kerjasama">Pendidikan - Kerjasama</option>
<option value="Pengampuan KIA">Pengampuan KIA</option>
</select>
<div class="form-text text-muted">Isi form ini bila dokumen yang diunggah merupakan dokumen <strong>akreditasi</strong>.</div>
</div>
<div class="col-md-4 d-none" id="akre_segment_wrap_0">
<label class="form-label fw-semibold">Segmen <span class="text-danger">*</span></label>
<select class="form-select akre-segment" name="data[0][akre_segment]" id="akre_segment_0" disabled>
<option value="" disabled selected>Pilih Segmen</option>
</select>
<div class="col-md-4">
<label class="form-label fw-semibold">Kategori lainnya</label>
<select class="form-select select-kat-lain" name="data[0][master_kategori_directory_id]" id="select_kategori_0" style="width: 350px;">
<option value="">Pilih Kategori</option>
@foreach ($katDok as $kat)
<option value="{{ $kat->master_kategori_directory_id }}/{{ $kat->nama_kategori_directory }}">{{ $kat->nama_kategori_directory }}</option>
@endforeach
</select>
</div>
<div class="col-md-4 d-none" id="akre_item_wrap_0">
<label class="form-label fw-semibold">Elemen Penilaian <span class="text-danger">*</span></label>
<select class="form-select akre-item" name="data[0][akre_item]" id="akre_item_0" disabled>
<option value="" disabled selected>Pilih Elemen</option>
</select>
</div>
<div class="col-md-12 mb-2">
<label for="fileUpload0" class="form-label fw-semibold">📂 Upload Dokumen (PDF)</label>
<div class="border rounded-3 p-3 bg-white shadow-sm">