fix(tramites): buscador incluye todas las columnas visibles

Antes solo miraba nombre/tipoTramite/tipoProceso/cliente/abogado/id,
así que buscar "Municipio" en la tab Administrativo no encontraba
nada aunque la columna Institución tuviera "Municipio de Panamá".

Nuevo rowHaystack(dept, r) concatena todos los campos que se
muestran en la tabla, excluyendo abogado y estatus (tienen sus
propios dropdowns al lado del buscador):

- Común:  id/codigo, cliente, nombre, instrucciones, fecha solicitud
- adm:    institución
- corp:   tipo documento
- mig:    tipo trámite, doc completa, permiso trabajo, dependientes,
          vencimiento
- lit:    tipo proceso, juzgado, circuito, esfera, instancia,
          doc completa, incidentes, amparo, término
- Todos:  involucrados (name + email)
This commit is contained in:
Soporte ZH Consultores
2026-07-09 09:35:12 -05:00
parent dbeacdde7b
commit bf93e8f79b
+17 -2
View File
@@ -381,13 +381,28 @@ const filterState = {
lit: { search:'', status:'', abog:'', esfera:'' }, lit: { search:'', status:'', abog:'', esfera:'' },
}; };
// Concatena todos los campos visibles de la fila (excepto abogado y estatus,
// que tienen su propio dropdown). Incluye involucrados (name+email) e
// instrucciones para que la búsqueda encuentre lo mismo que el usuario ve.
function rowHaystack(dept, r){
const parts = [
r.id, r.codigo, r.cliente, r.nombre, r.instrucciones,
r.fechaSolicitud, r.fecha_solicitud,
];
if (dept === 'adm') parts.push(r.institucion);
if (dept === 'corp') parts.push(r.tipoDocumento);
if (dept === 'mig') parts.push(r.tipoTramite, r.docCompleta, r.permisoTrabajo, r.dependientes, r.fechaVencimiento);
if (dept === 'lit') parts.push(r.tipoProceso, r.juzgado, r.circuito, r.esfera, r.instancia, r.docCompleta, r.incidentes, r.amparo, r.fechaTermino);
(r.involucrados || []).forEach(u => parts.push(u.name, u.email));
return parts.filter(Boolean).join(' ').toLowerCase();
}
function computeFiltered(dept){ function computeFiltered(dept){
const rows = data[dept]; const rows = data[dept];
const f = filterState[dept]; const f = filterState[dept];
const q = f.search.toLowerCase(); const q = f.search.toLowerCase();
const filtered = rows.filter(r => { const filtered = rows.filter(r => {
const txt = ((r.nombre||r.tipoTramite||r.tipoProceso||'')+(r.cliente||'')+(r.abogado||'')+(r.id||'')).toLowerCase(); if (q && !rowHaystack(dept, r).includes(q)) return false;
if (q && !txt.includes(q)) return false;
if (f.status && r.estatus !== f.status) return false; if (f.status && r.estatus !== f.status) return false;
if (f.abog && r.abogado !== f.abog) return false; if (f.abog && r.abogado !== f.abog) return false;
if (dept === 'lit' && f.esfera && r.esfera !== f.esfera) return false; if (dept === 'lit' && f.esfera && r.esfera !== f.esfera) return false;