Files
Plataforma-de-desarrolladores/SIG.Web/Pages/Desarrolladores/Tramites.aspx
Jorge Luis caudillo esparza 24bcb27d07 Cambios endocumentos y tramites
2026-09-28 16:20:20 -07:00

405 lines
20 KiB
Plaintext

<%@ Page Title="Trámites" Language="C#" MasterPageFile="~/Site.master"
AutoEventWireup="true" CodeFile="Tramites.aspx.cs"
Inherits="SIG.Web.Pages.Desarrolladores.Tramites" %>
<asp:Content ID="ContenidoEncabezado" ContentPlaceHolderID="H" runat="server">
<style>.sig-tablero-tramites {
background: #fff;
border: 1px solid #e7ecf1;
padding: 12px;
}
.sig-tablero-tramites tr[data-nivel="1"] > td:first-child {
border-left: 4px solid #fff;
}
.sig-tablero-tramites tr.sig-proceso-1 > td:first-child {
border-left-color: #89c4f4;
}
.sig-tablero-tramites tr.sig-proceso-2 > td:first-child {
border-left-color: #d9534f;
}
.sig-tablero-tramites tr.sig-proceso-3 > td:first-child,
.sig-tablero-tramites tr.sig-proceso-4 > td:first-child {
border-left-color: #3c763d;
}
.sig-tablero-tramites tr.sig-proceso-4 > td {
background-color: #dff0d8;
}
.sig-tablero-tramites .sig-tramites-columna-grupo {
display: none;
}
.sig-tablero-tramites .sig-tramites-agrupacion {
position: relative;
height: 42px;
}
.sig-tablero-tramites .sig-tramites-agrupacion > td.sig-tramites-columna-grupo {
display: block;
position: absolute;
left: 0;
right: 0;
top: 0;
min-height: 42px;
padding: 0;
background: #eef3f7;
box-sizing: border-box;
}
.sig-tablero-tramites .sig-tramites-agrupacion > td.sig-tramites-columna-normal {
display: none;
}
.sig-tramites-alternar-grupo {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
padding: 12px;
border: 0;
background: transparent;
color: #34495e;
font-weight: 600;
text-align: left;
}
.sig-tramites-alternar-grupo:focus {
outline: 2px solid #3598dc;
outline-offset: -2px;
}
.sig-tablero-tramites .sig-tramites-fila-oculta {
display: none;
}
.sig-tramites-comentario {
white-space: pre-wrap;
overflow-wrap: anywhere;
}
</style>
</asp:Content>
<asp:Content ID="ContenidoPrincipal" ContentPlaceHolderID="C" runat="server">
<asp:UpdatePanel ID="UpTablero" runat="server"
UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<sig:Filtros ID="UcFiltros" runat="server"
OnMostrarFiltros="UcFiltros_MostrarFiltros"
OnConsultar="UcFiltros_Consultar"
OnFiltrosChanged="UcFiltros_FiltrosCambiados" />
<div class="table-responsive sig-tablero-tramites">
<asp:GridView ID="GvTramites" runat="server"
AutoGenerateColumns="false"
EnableViewState="false"
DataKeyNames="CveSolicitud,Nivel"
GridLines="None"
CssClass="table table-hover Widthall filtrosig scrollsig"
data-scrollmargintop="350"
OnRowDataBound="GvTramites_FilaEnlazada"
OnRowCommand="GvTramites_Comando"
EmptyDataText="No hay solicitudes para los filtros seleccionados.">
<Columns>
<asp:TemplateField HeaderStyle-CssClass="sig-tramites-columna-grupo"
ItemStyle-CssClass="sig-tramites-columna-grupo">
<ItemTemplate>
<button type="button" class="sig-tramites-alternar-grupo" aria-expanded="true">
<span><%#: Eval("Agrupacion") %></span>
<i class="fa fa-chevron-up" aria-hidden="true"></i>
</button>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Cliente" HeaderText="Cliente" />
<asp:BoundField DataField="Tramite" HeaderText="Trámite" />
<asp:TemplateField HeaderText="Fraccionamiento · Etapa">
<ItemTemplate>
<asp:HyperLink ID="EnlaceFraccionamiento" runat="server"
ToolTip="Ver detalle del fraccionamiento">
<asp:Literal ID="NombreFraccionamientoEtapa" runat="server"
Mode="Encode" />
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Avance" HeaderText="Avance"
DataFormatString="{0:0.##} %" />
<asp:BoundField DataField="NombreEstatusProceso" HeaderText="Proceso" />
<asp:BoundField DataField="Estatus" HeaderText="Estatus" />
<asp:BoundField DataField="FechaInicio" HeaderText="Fecha inicio"
DataFormatString="{0:dd/MM/yyyy}" />
<asp:TemplateField HeaderText="Acciones" HeaderStyle-CssClass="sig-columna-acciones" ItemStyle-CssClass="sig-columna-acciones">
<ItemTemplate>
<asp:LinkButton ID="BtnEditarEstatus" runat="server"
CssClass="btn btn-circle btn-sm blue"
CausesValidation="false" CommandName="EditarEstatus"
ToolTip="Editar estatus" aria-label="Editar estatus">
<i class="fa fa-pencil" aria-hidden="true"></i>
</asp:LinkButton>
<asp:LinkButton ID="BtnDocumentos" runat="server"
CssClass="btn btn-circle btn-sm blue"
CausesValidation="false" CommandName="Documentos"
ToolTip="Documentos" aria-label="Documentos">
<i class="fa fa-folder-open-o" aria-hidden="true"></i>
</asp:LinkButton>
<asp:LinkButton ID="BtnComentarios" runat="server"
CssClass="btn btn-circle btn-sm blue"
CausesValidation="false" CommandName="Comentarios"
ToolTip="Comentarios" aria-label="Comentarios">
<i class="fa fa-comment-o" aria-hidden="true"></i>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="AvanceTablero" runat="server" DisplayAfter="250">
<ProgressTemplate>
<div class="text-center">
<i class="fa fa-circle-o-notch fa-spin" aria-hidden="true"></i>
Consultando trámites...
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<div id="ModalFiltrosTramites" class="modal fade" tabindex="-1"
role="dialog" aria-labelledby="TituloFiltrosTramites">
<div class="modal-dialog">
<asp:UpdatePanel ID="UpFiltros" runat="server"
UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Cerrar">&times;</button>
<h4 id="TituloFiltrosTramites" class="modal-title">Filtros</h4>
</div>
<div class="modal-body sig-filtros-estatus">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="DdlAgrupacion"
Text="Agrupación" />
<asp:DropDownList ID="DdlAgrupacion" runat="server"
CssClass="form-control select2me" Width="100%" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="DdlFraccionamiento"
Text="Fraccionamiento" />
<asp:DropDownList ID="DdlFraccionamiento" runat="server"
CssClass="form-control select2me" Width="100%" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="LstEstatus"
Text="Estatus de los trámites" />
<asp:ListBox ID="LstEstatus" runat="server"
SelectionMode="Multiple" Rows="7"
CssClass="form-control select2me sig-estatus-seleccionados"
Width="100%" />
</div>
<div class="form-group">
<asp:CheckBox ID="ChkMostrarAutorizados" runat="server"
CssClass="sig-mostrar-autorizados" Text=" Mostrar autorizados" />
<asp:CheckBox ID="ChkMostrarCancelados" runat="server"
CssClass="sig-mostrar-cancelados" Text=" Mostrar cancelados" />
</div>
<div class="form-group">
<asp:CheckBox ID="ChkSoloActivos" runat="server"
Checked="true" Text=" Solo activos" />
</div>
<div id="CampoSoloBloqueados" runat="server" class="form-group">
<asp:CheckBox ID="ChkSoloBloqueados" runat="server"
Text=" Solo bloqueados" />
<p class="help-block">El filtro de bloqueados está pendiente de habilitar.</p>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn default" data-dismiss="modal">Cancelar</button>
<asp:Button ID="BtnAplicarFiltros" runat="server"
Text="Aplicar filtros" CssClass="btn blue"
CausesValidation="false" OnClick="BtnAplicarFiltros_Click" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<asp:Panel ID="PanelSeguimiento"
runat="server"
CssClass="sig_panel_lateral sig_panel_derecho"
role="dialog"
aria-modal="true"
aria-hidden="true"
tabindex="-1"
aria-label="Seguimiento de solicitud">
<div class="sig_panel_contenido">
<asp:UpdatePanel ID="UpEncabezadoSeguimiento" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div class="sig_panel_cabecera">
<div>
<h4>
<asp:Literal ID="TituloSeguimiento" runat="server" Mode="Encode" />
</h4>
<p>
<asp:HyperLink ID="EnlaceFraccionamientoSeguimiento"
runat="server"
ToolTip="Ver detalle del fraccionamiento">
<asp:Literal ID="NombreFraccionamientoEtapaSeguimiento" runat="server" Mode="Encode" />
</asp:HyperLink>
</p>
</div>
<button type="button" class="btn default" data-sig-panel-cerrar="" aria-label="Cerrar seguimiento">Cerrar</button>
</div>
<asp:Panel ID="SeccionAccionesPendientesSeguimiento" runat="server" CssClass="sig-seguimiento-seccion" Visible="false">
<h4>Acciones pendientes</h4>
<div class="table-responsive">
<asp:GridView ID="AccionesPendientesSeguimiento"
runat="server"
AutoGenerateColumns="false"
GridLines="None"
CssClass="table table-striped table-hover Widthall"
EmptyDataText="">
<Columns>
<asp:BoundField DataField="Descripcion" HeaderText="Acción pendiente" HtmlEncode="true" />
</Columns>
</asp:GridView>
</div>
</asp:Panel>
<asp:Literal ID="AvisoPagosSeguimiento" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<div class="sig_panel_cuerpo">
<ajax:TabContainer ID="PestanasSeguimiento"
runat="server"
Width="100%"
AutoPostBack="false"
CssClass="ajax__tab_xp sig-seguimiento-pestanas">
<Tabs>
<ajax:TabPanel ID="PestanaSeguimientoEstatus" runat="server" HeaderText="Estatus">
<ContentTemplate>
<sig:EstatusSolicitud ID="UcEstatusSolicitud" runat="server"
OnCambiado="EstatusSeguimiento_Cambiado"
OnSeleccionCambiada="EstatusSeguimiento_SeleccionCambiada"
OnRequisitosPendientes="EstatusSeguimiento_RequisitosPendientes" />
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="PestanaSeguimientoCondiciones" runat="server" HeaderText="Condiciones">
<ContentTemplate>
<sig:CondicionesSolicitud ID="UcCondicionesSolicitud" runat="server"
OnCambiado="CondicionesSeguimiento_Cambiado" />
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="PestanaSeguimientoDocumentos" runat="server" HeaderText="Documentos">
<ContentTemplate>
<sig:DocumentosSolicitud ID="UcDocumentosSolicitud"
runat="server"
OnCambiado="DocumentosSeguimiento_Cambiados"
OnMostrarSolicitado="DocumentosSeguimiento_MostrarSolicitado"/>
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="PestanaSeguimientoComentarios" runat="server" HeaderText="Comentarios">
<ContentTemplate>
<sig:ComentariosSolicitud ID="UcComentariosSolicitud" runat="server"
OnCambiado="ComentariosSeguimiento_Cambiado"
OnMostrarSolicitado="ComentariosSeguimiento_MostrarSolicitado" />
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="PestanaSeguimientoSupervisiones" runat="server" HeaderText="Supervisiones">
<ContentTemplate>
<sig:SupervisionesEtapa ID="UcSupervisionesSolicitud" runat="server" />
</ContentTemplate>
</ajax:TabPanel>
<ajax:TabPanel ID="PestanaSeguimientoPagos" runat="server" HeaderText="Pagos">
<ContentTemplate>
<sig:PagosSolicitud ID="UcPagosSolicitud" runat="server" OnCambiado="PagosSeguimiento_Cambiados" />
</ContentTemplate>
</ajax:TabPanel>
</Tabs>
</ajax:TabContainer>
</div>
</div>
</asp:Panel>
</asp:Content>
<asp:Content ID="ContenidoScripts" ContentPlaceHolderID="J" runat="server">
<script >
(function (ventana, documento, $) {
"use strict";
ventana.SIGTableroTramites = ventana.SIGTableroTramites || {};
ventana.SIGTableroTramites.mostrarModal = function (identificadorModal) {
$(documento.getElementById(identificadorModal)).modal("show");
};
ventana.SIGTableroTramites.ocultarModal = function (identificadorModal) {
$(documento.getElementById(identificadorModal)).modal("hide");
};
// La delegación conserva el comportamiento al reemplazar el UpdatePanel.
if (ventana.SIG_EVENTOS_TABLERO_TRAMITES_REGISTRADOS === true) {
return;
}
$(documento).on("click.sigTableroTramites", ".sig-tramites-alternar-grupo", function () {
var boton = $(this);
var tabla = boton.closest("table");
var cveAgrupacion = boton.closest("tr").attr("data-cve-agrupacion");
var expandir = boton.attr("aria-expanded") !== "true";
tabla.find('tr[data-nivel="1"]').filter(function () {
return $(this).attr("data-cve-agrupacion") === cveAgrupacion;
}).toggleClass("sig-tramites-fila-oculta", !expandir);
boton.attr("aria-expanded", expandir ? "true" : "false");
boton.find(".fa")
.toggleClass("fa-chevron-up", expandir)
.toggleClass("fa-chevron-down", !expandir);
});
// Al agregar una selección se sincroniza su check. Las eliminaciones son
// independientes: no se fuerza nuevamente la opción que el usuario quitó.
$(documento).on("change.sigTableroTramites", ".sig-estatus-seleccionados", function () {
var lista = $(this);
var contenedor = lista.closest(".sig-filtros-estatus");
var anteriores = (lista.attr("data-sig-estatus-anteriores") || "").split(",");
["Autorizado", "Cancelado"].forEach(function (codigo) {
var seleccionada = lista.find("option:selected").filter(function () {
return $(this).attr("data-codigo-estatus") === codigo &&
anteriores.indexOf(this.value) < 0;
}).length > 0;
if (seleccionada) {
var clase = codigo === "Autorizado" ? ".sig-mostrar-autorizados" :
".sig-mostrar-cancelados";
contenedor.find(clase + " input").prop("checked", true);
}
});
lista.attr("data-sig-estatus-anteriores", (lista.val() || []).join(","));
if ($.uniform && $.uniform.update) {
$.uniform.update(contenedor.find('input[type="checkbox"]'));
}
});
$(documento).on("change.sigTableroTramites",
".sig-mostrar-autorizados input, .sig-mostrar-cancelados input", function () {
if (!this.checked) {
return;
}
var casilla = $(this);
var codigo = casilla.closest(".sig-mostrar-autorizados").length ?
"Autorizado" : "Cancelado";
var lista = casilla.closest(".sig-filtros-estatus").find(".sig-estatus-seleccionados");
lista.find("option").filter(function () {
return $(this).attr("data-codigo-estatus") === codigo;
}).prop("selected", true);
lista.trigger("change");
});
ventana.SIG_EVENTOS_TABLERO_TRAMITES_REGISTRADOS = true;
}(window, document, jQuery));
</script>
</asp:Content>