feat: Templates persistentes en servidor + Constructor con tabs por tipo de comando
- Templates ahora se guardan en servidor (data/templates.json) disponibles para todos - API CRUD para templates: GET/POST /api/templates, GET/PUT/DELETE /api/templates/[id] - Constructor de comandos rediseñado con tabs: Texto, Feed, Cortar, Pulse, QR, Barcode - Cada tipo de comando tiene su formulario específico con campos relevantes - Eliminado QuickActions (integrado en tabs del constructor) - Mejorada UI de lista de impresoras con renderizado condicional - Agregado data/ a .gitignore (datos de runtime)
This commit is contained in:
@@ -1,20 +1,39 @@
|
||||
<script setup lang="ts">
|
||||
const templates = useTemplates()
|
||||
const queue = usePrintQueue()
|
||||
const toast = useToast()
|
||||
|
||||
// Cargar templates al montar
|
||||
onMounted(() => {
|
||||
templates.fetchTemplates()
|
||||
})
|
||||
|
||||
function loadTemplate(id: string) {
|
||||
const ops = templates.loadTemplate(id)
|
||||
if (ops) {
|
||||
queue.loadFromTemplate(ops)
|
||||
toast.add({ title: 'Template cargado en la cola', color: 'success' })
|
||||
}
|
||||
}
|
||||
|
||||
function duplicateTemplate(id: string) {
|
||||
templates.duplicateTemplate(id)
|
||||
async function duplicateTemplate(id: string) {
|
||||
const result = await templates.duplicateTemplate(id)
|
||||
if (result) {
|
||||
toast.add({ title: 'Template duplicado', color: 'success' })
|
||||
} else {
|
||||
toast.add({ title: 'Error al duplicar template', color: 'error' })
|
||||
}
|
||||
}
|
||||
|
||||
function deleteTemplate(id: string) {
|
||||
templates.deleteTemplate(id)
|
||||
async function deleteTemplate(id: string) {
|
||||
if (!confirm('¿Eliminar este template?')) return
|
||||
|
||||
const result = await templates.deleteTemplate(id)
|
||||
if (result) {
|
||||
toast.add({ title: 'Template eliminado', color: 'success' })
|
||||
} else {
|
||||
toast.add({ title: 'Error al eliminar template', color: 'error' })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -29,7 +48,11 @@ function deleteTemplate(id: string) {
|
||||
</UBadge>
|
||||
</div>
|
||||
|
||||
<div v-if="templates.templates.value.length === 0" class="text-center py-12">
|
||||
<div v-if="templates.loading.value" class="flex justify-center py-12">
|
||||
<UIcon name="i-heroicons-arrow-path" class="w-8 h-8 animate-spin text-gray-400" />
|
||||
</div>
|
||||
|
||||
<div v-else-if="templates.templates.value.length === 0" class="text-center py-12">
|
||||
<UIcon name="i-heroicons-document-duplicate" class="w-12 h-12 text-gray-400 dark:text-gray-600 mx-auto mb-3" />
|
||||
<p class="text-gray-500 dark:text-gray-400 mb-2">
|
||||
No hay templates guardados
|
||||
|
||||
Reference in New Issue
Block a user