Tambah kolom "dokumen_nomor" ke DokumenJaminan
Menambahkan kolom dokumen_nomor pada DokumenJaminan untuk mendukung penyimpanan nomor dokumen yang terkait dengan setiap dokumen jaminan. Pembaruan ini mencakup perubahan pada controller untuk memproses kolom baru dan penyesuaian pada tampilan untuk menampilkan serta mengunduh dokumen berdasarkan nomor ini.
This commit is contained in:
@@ -468,6 +468,9 @@
|
|||||||
'dokumen_jaminan' => json_decode(
|
'dokumen_jaminan' => json_decode(
|
||||||
$detail->dokumen_jaminan,
|
$detail->dokumen_jaminan,
|
||||||
) ?? $detail->dokumen_jaminan,
|
) ?? $detail->dokumen_jaminan,
|
||||||
|
'dokumen_nomor' => json_decode(
|
||||||
|
$detail->dokumen_nomor,
|
||||||
|
) ?? $detail->dokumen_nomor,
|
||||||
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
|
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
|
||||||
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
|
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
|
||||||
'details' => $detail->details,
|
'details' => $detail->details,
|
||||||
@@ -486,6 +489,7 @@
|
|||||||
'jenis_legalitas_jaminan_id' => $legalitas->id,
|
'jenis_legalitas_jaminan_id' => $legalitas->id,
|
||||||
'name' => $legalitas->name,
|
'name' => $legalitas->name,
|
||||||
'dokumen_jaminan' => null,
|
'dokumen_jaminan' => null,
|
||||||
|
'dokumen_nomor' => null,
|
||||||
'custom_field' => $legalitas->custom_field,
|
'custom_field' => $legalitas->custom_field,
|
||||||
'custom_field_type' => $legalitas->custom_field_type,
|
'custom_field_type' => $legalitas->custom_field_type,
|
||||||
'details' => null,
|
'details' => null,
|
||||||
|
|||||||
@@ -168,16 +168,26 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if(isset($detail->dokumen_jaminan))
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@php
|
@if(isset($detail->dokumen_jaminan))
|
||||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
@php
|
||||||
@endphp
|
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
||||||
@foreach($dokumen_jaminan as $index => $dokumen)
|
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []);
|
||||||
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
@endphp
|
||||||
class="badge badge-sm badge-outline mt-2 mr-2">
|
<div class="flex flex-col w-full gap-2">
|
||||||
{{ basename($dokumen) }}
|
@foreach($dokumen_jaminan as $index => $dokumen)
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<div class="flex w-full lg:w-[30%]">
|
||||||
</a>
|
@if(!empty($dokumen_nomor))
|
||||||
@endforeach
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : {{ $dokumen_nomor[$index] }}</span>
|
||||||
|
@endif
|
||||||
|
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||||
|
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
|
{{ basename($dokumen) }}
|
||||||
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -510,7 +520,9 @@
|
|||||||
Dokumen Jaminan
|
Dokumen Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full" id="file-container-${index}">
|
<div class="flex flex-wrap items-baseline w-full" id="file-container-${index}">
|
||||||
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id) : ''}
|
<div class="flex flex-col w-full gap-2">
|
||||||
|
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ''}
|
||||||
|
</div>
|
||||||
<div class="flex items-center gap-2 my-2 w-full">
|
<div class="flex items-center gap-2 my-2 w-full">
|
||||||
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
||||||
@@ -544,25 +556,6 @@
|
|||||||
.catch(error => console.error('Error:', error));
|
.catch(error => console.error('Error:', error));
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
|
||||||
if (typeof dokumenJaminan === 'string') {
|
|
||||||
return `
|
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
||||||
${dokumenJaminan.split('/').pop()}
|
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
|
||||||
</a>
|
|
||||||
`;
|
|
||||||
} else if (Array.isArray(dokumenJaminan)) {
|
|
||||||
return dokumenJaminan.map(file => `
|
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${encodeURIComponent(file)}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
||||||
${file.split('/').pop()}
|
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
|
||||||
</a>
|
|
||||||
`).join('');
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function addFileInput(index) {
|
function addFileInput(index) {
|
||||||
const container = document.getElementById(`file-container-${index}`);
|
const container = document.getElementById(`file-container-${index}`);
|
||||||
const newInput = document.createElement('div');
|
const newInput = document.createElement('div');
|
||||||
@@ -579,20 +572,24 @@
|
|||||||
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) {
|
||||||
if (typeof dokumenJaminan === 'string') {
|
if (typeof dokumenJaminan === 'string' && typeof dokumenNomor === 'string') {
|
||||||
return `
|
return `
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2">
|
<div class="flex w-full lg:w-[30%]">
|
||||||
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : ${dokumenNomor}</span>
|
||||||
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="flex-none badge badge-sm badge-outline mt-2">
|
||||||
${dokumenJaminan.split('/').pop()}
|
${dokumenJaminan.split('/').pop()}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
} else if (Array.isArray(dokumenJaminan)) {
|
} else if (Array.isArray(dokumenJaminan) && Array.isArray(dokumenNomor)) {
|
||||||
return dokumenJaminan.map(file => `
|
return dokumenJaminan.map((file, index) => `<div class="flex w-full lg:w-[30%]">
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${file}" class="badge badge-sm badge-outline mt-2 mr-2">
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : ${dokumenNomor[index] || 'N/A'}</span>
|
||||||
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${file}" class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
${file.split('/').pop()}
|
${file.split('/').pop()}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a></div>
|
||||||
`).join('');
|
`).join('');
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
Reference in New Issue
Block a user