@extends('layouts.app') @section('title', 'Solicitação ' . $solicitacao->numero_solicitacao) @section('page_title', 'Solicitação ' . $solicitacao->numero_solicitacao) @section('content') @php $sc = $solicitacao->statusColor(); $colorMap = ['gray'=>'bg-gray-100 text-gray-700','blue'=>'bg-blue-100 text-blue-700','yellow'=>'bg-yellow-100 text-yellow-700','green'=>'bg-green-100 text-green-800','indigo'=>'bg-indigo-100 text-indigo-800','teal'=>'bg-teal-100 text-teal-800','red'=>'bg-red-100 text-red-700']; $badgeClass = $colorMap[$sc] ?? 'bg-gray-100 text-gray-700'; @endphp
{{-- Cabeçalho --}}

{{ $solicitacao->numero_solicitacao }}

{{ $solicitacao->statusLabel() }}
@if($solicitacao->pedido_cliente)

Pedido / OS do Cliente: {{ $solicitacao->pedido_cliente }}

@endif @if($solicitacao->assunto)

{{ $solicitacao->assunto }}

@endif

Criada em {{ $solicitacao->created_at->format('d/m/Y \à\s H:i') }} @if($solicitacao->operador) · Operador: {{ $solicitacao->operador->name }} @endif

@if($solicitacao->status === 'rascunho') Editar
@csrf @method('PATCH')
@endif @if(in_array($solicitacao->status, ['enviada','em_analise']))
@csrf @method('PATCH')
@endif ← Voltar
@if($solicitacao->justificativa_rejeicao)
Motivo da rejeição: {{ $solicitacao->justificativa_rejeicao }}
@endif @if($solicitacao->observacoes)
Observações: {{ $solicitacao->observacoes }}
@endif
{{-- Acompanhamento visual --}} @php $fluxo = ['rascunho','enviada','em_analise','aprovada','em_execucao','concluida']; $indiceAtual = array_search($solicitacao->status, $fluxo, true); $cancelada = $solicitacao->status === 'cancelada'; $etapas = [ ['status'=>'enviada', 'label'=>'Enviada', 'desc'=>'Recebida pela operação'], ['status'=>'em_analise', 'label'=>'Em análise', 'desc'=>'Em avaliação pelo operador'], ['status'=>'aprovada', 'label'=>'Aprovada', 'desc'=>'Liberada para programação'], ['status'=>'em_execucao', 'label'=>'Em execução', 'desc'=>'Recursos/OS em operação'], ['status'=>'concluida', 'label'=>'Concluída', 'desc'=>'Atendimento finalizado'], ]; @endphp

Acompanhamento

Situação atual da sua solicitação e dos itens de transporte.

@if($cancelada) {{ $solicitacao->justificativa_rejeicao ? 'Solicitação rejeitada' : 'Solicitação cancelada' }} @endif
@if(!$cancelada && $solicitacao->status !== 'rascunho')
@foreach($etapas as $etapa) @php $idxEtapa = array_search($etapa['status'], $fluxo, true); $atingida = $indiceAtual !== false && $indiceAtual >= $idxEtapa; $atual = $solicitacao->status === $etapa['status']; @endphp
{{ $atingida ? '✓' : $loop->iteration }} {{ $etapa['label'] }}

{{ $etapa['desc'] }}

@endforeach
@elseif($solicitacao->status === 'rascunho')
Esta solicitação ainda é um rascunho. Você pode editá-la antes de enviar ao operador.
@endif
{{-- Tabela unificada de itens (+ OS quando em_execucao) --}} @php $emExecucao = in_array($solicitacao->status, ['em_execucao','concluida'], true) && $ordemPorItem->isNotEmpty(); $osColors = ['programado'=>'bg-blue-100 text-blue-700','em_execucao'=>'bg-orange-100 text-orange-700','concluido'=>'bg-teal-100 text-teal-800','cancelado'=>'bg-red-100 text-red-700','negado'=>'bg-red-100 text-red-700']; @endphp
@if($emExecucao)

Itens de Transporte — Acompanhamento

{{ $ordemPorItem->count() }} OS @else

Itens de Transporte

@endif
@if($emExecucao) @endif @forelse($solicitacao->itens as $item) @php $os = $emExecucao ? ($ordemPorItem->get($item->id)) : null; // Use OS status when available, fall back to item status if ($os) { $badge = $osColors[$os->status] ?? 'bg-gray-100 text-gray-700'; $statusLabel = $os->statusLabel(); } else { $isc = $item->statusColor(); $badge = $colorMap[$isc] ?? 'bg-gray-100 text-gray-700'; $statusLabel = $item->statusLabel(); } // Prefer OS data for vehicle/driver when OS exists $placa = $os ? ($os->cavalo_placa ?? $os->veiculo?->placa ?? '—') : ($item->veiculo?->placa ?? '—'); $motorista = $os ? ($os->motorista_nome ?? $os->motorista?->nome ?? '—') : ($item->motorista?->nome ?? '—'); @endphp @if($emExecucao) @endif @empty @endforelse
N° OSOrigem Destino Sonda Data Horário Qtd Peso Veículo Motorista Status
{{ $os?->numero_os ?? '—' }} {{ $item->origemLabel() }} {{ $item->destinoLabel() }} {{ $item->sondaLabel() }} {{ $item->data_coleta?->format('d/m/Y') }} {{ $item->hora_coleta ?? '—' }} {{ $item->quantidade }} {{ $item->carga_peso_ton !== null ? number_format((float)$item->carga_peso_ton, 3, ',', '.') . ' t' : '—' }} {{ $placa }} {{ $motorista }} {{ $statusLabel }}
Nenhum item cadastrado.
@endsection