File manager - Edit - /var/www/html/portalHomolog/resources/views/admin/contaAngra/chamadosTi/show.blade.php
Back
@extends('layouts.admin.theme') @section('title', env('APP_NAME') . ' :: ' . __('Demandas de TI') . ' ' . ($demanda->numero ?? '')) @section('content') @php $statusColors = [ 'pendente' => 'warning', 'em_andamento' => 'primary', 'atendido' => 'success', 'cancelado' => 'secondary', ]; $statusLabels = [ 'pendente' => 'Pendente', 'em_andamento' => 'Em Andamento', 'atendido' => 'Atendido', 'cancelado' => 'Cancelado', ]; $destUnidade = $demanda->destinatarios->firstWhere('tipo', 'unidade'); $destUsuario = $demanda->destinatarios->firstWhere('tipo', 'usuario'); $atendente = $destUnidade?->responsavel ?? $destUsuario?->responsavel; $pareceres = $demanda->logs->where('tipo', 'parecer')->values(); $historico = $demanda->logs->where('tipo', '!=', 'parecer')->values(); $anexos = $demanda->anexos; @endphp <div class="card shadow-sm border-0"> <div class="card-header bg-primary text-white d-flex flex-wrap justify-content-between align-items-center gap-2 py-2"> <h3 class="my-1 ms-2 fw-bolder"> <i class="fa-solid fa-ticket"></i> {{ __('Demandas de TI') }} {{ $demanda->numero ?? '' }} </h3> <div class="d-flex flex-wrap gap-1"> <button class="btn btn-light btn-sm" type="button" data-bs-toggle="modal" data-bs-target="#modalAuditoria"> <i class="fa-solid fa-shield-halved"></i> {{ __('Auditoria') }} <span class="badge bg-secondary ms-1">{{ $demanda->logs->count() }}</span> </button> <button class="btn btn-light btn-sm" type="button" onclick="window.location.href='{{ route('admin.contaAngra.chamados.index') }}'"> <i class="fa-solid fa-arrow-left"></i> {{ __('Meus Chamados') }} </button> </div> </div> <div class="card-body"> @include('errors.messageFlash') <div class="d-flex align-items-start gap-3 flex-wrap mb-4 mt-2"> <span class="badge fs-6 bg-{{ $statusColors[$demanda->status] ?? 'secondary' }}"> {{ __($statusLabels[$demanda->status] ?? $demanda->status) }} </span> <h5 class="mb-0 fw-semibold flex-grow-1">{{ $demanda->titulo }}</h5> </div> <div class="row g-3 mb-4"> <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Setor') }}</p> <span class="fw-semibold">{{ $demanda->tiDetalhe?->setor_nome ?? '—' }}</span> </div> <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Assunto') }}</p> <span class="fw-semibold">{{ $demanda->tiDetalhe?->assunto_nome ?? '—' }}</span> </div> <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Subassunto') }}</p> <span>{{ $demanda->tiDetalhe?->subassunto_nome ?? '—' }}</span> </div> <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Local') }}</p> <span class="fw-semibold">{{ $demanda->tiDetalhe?->local ?? '—' }}</span> </div> <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Aberto em') }}</p> <span>{{ $demanda->data_abertura?->format('d/m/Y H:i') ?? '—' }}</span> </div> @if ($destUnidade) <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Unidade') }}</p> <span class="fw-semibold"> {{ $destUnidade->unidade?->abbreviation ?? '—' }} @if ($destUnidade->unidade?->name) <small class="text-muted fw-normal">— {{ $destUnidade->unidade->name }}</small> @endif </span> <br> <span class="badge bg-{{ $destUnidade->statusColor }} mt-1">{{ $destUnidade->statusLabel }}</span> </div> @endif <div class="col-6 col-md-3"> <p class="text-muted small mb-1">{{ __('Atendente') }}</p> @if ($atendente) <span class="fw-semibold">{{ $atendente->name }}</span> @else <span class="text-muted fst-italic">{{ __('Aguardando atendente') }}</span> @endif </div> </div> @if ($demanda->descricao) <div class="mb-4"> <p class="text-muted small mb-1">{{ __('Descrição') }}</p> <p class="mb-0 p-3 bg-light rounded border" style="white-space: pre-wrap;">{{ $demanda->descricao }} </p> </div> @endif @if ($anexos->isNotEmpty()) <div class="mb-4"> <div class="fw-semibold text-uppercase small text-secondary border-bottom pb-2 mb-3"> <i class="fa-solid fa-paperclip me-1"></i>{{ __('Anexos') }} </div> <div class="row g-2"> @foreach ($anexos as $anexo) @php $isImage = str_starts_with($anexo->mime_type ?? '', 'image/'); $isPdf = ($anexo->mime_type ?? '') === 'application/pdf'; @endphp <div class="col-12 col-sm-6 col-md-4"> <div class="border rounded p-2 d-flex align-items-center gap-2 h-100"> <div class="text-muted fs-4 flex-shrink-0"> <i class="fa-solid {{ $anexo->getIcone() }} {{ $isImage ? 'text-success' : ($isPdf ? 'text-danger' : '') }}"></i> </div> <div class="flex-grow-1 overflow-hidden"> <p class="mb-0 small fw-semibold text-truncate" title="{{ $anexo->nome_original }}"> {{ $anexo->nome_original }} </p> <small class="text-muted">{{ $anexo->getTamanhoLegivel() }}</small> </div> <a href="{{ route('admin.contaAngra.chamadosTi.anexo', [$demanda->id, $anexo->id]) }}" target="_blank" rel="noopener" class="btn btn-sm btn-outline-secondary flex-shrink-0" title="{{ __('Abrir') }}"> <i class="fa-solid fa-arrow-up-right-from-square"></i> </a> </div> </div> @endforeach </div> </div> @endif <div class="card border rounded-3 mb-4"> <div class="card-body"> <h6 class="fw-semibold mb-3"> <i class="fa-solid fa-reply text-secondary"></i> {{ __('Respostas') }} @if ($pareceres->isNotEmpty()) <span class="badge bg-light text-muted border ms-1">{{ $pareceres->count() }}</span> @endif </h6> <div class="dm-respostas-scroll"> @forelse ($pareceres as $p) <div class="card border-start border-4 border-secondary mb-2"> <div class="card-body py-2 px-3"> <div class="d-flex justify-content-between align-items-center mb-1"> <span class="small fw-semibold">{{ $p->autor?->name ?? __('Sistema') }}</span> <small class="text-muted">{{ $p->created_at->format('d/m/Y H:i') }}</small> </div> <p class="mb-0 small text-muted lh-base">{!! nl2br(e($p->conteudo)) !!}</p> @if ($p->anexos->isNotEmpty()) <div class="mt-2 d-flex flex-wrap gap-1"> @foreach ($p->anexos as $pa) <a href="{{ asset('storage/' . $pa->caminho) }}" target="_blank" rel="noopener noreferrer" class="btn btn-sm btn-outline-secondary py-0 px-2" title="{{ $pa->nome_original }}"> <i class="fa-solid {{ $pa->getIcone() }} me-1"></i> <span class="small">{{ Str::limit($pa->nome_original, 24) }}</span> </a> @endforeach </div> @endif </div> </div> @empty <p class="text-muted small">{{ __('Nenhuma resposta ainda.') }}</p> @endforelse </div> @if (!in_array($demanda->status, ['atendido', 'cancelado'])) <form action="{{ route('admin.contaAngra.chamadosTi.interagir', $demanda->id) }}" method="POST" enctype="multipart/form-data" class="mt-3"> @csrf <input type="hidden" name="tipo" value="parecer"> <textarea name="conteudo" rows="3" class="form-control mb-2 @error('conteudo') is-invalid @enderror" placeholder="{{ __('Escreva uma resposta…') }}" required minlength="5">{{ old('conteudo') }}</textarea> @error('conteudo') <div class="invalid-feedback">{{ $message }}</div> @enderror <div class="mb-2"> <input type="file" name="anexos[]" multiple class="form-control form-control-sm @error('anexos') is-invalid @enderror @error('anexos.*') is-invalid @enderror" accept=".jpg,.jpeg,.png,.gif,.webp,.pdf,.doc,.docx,.xls,.xlsx"> @error('anexos') <div class="invalid-feedback d-block">{{ $message }}</div> @enderror @error('anexos.*') <div class="invalid-feedback d-block">{{ $message }}</div> @enderror </div> <div class="d-flex justify-content-end"> <button type="submit" class="btn btn-sm btn-primary flex-shrink-0"> <i class="fa-solid fa-reply"></i> {{ __('Responder') }} </button> </div> </form> @endif </div> </div> </div> </div> <div class="modal fade" id="modalAuditoria" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-lg modal-dialog-scrollable"> <div class="modal-content"> <div class="modal-header bg-dark text-white py-2"> <h6 class="modal-title fw-semibold"> <i class="fa-solid fa-shield-halved"></i> {{ __('Auditoria') }} — {{ $demanda->numero }} </h6> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button> </div> <div class="modal-body p-0"> @forelse ($demanda->logs as $log) <div class="d-flex gap-3 px-4 py-3 border-bottom"> <div class="flex-shrink-0 text-{{ $log->tipo_info['color'] }} demanda-log-icon"> <i class="fa-solid {{ $log->tipo_info['icon'] }}"></i> </div> <div class="flex-grow-1"> <div class="d-flex justify-content-between align-items-start gap-3"> <div> <span class="fw-semibold small">{{ $log->autor?->name ?? __('Sistema') }}</span> <span class="badge bg-light text-muted border ms-1 small">{{ __($log->tipo_info['label']) }}</span> </div> <small class="text-muted text-nowrap">{{ $log->created_at->format('d/m/Y H:i') }}</small> </div> @if ($log->conteudo) <p class="mb-0 small text-muted mt-1">{!! nl2br(e($log->conteudo)) !!}</p> @endif </div> </div> @empty <div class="text-center text-muted py-5 small"> <i class="fa-solid fa-shield-halved fa-2x mb-2 d-block opacity-25"></i> {{ __('Nenhum registro de auditoria.') }} </div> @endforelse </div> <div class="modal-footer py-2"> <small class="text-muted me-auto">{{ $demanda->logs->count() }} {{ __('registro(s)') }}</small> <button type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">{{ __('Fechar') }}</button> </div> </div> </div> </div> @endsection
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings