templates/equipo/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% form_theme form 'bootstrap_4_layout.html.twig' %}
  3. {% block stylesheets %}
  4.     <link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
  5.     <link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
  6.     <link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css')}}">
  7.     <link rel="stylesheet" href="{{ asset('plugins/toastr/toastr.min.css') }}">
  8.     <style>
  9.         td.descripcion {
  10.             max-width: 300px !important;
  11.             text-overflow: ellipsis;
  12.             white-space: nowrap;
  13.             overflow: hidden;
  14.         }
  15.         label {
  16.             margin-right: 1rem;
  17.         }
  18.     </style>
  19. {% endblock %}
  20. {% block title %} - Eq. cómputo{% endblock %}
  21. {% block body %}
  22.     <div class="content-wrapper">
  23.         <!-- Content Header (Page header) -->
  24.         <section class="content-header">
  25.             <div class="card">
  26.                 <div class="card-header">
  27.                     <h1 class="card-title">Equipos de Cómputo</h1>
  28.                     <div class="card-tools">
  29.                         <ol class="breadcrumb float-sm-right">
  30.                             <li class="breadcrumb-item">Inicio</li>
  31.                             <li class="breadcrumb-item active">Equipos</li>
  32.                         </ol>
  33.                     </div>
  34.                 </div>
  35.             </div>
  36.         </section>
  37.         <!-- Main content -->
  38.         <section class="content">
  39.             <!-- Default box -->
  40.             <div class="card">
  41.                 {% if not unidadActiva and (rol == 3 or rol == 4) %}
  42.                     <div class="alert alert-warning alert-dismissible fade show" role="alert">
  43.                         En este momento no tiene privilegios para editar sus inventarios, si lo requiere, por favor solicítelo al Administrador.
  44.                         <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  45.                             <span aria-hidden="true">&times;</span>
  46.                         </button>
  47.                     </div>
  48.                 {% endif %}
  49.                 <div class="card-header">
  50.                     <div class="row">
  51.                         {{ form_start(form, {'attr': {'class': 'form-inline col-md-auto', 'id': 'form_unidad_filtro'}}) }}
  52.                         {{ form_row(form.filtro) }}
  53.                         {% if form.unidad is defined %}
  54.                             {{ form_row(form.unidad) }}
  55.                         {% endif %}
  56.                         {{ form_end(form) }}
  57.                         <div class="col text-right">
  58.                             <button id="descargar_excel" type="button" class="btn btn-outline-success mr-2" onclick="descargarExcel()">
  59.                                 <i class="fas fa-file-excel mr-2"></i> Descargar
  60.                             </button>
  61.                             <button id="descargar_pdf" type="button" class="btn btn-outline-danger mr-2" onclick="descargarPDF()">
  62.                                 <i class="fas fa-file-pdf mr-2"></i> Formato CE-1
  63.                             </button>
  64.                             {% if nivel == 1 and unidadActiva %}
  65.                                 <a href="{{ path('app_equipo_new') }}" class="btn btn-outline-success">
  66.                                     <i class="fas fa-plus-circle mr-2"></i> Agregar
  67.                                 </a>
  68.                                 {# <a href="{{ path('app_upload_equipo_excel') }}" class="btn btn-outline-success">
  69.                                 <i class="fas fa-plus-circle mr-2"></i> Agregar equipos
  70.                             </a> #}
  71.                             {% endif %}
  72.                         </div>
  73.                     </div>
  74.                 </div>
  75.                 <div class="card-body">
  76.                     <table class="table table-striped w-100" id="table-equipo">
  77.                         <thead>
  78.                         <tr>
  79.                             <th>Marbete</th>
  80.                             <th>Descripción</th>
  81.                             <th>Marca</th>
  82.                             <th>Modelo</th>
  83.                             <th>Uso</th>
  84.                             <th>Estatus</th>
  85.                             <th>Emhv</th>
  86.                             <th>Unidad</th>
  87.                             <th>Usuario</th>
  88.                             <th>Ubicación</th>
  89.                             <th>Acciones</th>
  90.                         </tr>
  91.                         </thead>
  92.                         <tbody>
  93.                         {% set filteredEquipos = equipos|filter(equipo => equipo.estatus != 5) %}
  94.                         {% if filteredEquipos is not empty %}
  95.                             {% for equipo in filteredEquipos %}
  96.                                 <tr id="idEqu-{{ equipo.idEqu }}">
  97.                                     <td class="marbete">{{ equipo.marbete }}</td>
  98.                                     <td class="descripcion">{{ equipo.descripcion }}</td>
  99.                                     <td class="marca">{{ equipo.marca }}</td>
  100.                                     <td class="modelo">{{ equipo.modelo }}</td>
  101.                                     <td class="uso">
  102.                                         {% if equipo.uso == 1 %}
  103.                                             <span>Educativo</span>
  104.                                         {% elseif equipo.uso == 2 %}
  105.                                             <span>Docente</span>
  106.                                         {% elseif equipo.uso == 3 %}
  107.                                             <span>Administrativo</span>
  108.                                         {% endif %}
  109.                                     </td>
  110.                                     <td class="estatus">
  111.                                         {% if equipo.estatus == 1 %}
  112.                                             <span class="badge bg-gradient-green d-block">En operación</span>
  113.                                         {% elseif equipo.estatus == 2 %}
  114.                                             <span class="badge bg-gradient-orange d-block">Descompuesto</span>
  115.                                         {% elseif equipo.estatus == 3 %}
  116.                                             <span class="badge bg-gradient-primary d-block">Sin instalar</span>
  117.                                         {% elseif equipo.estatus == 4 %}
  118.                                             <span class="badge bg-gradient-yellow d-block">En proceso de baja</span>
  119.                                         {% elseif equipo.estatus == 5 %}
  120.                                             <span class="badge bg-gradient-danger d-block">Baja</span>
  121.                                         {% endif %}
  122.                                     </td>
  123.                                     <td class="emhv">
  124.                                         {% if equipo.emhv == 1 %}
  125.                                             <span class="badge bg-gradient-green d-block">Cumple</span>
  126.                                         {% elseif equipo.emhv == 0 %}
  127.                                             <span class="badge bg-gradient-orange d-block">No Cumple</span>
  128.                                         {% endif %}
  129.                                     </td>
  130.                                     <td class="unidad">{{ equipo.unidad.nombre }}</td>
  131.                                     <td class="usuario">{{ equipo.usuario.nombre }} {{ equipo.usuario.papellido }} {{ equipo.usuario.sapellido }}</td>
  132.                                     <td class="ubicacion">{{ equipo.unidad.idUni|slice(3, 3) }} - {{ equipo.ubicacion}}</td> {# area #}
  133.                                     <td class="text-right">
  134.                                         {# <button class="btn btn-sm" style="background-color: transparent; border: none;" onclick="descargarPDF1('{{ equipo.idEqu }}')">
  135.                                             <i class="fas fa-file-pdf" style="color: red;">dpdf</i>
  136.                                         </button>
  137.                                         | #}
  138.                                         <!-- Botón para descargar PDF de resguardatario -->
  139.                                         <a href="#" onclick="postPdfRequest('{{ equipo.idEqu }}'); return false;" title="Generar resguardatario">
  140.                                             <i class="fas fa-file-pdf mr-2"></i>
  141.                                         </a>
  142.                                         &nbsp;
  143.                                         <a href="javascript: void(0)" data-id="{{ equipo.idEqu }}" class="btn-redirect" title="Ver equipo"><i class="fas fa-eye"></i></a>
  144.                                         {% if nivel in [1, 2] and unidadActiva%}
  145.                                             &nbsp;&nbsp;
  146.                                             <a href="#editar-equipo" onclick="editarInfoEquipo('{{ path('app_equipo_edit', {'idEqu': equipo.idEqu}) }}')" data-toggle="modal" title="Editar equipo"><i class="fas fa-pen"></i></a>
  147.                                             {# &nbsp;&nbsp;
  148.                                             <a href="#editar-equiporefaccion" onclick="editarInfoEquipoRefaccion('{{ path('app_equipo_editrefaccion', {'idEqu': equipo.idEqu}) }}')" data-toggle="modal" title="Agregar refacción"><i class="fas fa-solid fa-business-time"></i></a> #}
  149.                                         {% endif %}
  150.                                         {% if nivel in [1, 2] and not unidadActiva%}
  151.                                             &nbsp;&nbsp;
  152.                                             <a href="#editar-equiporesguardo" onclick="editarInfoEquipoResguardo('{{ path('app_equipo_edit_resguardo', {'idEqu': equipo.idEqu}) }}')" data-toggle="modal" title="Editar equipo"><i class="fas fa-pen"></i></a>
  153.                                         {% endif %}
  154.                                     </td>
  155.                                 </tr>
  156.                             {% endfor %}
  157.                         {% else %}
  158.                             <tr>
  159.                                 <td colspan="9">no records found</td>
  160.                             </tr>
  161.                         {% endif %}
  162.                         </tbody>
  163.                     </table>
  164.                 </div>
  165.                 <!-- /.card-body -->
  166.             </div>
  167.             <!-- /.card -->
  168.         </section>
  169.         <!-- /.content -->
  170.     </div>
  171.     <div class="modal hide" id="editar-equipo"></div>
  172.     <div class="modal hide" id="editar-equiporefaccion"></div>
  173.     <div class="modal hide" id="editar-equiporesguardo"></div>
  174. {% endblock %}
  175. {% block javascripts %}
  176.     <script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script>
  177.     <script src="{{ asset('plugins/datatables-bs4/js/dataTables.bootstrap4.min.js') }}"></script>
  178.     <script src="{{ asset('plugins/datatables-responsive/js/dataTables.responsive.min.js') }}"></script>
  179.     <script src="{{ asset('plugins/datatables-responsive/js/responsive.bootstrap4.min.js') }}"></script>
  180.     <script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script>
  181.     <script src="{{ asset('plugins/datatables-buttons/js/buttons.bootstrap4.min.js') }}"></script>
  182.     <script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script>
  183.     <script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script>
  184.     <script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script>
  185.     <script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
  186.     <script src="{{ asset('plugins/datatables-buttons/js/buttons.print.min.js') }}"></script>
  187.     <script src="{{ asset('plugins/datatables-buttons/js/buttons.colVis.min.js') }}"></script>
  188.     <script src="{{ asset('plugins/toastr/toastr.min.js') }}"></script>
  189.     <script src="https://cdn.jsdelivr.net/gh/mgalante/jquery.redirect@master/jquery.redirect.js"></script>
  190.     <script type="text/javascript">
  191.         // Menu lateral
  192.         $("#catalogo").addClass("menu-open");
  193.         $("#catalogo").find('.nav-link:first').addClass("active");
  194.         $("#computo").addClass("active");
  195.         $(function () {
  196.             // DataTable
  197.             $('#table-equipo').DataTable({
  198.                 "aaSorting": [],
  199.                 orderCellsTop: true,
  200.                 {# Define un valor predeterminado para LengthChange #}
  201.                 "pageLength": 50,
  202.                 "scrollX": true,
  203.                 {# sDom: 'lrtip', #}
  204.                 "bLengthChange" : true,
  205.                 language: {
  206.                     url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
  207.                 },
  208.             });
  209.             {% if form.unidad is defined %}
  210.             $("#unidad_filtro_unidad").on('change', function () {
  211.                 aplicarFiltro();
  212.             });
  213.             $("#unidad_filtro_marca").on('change', function () {
  214.                 aplicarFiltro();
  215.             });
  216.             $("#unidad_filtro_modelo").on('change', function () {
  217.                 aplicarFiltro();
  218.             });
  219.             $("#unidad_filtro_uso").on('change', function () {
  220.                 aplicarFiltro();
  221.             });
  222.             $("#unidad_filtro_estatus").on('change', function () {
  223.                 aplicarFiltro();
  224.             });
  225.             {% endif %}
  226.         });
  227.         // Se envia el valor del id_equ
  228.         function postPdfRequest(idEqu) {
  229.             const form = document.createElement('form');
  230.             form.method = 'POST';
  231.             form.action = '{{ path('app_resguardo_equipo_pdf') }}';
  232.             form.target = '_blank';
  233.             const input = document.createElement('input');
  234.             input.type = 'hidden';
  235.             input.name = 'idEqu';
  236.             input.value = idEqu;
  237.             form.appendChild(input);
  238.             document.body.appendChild(form);
  239.             form.submit();
  240.         }
  241.         function aplicarFiltro() {
  242.             $("#table-equipo").find($("tbody")).html("<tr><td colspan='9' class='text-center'><i class='fas fa-spinner fa-pulse'></i></td></tr>");
  243.             let formData = new FormData(document.getElementById("form_unidad_filtro"));
  244.             $.ajax({
  245.                 type: "POST",
  246.                 url: '{{ path('app_equipo_index') }}',
  247.                 data: formData, // Adjuntar los campos del formulario enviado.
  248.                 dataType: "html",
  249.                 cache: false,
  250.                 contentType: false,
  251.                 processData: false,
  252.                 success: function (data) {
  253.                     let datos = jQuery.parseJSON(data);
  254.                     actualizarEquipo(datos);
  255.                 },
  256.                 error: function (data, text, error) {
  257.                     let datos = jQuery.parseJSON(data.responseText);
  258.                 }
  259.             });
  260.         }
  261.         function descargarExcel() {
  262.             let btn = $("#descargar_excel");
  263.             let formData = new FormData(document.getElementById("form_unidad_filtro"));
  264.             $.ajax({
  265.                 type: "POST",
  266.                 url: '{{ path('app_reporte_equipo_excel') }}',
  267.                 data: formData, // Adjuntar los campos del formulario enviado.
  268.                 cache: false,
  269.                 contentType: false,
  270.                 processData: false,
  271.                 xhrFields: {
  272.                     responseType: 'blob'
  273.                 },
  274.                 beforeSend: function () {
  275.                     btn.prop('disabled', true);
  276.                     btn.html("<i class='fas fa-spinner fa-pulse'></i> Descargar");
  277.                 },
  278.                 success: function (data) {
  279.                     let a = document.createElement('a');
  280.                     a.href = window.URL.createObjectURL(data);
  281.                     a.download = "ReporteEquipoCómputo.xlsx"
  282.                     a.click();
  283.                 },
  284.                 complete: function () {
  285.                     btn.prop('disabled', false);
  286.                     btn.html("<i class='fas fa-file-excel mr-2'></i> Descargar");
  287.                 }
  288.             });
  289.         }
  290.         function descargarPDF() {
  291.             {% if form.unidad is defined %}
  292.             if ($("#unidad_filtro_unidad").val() === "") {
  293.                 toastr.warning('Se debe seleccionar una Unidad administrativa');
  294.                 return false;
  295.             }
  296.             {% endif %}
  297.             let btn = $("#descargar_pdf");
  298.             let formData = new FormData(document.getElementById("form_unidad_filtro"));
  299.             $.ajax({
  300.                 type: "POST",
  301.                 url: '{{ path('app_reporte_equipo_pdf') }}',
  302.                 data: formData, // Adjuntar los campos del formulario enviado.
  303.                 cache: false,
  304.                 contentType: false,
  305.                 processData: false,
  306.                 xhrFields: {
  307.                     responseType: 'blob'
  308.                 },
  309.                 beforeSend: function () {
  310.                     btn.prop('disabled', true);
  311.                     btn.html("<i class='fas fa-spinner fa-pulse'></i> Formato CE-1");
  312.                 },
  313.                 success: function (data) {
  314.                     let a = document.createElement('a');
  315.                     a.href = window.URL.createObjectURL(data);
  316.                     a.download = "ReporteEquipoCómputo.pdf"
  317.                     a.click();
  318.                 },
  319.                 complete: function () {
  320.                     btn.prop('disabled', false);
  321.                     btn.html("<i class='fas fa-file-pdf mr-2'></i> Formato CE-1");
  322.                 }
  323.             });
  324.         }
  325.         function descargarPDF1(idEquipo) {
  326.             let btn = $("#descargar_pdf");
  327.             let formData = new FormData();
  328.             formData.append('idEquipo', idEquipo); // Agregar el idEquipo al FormData
  329.             $.ajax({
  330.                 type: "POST",
  331.                 url: '{{ path('app_resguardo_equipo_pdf') }}',
  332.                 data: formData,
  333.                 cache: false,
  334.                 contentType: false,
  335.                 processData: false,
  336.                 beforeSend: function () {
  337.                     btn.prop('disabled', true);
  338.                     btn.html("<i class='fas fa-spinner fa-pulse'></i> Formato CE-1");
  339.                 },
  340.                 success: function (response) {
  341.                     if (response.success) {
  342.                         // Descargar el PDF utilizando el enlace proporcionado
  343.                         window.location.href = response.pdfUrl;
  344.                     } else {
  345.                         alert('Error al generar el PDF. Por favor, intenta nuevamente.');
  346.                     }
  347.                 },
  348.                 error: function (xhr, status, error) {
  349.                     alert('Se produjo un error al intentar generar el PDF. Por favor, intenta nuevamente.');
  350.                 },
  351.                 complete: function () {
  352.                     btn.prop('disabled', false);
  353.                     btn.html("<i class='fas fa-file-pdf mr-2'></i> Formato CE-1");
  354.                 }
  355.             });
  356.         }
  357.         function editarInfoEquipo(url){
  358.             $('#editar-equipo').load(url, function ()
  359.             {
  360.                 // configuración del Modal
  361.                 $("#editar-equipo").on('hide.bs.modal', function () {
  362.                     $(this).html('Cargando');
  363.                 });
  364.                 $(".modal-dialog").draggable;
  365.                 editarInfoEquipoAjax(url)
  366.             })
  367.         }
  368.         function editarInfoEquipoResguardo(url){
  369.             $('#editar-equiporesguardo').load(url, function ()
  370.             {
  371.                 // configuración del Modal
  372.                 $("#editar-equiporesguardo").on('hide.bs.modal', function () {
  373.                     $(this).html('Cargando');
  374.                 });
  375.                 $(".modal-dialog").draggable;
  376.                 editarInfoEquipoResguardoAjax(url)
  377.             })
  378.         }
  379.         function editarInfoEquipoRefaccion(url){
  380.             $('#editar-equiporefaccion').load(url, function ()
  381.             {
  382.                 // configuración del Modal
  383.                 $("#editar-equiporefaccion").on('hide.bs.modal', function () {
  384.                     $(this).html('Cargando');
  385.                 });
  386.                 $(".modal-dialog").draggable;
  387.                 editarInfoEquipoRefaccionAjax(url)
  388.             })
  389.         }
  390.         function editarInfoEquipoAjax(url){
  391.             let send = $("#btn_equipo_guardar");
  392.             $('#btn_equipo_guardar').on('click', function () {
  393.                 let formData = new FormData(document.getElementById("form-editar-equipo"));
  394.                 $.ajax({
  395.                     type: "POST",
  396.                     url: url,
  397.                     data: formData, // Adjuntar los campos del formulario enviado.
  398.                     dataType: "json",
  399.                     cache: false,
  400.                     contentType: false,
  401.                     processData: false,
  402.                     beforeSend: function () {
  403.                         send.text("Actualizando "); // Para input de tipo button
  404.                         send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
  405.                         send.prop("disabled", true);
  406.                     },
  407.                     success: function (data) {
  408.                         let datos = data;
  409.                         let row = $('#idEqu-' + datos.idEqu);
  410.                         row.find('.marbete').html(datos.marbete);
  411.                         row.find('.descripcion').html(datos.descripcion);
  412.                         row.find('.marca').html(datos.marca);
  413.                         row.find('.modelo').html(datos.modelo);
  414.                         /*row.find('.serie').html(datos.serie);
  415.                         row.find('.tipo').html(datos.tipo);
  416.                         row.find('.uso').html(datos.uso);*/
  417.                         //row.find('.uso').html(datos.unidad.getNombre);
  418.                         //row.find('.activo').html(datos.estatus);
  419.                         if (datos.estatus === "En operacion") {
  420.                             row.find('.estatus').html('<div class="badge bg-gradient-green d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  421.                         }
  422.                         if(datos.estatus === "Descompuesto") {
  423.                             row.find('.estatus').html('<div class="badge bg-gradient-orange d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  424.                         }
  425.                         if (datos.estatus === "Sin instalar") {
  426.                             row.find('.estatus').html('<div class="badge bg-gradient-primary d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  427.                         }
  428.                         if(datos.estatus === "En proceso de baja") {
  429.                             row.find('.estatus').html('<div class="badge bg-gradient-yellow d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  430.                         }
  431.                         if(datos.estatus === "Baja") {
  432.                             row.find('.estatus').html('<div class="badge bg-gradient-danger d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  433.                         }
  434.                         row.find('.emhv').html(datos.emhv);
  435.                         row.find('.usuario').html(datos.usuario);
  436.                         row.find('.ubicacion').html(datos.ubicacion);
  437.                         $("#editar-equipo").modal('hide');
  438.                     },
  439.                     error: function (data, text, error) {
  440.                         let datos = data.responseJSON;
  441.                         $("#editar-equipo").html(datos.form);
  442.                         editarInfoEquipoAjax(url);
  443.                     },
  444.                     complete: function (data) {
  445.                         // Se ejecuta al termino de la petición
  446.                     }
  447.                 });
  448.                 return false; // Evitar ejecutar el submit del formulario.
  449.             });
  450.         }
  451.         function editarInfoEquipoResguardoAjax(url){
  452.             let send = $("#btn_equipo_guardar");
  453.             $('#btn_equipo_guardar').on('click', function () {
  454.                 let formData = new FormData(document.getElementById("form-editar-equipo"));
  455.                 $.ajax({
  456.                     type: "POST",
  457.                     url: url,
  458.                     data: formData, // Adjuntar los campos del formulario enviado.
  459.                     dataType: "json",
  460.                     cache: false,
  461.                     contentType: false,
  462.                     processData: false,
  463.                     beforeSend: function () {
  464.                         send.text("Actualizando "); // Para input de tipo button
  465.                         send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
  466.                         send.prop("disabled", true);
  467.                     },
  468.                     success: function (data) {
  469.                         let datos = data;
  470.                         let row = $('#idEqu' + datos.idEqu);
  471.                         row.find('.marbete').html(datos.marbete);
  472.                         row.find('.descripcion').html(datos.descripcion);
  473.                         row.find('.marca').html(datos.marca);
  474.                         row.find('.modelo').html(datos.modelo);
  475.                         /*row.find('.serie').html(datos.serie);
  476.                         row.find('.tipo').html(datos.tipo);
  477.                         row.find('.uso').html(datos.uso);*/
  478.                         //row.find('.uso').html(datos.unidad.getNombre);
  479.                         //row.find('.activo').html(datos.estatus);+
  480.                         if (datos.estatus === "En operacion") {
  481.                             console.log(1)
  482.                             row.find('.estatus').html('<div class="badge bg-gradient-green d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  483.                         }
  484.                         if(datos.estatus === "Descompuesto") {
  485.                             console.log(2)
  486.                             row.find('.estatus').html('<div class="badge bg-gradient-orange d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  487.                         }
  488.                         if (datos.estatus === "Sin instalar") {
  489.                             console.log(3)
  490.                             row.find('.estatus').html('<div class="badge bg-gradient-primary d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  491.                         }
  492.                         if(datos.estatus === "En proceso de baja") {
  493.                             console.log(4)
  494.                             row.find('.estatus').html('<div class="badge bg-gradient-yellow d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  495.                         }
  496.                         if(datos.estatus === "Baja") {
  497.                             console.log(5)
  498.                             row.find('.estatus').html('<div class="badge bg-gradient-danger d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  499.                         }
  500.                         row.find('.emhv').html(datos.emhv);
  501.                         row.find('.usuario').html(datos.usuario);
  502.                         row.find('.ubicacion').html(datos.ubicacion);
  503.                         $("#editar-equiporesguardo").modal('hide');
  504.                     },
  505.                     error: function (data, text, error) {
  506.                         let datos = data.responseJSON;
  507.                         $("#editar-equiporesguardo").html(datos.form);
  508.                         editarInfoEquipoResguardoAjax(url);
  509.                     },
  510.                     complete: function (data) {
  511.                         // Se ejecuta al termino de la petición
  512.                     }
  513.                 });
  514.                 return false; // Evitar ejecutar el submit del formulario.
  515.             });
  516.         }
  517.         function editarInfoEquipoRefaccionAjax(url){
  518.             let send = $("#btn_equipo_guardar");
  519.             $('#btn_equipo_guardar').on('click', function () {
  520.                 let formData = new FormData(document.getElementById("form-editar-equipo"));
  521.                 $.ajax({
  522.                     type: "POST",
  523.                     url: url,
  524.                     data: formData, // Adjuntar los campos del formulario enviado.
  525.                     dataType: "json",
  526.                     cache: false,
  527.                     contentType: false,
  528.                     processData: false,
  529.                     beforeSend: function () {
  530.                         send.text("Actualizando "); // Para input de tipo button
  531.                         send.append("<i class='fa fa-spinner fa-spin' style='font-size:16px'></i>");
  532.                         send.prop("disabled", true);
  533.                     },
  534.                     success: function (data) {
  535.                         let datos = data;
  536.                         let row = $('#idEqu-' + datos.idEqu);
  537.                         row.find('.marbete').html(datos.marbete);
  538.                         row.find('.descripcion').html(datos.descripcion);
  539.                         row.find('.marca').html(datos.marca);
  540.                         row.find('.modelo').html(datos.modelo);
  541.                         /*row.find('.serie').html(datos.serie);
  542.                         row.find('.tipo').html(datos.tipo);
  543.                         row.find('.uso').html(datos.uso);*/
  544.                         //row.find('.uso').html(datos.unidad.getNombre);
  545.                         //row.find('.activo').html(datos.estatus);
  546.                         if (datos.estatus === "En operacion") {
  547.                             row.find('.estatus').html('<div class="badge bg-gradient-green d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  548.                         }
  549.                         if(datos.estatus === "Descompuesto") {
  550.                             row.find('.estatus').html('<div class="badge bg-gradient-orange d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  551.                         }
  552.                         if (datos.estatus === "Sin instalar") {
  553.                             row.find('.estatus').html('<div class="badge bg-gradient-primary d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  554.                         }
  555.                         if(datos.estatus === "En proceso de baja") {
  556.                             row.find('.estatus').html('<div class="badge bg-gradient-yellow d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  557.                         }
  558.                         if(datos.estatus === "Baja") {
  559.                             row.find('.estatus').html('<div class="badge bg-gradient-danger d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  560.                         }
  561.                         row.find('.emhv').html(datos.emhv);
  562.                         row.find('.usuario').html(datos.usuario);
  563.                         row.find('.ubicacion').html(datos.ubicacion);
  564.                         $("#editar-equiporefaccion").hide('hide');
  565.                         $('.modal-backdrop').remove();
  566.                     },
  567.                     error: function (data, text, error) {
  568.                         let datos = data.responseJSON;
  569.                         $("#editar-equiporefaccion").html(datos.form);
  570.                         editarInfoEquipoRefaccionAjax(url);
  571.                     },
  572.                     complete: function (data) {
  573.                         // Se ejecuta al termino de la petición
  574.                     }
  575.                 });
  576.                 return false; // Evitar ejecutar el submit del formulario.
  577.             });
  578.         }
  579.         <!-- Actualizar tabla de bitácora -->
  580.         function actualizarEquipo(data) {
  581.             $("#table-equipo").dataTable().fnClearTable();
  582.             $("#table-equipo").dataTable().fnDestroy();
  583.             var edit = "";
  584.             var downpdf = "";
  585.             var html = "";
  586.             $.each(data, function (key, equipo) {
  587.                 {# Para edición del equipo #}
  588.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'true' : 'false' }}) {
  589.                     edit = '&nbsp;&nbsp;<a href="#editar-equipo" onclick="editarInfoEquipo(\'' + equipo.editar + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  590.                 }
  591.                 {# Solo para edición de estatus y reguardatario #}
  592.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'false' : 'true' }}) {
  593.                     edit = '&nbsp;&nbsp;<a href="#editar-equiporesguardo" onclick="editarInfoEquipoResguardo(\'' + equipo.editar_resguardo + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  594.                 }
  595.                 html +=
  596.                     '<tr id="idEqu' + equipo.idEqu + '">' +
  597.                         '<td class="marbete">' + equipo.marbete + '</td>' +
  598.                         '<td class="descripcion">' + equipo.descripcion + '</td>' +
  599.                         '<td class="marca">' + equipo.marca + '</td>' +
  600.                         '<td class="modelo">' + equipo.modelo + '</td>' +
  601.                         '<td class="uso">' + equipo.uso + '</td>' +
  602.                         '<td class="estatus">' + equipo.estatus + '</td>' +
  603.                         '<td class="emhv">' + equipo.emhv + '</td>' +
  604.                         '<td class="unidad">' + equipo.unidad + '</td>' +
  605.                         '<td class="usuario">' + equipo.usuario + '</td>' +
  606.                         '<td class="ubicacion">' + equipo.ubicacion + '</td>' +
  607.                         '<td class="text-right">' +
  608.                             '<a href="#" onclick="postPdfRequest(' + equipo.idEqu + '); return false;" title="Generar resguardatario">' +
  609.                             '<i class="fas fa-file-pdf mr-2"></i>' +
  610.                             '</a>' +
  611.                             '<a href="javascript: void(0)" data-id="' + equipo.idEqu + '" class="btn-redirect" title="Ver equipo"><i class="fas fa-eye"></i></a>' +
  612.                             edit +
  613.                         '</td>' +
  614.                     '</tr>';
  615.                 //cambiarEstatus('estatus/' + equipo.idEqu, 'estatus');
  616.             });
  617.             $("#table-equipo").find($("tbody")).html(html);
  618.             $('#table-equipo').DataTable({
  619.                 "aaSorting": [],
  620.                 orderCellsTop: true,
  621.                 {# Define un valor predeterminado para LengthChange #}
  622.                 "pageLength": 50,
  623.                 "scrollX": true,
  624.                 {# sDom: 'lrtip', #}
  625.                 "bLengthChange" : true,
  626.                 language: {
  627.                     url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
  628.                 },
  629.             });
  630.         }
  631.         function actualizarEquipoResguardo(data) {
  632.             $("#table-equipo").dataTable().fnClearTable();
  633.             $("#table-equipo").dataTable().fnDestroy();
  634.             var edit = "";
  635.             var downpdf = "";
  636.             var html = "";
  637.             $.each(data, function (key, equipo) {
  638.                 {# Para edición del equipo #}
  639.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'true' : 'false' }}) {
  640.                     edit = '&nbsp;&nbsp;<a href="#editar-equipo" onclick="editarInfoEquipo(\'' + equipo.editar + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  641.                 }
  642.                 {# Solo para edición de estatus y reguardatario #}
  643.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'false' : 'true' }}) {
  644.                     edit = '&nbsp;&nbsp;<a href="#editar-equiporesguardo" onclick="editarInfoEquipoResguardo(\'' + equipo.editar_resguardo + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  645.                 }
  646.                 html +=
  647.                     '<tr id="idEqu' + equipo.idEqu + '">' +
  648.                     '<td class="marbete">' + equipo.marbete + '</td>' +
  649.                     '<td class="descripcion">' + equipo.descripcion + '</td>' +
  650.                     '<td class="marca">' + equipo.marca + '</td>' +
  651.                     '<td class="modelo">' + equipo.modelo + '</td>' +
  652.                     '<td class="uso">' + equipo.uso + '</td>' +
  653.                     '<td class="estatus">' + equipo.estatus + '</td>' +
  654.                     '<td class="emhv">' + equipo.emhv + '</td>' +
  655.                     '<td class="unidad">' + equipo.unidad + '</td>' +
  656.                     '<td class="usuario">' + equipo.usuario + '</td>' +
  657.                     '<td class="ubicacion">' + equipo.ubicacion + '</td>' +
  658.                     '<td class="text-right">' +
  659.                     '<a href="#" onclick="postPdfRequest(' + equipo.idEqu + '); return false;" title="Generar resguardatario">' +
  660.                     '<i class="fas fa-file-pdf mr-2"></i>' +
  661.                     '</a>' +
  662.                     '<a href="javascript: void(0)" data-id="' + equipo.idEqu + '" class="btn-redirect" title="Ver equipo"><i class="fas fa-eye"></i></a>' +
  663.                     edit +
  664.                     '</td>' +
  665.                     '</tr>';
  666.                 //cambiarEstatus('estatus/' + equipo.idEqu, 'estatus');
  667.             });
  668.             $("#table-equipo").find($("tbody")).html(html);
  669.             $('#table-equipo').DataTable({
  670.                 "aaSorting": [],
  671.                 orderCellsTop: true,
  672.                 {# Define un valor predeterminado para LengthChange #}
  673.                 "pageLength": 50,
  674.                 "scrollX": true,
  675.                 {# sDom: 'lrtip', #}
  676.                 "bLengthChange" : true,
  677.                 language: {
  678.                     url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
  679.                 },
  680.             });
  681.         }
  682.         <!-- Actualizar tabla de bitácora -->
  683.         function actualizarEquipoRefaccion(data) {
  684.             $("#table-equipo").dataTable().fnClearTable();
  685.             $("#table-equipo").dataTable().fnDestroy();
  686.             var edit = "";
  687.             var html = "";
  688.             $.each(data, function (key, equipo) {
  689.                 {# Para edición del equipo #}
  690.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'true' : 'false' }}) {
  691.                     edit = '&nbsp;&nbsp;<a href="#editar-equipo" onclick="editarInfoEquipo(\'' + equipo.editar + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  692.                 }
  693.                 {# Solo para edición de estatus y reguardatario #}
  694.                 if (('{{ nivel }}' === '1' || '{{ nivel }}' === '2') && {{ unidadActiva ? 'false' : 'true' }}) {
  695.                     edit = '&nbsp;&nbsp;<a href="#editar-equiporesguardo" onclick="editarInfoEquipoResguardo(\'' + equipo.editar_resguardo + '\')" data-toggle="modal" title="Modificar equipo"><i class="fas fa-pen"></i></a>';
  696.                 }
  697.                 html +=
  698.                     '<tr id="idEqu' + equipo.idEqu + '">' +
  699.                     '<td class="marbete">' + equipo.marbete + '</td>' +
  700.                     '<td class="descripcion">' + equipo.descripcion + '</td>' +
  701.                     '<td class="marca">' + equipo.marca + '</td>' +
  702.                     '<td class="modelo">' + equipo.modelo + '</td>' +
  703.                     '<td class="uso">' + equipo.uso + '</td>' +
  704.                     '<td class="estatus">' + equipo.estatus + '</td>' +
  705.                     '<td class="emhv">' + equipo.emhv + '</td>' +
  706.                     '<td class="unidad">' + equipo.unidad + '</td>' +
  707.                     '<td class="usuario">' + equipo.usuario + '</td>' +
  708.                     '<td class="ubicacion">' + equipo.ubicacion + '</td>' +
  709.                     '<td class="text-right">' +
  710.                     '<a href="#" onclick="postPdfRequest(' + equipo.idEqu + '); return false;" title="Generar resguardatario">' +
  711.                     '<i class="fas fa-file-pdf mr-2"></i>' +
  712.                     '</a>' +
  713.                     '<a href="javascript: void(0)" data-id="' + equipo.idEqu + '" class="btn-redirect" title="Ver equipo"><i class="fas fa-eye"></i></a>' +
  714.                     edit +
  715.                     '</td>' +
  716.                     '</tr>';
  717.                 //cambiarEstatus('estatus/' + equipo.idEqu, 'estatus');
  718.             });
  719.             $("#table-equipo").find($("tbody")).html(html);
  720.             $('#table-equipo').DataTable({
  721.                 "aaSorting": [],
  722.                 orderCellsTop: true,
  723.                 {# Define un valor predeterminado para LengthChange #}
  724.                 "pageLength": 50,
  725.                 "scrollX": true,
  726.                 {# sDom: 'lrtip', #}
  727.                 "bLengthChange" : true,
  728.                 language: {
  729.                     url: 'https://cdn.datatables.net/plug-ins/1.10.22/i18n/Spanish.json'
  730.                 },
  731.             });
  732.         }
  733.         function cambiarEstatus(url, accion) {
  734.             $.ajax({
  735.                 url: url,
  736.                 dataType: "json",
  737.                 cache: false,
  738.                 contentType: false,
  739.                 processData: false,
  740.                 success: function (data) {
  741.                     let datos = data;
  742.                     let row = $('#idEqu'+ datos.idEqu);
  743.                     if (datos.estatus === "En operacion") {
  744.                         row.find('.estatus').html('<div class="badge bg-gradient-green d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  745.                     }
  746.                     if(datos.estatus === "Descompuesto") {
  747.                         row.find('.estatus').html('<div class="badge bg-gradient-orange d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  748.                     }
  749.                     if (datos.estatus === "Sin instalar") {
  750.                         row.find('.estatus').html('<div class="badge bg-gradient-primary d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  751.                     }
  752.                     if(datos.estatus === "En proceso de baja") {
  753.                         row.find('.estatus').html('<div class="badge bg-gradient-yellow d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  754.                     }
  755.                     if(datos.estatus === "Baja") {
  756.                         row.find('.estatus').html('<div class="badge bg-gradient-danger d-block" style="width: 8rem;">' + datos.estatus + '</div>');
  757.                     }
  758.                     //alertMessage(0, datos.mensaje);
  759.                 },
  760.                 error: function (data, text, error) {
  761.                     alertMessage(1, error);
  762.                 },
  763.                 complete: function (data) {
  764.                     // Se ejecuta al termino de la petición
  765.                 }
  766.             });
  767.         }
  768.     </script>
  769.     <script>
  770.         $(function () {
  771.             $(document).on('click', '.btn-redirect', function(){
  772.                 let data = $(this).attr('data-id');
  773.                 $.redirect("{{ path('app_equipo_show') }}", {idEqu: data}, "POST", "_self");
  774.             });
  775.         });
  776.     </script>
  777. {% endblock %}