Tambah nomor dokumen untuk dokumen jaminan
Menambahkan kolom 'dokumen_nomor' pada model DetailDokumenJaminan serta melakukan update terkait di controller dan view. Perubahan ini memungkinkan pengguna untuk memasukkan nomor dokumen selain file dokumen jaminan. Rutin yang terkait dengan penyimpanan dan pengambilan dokumen diperbarui untuk menangani data nomor dokumen. Perbaikan minor pada penataan kode juga dilakukan untuk konsistensi.
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Location\Models\City;
|
use Modules\Location\Models\City;
|
||||||
@@ -18,8 +20,6 @@
|
|||||||
use Modules\Lpj\Models\JenisJaminan;
|
use Modules\Lpj\Models\JenisJaminan;
|
||||||
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
use Modules\Lpj\Models\PemilikJaminan;
|
use Modules\Lpj\Models\PemilikJaminan;
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
use ZipArchive;
|
use ZipArchive;
|
||||||
|
|
||||||
class DokumenJaminanController extends Controller
|
class DokumenJaminanController extends Controller
|
||||||
@@ -72,45 +72,41 @@
|
|||||||
|
|
||||||
$document = DokumenJaminan::create($validate);
|
$document = DokumenJaminan::create($validate);
|
||||||
|
|
||||||
try {
|
if ($request->jenis_legalitas_jaminan_id) {
|
||||||
foreach ($request->dokumen_jaminan as $key => $value) {
|
foreach ($request->jenis_legalitas_jaminan_id as $key => $value) {
|
||||||
$file_name = $value->getClientOriginalName();
|
$detailData = [
|
||||||
|
'dokumen_jaminan_id' => $document->id,
|
||||||
|
'jenis_legalitas_jaminan_id' => $value,
|
||||||
|
'name' => $request->name[$key],
|
||||||
|
'keterangan' => $request->keterangan[$key],
|
||||||
|
];
|
||||||
|
|
||||||
if ($file_name) {
|
$dokumenJaminan = [];
|
||||||
try {
|
$dokumenNomor = [];
|
||||||
$file_name = $value->getClientOriginalName();
|
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
||||||
$value->storeAs(
|
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||||
|
if ($file) {
|
||||||
|
$file_name = $file->getClientOriginalName();
|
||||||
|
$file->storeAs(
|
||||||
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
$file_name,
|
$file_name,
|
||||||
);
|
);
|
||||||
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$detail = [
|
if (!empty($dokumenJaminan)) {
|
||||||
'dokumen_jaminan_id' => $document->id,
|
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
||||||
'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
|
$detailData['dokumen_nomor'] = json_encode($dokumenNomor);
|
||||||
'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
|
}
|
||||||
'name' => $request->name[$key],
|
|
||||||
'keterangan' => $request->keterangan[$key],
|
DetailDokumenJaminan::create($detailData);
|
||||||
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '',
|
|
||||||
];
|
|
||||||
DetailDokumenJaminan::create($detail);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
DB::rollBack();
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
|
||||||
'error',
|
|
||||||
'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
} catch (Exception $e) {
|
|
||||||
DB::rollBack();
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
|
||||||
'error',
|
|
||||||
'gg' . $e->getMessage(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
'success',
|
'success',
|
||||||
'Dokumen Jaminan berhasil ditambahkan',
|
'Dokumen Jaminan berhasil ditambahkan',
|
||||||
@@ -149,6 +145,7 @@
|
|||||||
$debitur = Debiture::find($id);
|
$debitur = Debiture::find($id);
|
||||||
|
|
||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
@@ -226,7 +223,9 @@
|
|||||||
$document->update($validate);
|
$document->update($validate);
|
||||||
|
|
||||||
// Get existing detail documents
|
// Get existing detail documents
|
||||||
$existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy('id');
|
$existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy(
|
||||||
|
'id',
|
||||||
|
);
|
||||||
|
|
||||||
if ($request->jenis_legalitas_jaminan_id) {
|
if ($request->jenis_legalitas_jaminan_id) {
|
||||||
foreach ($request->jenis_legalitas_jaminan_id as $key => $value) {
|
foreach ($request->jenis_legalitas_jaminan_id as $key => $value) {
|
||||||
@@ -238,21 +237,25 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
$dokumenJaminan = [];
|
$dokumenJaminan = [];
|
||||||
|
$dokumenNomor=[];
|
||||||
|
|
||||||
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
||||||
foreach($request->dokumen_jaminan[$key] as $file) {
|
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||||
if ($file) {
|
if ($file) {
|
||||||
$file_name = $file->getClientOriginalName();
|
$file_name = $file->getClientOriginalName();
|
||||||
$file->storeAs(
|
$file->storeAs(
|
||||||
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
$file_name
|
$file_name,
|
||||||
);
|
);
|
||||||
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($dokumenJaminan)) {
|
if (!empty($dokumenJaminan)) {
|
||||||
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
||||||
|
$detailData['dokumen_nomor'] = json_encode($dokumenNomor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||||
@@ -261,9 +264,18 @@
|
|||||||
if ($detailDocument) {
|
if ($detailDocument) {
|
||||||
// Merge new files with existing ones
|
// Merge new files with existing ones
|
||||||
if (!empty($dokumenJaminan)) {
|
if (!empty($dokumenJaminan)) {
|
||||||
$existingFiles = json_decode($detailDocument->dokumen_jaminan, true) ?: [];
|
$existingFiles = json_decode(
|
||||||
|
$detailDocument->dokumen_jaminan,
|
||||||
|
true,
|
||||||
|
) ?: [];
|
||||||
|
$existingNomor = json_decode(
|
||||||
|
$detailDocument->dokumen_nomor,
|
||||||
|
true,
|
||||||
|
) ?: [];
|
||||||
$mergedFiles = array_merge($existingFiles, $dokumenJaminan);
|
$mergedFiles = array_merge($existingFiles, $dokumenJaminan);
|
||||||
|
$mergedNomor = array_merge($existingNomor, $dokumenNomor);
|
||||||
$detailData['dokumen_jaminan'] = json_encode($mergedFiles);
|
$detailData['dokumen_jaminan'] = json_encode($mergedFiles);
|
||||||
|
$detailData['dokumen_nomor'] = json_encode($mergedNomor);
|
||||||
}
|
}
|
||||||
$detailDocument->update($detailData);
|
$detailDocument->update($detailData);
|
||||||
$existingDetails->forget($detailId);
|
$existingDetails->forget($detailId);
|
||||||
@@ -315,8 +327,10 @@
|
|||||||
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
||||||
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
||||||
|
|
||||||
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn('id',$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray())->get();
|
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn(
|
||||||
|
'id',
|
||||||
|
$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(),
|
||||||
|
)->get();
|
||||||
|
|
||||||
|
|
||||||
// Remove values from $legalitasJaminan that are in $currentLegalitasJaminan
|
// Remove values from $legalitasJaminan that are in $currentLegalitasJaminan
|
||||||
@@ -341,7 +355,7 @@
|
|||||||
'villages',
|
'villages',
|
||||||
'pemilikJaminan',
|
'pemilikJaminan',
|
||||||
'hubunganPemilik',
|
'hubunganPemilik',
|
||||||
'legalitas'
|
'legalitas',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -378,7 +392,9 @@
|
|||||||
|
|
||||||
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
|
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
|
||||||
foreach ($documents as $document) {
|
foreach ($documents as $document) {
|
||||||
$files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan];
|
$files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode(
|
||||||
|
$document->dokumen_jaminan,
|
||||||
|
) : [$document->dokumen_jaminan];
|
||||||
|
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
$filePath = storage_path('app/public/' . $file);
|
$filePath = storage_path('app/public/' . $file);
|
||||||
@@ -411,7 +427,9 @@
|
|||||||
{
|
{
|
||||||
$dokumen = request()->get('dokumen');
|
$dokumen = request()->get('dokumen');
|
||||||
$document = DetailDokumenJaminan::find($dokumen);
|
$document = DetailDokumenJaminan::find($dokumen);
|
||||||
$file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan];
|
$file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode(
|
||||||
|
$document->dokumen_jaminan,
|
||||||
|
) : [$document->dokumen_jaminan];
|
||||||
return response()->download(storage_path('app/public/' . $file[request()->get('index')]));
|
return response()->download(storage_path('app/public/' . $file[request()->get('index')]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,9 +443,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) : JsonResponse
|
public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1)
|
||||||
{
|
: JsonResponse {
|
||||||
|
|
||||||
$jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId);
|
$jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId);
|
||||||
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
|
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
|
||||||
$newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
|
$newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
|
||||||
@@ -448,12 +465,14 @@
|
|||||||
'id' => $detail->id,
|
'id' => $detail->id,
|
||||||
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
|
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
|
||||||
'name' => $detail->jenisLegalitasJaminan->name,
|
'name' => $detail->jenisLegalitasJaminan->name,
|
||||||
'dokumen_jaminan' => json_decode($detail->dokumen_jaminan) ?? $detail->dokumen_jaminan,
|
'dokumen_jaminan' => json_decode(
|
||||||
|
$detail->dokumen_jaminan,
|
||||||
|
) ?? $detail->dokumen_jaminan,
|
||||||
'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,
|
||||||
'keterangan' => $detail->keterangan,
|
'keterangan' => $detail->keterangan,
|
||||||
'is_existing' => true
|
'is_existing' => true,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -471,7 +490,7 @@
|
|||||||
'custom_field_type' => $legalitas->custom_field_type,
|
'custom_field_type' => $legalitas->custom_field_type,
|
||||||
'details' => null,
|
'details' => null,
|
||||||
'keterangan' => null,
|
'keterangan' => null,
|
||||||
'is_existing' => false
|
'is_existing' => false,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
'jenis_legalitas_jaminan_id',
|
'jenis_legalitas_jaminan_id',
|
||||||
'name',
|
'name',
|
||||||
'dokumen_jaminan',
|
'dokumen_jaminan',
|
||||||
|
'dokumen_nomor',
|
||||||
'keterangan',
|
'keterangan',
|
||||||
'details',
|
'details',
|
||||||
'status',
|
'status',
|
||||||
|
|||||||
@@ -146,10 +146,10 @@
|
|||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nama Dokumen">
|
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -160,8 +160,9 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<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 flex-col w-full gap-2" id="file-container-{{$n}}">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]">
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
<div id="additional-files-{{ $n }}"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -234,10 +235,10 @@
|
|||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nama Dokumen">
|
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -248,8 +249,9 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<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 flex-col w-full gap-2" id="file-container-{{$n}}">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
<div id="additional-files-{{ $n }}"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -287,8 +289,8 @@
|
|||||||
</div>
|
</div>
|
||||||
@php $n++; @endphp
|
@php $n++; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
|
||||||
@endif
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
@@ -496,10 +498,10 @@
|
|||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input" type="text" name="name[]" value="${item.name || ''}" placeholder="Nama Dokumen">
|
<input class="input" type="text" name="name[]" value="${item.name || ''}" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -510,8 +512,9 @@
|
|||||||
<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) : ''}
|
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id) : ''}
|
||||||
<div class="flex items-center gap-2 my-2 w-full">
|
<div class="flex items-center gap-2 my-2 w-full">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -565,8 +568,9 @@
|
|||||||
const newInput = document.createElement('div');
|
const newInput = document.createElement('div');
|
||||||
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
||||||
newInput.innerHTML = `
|
newInput.innerHTML = `
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
||||||
`;
|
`;
|
||||||
container.appendChild(newInput);
|
container.appendChild(newInput);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user