diff --git a/src/components/Holos/ProductTable.vue b/src/components/Holos/ProductTable.vue new file mode 100644 index 0000000..15eecce --- /dev/null +++ b/src/components/Holos/ProductTable.vue @@ -0,0 +1,244 @@ + + + diff --git a/src/components/Holos/TemplateCard.vue b/src/components/Holos/TemplateCard.vue deleted file mode 100644 index 1a44089..0000000 --- a/src/components/Holos/TemplateCard.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - \ No newline at end of file diff --git a/src/pages/Templates/Composables/useTemplateStorage.js b/src/pages/Templates/Composables/useTemplateStorage.js deleted file mode 100644 index 8c5c0a3..0000000 --- a/src/pages/Templates/Composables/useTemplateStorage.js +++ /dev/null @@ -1,44 +0,0 @@ -import { ref } from 'vue'; -import ConfigCotizacion from '../Configs/ConfigCotizacion' - -const STORAGE_KEY = 'holos_templates'; - -export function useTemplateStorage() { - const templates = ref([]); - - const loadTemplates = () => { - const stored = localStorage.getItem(STORAGE_KEY); - templates.value = stored ? JSON.parse(stored) : getDefaultTemplates(); - console.log('Templates cargados:', templates.value); // DEBUG - return templates.value; - }; - - const getDefaultTemplates = () => { - const defaults = [ - { - id: 'temp-cot-001', - nombre: 'Cotización IP', - descripcion: 'Plantilla de cotización para productos y servicios tecnológicos', - componente: 'TempCot', - config: ConfigCotizacion, - icono: 'description', - color: 'blue', - activa: true, - fechaCreacion: new Date().toISOString() - } - ]; - console.log('Default templates:', defaults); - return defaults; - }; - - const getTemplateById = (id) => { - if (templates.value.length === 0) loadTemplates(); - return templates.value.find(t => t.id === id); - }; - - return { - templates, - loadTemplates, - getTemplateById - }; -} \ No newline at end of file diff --git a/src/pages/Templates/Configs/ConfigCotizacion.js b/src/pages/Templates/Configs/ConfigCotizacion.js index a24bdd6..b8b5321 100644 --- a/src/pages/Templates/Configs/ConfigCotizacion.js +++ b/src/pages/Templates/Configs/ConfigCotizacion.js @@ -1,69 +1,174 @@ export default { templateId: 'temp-cot-001', - nombre: 'Cotización IP', - + nombre: 'Cotización', + branding: { logo: null, primaryColor: '#dc2626', - secondaryColor: '#1e40af', - logoPartA: 'GOL', - logoPartB: 'SYSTEMS' + slogan: ' ', }, campos: [ - { - seccion: 'Información del Documento', - campos: [ - { - key: 'folio', - label: 'Número de Folio', - tipo: 'text', - required: true, - placeholder: 'COT-2025-001' - }, - { - key: 'fechaRealizacion', - label: 'Fecha de Realización', - tipo: 'date', - required: true - }, - { - key: 'vigencia', - label: 'Vigencia', - tipo: 'text', - required: true, - placeholder: '30 días' - } - ] - }, { seccion: 'Datos de la Empresa', campos: [ { key: 'empresaNombre', - label: 'Nombre', + label: 'Nombre de la Empresa', tipo: 'text', required: true, - defaultValue: 'GOLSYSTEMS' + placeholder: 'Ej: GOLSYSTEMS', }, { key: 'empresaWeb', label: 'Sitio Web', tipo: 'url', - defaultValue: 'www.golsystems.com' + required: false, + placeholder: 'www.ejemplo.com', }, { key: 'empresaEmail', label: 'Email', tipo: 'email', required: true, - defaultValue: 'contacto@golsystems.com' + placeholder: 'contacto@ejemplo.com', }, { key: 'empresaTelefono', label: 'Teléfono', tipo: 'tel', - required: true + required: true, + placeholder: '+52 999 123 4567', + }, + { + key: 'empresaRFC', + label: 'RFC', + tipo: 'text', + required: true, + placeholder: 'GME111116GJA', + }, + { + key: 'empresaDireccion', + label: 'Dirección', + tipo: 'textarea', + required: true, + placeholder: 'Dirección completa', + } + ] + }, + { + seccion: 'Datos Bancarios', + campos: [ + { + key: 'bancoBanco', + label: 'Banco', + tipo: 'text', + required: false, + placeholder: 'Banco Nacional', + }, + { + key: 'bancoTipoCuenta', + label: 'Tipo de Cuenta', + tipo: 'text', + required: false, + placeholder: 'Cuenta de cheques', + }, + { + key: 'bancoCuenta', + label: 'Número de Cuenta', + tipo: 'text', + required: false, + placeholder: '1234567890', + } + ] + }, + { + seccion: 'Datos del Cliente', + campos: [ + { + key: 'clienteNombre', + label: 'Nombre del Cliente', + tipo: 'text', + required: true, + placeholder: 'Nombre completo', + }, + { + key: 'clienteRFC', + label: 'RFC', + tipo: 'text', + required: false, + placeholder: 'RFC del cliente', + }, + { + key: 'clienteDomicilio', + label: 'Domicilio', + tipo: 'text', + required: false, + placeholder: 'Dirección', + }, + { + key: 'clienteTelefono', + label: 'Teléfono', + tipo: 'tel', + required: false, + placeholder: '+52 999 123 4567', + } + ] + }, + { + seccion: 'Datos del Ejecutivo', + campos: [ + { + key: 'ejecutivoNombre', + label: 'Nombre del Ejecutivo', + tipo: 'text', + required: true, + placeholder: 'Nombre completo', + }, + { + key: 'ejecutivoCorreo', + label: 'Correo', + tipo: 'email', + required: true, + placeholder: 'ejecutivo@ejemplo.com', + }, + { + key: 'ejecutivoCelular', + label: 'Celular', + tipo: 'tel', + required: true, + placeholder: '+52 999 123 4567', + } + ] + }, + { + seccion: 'Detalles del Documento', + campos: [ + { + key: 'folio', + label: 'Número de Folio', + tipo: 'text', + required: true, + placeholder: '17016', + }, + { + key: 'fechaRealizacion', + label: 'Fecha de Realización', + tipo: 'date', + required: true, + }, + { + key: 'vigencia', + label: 'Vigencia', + tipo: 'date', + required: false, + }, + { + key: 'observaciones', + label: 'Observaciones', + tipo: 'textarea', + required: false, + placeholder: 'Observaciones adicionales', } ] } diff --git a/src/pages/Templates/Form.vue b/src/pages/Templates/Form.vue index 221ebe9..5ff2d49 100644 --- a/src/pages/Templates/Form.vue +++ b/src/pages/Templates/Form.vue @@ -1,120 +1,203 @@ \ No newline at end of file diff --git a/src/router/Index.js b/src/router/Index.js index 3f923cc..5273e92 100644 --- a/src/router/Index.js +++ b/src/router/Index.js @@ -374,24 +374,12 @@ const router = createRouter({ }, { path: 'templates', - name: 'admin.template', + name: 'admin.templates.index', meta: { title: 'Plantillas', icon: 'templates', }, - redirect: '/admin/templates', - children: [ - { - path: '', - name: 'admin.templates.index', - component: () => import('@Pages/Templates/Index.vue'), - }, - { - path: ':id/fill', - name: 'admin.templates.form', - component: () => import('@Pages/Templates/Form.vue'), - } - ] + component: () => import('@Pages/Templates/Form.vue'), }, ] },