Feat: Implementar filtrado de muestras en tab Impresión Global
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s

- Crear subcategorías dinámicas basadas en las muestras de la sesión
- Los filtros en Impresión Global ahora controlan qué muestras se muestran
- Filtrar accordionItems según subcategorías activas en impresion-global
- Cada muestra aparece como opción de filtro con su nombre o "Muestra #"
This commit is contained in:
2025-10-18 17:22:18 -06:00
parent 4e14ec0a3e
commit 0fbc11e8f9

View File

@@ -261,8 +261,8 @@ const tabs = [
},
]
// Definición de subcategorías por tab
const subcategoriasPorTab = {
// Definición de subcategorías estáticas por tab
const subcategoriasEstaticasPorTab = {
'organoleptica': [
{ value: 'fragancia-aroma' as Subcategoria, label: 'Fragancia/Aroma' },
{ value: 'sabor' as Subcategoria, label: 'Sabor' },
@@ -282,19 +282,41 @@ const subcategoriasPorTab = {
{ value: 'impresion-global' as Subcategoria, label: 'Impresión Global' },
],
'defectos': [],
'impresion-global': [],
}
// Subcategorías dinámicas para Impresión Global (basadas en muestras)
const subcategoriasMuestras = computed(() => {
if (!sesionActiva.value) return []
return sesionActiva.value.muestras.map((muestra, index) => ({
value: `muestra-${muestra.muestraId}` as Subcategoria,
label: muestra.nombre || `Muestra ${index + 1}`,
}))
})
// Subcategorías disponibles para la tab activa
const subcategoriasDisponibles = computed(() => {
return subcategoriasPorTab[tabActiva.value] || []
if (tabActiva.value === 'impresion-global') {
return subcategoriasMuestras.value
}
return subcategoriasEstaticasPorTab[tabActiva.value] || []
})
// Items del accordion
const accordionItems = computed(() => {
if (!sesionActiva.value) return []
return sesionActiva.value.muestras.map((muestra) => ({
let muestrasAMostrar = sesionActiva.value.muestras
// Si estamos en impresion-global y hay filtros activos, filtrar muestras
if (tabActiva.value === 'impresion-global' && subcategoriasActivas.value.length > 0) {
muestrasAMostrar = sesionActiva.value.muestras.filter((muestra) => {
const muestraValue = `muestra-${muestra.muestraId}`
return subcategoriasActivas.value.includes(muestraValue as Subcategoria)
})
}
return muestrasAMostrar.map((muestra) => ({
label: '', // Usaremos slot #default para el contenido del header
value: `muestra-${muestra.muestraId}`,
muestra, // Pasar referencia directa sin clonar