feat(lpj-module): tambah tampilan laporan inspeksi & refactor detail lokasi

Ringkasan:
- Menambahkan halaman hasil inspeksi dan tampilan cetak laporan.
- Mengekstrak komponen detail lokasi ke partial baru agar reusable.
- Menambahkan null-safe access dan perbaikan binding data di view.
- Merapikan tombol cetak dan navigasi agar konsisten antar halaman.

Perubahan utama:
1. activitydetail.blade.php → ubah tombol print jadi route, tambah null-safe user/branch.
2. detail-lokasi.blade.php (baru) → komponen reusable untuk detail lokasi dengan formatLabel & tanggal.
3. form-penilai.blade.php → refactor luas menggunakan match, hapus fungsi debug & Swal loading.
4. print-out-dokument.blade.php → gunakan partial lpj::component.detail-lokasi untuk detail lokasi.
5. show-laporan-inspeksi.blade.php (baru) → tab 'Laporan' & 'Hasil Inspeksi' + tombol cetak dan back.
6. print-out-sederhana / print-out-standar → penyesuaian tampilan & binding data.
7. signature-approval.blade.php → perbaikan layout area tanda tangan.
8. surveyor/components/* → normalisasi tampilan, validasi gambar, dan penyelarasan fakta/lingkungan.
9. routes/web.php → tambah dan ubah rute untuk laporan inspeksi dan cetak laporan.

Catatan:
- Tidak ada perubahan query database; semua modifikasi bersifat tampilan.
- Logging tambahan untuk observabilitas proses render laporan.
This commit is contained in:
Daeng Deni Mardaeni
2025-11-09 21:19:58 +07:00
parent 535be2cff3
commit 0d5b6b1529
31 changed files with 2193 additions and 1865 deletions

View File

@@ -1,6 +1,5 @@
<div class="no-break">
<table style="width: 100%; border: 1px solid #000; border-collapse: collapse; ">
<tr>
<td style="text-align: center; margin-top: 5px;">
<h2 style=" text-transform: uppercase; text-align: center; margin: 0;">
@@ -38,27 +37,26 @@
<tr>
@foreach ($basicData['perkerasanJalan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) &&
in_array($item->name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']))
>
{{ $item->name }}
@if ($item->name == 'Lainnya' && !empty($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']))
({{ $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'] }})
@endif
</label>
</td>
@endforeach
</tr>
<tr>
</table>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) && in_array($item->name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Lalu Lintas Depan Lokasi</td>
@@ -69,245 +67,242 @@
<tr>
@foreach ($basicData['laluLintasLokasi'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['lalu_lintas'])
&& is_array($forminspeksi['lingkungan']['lalu_lintas'])
&& in_array($item->name, $forminspeksi['lingkungan']['lalu_lintas']))
>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
<tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Golongan Masyarakat Sekitar</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['golMasySekitar']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['golMasySekitar'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['gol_mas_sekitar'])
&& is_array($forminspeksi['lingkungan']['gol_mas_sekitar'])
&& in_array($item->name, $forminspeksi['lingkungan']['gol_mas_sekitar']))
>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Tingkat Keramaian</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['tingkatKeramaian']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['tingkatKeramaian'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['tingkat_keramaian']) &&
is_array($forminspeksi['lingkungan']['tingkat_keramaian']) &&
in_array($item->name, $forminspeksi['lingkungan']['tingkat_keramaian']))
>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Terletak Di Area</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['terletakDiArea']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['terletakDiArea'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea']) &&
in_array($item->name, $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? []))
>
{{ $item->name }}
@if ($item->name == 'Lainnya' && !empty($forminspeksi['lingkungan']['terletak_diarea']['lainnya']))
({{ $forminspeksi['lingkungan']['terletak_diarea']['lainnya'] }})
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Disekitar Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Telah ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }}>
Telah ada bangunan
@if (($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya')
- Kondisi Bangunan:
{{ $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '' }}
, Sifat Bangunan:
{{ $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Belum ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak' ? 'checked' : '' }}>
Belum ada bangunan
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Makam</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya')
- Nama Makam: {{ $forminspeksi['lingkungan']['nama_makam'] ?? '' }}
, Jarak Makam: {{ $forminspeksi['lingkungan']['jarak_makam'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat TPS</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya')
- Nama TPS:
{{ $forminspeksi['lingkungan']['nama_tps'] ?? '' }}
, Jarak TPS:
{{ $forminspeksi['lingkungan']['jarak_tps'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Lainnya</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['dekat_lainnya'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Merupakan Daerah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['merupakanDaerah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['merupakanDaerah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['merupakan_daerah']) &&
in_array($item->name, $forminspeksi['lingkungan']['merupakan_daerah']))
>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Fasilitas Umum Dekat Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@if (isset($basicData['fasilitasObjek']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['fasilitasObjek'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr><tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
@checked(isset($forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name]) &&
$forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name]))
>
{{ $item->name }}
@if (!empty($forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name]))
({{ $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] }})
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, $forminspeksi['lingkungan']['lalu_lintas']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Golongan Masyarakat Sekitar</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['golMasySekitar']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['golMasySekitar'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, $forminspeksi['lingkungan']['gol_mas_sekitar']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Tingkat Keramaian</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['tingkatKeramaian']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['tingkatKeramaian'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['tingkat_keramaian']) && in_array($item->name, $forminspeksi['lingkungan']['tingkat_keramaian']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Terletak Di Area</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['terletakDiArea']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['terletakDiArea'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea']) && in_array($item->name, $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? '') ? 'checked' : '' }}>
{{ $item->name }}
@if ($item->name == 'Lainnya')
{{ isset($forminspeksi['lingkungan']['terletak_diarea']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['terletak_diarea']['lainnya'] . ')' : '' }}
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Disekitar Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Telah ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }}>
Telah ada bangunan
@if (($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya')
- Kondisi Bangunan:
{{ $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '' }}
, Sifat Bangunan:
{{ $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="Belum ada bangunan"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak' ? 'checked' : '' }}>
Belum ada bangunan
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Makam</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'ya')
- Nama Makam:
{{ $forminspeksi['lingkungan']['nama_makam'] ?? '' }}
, Jarak Makam:
{{ $forminspeksi['lingkungan']['jarak_makam'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_makam'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat TPS</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya')
- Nama TPS:
{{ $forminspeksi['lingkungan']['nama_tps'] ?? '' }}
, Jarak TPS:
{{ $forminspeksi['lingkungan']['jarak_tps'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;">Dekat Lainnya</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>{{ $forminspeksi['lingkungan']['dekat_lainnya'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top;">Merupakan Daerah</td>
<td width="1%" style="vertical-align: top;">:</td>
<td>
@if (isset($basicData['merupakanDaerah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['merupakanDaerah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['merupakan_daerah']) && in_array($item->name, $forminspeksi['lingkungan']['merupakan_daerah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;">Fasilitas Umum Dekat Lokasi</td>
<td width="1%" style="vertical-align: top;">:</td>
<td style="vertical-align: top;">
@if (isset($basicData['fasilitasObjek']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['fasilitasObjek'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['fasilitas_dekat_object']) && $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] ? 'checked' : '' }}>
{{ $item->name}} {{isset($forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name]) ? '('. $forminspeksi['lingkungan']['fasilitas_dekat_object_input'][$item->name] .')' : ''}}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>