Enhanced the document upload section to support multiple file uploads for "Dokumen Jaminan". Added "Add More" and "Remove" buttons for dynamically managing file inputs. Implemented helper functions to handle dynamic input fields and update the UI accordingly.
581 lines
32 KiB
PHP
581 lines
32 KiB
PHP
<form action="{{ isset($document->id) ? route('debitur.jaminan.update', ['id'=>$debitur->id,'jaminan'=>$document->id]) : route('debitur.jaminan.store',$debitur->id) }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
|
|
@if(isset($document->id))
|
|
@method('PUT')
|
|
@endif
|
|
@csrf
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Debitur
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input type="hidden" name="debiture_id" value="{{ $debitur->id ?? '' }}">
|
|
<p class="text-base text-gray-700">
|
|
{{ $debitur->name }} |
|
|
{{ formatAlamat($debitur) }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Pemilik Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="input-group w-full">
|
|
<select onchange="changePemilikJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
|
|
<option value="">Pilih Pemilik Jaminan</option>
|
|
<option value="0">Sama Dengan Debitur</option>
|
|
<option value="00">Tidak Sama Dengan Debitur</option>
|
|
@if(isset($pemilikJaminan))
|
|
@foreach($pemilikJaminan as $pemilik)
|
|
@if(isset($document))
|
|
<option value="{{ $pemilik->id }}" {{ isset($document->pemilik_jaminan_id) && $document->pemilik_jaminan_id == $pemilik->id?'selected' : '' }}>
|
|
{{ $pemilik->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $pemilik->id }}">
|
|
{{ $pemilik->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
</div>
|
|
@error('pemilik_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
<fieldset id="pemilik_jaminan" class="hidden border border-solid border-gray-300 p-3 w-full mt-5 grid gap-5">
|
|
<legend class="text-sm">Pemilik Jaminan</legend>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Hubungan Pemilik Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="hubungan_pemilik_jaminan_id" id="hubungan_pemilik_jaminan_id">
|
|
<option value="">Pilih Hubungan Pemilik Jaminan</option>
|
|
@if(isset($hubunganPemilik))
|
|
@foreach($hubunganPemilik as $hubungan)
|
|
@if(isset($pemilik))
|
|
<option value="{{ $hubungan->id }}" {{ isset($pemilik->hubungan_pemilik_jaminan_id) && $pemilik->hubungan_pemilik_jaminan_id == $hubungan->id?'selected' : '' }}>
|
|
{{ $hubungan->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $hubungan->id }}">
|
|
{{ $hubungan->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
@error('hubungan_pemilik_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Nama Lengkap
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('pemilik_name') border-danger bg-danger-light @enderror" type="text " id="pemilik_name" name="pemilik_name" value="{{ $pemilik->name ?? '' }}" placeholder="Nama Pemilik Jaminan">
|
|
@error('pemilik_name')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id" value="{{ $debitur->nomor_id ?? '' }}" placeholder="Nomor ID/KTP">
|
|
@error('nomor_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="nama_sertifikat">
|
|
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<button type="button" id="tambah_sertifikat" class="btn btn-primary btn-xs">Tambah Nama di Sertifikat</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Jenis Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if(isset($document->id))
|
|
<input type="hidden" name="jenis_jaminan_id" value="{{ $document->jenis_jaminan_id }}">
|
|
@endif
|
|
<select onchange="getLegalitasJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="jenis_jaminan_id" id="jenis_jaminan_id">
|
|
<option value="">Pilih Jenis Jaminan</option>
|
|
@foreach($jenisJaminan as $row)
|
|
@if(isset($document))
|
|
<option value="{{ $row->id }}" {{ isset($document->jenis_jaminan_id) && $document->jenis_jaminan_id == $row->id?'selected' : '' }}>
|
|
{{ $row->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $row->id }}">{{ $row->name }}</option>
|
|
@endif
|
|
@endforeach
|
|
</select>
|
|
@error('jenis_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div id="doctainer" class="grid gap-5">
|
|
@if(isset($document->id))
|
|
@php $n = 0; @endphp
|
|
@foreach($document->detail as $detail)
|
|
<input type="hidden" name="detail_dokumen_jaminan_id[]" value="{{ $detail->id }}">
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
{{ $n + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
|
</label>
|
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $detail->jenis_legalitas_jaminan_id }}">
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Nama Dokumen
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nama Dokumen">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Dokumen Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
|
<div class="flex items-center gap-2">
|
|
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
|
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
|
</div>
|
|
<div id="additional-files-{{ $n }}"></div>
|
|
</div>
|
|
|
|
@if(isset($detail->dokumen_jaminan))
|
|
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2">{{ basename($detail->dokumen_jaminan) }}
|
|
<i class="ki-filled ki-cloud-download"></i></a>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
@if($detail->details)
|
|
@php $custom_field = json_decode($detail->details,true) @endphp
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="text" name="custom_field[][$detail->jenisLegalitasJaminan->custom_field]" value="{{ $custom_field[$detail->jenisLegalitasJaminan->custom_field] }}">
|
|
</div>
|
|
</div>
|
|
@else
|
|
@if($detail->jenisLegalitasJaminan->custom_field)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if($detail->jenisLegalitasJaminan->custom_field_type === "text")
|
|
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "number")
|
|
<input class="input" type="number" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "date")
|
|
<input class="input" type="date" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea")
|
|
<textarea class="textarea" rows="3" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2"></textarea>
|
|
@else
|
|
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
@endif
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Keterangan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<textarea class="textarea" rows="3" type="number" name="keterangan[]">{{ $detail->keterangan ?? "" }}</textarea>
|
|
</div>
|
|
</div>
|
|
@php $n++; @endphp
|
|
@endforeach
|
|
@foreach($legalitas as $item)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
{{ $n + 1 }}. {{ $item->name }}
|
|
</label>
|
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $item->id }}">
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Nama Dokumen
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nama Dokumen">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Dokumen Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="file-input" type="file" name="dokumen_jaminan[]" value="">
|
|
</div>
|
|
</div>
|
|
|
|
@if($item->custom_field)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$item->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if($item->custom_field_type === "text")
|
|
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "number")
|
|
<input class="input" type="number" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "date")
|
|
<input class="input" type="date" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "textarea")
|
|
<textarea class="textarea" rows="3" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2"></textarea>
|
|
@else
|
|
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Keterangan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<textarea class="textarea" rows="3" type="number" name="keterangan[]"></textarea>
|
|
</div>
|
|
</div>
|
|
@php $n++; @endphp
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Address
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select Province</option>
|
|
@foreach($provinces as $province)
|
|
@if(isset($document))
|
|
<option value="{{ $province->code }}" {{ isset($document->province_code) && $document->province_code == $province->code?'selected' : '' }}>
|
|
{{ $province->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $province->code }}">
|
|
{{ $province->name }}
|
|
</option>
|
|
@endif
|
|
;
|
|
@endforeach
|
|
</select>
|
|
@error('province_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select City</option>
|
|
@if(isset($cities))
|
|
@foreach($cities as $city)
|
|
@if(isset($document))
|
|
<option value="{{ $city->code }}" {{ isset($document->city_code) && $document->city_code == $city->code?'selected' : '' }}>
|
|
{{ $city->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $city->code }}">
|
|
{{ $city->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('city_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select District</option>
|
|
@if(isset($districts))
|
|
@foreach($districts as $district)
|
|
@if(isset($document))
|
|
<option value="{{ $district->code }}" {{ isset($document->district_code) && $document->district_code == $district->code?'selected' : '' }}>
|
|
{{ $district->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $district->code }}">
|
|
{{ $district->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('district_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select Village</option>
|
|
@if(isset($villages))
|
|
@foreach($villages as $village)
|
|
@if(isset($document))
|
|
<option value="{{ $village->code }}" {{ isset($document->village_code) && $document->village_code == $village->code?'selected' : '' }}>
|
|
{{ $village->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $village->code }}">
|
|
{{ $village->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('district_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('postal_code') border-danger bg-danger-light @enderror" type="number" id="postal_code" name="postal_code" value="{{ $document->postal_code ?? '' }}" placeholder="Postal Code">
|
|
@error('postal_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
|
<textarea class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3" type="number" id="address" name="address">{{ $document->address ?? '' }}</textarea>
|
|
@error('address')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="btn btn-primary">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
@push('scripts')
|
|
{{--Pemilik Jaminan--}}
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const namaSertifikatDiv = document.getElementById("nama_sertifikat");
|
|
|
|
// Function to add delete event listeners to existing buttons
|
|
function addDeleteListeners() {
|
|
document.querySelectorAll(".delete-button").forEach(button => {
|
|
button.addEventListener("click", function () {
|
|
this.closest(".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5").remove();
|
|
});
|
|
});
|
|
}
|
|
|
|
// Add delete listeners to existing buttons
|
|
addDeleteListeners();
|
|
|
|
document.getElementById("tambah_sertifikat").addEventListener("click", function () {
|
|
const newDiv = document.createElement("div");
|
|
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
|
|
newDiv.innerHTML = `
|
|
<label class="form-label max-w-56">
|
|
Nama Lengkap
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="text" name="detail_sertifikat[name][]" value="" placeholder="Nama Pemilik Jaminan">
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="number" name="detail_sertifikat[nomor_id][]" value="" placeholder="Nomor ID/KTP">
|
|
</div>
|
|
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
|
|
</div>
|
|
</div>
|
|
`;
|
|
namaSertifikatDiv.appendChild(newDiv);
|
|
|
|
// Add delete listener to the new button
|
|
addDeleteListeners();
|
|
});
|
|
});
|
|
|
|
function changePemilikJaminan() {
|
|
var pemilikJaminan = document.getElementById("pemilik_jaminan_id").value;
|
|
var fieldsetPemilikJaminan = document.getElementById("pemilik_jaminan");
|
|
if (pemilikJaminan === "00") {
|
|
fieldsetPemilikJaminan.classList.remove("hidden");
|
|
} else {
|
|
fieldsetPemilikJaminan.classList.add("hidden");
|
|
}
|
|
}
|
|
</script>
|
|
|
|
{{--Legalitas Jaminan--}}
|
|
<script>
|
|
function getLegalitasJaminan() {
|
|
var legalitasJaminan = document.getElementById("jenis_jaminan_id").value;
|
|
var documentId = "{{ $document->id ?? "0" }}";
|
|
var debiturId = "{{ $debitur->id }}";
|
|
var url = `/basic-data/jenis-jaminan/legalitas/${documentId}/${legalitasJaminan}`;
|
|
fetch(url, {
|
|
method: "GET",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"X-Requested-With": "XMLHttpRequest"
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(data => {
|
|
var doctainer = document.getElementById("doctainer");
|
|
doctainer.innerHTML = "";
|
|
data.forEach((item, index) => {
|
|
doctainer.innerHTML += `
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
${index + 1}. ${item.name}
|
|
</label>
|
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value="${item.jenis_legalitas_jaminan_id}">
|
|
${item.is_existing ? `<input type="hidden" name="detail_dokumen_jaminan_id[]" value="${item.id}">` : ''}
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Nama Dokumen
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="text" name="name[]" value="${item.name || ''}" placeholder="Nama Dokumen">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Dokumen Jaminan
|
|
</label>
|
|
<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 items-center gap-2 my-2 w-full">
|
|
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
|
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
${item.custom_field ? `
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
${item.custom_field.replace(/_/g, " ")}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
${getCustomFieldInput(item.custom_field_type, item.custom_field, item.details)}
|
|
</div>
|
|
</div>
|
|
` : ''}
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Keterangan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<textarea class="textarea" rows="3" name="keterangan[]">${item.keterangan || ''}</textarea>
|
|
</div>
|
|
</div>
|
|
`;
|
|
});
|
|
})
|
|
.catch(error => console.error('Error:', error));
|
|
}
|
|
|
|
function addFileInput(index) {
|
|
const container = document.getElementById(`file-container-${index}`);
|
|
const newInput = document.createElement('div');
|
|
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
|
newInput.innerHTML = `
|
|
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
|
<button type="button" class="btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
|
`;
|
|
container.appendChild(newInput);
|
|
}
|
|
|
|
function removeFileInput(button) {
|
|
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
|
}
|
|
|
|
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">
|
|
${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=${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 getCustomFieldInput(type, fieldName, value) {
|
|
value = value ? JSON.parse(value)[fieldName] || '' : '';
|
|
switch (type) {
|
|
case "text":
|
|
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "number":
|
|
return `<input class="input" type="number" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "date":
|
|
return `<input class="input" type="date" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "textarea":
|
|
return `<textarea class="textarea" rows="3" name="custom_field[][${fieldName}]">${value}</textarea>`;
|
|
default:
|
|
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
}
|
|
}
|
|
</script>
|
|
@endpush
|