diff --git a/src/layout/melissa/MelissaDocumentosTemplates.vue b/src/layout/melissa/MelissaDocumentosTemplates.vue index e770243..bb22fd5 100644 --- a/src/layout/melissa/MelissaDocumentosTemplates.vue +++ b/src/layout/melissa/MelissaDocumentosTemplates.vue @@ -9,7 +9,7 @@ * Lógica idêntica à DocumentTemplatesPage (composable * useDocumentTemplates + DocumentTemplateEditor reusado). */ -import { ref, onMounted } from 'vue'; +import { ref, computed, onMounted } from 'vue'; import { useToast } from 'primevue/usetoast'; import { useConfirm } from 'primevue/useconfirm'; @@ -29,11 +29,15 @@ const { fetchTemplates, create, update, remove, duplicate } = useDocumentTemplates(); -// ── Views ─────────────────────────────────────────────── +// ── Views: list | create | edit | preview ─────────────── const view = ref('list'); const editingTemplate = ref({}); const editingId = ref(null); +// Preview de template global (somente leitura) — abre antes de duplicar +// para o usuário ler o conteúdo. Inclui botão "Duplicar" no header. +const previewTemplate = ref(null); + // ── Acoes ─────────────────────────────────────────────── function openCreate() { editingId.value = null; @@ -56,6 +60,56 @@ function openEdit(tpl) { view.value = 'edit'; } +// Preview de template do sistema — leitura + botão Duplicar. +// Clique na sidebar de templates do sistema cai aqui em vez de +// duplicar direto. +function openPreview(tpl) { + previewTemplate.value = tpl; + view.value = 'preview'; +} + +// Monta HTML completo do template (cabeçalho + corpo + rodapé) com +// estilos básicos pra preview legível dentro do iframe. +const previewHtml = computed(() => { + const tpl = previewTemplate.value; + if (!tpl) return ''; + const cabecalho = tpl.cabecalho_html || ''; + const corpo = tpl.corpo_html || ''; + const rodape = tpl.rodape_html || ''; + return ` + +
+ + + + + ${cabecalho ? `