🔧(penilai): Perbaikan tampilan dan logika fallback foto jaminan

Implementasi berbagai perbaikan pada komponen penilai dan foto jaminan:

**Detail Lokasi (detail-lokasi.blade.php):**
- Menambahkan logika untuk menghindari duplikasi label yang sama
- Implementasi tracking currentKey untuk mencegah label berulang
- Perbaikan tampilan tabel dengan label yang lebih bersih

**Footer (footer.blade.php):**
- Perbaikan indentasi dan formatting kode
- Reorganisasi array customLabels untuk konsistensi
- Perbaikan struktur conditional untuk upload_gs

**Foto Jaminan (foto-jaminan.blade.php):**
- Implementasi sistem fallback path untuk file foto yang tidak ditemukan
- Logika fallback: surveyor/2025/APRIL/26042025/251051/251051_2_2.png → surveyor/001/251051/251051_2_2.png
- Penambahan urutan kategori foto yang diinginkan (BLAD TATA KOTA sebelum FOTO JAMINAN)
- Skip kategori DOKUMEN PENDUKUNG dari tampilan utama
- Perbaikan class ordering (border photo-item)
- Update alt attribute untuk menggunakan pathToUse
- Penambahan debug @dd untuk otherPhotos (sementara)

**Print Out Sederhana (print-out-sederhana.blade.php):**
- Perbaikan tampilan Total Nilai Pasar Wajar dengan colspan yang benar
- Restructuring tabel NPW tambahan dengan width yang tepat
- Perbaikan alignment dan formatting nilai
- Update parameter signature-approval dengan npw
- Perbaikan tampilan Total Nilai Likuidasi
- Penambahan tanda '--' pada SARANA PELENGKAP DAN LINGKUNGAN

**Print Out Standar (print-out-standar.blade.php):**
- Implementasi logika untuk menghindari duplikasi label
- Perbaikan struktur tabel dengan width 100%
- Update tracking currentLabel untuk konsistensi tampilan
This commit is contained in:
Daeng Deni Mardaeni
2025-10-29 10:50:13 +07:00
parent 478c0c8079
commit fb22d370b5
6 changed files with 148 additions and 73 deletions

View File

@@ -1,10 +1,19 @@
@if (is_array($details) && count($details) > 0)
@php $currentKey = ''; @endphp
@foreach ($details as $value)
@foreach ($value as $key => $item)
@if (!empty($item))
<tr>
<td style="padding: 2px; width:25%;">
{{ formatLabel($key) }}
@if ($currentKey !== $key)
{{ formatLabel($key) }}
@endif
@php
if ($currentKey !== $key) {
$currentKey = $key;
}
@endphp
</td>
<td style="width:1%; padding: 2px; vertical-align: top;">:</td>
<td style="padding: 2px;">

View File

@@ -39,18 +39,19 @@
];
$customLabels = [
'upload_gs' => 'Gambar Situasi',
'foto_sentuh_tanahku' => 'Sentuh Tanahku',
'foto_gistaru' => 'Gistaru',
'foto_bhumi' => 'Bhumi',
'foto_argis_region' => 'Blad Tata Ruang ',
'foto_tempat' => 'Peta Lokasi',
];
// Memindahkan foto_tempat ke depan jika ada
if (($key = array_search('upload_gs', $fotoTypes)) !== false) {
unset($fotoTypes[$key]);
array_unshift($fotoTypes, 'upload_gs');
}
'upload_gs' => 'Gambar Situasi',
'foto_sentuh_tanahku' => 'Sentuh Tanahku',
'foto_gistaru' => 'Gistaru',
'foto_bhumi' => 'Bhumi',
'foto_argis_region' => 'Blad Tata Ruang ',
'foto_tempat' => 'Peta Lokasi',
];
// Memindahkan foto_tempat ke depan jika ada
if (($key = array_search('upload_gs', $fotoTypes)) !== false) {
unset($fotoTypes[$key]);
array_unshift($fotoTypes, 'upload_gs');
}
// Filter fotoTypes untuk memastikan hanya yang memiliki imagePath valid
$validPhotoTypes = array_filter($fotoTypes, function ($type) use ($forminspeksi) {

View File

@@ -81,6 +81,32 @@
$groupedPhotos = collect($photos)->groupBy('category');
$mainPhotos = $groupedPhotos->filter(fn($_, $key) => strtolower($key) !== 'lainnya');
// Definisikan urutan yang diinginkan
$desiredOrder = [
'PETA LOKASI',
'GAMBAR SITUASI / SURAT UKUR',
'BLAD TATA KOTA',
'FOTO JAMINAN',
'DOKUMEN PENDUKUNG'
];
// Urutkan ulang $mainPhotos sesuai urutan yang diinginkan
$orderedMainPhotos = collect();
foreach ($desiredOrder as $category) {
if ($mainPhotos->has($category)) {
$orderedMainPhotos->put($category, $mainPhotos->get($category));
}
}
// Tambahkan kategori lain yang tidak ada dalam urutan yang diinginkan
foreach ($mainPhotos as $category => $photos) {
if (!in_array($category, $desiredOrder)) {
$orderedMainPhotos->put($category, $photos);
}
}
$mainPhotos = $orderedMainPhotos;
$otherPhotos = $groupedPhotos->get('lainnya', collect());
@endphp
@@ -88,6 +114,9 @@
<p class="text-gray-500">Tidak ada foto yang tersedia.</p>
@else
@foreach ($mainPhotos as $category => $photos)
@if($category=='DOKUMEN PENDUKUNG')
@php continue; @endphp
@endif
@php
$groupedBySubcategory = $photos->groupBy('sub');
@endphp
@@ -99,12 +128,35 @@
style="align-content: center; text-align: center; margin-bottom: 20px">
@foreach ($chunkedPhotos as $item)
@php
// Logika fallback untuk path file
$originalPath = $item['path'];
$fallbackPath = null;
// Jika file asli tidak ditemukan, buat fallback path
if ($statusLpj == 1) {
$fullOriginalPath = storage_path('app/public/' . $originalPath);
if (!file_exists($fullOriginalPath)) {
// Ekstrak bagian akhir path (contoh: 251051/251051_2_2.png)
$pathParts = explode('/', $originalPath);
if (count($pathParts) >= 2) {
$lastTwoParts = array_slice($pathParts, -2);
$fallbackPath = 'surveyor/001/' . implode('/', $lastTwoParts);
}
}
}
// Tentukan path yang akan digunakan
$pathToUse = ($fallbackPath && $statusLpj == 1 && file_exists(storage_path('app/public/' . $fallbackPath)))
? $fallbackPath
: $originalPath;
$filePath =
$statusLpj == 1
? storage_path('app/public/' . $item['path'])
: asset('storage/' . $item['path']);
? storage_path('app/public/' . $pathToUse)
: asset('storage/' . $pathToUse);
$extension = strtolower(pathinfo($item['path'], PATHINFO_EXTENSION));
$extension = strtolower(pathinfo($pathToUse, PATHINFO_EXTENSION));
$isImage = in_array($extension, [
'jpg',
'jpeg',
@@ -118,10 +170,10 @@
$isPdf = $extension === 'pdf';
@endphp
@if ($statusLpj == 1)
@if ($isImage && $filePath)
@if ($isImage && $filePath)
<tr>
<td style="width: 100%; padding: 10px; align-content: center; text-align: center"
class="photo-item border">
class="border photo-item">
<p style="font-weight: medium; font-size: 10px">{{ $category }} -
@isset($subcategory)
@if (trim($subcategory) !== '')
@@ -130,7 +182,7 @@
@endisset
{{ $item['name'] ?? '' }}
</p>
<img src="{{ $filePath }}" alt="{{ $item['path'] }}" class="photo-image"
<img src="{{ $filePath }}" alt="{{ $pathToUse }}" class="photo-image"
style="align-content: center; text-align: center; max-width: 100%; height: auto;">
</td>
</tr>
@@ -138,7 +190,7 @@
@elseif ($statusLpj != 1)
<tr>
<td style="width: 100%; padding: 10px; align-content: center; text-align: center"
class="photo-item border ">
class="border photo-item">
<p style="font-weight: medium; font-size: 10px">{{ $category }} -
@isset($subcategory)
@@ -187,6 +239,7 @@
@endforeach
@if (!$otherPhotos->isEmpty())
@dd(!$otherPhotos->isEmpty())
@foreach ($otherPhotos->groupBy('sub') as $subcategory => $subPhotos)
@if (count($subPhotos) > 0)
@foreach ($subPhotos->chunk(2) as $chunkedPhotos)
@@ -216,7 +269,7 @@
@if ($isImage && $filePath)
<tr>
<td style="width: 100%; padding: 10px; align-content: center; text-align: center"
class="photo-item border">
class="border photo-item">
<p style="font-weight: medium; font-size: 10px">{{ $category }} -
@isset($subcategory)
@if (trim($subcategory) !== '')
@@ -232,7 +285,7 @@
@endif
@elseif ($statusLpj != 1)
<tr>
<td style="width: 100%; padding: 10px;" class="photo-item border">
<td style="width: 100%; padding: 10px;" class="border photo-item">
<p style="font-weight: medium; font-size: 10px">Lainnya -
@isset($subcategory)
@if (trim($subcategory) !== '')

View File

@@ -252,7 +252,7 @@
</td>
<td style="width: 50%; border: 1px solid #000;">
SARANA PELENGKAP DAN LINGKUNGAN
SARANA PELENGKAP DAN LINGKUNGAN --
</td>
</tr>
<tr>
@@ -520,7 +520,7 @@
<td style="padding: 8px; width: 100%;">
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td colspan="3" style="padding: 8px; text-align: left;">
<td colspan="6" style="padding: 8px; text-align: left;">
<strong>a. Total Nilai Pasar Wajar</strong>
</td>
</tr>
@@ -545,15 +545,20 @@
@if (isset($lpjData['npw_tambahan']))
@foreach ($lpjData['npw_tambahan'] as $npw)
<tr>
<td style="padding: 3px; text-align: right; width:30%; ">
{{ $npw['name'] }} {{ $npw['luas'] }} m<sup>2</sup>
<td width="30%" style="padding: 3px; text-align: right;">
{{ $npw['name'] }}</sup>
</td>
<td style="padding: 3px;">
<span style="padding-left:20px; padding-right: 20px">X</span> Rp
<td width="10%" style="padding: 3px; text-align: right;">
{{ $npw['luas'] }} m<sup>2</sup>
</td>
<td width="5%" style="padding: 3px; text-align: center;">X</td>
<td width="25%" style="padding: 3px; text-align:right">
{{ number_format($npw['nilai_1'], 0, ',', '.') ?? '' }}
</td>
<td style="padding: 3px; text-align: left; width:40%">
<span style="padding-left:20px; padding-right: 20px"> = </span> Rp
<td width="5" style="padding: 3px; text-align: center;">
=
</td>
<td width="25%" style="padding: 3px; text-align: left; text-align: right;">
{{ number_format($npw['nilai_2'], 0, ',', '.') ?? '' }}
</td>
</tr>
@@ -561,31 +566,27 @@
@endforeach
@endif
<tr>
<td style="padding: 3px; text-align: right; font-weight: bold; width:10%;" colspan="2">Total Nilai Pasar Wajar</td>
<td style="padding: 3px; text-align: left; font-weight: bold; width: 40%;">
<span style="padding-left: 20px; padding-right: 20px;">=</span>
<td style="padding: 3px; text-align: right; font-weight: bold; width:10%;" colspan="4">Total Nilai Pasar Wajar</td>
<td style="padding: 3px; text-align: center; width:5%;font-weight: bold;" >=</td>
<td style="padding: 3px; text-align: right; font-weight: bold; width: 40%;">
<div style="display: inline-block; border-top: 1px solid black; padding-top: 3px;">
Rp {{ number_format($totalNilaiPasarWajar, 0, ',', '.') ?? '' }}
{{ $lpjData['total_nilai_pasar_wajar'] ? number_format($lpjData['total_nilai_pasar_wajar'], 0, ',', '.') : number_format($totalNilaiPasarWajar, 0, ',', '.') ?? '' }}
</div>
</td>
</tr>
<tr>
<td colspan="3" style="padding: 8px; text-align: left; font-weight: bold;">
<td colspan="6" style="padding: 8px; text-align: left; font-weight: bold;">
b. Total Nilai Likuidasi
</td>
</tr>
<tr>
<td style="padding: 3px; text-align: right; width:20%">
{{ $lpjData['likuidasi'] ?? '70' }}%
</td>
<td style="padding: 3px; text-align: left; font-weight: bold; width:40%">
<span style="padding-left:20px; padding-right: 20px">X</span> Total Nilai Pasar
<td style="padding: 3px; text-align: right;" colspan="4">
{{ $lpjData['likuidasi'] ?? '' }}% <span style="padding-left:20px; padding-right: 20px">X</span> Total Nilai Pasar
Wajar
</td>
<td style="padding: 3px; text-align: left; width:40%;">
<span style="padding-left:20px; padding-right: 20px"> = </span> Rp
{{ number_format($permohonan_migrasi->mig_mst_lpj_tot_nilai_likuidasi, 0, ',', '.') ?? '' }}
<td style="padding: 3px; text-align: center; font-weight: bold;">=</td>
<td style="padding: 3px; text-align: right;font-weight: bold;">{{ number_format($permohonan_migrasi->mig_mst_lpj_tot_nilai_likuidasi, 0, ',', '.') ?? '' }}
</td>
</tr>
</table>
@@ -635,7 +636,7 @@
maupun ekstern</td>
</tr>
<tr>
@include('lpj::penilai.components.signature-approval',['laporan' => 'sederhana'])
@include('lpj::penilai.components.signature-approval',['laporan' => 'sederhana','npw' => $totalNilaiPasarWajar])
</tr>
</table>
</div>

View File

@@ -276,9 +276,19 @@
{{ $key }}
</td>
</tr>
@php $currentLabel=''; @endphp
@foreach ($items as $item)
<tr>
<td style="padding: 2px; vertical-align: top;">{{ $item['label'] }}</td>
<td style="padding: 2px; vertical-align: top;">
@if ($currentLabel !== $item['label'])
{{ $item['label'] }}
@endif
@php
if ($currentLabel !== $item['label']) {
$currentLabel = $item['label'];
}
@endphp
</td>
<td style="padding: 2px; vertical-align: top;">:</td>
<td style="padding: 2px; vertical-align: top;">{{ ltrim($item['value'], ',') }}</td>
</tr>
@@ -322,16 +332,16 @@
</div>
<div class="no-break">
<table style="width: 100%; ">
<table style="width: 100%;">
<tr>
<td style="width: 100%; border: 1px solid #000; text-align: center;">
TOTAL NILAI PASAR WAJAR
</td>
</tr>
</table>
<table>
<table style="width: 100%;">
<tr>
<td colspan="3" style=" padding: 8px; text-align: left;">1. Total Nilai Pasar Wajar
<td colspan="6" style=" padding: 8px; text-align: left;width:100%">1. Total Nilai Pasar Wajar
</td>
</tr>
@php
@@ -361,27 +371,31 @@
@if (isset($lpjData['npw_tambahan']))
@foreach ($lpjData['npw_tambahan'] as $npw)
<tr>
<td style="padding: 3px; text-align: right;width:45%; ">
{{ $npw['name'] }} {{ $npw['luas'] }} m<sup>2</sup>
<td width="30%" style="padding: 3px; text-align: right;">
{{ $npw['name'] }}</sup>
</td>
<td style="padding: 3px;">
<span style="padding-left:20px; padding-right: 20px">X</span> Rp
<td width="10%" style="padding: 3px; text-align: right;">
{{ $npw['luas'] }} m<sup>2</sup>
</td>
<td width="5%" style="padding: 3px; text-align: center;">X</td>
<td width="25%" style="padding: 3px; text-align:right">
{{ number_format($npw['nilai_1'], 0, ',', '.') ?? '' }}
</td>
<td style="padding: 3px; text-align: left; width:70%">
<span style="padding-left:20px; padding-right: 20px"> = </span> Rp
<td width="5" style="padding: 3px; text-align: center;">=</td>
<td width="25%" style="padding: 3px; text-align: left; text-align: right;">
{{ number_format($npw['nilai_2'], 0, ',', '.') ?? '' }}
</td>
</tr>
@php $totalNilaiPasarWajar += $npw['nilai_2']; @endphp
@endforeach
@endif
<tr>
<td style="padding: 3px; text-align: right; font-weight: bold; width:10%;" colspan="2">Total Nilai Pasar Wajar</td>
<td style="padding: 3px; text-align: left; font-weight: bold; width: 70%;">
<span style="padding-left: 20px; padding-right: 20px;">=</span>
<td style="padding: 3px; text-align: right; font-weight: bold; width:10%;" colspan="4">Total Nilai Pasar Wajar</td>
<td style="padding: 3px; text-align: center; width:5%;font-weight: bold;" >=</td>
<td style="padding: 3px; text-align: right; font-weight: bold; width: 40%;">
<div style="display: inline-block; border-top: 1px solid black; padding-top: 3px;">
Rp {{ $lpjData['total_nilai_pasar_wajar'] ? number_format($lpjData['total_nilai_pasar_wajar'], 0, ',', '.') : number_format($totalNilaiPasarWajar, 0, ',', '.') ?? '' }}
{{ $lpjData['total_nilai_pasar_wajar'] ? number_format($lpjData['total_nilai_pasar_wajar'], 0, ',', '.') : number_format($totalNilaiPasarWajar, 0, ',', '.') ?? '' }}
</div>
</td>
</tr>
@@ -389,20 +403,16 @@
<!-- Total Nilai Likuidasi -->
@if (isset($permohonan_migrasi->mig_mst_lpj_tot_nilai_likuidasi) || isset($lpjData['likuidasi']) && $lpjData['likuidasi_nilai_2'] > 0)
<tr>
<td colspan="3" style="padding: 8px; text-align: left">
<td colspan="6" style="padding: 8px; text-align: left">
2. Total Nilai Likuidasi
</td>
</tr>
<tr>
<td style="padding: 3px; text-align: right; width:10%">
{{ $lpjData['likuidasi'] ?? '70' }}%
<td style="padding: 3px; text-align: right;" colspan="4">
{{ $lpjData['likuidasi'] ?? '' }}% <span style="padding-left:20px; padding-right: 20px">X</span> Total Nilai Pasar Wajar
</td>
<td style="padding: 3px; text-align: left; font-weight: bold; width:20%">
<span style="padding-left:20px; padding-right: 20px">X</span> Total Nilai Pasar Wajar
</td>
<td style="padding: 3px; text-align: left; width:70%;">
<span style="padding-left:20px; padding-right: 20px"> = </span> Rp
{{ number_format($permohonan_migrasi->mig_mst_lpj_tot_nilai_likuidasi, 0, ',', '.') ?? '' }}
<td style="padding: 3px; text-align: center; font-weight: bold;">=</td>
<td style="padding: 3px; text-align: right;font-weight: bold;">{{ number_format($permohonan_migrasi->mig_mst_lpj_tot_nilai_likuidasi, 0, ',', '.') ?? '' }}
</td>
</tr>
@endif
@@ -562,7 +572,7 @@
</tr>
</table>
@include('lpj::penilai.components.signature-approval')
@include('lpj::penilai.components.signature-approval',['laporan' => 'standar','npw' => $totalNilaiPasarWajar])
</div>
<hr />
<table style="width: 100%; ">

View File

@@ -1,7 +1,7 @@
<table style="width: 100%; border-collapse: collapse; text-align: center;" border="1">
@php
use Modules\Usermanagement\Models\User;
$laporan = $laporan ?? '';
$penilaiUser = isset($penilai->userPenilaiTeam) ? $penilai->userPenilaiTeam : null;
$imagePathPenilai = $penilaiUser && $penilaiUser->sign
@@ -112,18 +112,19 @@
</span>
</br>
<span>
{{ isset($permohonan_migrasi->mig_mst_jaminan_tgl_laporan) ? formatTanggalIndonesia(parseTimestamp($permohonan_migrasi->mig_mst_jaminan_tgl_laporan)) : '' }}
{{ $permohonan_migrasi->mig_mst_jaminan_tgl_laporan ? formatTanggalIndonesia(parseTimestamp($permohonan_migrasi->mig_mst_jaminan_tgl_laporan)) : ($permohonan_migrasi->mig_mst_lpj_tgl_laporan ? formatTanggalIndonesia(parseTimestamp($permohonan_migrasi->mig_mst_lpj_tgl_laporan)) : '') }}
</span>
</td>
@if($soUser->name==$eoUser->name)
@if ($permohonan->approval_so != null)
<td style=" padding: 4px;">
{{ $soUser->name ?? $senior_officer->name ?? '' }}</br>
<span>
@if($laporan=='sederhana')
<b>{{ ucwords(strtolower('SENIOR OFFICER')) }}</b>
@if($npw > 1000000000 && $npw < 5000000000)
<b>{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}</b>
@else
<b>{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}</b>
<b>{{ ucwords(strtolower('SENIOR OFFICER')) }}</b>
@endif
</span>
</br>