@extends('layouts.app') @section('title', '문서 상세') @section('content')

문서 상세

@if($document->canEdit()) 수정 @endif @if($document->isPending()) @endif 성적서 목록
{{-- 문서 정보 --}}
{{-- 메인 컨텐츠 --}}
{{-- 기본 정보 --}}

기본 정보

문서번호
{{ $document->document_no }}
템플릿
{{ $document->template->name ?? '-' }}
제목
{{ $document->title }}
상태
{{ $document->status_label }}
작성자
{{ $document->creator->name ?? '-' }}
작성일
{{ $document->created_at?->format('Y-m-d H:i') ?? '-' }}
@if($document->updated_at && $document->updated_at->ne($document->created_at))
수정자
{{ $document->updater->name ?? '-' }}
수정일
{{ $document->updated_at?->format('Y-m-d H:i') ?? '-' }}
@endif
{{-- 기본 필드 데이터 --}} @if($document->template?->basicFields && $document->template->basicFields->count() > 0)

{{ $document->template->title ?? '문서 정보' }}

@foreach($document->template->basicFields as $field) @php $fieldKey = 'bf_' . $field->id; $fieldData = $document->data->where('field_key', $fieldKey)->first(); $value = $fieldData?->field_value ?? '-'; @endphp
{{ $field->label }}
{{ $value }}
@endforeach
@endif {{-- 섹션 데이터 (테이블) --}} @if($document->template?->sections && $document->template->sections->count() > 0) @foreach($document->template->sections as $section)

{{ $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->getFieldValue('item'), in_array($col->label, ['검사기준', '기준']) => $item->getFieldValue('standard'), in_array($col->label, ['검사방식', '방식', '검사방법']) => $item->getFieldValue('method'), in_array($col->label, ['검사주기', '주기']) => $item->getFieldValue('frequency'), in_array($col->label, ['규격', '적용규격', '관련규정']) => $item->getFieldValue('regulation'), in_array($col->label, ['분류', '카테고리']) => $item->getFieldValue('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 {{-- 첨부파일 --}} @if($document->attachments && $document->attachments->count() > 0)

첨부파일

    @foreach($document->attachments as $attachment)
  • {{ $attachment->file->original_name ?? '파일명 없음' }}

    {{ $attachment->type_label }} · {{ $attachment->file ? number_format($attachment->file->size / 1024, 1) . ' KB' : '-' }}

    @if($attachment->file) 다운로드 @endif
  • @endforeach
@endif
{{-- 사이드바 --}}
{{-- 결재 현황 --}}

결재 현황

@if($document->approvals && $document->approvals->count() > 0)
    @foreach($document->approvals as $approval)
  1. @if($approval->status === 'APPROVED') @elseif($approval->status === 'REJECTED') @else {{ $approval->step }} @endif

    {{ $approval->role }} ({{ $approval->status_label }})

    {{ $approval->user->name ?? '미지정' }}

    @if($approval->acted_at)

    {{ $approval->acted_at->format('Y-m-d H:i') }}

    @endif @if($approval->comment)

    {{ $approval->comment }}

    @endif
  2. @endforeach
@else

결재선이 설정되지 않았습니다.

@endif
{{-- 문서 이력 --}}

문서 이력

문서 이력 기능은 추후 구현 예정입니다.

{{-- 반려 사유 모달 --}} @if($document->isPending()) @endif @endsection @push('scripts') @endpush