{{-- 결재 진행 단계 시각화 --}} @props(['steps' => [], 'currentStep' => 0])
@foreach($steps as $index => $step) @php $isApprover = in_array($step['step_type'] ?? 'approval', ['approval', 'agreement']); $isPreDecided = ($step['approval_type'] ?? 'normal') === 'pre_decided'; $statusConfig = match($step['status'] ?? 'pending') { 'approved' => $isPreDecided ? ['icon' => '⚡', 'bg' => 'bg-indigo-500', 'border' => 'border-indigo-500', 'text' => 'text-indigo-700'] : ['icon' => '✓', 'bg' => 'bg-green-500', 'border' => 'border-green-500', 'text' => 'text-green-700'], 'rejected' => ['icon' => '✗', 'bg' => 'bg-red-500', 'border' => 'border-red-500', 'text' => 'text-red-700'], 'on_hold' => ['icon' => '⏸', 'bg' => 'bg-amber-500', 'border' => 'border-amber-500', 'text' => 'text-amber-700'], 'skipped' => ['icon' => '—', 'bg' => 'bg-gray-400', 'border' => 'border-gray-400', 'text' => 'text-gray-500'], default => ['icon' => ($step['step_order'] ?? $index + 1), 'bg' => 'bg-white', 'border' => 'border-gray-300', 'text' => 'text-gray-500'], }; $isCurrent = $isApprover && ($step['status'] ?? 'pending') === 'pending' && ($step['step_order'] ?? 0) == $currentStep; if ($isCurrent) { $statusConfig['bg'] = 'bg-blue-500'; $statusConfig['border'] = 'border-blue-500'; $statusConfig['text'] = 'text-blue-700'; $statusConfig['icon'] = ($step['step_order'] ?? $index + 1); } $typeLabel = match($step['step_type'] ?? 'approval') { 'approval' => '결재', 'agreement' => '합의', 'reference' => '참조', default => '', }; $isFilledStatus = in_array($step['status'] ?? 'pending', ['approved', 'rejected', 'skipped', 'on_hold']) || $isCurrent; @endphp @if($index > 0)
@endif
{{-- 원형 아이콘 --}}
{!! $statusConfig['icon'] !!}
{{-- 결재자명 --}} {{ $step['approver_name'] ?? ($step['approver']['name'] ?? '미지정') }} {{-- 유형 + 직급 --}} {{ $typeLabel }}{{ !empty($step['approver_position']) ? ' · ' . $step['approver_position'] : '' }} @if($isPreDecided && ($step['status'] ?? '') === 'approved') 전결 @endif @if(($step['status'] ?? '') === 'on_hold') 보류 @endif {{-- 처리일시 --}} @if(!empty($step['acted_at'])) {{ \Carbon\Carbon::parse($step['acted_at'])->format('m/d H:i') }} @endif
@endforeach