diff --git a/nuxt4-app/app/components/clientes/ClienteCard.vue b/nuxt4-app/app/components/clientes/ClienteCard.vue
new file mode 100644
index 0000000..f625247
--- /dev/null
+++ b/nuxt4-app/app/components/clientes/ClienteCard.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+ {{ clienteInitials }}
+
+
+
+
{{ cliente.name }}
+
+
+
+ {{ cliente.cedula }}
+
+
+
+ Empleado
+
+
+
+
+
+
+
+
+
+
+
+
+
Ubicación
+
{{ cliente.ubicacion }}
+
+
+
+
+
+
+
Teléfono
+
{{ cliente.telefono }}
+
+
+
+
+
+
+
Grupo
+
{{ cliente.grupo_estudio }}
+
+
+
+
+
+
+
ID CIAT
+
{{ cliente.idciat }}
+
+
+
+
+
+
+ ID: {{ cliente.id }}
+ Desde {{ formatDate(cliente.created_at) }}
+
+
+
+
+
+
+
+
diff --git a/nuxt4-app/app/pages/cuenta-cliente.vue b/nuxt4-app/app/pages/cuenta-cliente.vue
index 377cbfb..d2f8695 100644
--- a/nuxt4-app/app/pages/cuenta-cliente.vue
+++ b/nuxt4-app/app/pages/cuenta-cliente.vue
@@ -34,6 +34,18 @@
+
+
+
+
+
+
+
@@ -273,6 +285,17 @@ function isClienteSelected(clienteId: number): boolean {
return selectedClienteIds.value.includes(clienteId)
}
+// Get selected clientes for display cards
+const clientesSeleccionados = computed((): ClienteRecord[] => {
+ if (selectedClienteIds.value.length === 0) return []
+ return (clientes.value ?? []).filter(c => selectedClienteIds.value.includes(c.id))
+})
+
+// Remove a cliente from selection
+function removeCliente(clienteId: number) {
+ selectedClienteIds.value = selectedClienteIds.value.filter(id => id !== clienteId)
+}
+
// Filtrados que alimentan los métricos
const ingresosFiltrados = computed(() => {
return (ingresos.value ?? [])
@@ -350,3 +373,24 @@ onMounted(async () => {
}
})
+
+