File manager - Edit - /var/www/html/portalHomolog/resources/views/admin/ppps/index.blade.php
Back
@extends('layouts.admin.theme') @section('title', env('APP_NAME') . ' :: ' . __('PPPs e Convênios')) @push('after-styles') <style> /* Card principal */ .card-prefeitura { border: none; border-radius: 12px; } /* Abas modernas */ .nav-tabs .nav-link { border: none; color: #495057; font-weight: 500; padding: 10px 20px; border-radius: 8px 8px 0 0; transition: all 0.2s ease; } .nav-tabs .nav-link.active { background-color: #0d6efd; color: #fff !important; font-weight: 600; } .nav-tabs .nav-link:hover { background-color: #e9ecef; } /* Campo de pesquisa */ .search-box { max-width: 420px; } .search-box input { border-radius: 8px 0 0 8px; } .search-box button { border-radius: 0 8px 8px 0; } /* Cabeçalho interno */ .section-header { border-left: 4px solid #0d6efd; padding-left: 12px; } /* Tabela institucional */ .table thead { background-color: #f8f9fa; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.5px; } .table-hover tbody tr:hover { background-color: #f1f5ff; } /* Botões */ .btn-group .btn { border-radius: 6px !important; } </style> @endpush @section('content') @include('errors.messageFlash') <div class="card card-prefeitura shadow-sm"> @php $headLine = "<i class='fa-solid fa-handshake'></i> " . __('PPPs e Convênios'); @endphp @include('components.buttons._headLineButtonsBackAdd', [ 'headLine' => $headLine, 'routeBack' => 'admin.dashboard', 'nameBack' => __('Voltar'), 'routeAdd' => 'admin.ppps.create', 'nameAdd' => __('Nova PPP'), 'routeOther' => 'admin.convenios.create', 'nameOther' => __('Novo Convênio'), 'permission' => 'GERENCIADOR_DE_PPPS', ]) <div class="card-body pt-4"> <!-- ABAS --> <ul class="nav nav-tabs mb-4" id="pppTab" role="tablist"> <li class="nav-item"> <button class="nav-link {{ $activeTab === 'ppps' ? 'active' : '' }}" data-bs-toggle="tab" data-bs-target="#ppps-pane" type="button"> <i class="fa-solid fa-handshake me-1"></i> {{ __('PPPs') }} </button> </li> <li class="nav-item"> <button class="nav-link {{ $activeTab === 'convenios' ? 'active' : '' }}" data-bs-toggle="tab" data-bs-target="#convenios-pane" type="button"> <i class="fa-solid fa-file-contract me-1"></i> {{ __('Convênios') }} </button> </li> </ul> <div class="tab-content"> <!-- ================= PPPs ================= --> <div class="tab-pane fade {{ $activeTab === 'ppps' ? 'show active' : '' }}" id="ppps-pane"> <div class="d-flex justify-content-between align-items-center mb-3"> <div class="section-header"> <h5 class="mb-0 fw-semibold text-primary"> <i class="fa-solid fa-handshake me-2"></i> PPPs Cadastradas </h5> </div> <div class="d-flex align-items-center gap-2"> <a href="{{ route('admin.ppps.exportAll') }}" target="_blank" class="btn btn-outline-danger" title="Exportar Relatório Geral de PPPs (PDF)"> <i class="fa-solid fa-file-pdf"></i> Relatório Geral </a> <form class="d-flex search-box" method="get"> <input type="hidden" name="tab" value="ppps"> <input type="hidden" name="page_ppps" value="1"> <input type="hidden" name="q_convenios" value="{{ request('q_convenios') }}"> <input type="hidden" name="page_convenios" value="{{ request('page_convenios', 1) }}"> <input type="text" class="form-control" name="q_ppps" placeholder="{{ __('Pesquisar por projeto ou empresa...') }}" value="{{ request('q_ppps') }}"> <button class="btn btn-primary" type="submit"> <i class="fa-solid fa-magnifying-glass"></i> </button> </form> </div> </div> <div class="table-responsive"> <table class="table table-hover table-bordered align-middle text-center"> @include('components.tables._thead', [ 'thead' => [__('Projeto'), __('Empresa'), __('Status'), __('Ações')] ]) <tbody> @php $index = 0; @endphp @forelse($ppps as $ppp) <tr> <td class="text-start">{{ Str::limit($ppp->projeto, 80) }}</td> <td class="text-start">{{ Str::limit($ppp->empresa, 50) }}</td> <td> @include('components.buttons._status', [ 'index' => $index, 'route' => 'admin.ppps.status', 'id' => $ppp->id, 'status' => $ppp->status, 'permission' => 'GERENCIADOR_DE_PPPS', ]) </td> <td class="text-nowrap"> <div class="btn-group"> <a href="{{ route('admin.ppps.edit', $ppp->id) }}" class="btn btn-sm btn-warning" title="{{ __('Editar') }}"> <i class="fa-solid fa-pen-to-square"></i> </a> @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_PPPS')['excluir']) <form class="d-inline" action="{{ route('admin.ppps.destroy', $ppp->id) }}" method="post"> @csrf @method('delete') <button type="button" onclick="confirmDeletePpps(this)" class="btn btn-sm btn-danger" title="{{ __('Excluir') }}"> <i class="fa-solid fa-trash"></i> </button> </form> @endif </div> </td> </tr> @php $index++; @endphp @empty <tr> <td colspan="4" class="text-muted fst-italic"> {{ __('Nenhuma PPP encontrada.') }} </td> </tr> @endforelse </tbody> </table> </div> <div class="d-flex justify-content-center mt-4"> {!! $ppps->appends([ 'tab' => 'ppps', 'q_ppps' => request('q_ppps'), 'q_convenios' => request('q_convenios'), 'page_convenios' => request('page_convenios', 1) ])->links() !!} </div> </div> <!-- ================= CONVÊNIOS ================= --> <div class="tab-pane fade {{ $activeTab === 'convenios' ? 'show active' : '' }}" id="convenios-pane"> <div class="d-flex justify-content-between align-items-center mb-3"> <div class="section-header"> <h5 class="mb-0 fw-semibold text-primary"> <i class="fa-solid fa-file-contract me-2"></i> Convênios Cadastrados </h5> </div> <div class="d-flex align-items-center gap-2"> <a href="{{ route('admin.convenios.exportAll') }}" target="_blank" class="btn btn-outline-danger" title="Exportar Relatório Geral de Convênios (PDF)"> <i class="fa-solid fa-file-pdf"></i> Relatório Geral </a> <form class="d-flex search-box" method="get"> <input type="hidden" name="tab" value="convenios"> <input type="hidden" name="page_convenios" value="1"> <input type="hidden" name="q_ppps" value="{{ request('q_ppps') }}"> <input type="hidden" name="page_ppps" value="{{ request('page_ppps', 1) }}"> <input type="text" class="form-control" name="q_convenios" placeholder="{{ __('Pesquisar por objeto, instrumento, SEI, executor ou concedente...') }}" value="{{ request('q_convenios') }}"> <button class="btn btn-primary" type="submit"> <i class="fa-solid fa-magnifying-glass"></i> </button> </form> </div> </div> <div class="table-responsive"> <table class="table table-hover table-bordered align-middle text-center"> @include('components.tables._thead', [ 'thead' => [__('Objeto'), __('Instrumento'), __('Executor'), __('Concedente'), __('Alertas'), __('Status'), __('Ações')] ]) <tbody> @php $index = 1000; @endphp @forelse($convenios as $convenio) @php $alertasConvenio = \App\Http\Resources\ConvenioResource::alertasAtivos($convenio); @endphp <tr> <td class="text-start">{{ Str::limit($convenio->objeto, 80) }}</td> <td class="text-start">{{ $convenio->numero_instrumento ?: '—' }}</td> <td class="text-start">{{ Str::limit($convenio->executor_ordenador, 30) }}</td> <td class="text-start">{{ Str::limit($convenio->concedente, 30) }}</td> <td> @if(count($alertasConvenio) > 0) <div class="d-flex justify-content-center"> <button type="button" class="btn btn-sm btn-warning" data-bs-toggle="modal" data-bs-target="#modalAlertasConvenio-{{ $convenio->id }}" aria-label="{{ __('Ver alertas do convênio') }}"> <i class="fa-solid fa-bell me-1" aria-hidden="true"></i> {{ __('Alertas') }} ({{ count($alertasConvenio) }}) </button> </div> <div class="modal fade" id="modalAlertasConvenio-{{ $convenio->id }}" tabindex="-1" aria-labelledby="modalAlertasConvenioLabel-{{ $convenio->id }}" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalAlertasConvenioLabel-{{ $convenio->id }}"> {{ __('Alertas do Convênio') }} </h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ __('Fechar') }}"></button> </div> <div class="modal-body text-start"> <p class="mb-2"> <strong>{{ __('Instrumento:') }}</strong> {{ $convenio->numero_instrumento ?: __('Não informado') }} </p> <ul class="list-group"> @foreach($alertasConvenio as $alertaConvenio) <li class="list-group-item d-flex align-items-start"> <i class="fa-solid fa-triangle-exclamation text-warning mt-1 me-2" aria-hidden="true"></i> <span>{{ $alertaConvenio['mensagem'] }}</span> </li> @endforeach </ul> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"> {{ __('Fechar') }} </button> </div> </div> </div> </div> @else <span class="text-muted">{{ __('—') }}</span> @endif </td> <td> @include('components.buttons._status', [ 'index' => $index, 'route' => 'admin.convenios.status', 'id' => $convenio->id, 'status' => $convenio->status, 'permission' => 'GERENCIADOR_DE_PPPS', ]) </td> <td class="text-nowrap"> <div class="btn-group"> <a href="{{ route('admin.convenios.edit', $convenio->id) }}" class="btn btn-sm btn-warning"> <i class="fa-solid fa-pen-to-square"></i> </a> @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_PPPS')['excluir']) <form class="d-inline" action="{{ route('admin.convenios.destroy', $convenio->id) }}" method="post"> @csrf @method('delete') <button type="button" onclick="confirmDeleteConvenios(this)" class="btn btn-sm btn-danger" title="{{ __('Excluir') }}"> <i class="fa-solid fa-trash"></i> </button> </form> @endif </div> </td> </tr> @php $index++; @endphp @empty <tr> <td colspan="7" class="text-muted fst-italic"> {{ __('Nenhum convênio encontrado.') }} </td> </tr> @endforelse </tbody> </table> </div> <div class="d-flex justify-content-center mt-4"> {!! $convenios->appends([ 'tab' => 'convenios', 'q_convenios' => request('q_convenios'), 'q_ppps' => request('q_ppps'), 'page_ppps' => request('page_ppps', 1) ])->links() !!} </div> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script> function confirmDeletePpps(button) { Swal.fire({ title: 'Tem certeza?', text: "Essa ação não poderá ser desfeita!", icon: 'warning', showCancelButton: true, confirmButtonColor: '#21409A', cancelButtonColor: '#6c757d', confirmButtonText: 'Sim, excluir!', cancelButtonText: 'Cancelar' }).then((result) => { if (result.isConfirmed) { button.closest('form').submit(); } }); } </script> <script> function confirmDeleteConvenios(button) { Swal.fire({ title: 'Tem certeza?', text: "Essa ação não poderá ser desfeita!", icon: 'warning', showCancelButton: true, confirmButtonColor: '#21409A', cancelButtonColor: '#6c757d', confirmButtonText: 'Sim, excluir!', cancelButtonText: 'Cancelar' }).then((result) => { if (result.isConfirmed) { button.closest('form').submit(); } }); } </script> @endsection
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings