feat: Sistema de gestión de impresoras persistente

- Crear modelo Printer con campos: id, name, host, deviceId, timeout, isDefault
- Almacenamiento persistente en data/printers.json
- APIs CRUD: GET/POST /api/printers, GET/PUT/DELETE /api/printers/:id
- API para seleccionar impresora activa: POST /api/printers/select
- Endpoint de impresión ahora usa la impresora seleccionada o la especificada por printerId
- Composable usePrinters() para el cliente
- UI: Selector de impresora en sidebar, tab Impresoras en mobile
- Componentes: PrintersList, PrintersCard, PrintersForm, PrintersSelector
This commit is contained in:
2025-11-25 00:44:50 -06:00
parent 955584275b
commit e97b2b4d8e
15 changed files with 1006 additions and 6 deletions

View File

@@ -2,6 +2,12 @@
const activeTab = ref('constructor')
const isDesktop = useMediaQuery('(min-width: 768px)')
const queue = usePrintQueue()
const printers = usePrinters()
// Cargar impresoras al iniciar
onMounted(() => {
printers.fetchPrinters()
})
</script>
<template>
@@ -23,6 +29,11 @@ const queue = usePrintQueue()
</p>
</div>
<!-- Selector de impresora -->
<div class="p-4 border-b border-gray-200 dark:border-gray-800">
<PrintersSelector />
</div>
<div class="flex-1 overflow-y-auto p-4">
<QueuePrintQueue />
</div>
@@ -50,6 +61,10 @@ const queue = usePrintQueue()
<template v-else-if="activeTab === 'templates'">
<TemplatesTemplateList />
</template>
<template v-else-if="activeTab === 'printers'">
<PrintersList />
</template>
</div>
</main>
</div>