From 5ddea44bef4551e6c454828031ed7241bff1efc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Sat, 31 Jan 2026 09:50:51 +0900 Subject: [PATCH] =?UTF-8?q?feat:=EB=AC=B8=EC=84=9C=EA=B4=80=EB=A6=AC=20Pha?= =?UTF-8?q?se=204.2=20-=20show.blade.php=20=EC=84=B9=EC=85=98=20=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=20=EC=9D=BD=EA=B8=B0=EC=A0=84=EC=9A=A9=20?= =?UTF-8?q?=EB=A0=8C=EB=8D=94=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 5가지 컬럼 타입 렌더링 (complex/select/check/measurement/text) - select 판정값 배지 표시 (적합=초록, 부적합=빨강) - check 체크마크 SVG, measurement mono 폰트 - 정적 컬럼 매핑 (NO/검사항목/기준/방식/주기/규격/분류) - 종합판정 + 비고 Footer (마지막 섹션 하단) - 검사 기준 이미지 표시 - 버그 수정: field_key→Str::slug, field_type, section.name→title Co-Authored-By: Claude Opus 4.5 --- resources/views/documents/show.blade.php | 166 ++++++++++++++++++++++- 1 file changed, 161 insertions(+), 5 deletions(-) diff --git a/resources/views/documents/show.blade.php b/resources/views/documents/show.blade.php index f5335e13..91b67732 100644 --- a/resources/views/documents/show.blade.php +++ b/resources/views/documents/show.blade.php @@ -108,12 +108,13 @@ class="bg-gray-200 hover:bg-gray-300 text-gray-700 px-4 py-2 rounded-lg transiti
@foreach($document->template->basicFields as $field) @php - $fieldData = $document->data->where('field_key', $field->field_key)->first(); + $fieldKey = \Illuminate\Support\Str::slug($field->label, '_'); + $fieldData = $document->data->where('field_key', $fieldKey)->first(); $value = $fieldData?->field_value ?? '-'; @endphp -
+
{{ $field->label }}
-
{{ $value }}
+
{{ $value }}
@endforeach
@@ -124,8 +125,163 @@ class="bg-gray-200 hover:bg-gray-300 text-gray-700 px-4 py-2 rounded-lg transiti @if($document->template?->sections && $document->template->sections->count() > 0) @foreach($document->template->sections as $section)
-

{{ $section->name }}

-

테이블 형태의 데이터 표시는 추후 구현 예정입니다.

+

{{ $section->title }}

+ @if($section->image_path) + {{ $section->title }} + @endif + + {{-- 검사 데이터 테이블 (읽기 전용) --}} + @if($section->items->count() > 0 && $document->template->columns->count() > 0) +
+ + {{-- 테이블 헤더 --}} + + + @foreach($document->template->columns as $col) + @if($col->column_type === 'complex' && $col->sub_labels) + + @else + + @endif + @endforeach + + {{-- 서브 라벨 행 --}} + @if($document->template->columns->contains(fn($c) => $c->column_type === 'complex' && $c->sub_labels)) + + @foreach($document->template->columns as $col) + @if($col->column_type === 'complex' && $col->sub_labels) + @foreach($col->sub_labels as $subLabel) + + @endforeach + @endif + @endforeach + + @endif + + {{-- 테이블 바디 (읽기 전용) --}} + + @foreach($section->items as $rowIndex => $item) + + @foreach($document->template->columns as $col) + @if($col->column_type === 'complex' && $col->sub_labels) + {{-- complex: 서브 라벨별 데이터 --}} + @foreach($col->sub_labels as $subIndex => $subLabel) + @php + $fieldKey = "s{$section->id}_r{$rowIndex}_c{$col->id}_sub{$subIndex}"; + $savedVal = $document->data->where('field_key', $fieldKey)->first()?->field_value ?? ''; + @endphp + + @endforeach + @elseif($col->column_type === 'select') + {{-- select: 판정 결과 --}} + @php + $fieldKey = "s{$section->id}_r{$rowIndex}_c{$col->id}"; + $savedVal = $document->data->where('field_key', $fieldKey)->first()?->field_value ?? ''; + @endphp + + @elseif($col->column_type === 'check') + {{-- check: 체크 결과 --}} + @php + $fieldKey = "s{$section->id}_r{$rowIndex}_c{$col->id}"; + $savedVal = $document->data->where('field_key', $fieldKey)->first()?->field_value ?? ''; + @endphp + + @elseif($col->column_type === 'measurement') + {{-- measurement: 수치 데이터 --}} + @php + $fieldKey = "s{$section->id}_r{$rowIndex}_c{$col->id}"; + $savedVal = $document->data->where('field_key', $fieldKey)->first()?->field_value ?? ''; + @endphp + + @else + {{-- text: 정적 데이터 또는 입력된 텍스트 --}} + @php + $staticValue = match(true) { + str_contains(strtolower($col->label), 'no') && strlen($col->label) <= 4 => $rowIndex + 1, + in_array($col->label, ['검사항목', '항목']) => $item->item, + in_array($col->label, ['검사기준', '기준']) => $item->standard, + in_array($col->label, ['검사방식', '방식', '검사방법']) => $item->method, + in_array($col->label, ['검사주기', '주기']) => $item->frequency, + in_array($col->label, ['규격', '적용규격', '관련규정']) => $item->regulation, + in_array($col->label, ['분류', '카테고리']) => $item->category, + default => null, + }; + @endphp + @if($staticValue !== null) + + @else + @php + $fieldKey = "s{$section->id}_r{$rowIndex}_c{$col->id}"; + $savedVal = $document->data->where('field_key', $fieldKey)->first()?->field_value ?? ''; + @endphp + + @endif + @endif + @endforeach + + @endforeach + +
+ {{ $col->label }} + + {{ $col->label }} +
+ {{ $subLabel }} +
{{ $savedVal ?: '-' }} + @if($savedVal) + + {{ $savedVal }} + + @else + - + @endif + + @if($savedVal === 'OK') + + + + @else + - + @endif + {{ $savedVal ?: '-' }} + {{ $staticValue }} + {{ $savedVal ?: '-' }}
+
+ @endif + + {{-- 종합판정 / 비고 (마지막 섹션에만) --}} + @if($loop->last && $document->template->footer_judgement_label) +
+
+
{{ $document->template->footer_remark_label ?? '비고' }}
+ @php + $remarkVal = $document->data->where('field_key', 'footer_remark')->first()?->field_value ?? ''; + @endphp +
{{ $remarkVal ?: '-' }}
+
+
+
{{ $document->template->footer_judgement_label ?? '종합판정' }}
+ @php + $judgementVal = $document->data->where('field_key', 'footer_judgement')->first()?->field_value ?? ''; + @endphp +
+ @if($judgementVal) + + {{ $judgementVal }} + + @else + - + @endif +
+
+
+ @endif
@endforeach @endif