Vista-Controlador configuración

This commit is contained in:
2025-05-16 14:22:00 -06:00
parent 08ab0e94bb
commit 35b18f5808
10 changed files with 770 additions and 35 deletions

View File

@@ -0,0 +1,29 @@
<?php
require_once __DIR__ . '/../helpers/session.php';
require_once __DIR__ . '/../../config/database.php';
require_once __DIR__ . '/../helpers/crypto.php';
function index()
{
include __DIR__ . '/../../views/configuracion/dashboard_configuracion.php';
}
function automatizaciones()
{
include __DIR__ . '/../../views/configuracion/automatizaciones.php';
}
function preferencias()
{
include __DIR__ . '/../../views/configuracion/preferencias.php';
}
function seguridad()
{
include __DIR__ . '/../../views/configuracion/seguridad.php';
}
function bitacoras()
{
include __DIR__ . '/../../views/configuracion/bitacoras.php';
}

View File

@@ -0,0 +1,86 @@
<?php
include __DIR__ . '/../partials/sidebar_configuracion.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Dashboard | Configuración</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f4f6f9;
}
.sidebar {
width: 220px;
height: 100vh;
background-color: #343a40;
position: fixed;
top: 0;
left: 0;
padding-top: 56px; /* Alineado con la altura de la navbar */
z-index: 1040; /* Asegura que esté por encima del contenido */
}
.sidebar .nav-link {
font-weight: bold;
color: white;
transition: all 0.3s ease;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #495057;
color: #fff;
}
.content {
margin-top: 56px; /* Ajusta debajo de navbar */
padding: 40px 20px;
position: relative;
z-index: 1;
background-color: #f4f6f9; /* Asegura fondo uniforme */
transition: margin-left 0.3s ease;
}
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1050;
}
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
@media (min-width: 768px) {
.content {
margin-left: 250px; /* Ancho del sidebar */
}
}
/* En móviles, sin margen lateral */
@media (max-width: 767.98px) {
.content {
margin-left: 0;
}
.sidebar .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
.card {
border-radius: 12px;
}
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4">⚙️ Automatizaciones</h4>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<?php
include __DIR__ . '/../partials/sidebar_configuracion.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Dashboard | Configuración</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f4f6f9;
}
.sidebar {
width: 220px;
height: 100vh;
background-color: #343a40;
position: fixed;
top: 0;
left: 0;
padding-top: 56px; /* Alineado con la altura de la navbar */
z-index: 1040; /* Asegura que esté por encima del contenido */
}
.sidebar .nav-link {
font-weight: bold;
color: white;
transition: all 0.3s ease;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #495057;
color: #fff;
}
.content {
margin-top: 56px; /* Ajusta debajo de navbar */
padding: 40px 20px;
position: relative;
z-index: 1;
background-color: #f4f6f9; /* Asegura fondo uniforme */
transition: margin-left 0.3s ease;
}
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1050;
}
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
@media (min-width: 768px) {
.content {
margin-left: 250px; /* Ancho del sidebar */
}
}
/* En móviles, sin margen lateral */
@media (max-width: 767.98px) {
.content {
margin-left: 0;
}
.sidebar .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
.card {
border-radius: 12px;
}
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4">📖 Bitácoras</h4>
</body>
</html>

View File

@@ -0,0 +1,217 @@
<?php
include __DIR__ . '/../partials/sidebar_configuracion.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Dashboard | Configuración</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f4f6f9;
}
.sidebar {
width: 220px;
height: 100vh;
background-color: #343a40;
position: fixed;
top: 0;
left: 0;
padding-top: 56px; /* Alineado con la altura de la navbar */
z-index: 1040; /* Asegura que esté por encima del contenido */
}
.sidebar .nav-link {
font-weight: bold;
color: white;
transition: all 0.3s ease;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #495057;
color: #fff;
}
.content {
margin-top: 56px; /* Ajusta debajo de navbar */
padding: 40px 20px;
position: relative;
z-index: 1;
background-color: #f4f6f9; /* Asegura fondo uniforme */
transition: margin-left 0.3s ease;
}
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1050;
}
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
@media (min-width: 768px) {
.content {
margin-left: 250px; /* Ancho del sidebar */
}
}
/* En móviles, sin margen lateral */
@media (max-width: 767.98px) {
.content {
margin-left: 0;
}
.sidebar .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
.card {
border-radius: 12px;
}
label {font-weight: bold;}
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4"> Información General</h4>
<div class="card shadow-sm p-4 mb-4 bg-white">
<form>
<div class="row mb-2">
<label class="col-md-2 col-form-label">Clave:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-1"></div>
<label class="col-md-2 col-form-label">Tipo de identificador:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Nombre:</label>
<div class="col-md-10">
<input type="text" class="form-control">
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">RFC:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">CURP:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Calle:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Núm. Exterior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-4"></div>
<label class="col-md-2 col-form-label">Núm. Interior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Ciudad / Localidad:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Colonia:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">País:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-3"></div>
<label class="col-md-2 col-form-label">Código Postal:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Municipio:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Estado:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Teléfonos:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="" readonly>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Fax:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Correo:</label>
<div class="col-md-10">
<input type="email" class="form-control" value="" readonly>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Observaciones:</label>
<div class="col-md-10">
<textarea class="form-control" rows="3" readonly></textarea>
</div>
</div>
</form>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<?php
include __DIR__ . '/../partials/sidebar_configuracion.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Dashboard | Configuración</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f4f6f9;
}
.sidebar {
width: 220px;
height: 100vh;
background-color: #343a40;
position: fixed;
top: 0;
left: 0;
padding-top: 56px; /* Alineado con la altura de la navbar */
z-index: 1040; /* Asegura que esté por encima del contenido */
}
.sidebar .nav-link {
font-weight: bold;
color: white;
transition: all 0.3s ease;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #495057;
color: #fff;
}
.content {
margin-top: 56px; /* Ajusta debajo de navbar */
padding: 40px 20px;
position: relative;
z-index: 1;
background-color: #f4f6f9; /* Asegura fondo uniforme */
transition: margin-left 0.3s ease;
}
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1050;
}
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
@media (min-width: 768px) {
.content {
margin-left: 250px; /* Ancho del sidebar */
}
}
/* En móviles, sin margen lateral */
@media (max-width: 767.98px) {
.content {
margin-left: 0;
}
.sidebar .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
.card {
border-radius: 12px;
}
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4">✅ Preferencias</h4>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<?php
include __DIR__ . '/../partials/sidebar_configuracion.php';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Dashboard | Configuración</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f4f6f9;
}
.sidebar {
width: 220px;
height: 100vh;
background-color: #343a40;
position: fixed;
top: 0;
left: 0;
padding-top: 56px; /* Alineado con la altura de la navbar */
z-index: 1040; /* Asegura que esté por encima del contenido */
}
.sidebar .nav-link {
font-weight: bold;
color: white;
transition: all 0.3s ease;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #495057;
color: #fff;
}
.content {
margin-top: 56px; /* Ajusta debajo de navbar */
padding: 40px 20px;
position: relative;
z-index: 1;
background-color: #f4f6f9; /* Asegura fondo uniforme */
transition: margin-left 0.3s ease;
}
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1050;
}
/* A partir de dispositivos medianos (>=768px), deja espacio lateral */
@media (min-width: 768px) {
.content {
margin-left: 250px; /* Ancho del sidebar */
}
}
/* En móviles, sin margen lateral */
@media (max-width: 767.98px) {
.content {
margin-left: 0;
}
.sidebar .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.sidebar .nav-link:hover,
.sidebar .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
.card {
border-radius: 12px;
}
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4">🦺 Seguridad</h4>
</body>
</html>

View File

@@ -78,52 +78,65 @@ include __DIR__ . '/../partials/sidebar_importador.php';
</head>
<body>
<div class="content">
<br><br>
<h4 class="mb-4">📦 Panel del Importador</h4>
<div class="content">
<br><br>
<h4 class="mb-4">📦 Panel del Importador</h4>
<div class="row g-4">
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-primary">Transportes</h5>
<p>Gestiona y carga tus unidades de transporte.</p>
<a href="/IMPORTADORES/transportes" class="btn btn-primary btn-sm mt-2">Ver transportes</a>
<div class="row g-4">
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-primary">Transportes</h5>
<p>Gestiona y carga tus unidades de transporte.</p>
<a href="/IMPORTADORES/transportes/lista"
class="btn btn-primary btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/transportes/lista' ? 'active' : '' ?>">
Ver transportes
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-success">Transportistas</h5>
<p>Agrega o consulta los choferes que colaboran contigo.</p>
<a href="/IMPORTADORES/transportistas" class="btn btn-success btn-sm mt-2">Ver transportistas</a>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-success">Transportistas</h5>
<p>Agrega o consulta los choferes que colaboran contigo.</p>
<a href="/IMPORTADORES/transportistas/lista"
class="btn btn-success btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/transportistas/lista' ? 'active' : '' ?>">
Ver transportistas
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-info">Solicitud de Importación</h5>
<p>Inicia nuevas solicitudes de pedimentos.</p>
<a href="/IMPORTADORES/solicitudes" class="btn btn-info btn-sm mt-2">Nueva solicitud</a>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-info">Solicitud de Importación</h5>
<p>Inicia nuevas solicitudes de pedimentos.</p>
<a href="/IMPORTADORES/solicitud_importacion/crear"
class="btn btn-info btn-sm mt-2 <?= str_contains($_SERVER['REQUEST_URI'], '/solicitud_importacion/crear') ? 'active' : '' ?>">
Nueva solicitud
</a>
<a href="/IMPORTADORES/solicitudes" class=""></a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-warning">Configuración</h5>
<p>Administra los datos de tu empresa y preferencias.</p>
<a href="/IMPORTADORES/configuracion" class="btn btn-warning btn-sm mt-2">Configurar</a>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-warning">Configuración</h5>
<p>Administra los datos de tu empresa y preferencias.</p>
<a href="/IMPORTADORES/configuracion"
class="btn btn-warning btn-sm mt-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion') ? 'active' : '' ?>">
Configurar
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-danger">Cerrar sesión</h5>
<p>Salir del sistema de forma segura.</p>
<a href="/IMPORTADORES/sistemas/logout" class="btn btn-danger btn-sm mt-2">Logout</a>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h5 class="text-danger">Cerrar sesión</h5>
<p>Salir del sistema de forma segura.</p>
<a href="/IMPORTADORES/sistemas/logout" class="btn btn-danger btn-sm mt-2">Logout</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,130 @@
<!-- views/partials/sidebar_configuracion.php -->
<?php
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
header('Location: /IMPORTADORES/login');
exit;
}
?>
<style>
.nav .nav-link {
font-weight: normal;
color: white;
transition: all 0.3s ease;
}
.nav .nav-link:hover,
.nav .nav-link.active {
background-color: #495057;
color: #fff;
}
/* Estilo inverso solo para pantallas pequeñas (sidebar tipo offcanvas) */
@media (max-width: 767.98px) {
.nav .nav-link {
font-weight: normal;
color: #343a40;
background-color: transparent;
}
.nav .nav-link:hover,
.nav .nav-link.active {
background-color: #e9ecef;
color: #212529;
}
}
</style>
<!-- NAVBAR -->
<nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid">
<!-- Botón de menú para móviles -->
<button class="btn btn-outline-light d-md-none me-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#sidebarMenu">
</button>
<span class="navbar-brand">SIIH | Configuración</span>
<div class="d-none d-md-flex">
<a href="/IMPORTADORES/importadores/dashboard" class="btn btn-outline-light btn-sm">
<- Volver al Panel Principal
</a>
</div>
</div>
</nav>
<!-- SIDEBAR FIJA (escritorio) -->
<div class="d-none d-md-block bg-dark text-white position-fixed h-100 pt-5" style="width: 250px;">
<nav class="nav flex-column">
<!-- INFORMACIÓN GENERAL -->
<a href="/IMPORTADORES/configuracion/index"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/dashboard_configuracion') ? 'active' : '' ?>">
Información General
</a>
<!-- AUTOMATIZACIONES -->
<a href="/IMPORTADORES/configuracion/automatizaciones"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/automatizaciones') ? 'active' : '' ?>">
⚙️ Automatizaciones
</a>
<!-- PREFERENCIAS -->
<a href="/IMPORTADORES/configuracion/preferencias"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/preferencias') ? 'active' : '' ?>">
✅ Preferencias
</a>
<!-- SEGURIDAD -->
<a href="/IMPORTADORES/configuracion/seguridad"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/seguridad') ? 'active' : '' ?>">
🦺 Seguridad
</a>
<!-- BITÁCORAS -->
<a href="/IMPORTADORES/configuracion/bitacoras"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/bitacoras') ? 'active' : '' ?>">
📖 Bitácoras
</a>
</nav>
</div>
<!-- OFFCANVAS PARA MÓVILES -->
<div class="offcanvas offcanvas-start d-md-none" tabindex="-1" id="sidebarMenu">
<div class="offcanvas-header">
<h5 class="offcanvas-title">Menú</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas"></button>
</div>
<div class="offcanvas-body">
<!-- INFORMACIÓN GENERAL -->
<!-- INFORMACIÓN GENERAL -->
<a href="/IMPORTADORES/configuracion/index"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/dashboard_configuracion') ? 'active' : '' ?>">
Información General
</a>
<!-- AUTOMATIZACIONES -->
<a href="/IMPORTADORES/configuracion/automatizaciones"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/automatizaciones') ? 'active' : '' ?>">
⚙️ Automatizaciones
</a>
<!-- PREFERENCIAS -->
<a href="/IMPORTADORES/configuracion/preferencias"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/preferencias') ? 'active' : '' ?>">
✅ Preferencias
</a>
<!-- SEGURIDAD -->
<a href="/IMPORTADORES/configuracion/seguridad"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/seguridad') ? 'active' : '' ?>">
🦺 Seguridad
</a>
<!-- BITÁCORAS -->
<a href="/IMPORTADORES/configuracion/bitacoras"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion/bitacoras') ? 'active' : '' ?>">
📖 Bitácoras
</a>
</div>
</div>

View File

@@ -299,5 +299,6 @@ if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/configuracion') ? 'active' : '' ?>">
⚙️ Configuración
</a>
</div>
</div>

View File

@@ -91,6 +91,7 @@
<div class="content">
<br>
<h4 class="mb-4">🚚 Mis Transportistas</h4>
<a href="/IMPORTADORES/transportistas/alta" class="btn btn-success mb-3"> Nuevo Transportista</a>
<div class="card p-3 shadow-sm">
<div class="table-responsive">
<table id="transportistas-table" class="display nowrap" style="width:100%">