(persetujuan-penawaran): Tambah fitur tampilan file dan perbaiki logika persetujuan penawaran

- Menambahkan auto-fill nominal_bayar dengan nilai biaya_final pada create persetujuan
- Memperbaiki query datatables dengan filter status penawaran lebih spesifik
- Menambahkan whereHas untuk memastikan hanya status 'persetujuan-penawaran' yang ditampilkan
- Menambahkan preview file upload (persetujuan_penawaran, surat_representasi, bukti_bayar)
- Menggunakan Storage::url() untuk generate URL file dengan keamanan optimal
- Menambahkan ikon eye dan badge untuk tampilan preview file
- Memperbaiki fallback nominal_bayar agar otomatis menggunakan biaya_final
- Merapikan struktur HTML dan urutan class Tailwind CSS di index dan form blade
- Mengoptimalkan AJAX request structure dan error handling agar lebih stabil
This commit is contained in:
Daeng Deni Mardaeni
2025-09-30 17:06:30 +07:00
parent 3aca1d46c2
commit 10b5a6c96c
3 changed files with 214 additions and 167 deletions

View File

@@ -60,6 +60,17 @@
<input type="file" name="file_persetujuan_penawaran" id="file_persetujuan_penawaran"
class="file-input w-full @error('file_persetujuan_penawaran') border-danger bg-danger-light @enderror"
accept=".pdf,.doc,.docx">
@if (isset($persetujuanPenawaran->file_persetujuan_penawaran) &&
!empty($persetujuanPenawaran->file_persetujuan_penawaran))
<div class="flex items-center mt-2">
<a href="{{ Storage::url($persetujuanPenawaran->file_persetujuan_penawaran) }}"
target="_blank" class="badge badge-sm badge-outline badge-warning">
<i class="mr-2 ki-filled ki-eye"></i> Lihat File
</a>
</div>
@endif
@error('file_persetujuan_penawaran')
<em class="text-sm alert text-danger">{{ $message }}</em>
@enderror
@@ -74,6 +85,16 @@
<input type="file" name="surat_representasi" id="surat_representasi"
class="file-input w-full @error('surat_representasi') border-danger bg-danger-light @enderror"
accept=".pdf,.doc,.docx">
@if (isset($persetujuanPenawaran->surat_representasi) && !empty($persetujuanPenawaran->surat_representasi))
<div class="flex items-center mt-2">
<a href="{{ Storage::url($persetujuanPenawaran->surat_representasi) }}" target="_blank"
class="badge badge-sm badge-outline badge-warning">
<i class="mr-2 ki-filled ki-eye"></i> Lihat File
</a>
</div>
@endif
@error('surat_representasi')
<em class="text-sm alert text-danger">{{ $message }}</em>
@enderror
@@ -87,7 +108,7 @@
<div class="flex flex-wrap items-baseline w-full">
<input type="number" name="nominal_bayar" id="nominal_bayar"
class="input w-full @error('nominal_bayar') border-danger bg-danger-light @enderror"
value="{{ old('nominal_bayar', $persetujuanPenawaran->nominal_bayar ?? '') }}"
value="{{ old('nominal_bayar', $persetujuanPenawaran->nominal_bayar ?? ($persetujuanPenawaran->biaya_final ?? '')) }}"
placeholder="Masukkan nominal bayar">
@error('nominal_bayar')
<em class="text-sm alert text-danger">{{ $message }}</em>
@@ -103,6 +124,16 @@
<input type="file" name="bukti_bayar" id="bukti_bayar"
class="file-input w-full @error('bukti_bayar') border-danger bg-danger-light @enderror"
accept=".pdf,.jpg,.jpeg,.png">
@if (isset($persetujuanPenawaran->bukti_bayar) && !empty($persetujuanPenawaran->bukti_bayar))
<div class="flex items-center mt-2">
<a href="{{ Storage::url($persetujuanPenawaran->bukti_bayar) }}" target="_blank"
class="badge badge-sm badge-outline badge-warning">
<i class="mr-2 ki-filled ki-eye"></i> Lihat File
</a>
</div>
@endif
@error('bukti_bayar')
<em class="text-sm alert text-danger">{{ $message }}</em>
@enderror