+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/Draggable.vue b/src/components/Holos/Draggable.vue
new file mode 100644
index 0000000..4bd032c
--- /dev/null
+++ b/src/components/Holos/Draggable.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ {{ description }}
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/Dropdown.vue b/src/components/Holos/Dropdown.vue
index a794f48..83eba7f 100644
--- a/src/components/Holos/Dropdown.vue
+++ b/src/components/Holos/Dropdown.vue
@@ -9,7 +9,7 @@ const props = defineProps({
contentClasses: {
default: () => [
'pt-1',
- 'bg-primary text-primary-t dark:bg-primary-d dark:text-primary-dt'
+ '!bg-white dark:!bg-primary-d !text-gray-800 dark:!text-primary-dt'
],
type: Array
},
diff --git a/src/components/Holos/Layout/RhApp.vue b/src/components/Holos/Layout/RhApp.vue
new file mode 100644
index 0000000..c3f6332
--- /dev/null
+++ b/src/components/Holos/Layout/RhApp.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDF/Canvas.vue b/src/components/Holos/PDF/Canvas.vue
new file mode 100644
index 0000000..92c32c1
--- /dev/null
+++ b/src/components/Holos/PDF/Canvas.vue
@@ -0,0 +1,650 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDF/Draggable.vue b/src/components/Holos/PDF/Draggable.vue
new file mode 100644
index 0000000..4bd032c
--- /dev/null
+++ b/src/components/Holos/PDF/Draggable.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ {{ description }}
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDF/PDFViewport.vue b/src/components/Holos/PDF/PDFViewport.vue
new file mode 100644
index 0000000..5ea3d6a
--- /dev/null
+++ b/src/components/Holos/PDF/PDFViewport.vue
@@ -0,0 +1,353 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDF/PageSizeSelector.vue b/src/components/Holos/PDF/PageSizeSelector.vue
new file mode 100644
index 0000000..1ec725e
--- /dev/null
+++ b/src/components/Holos/PDF/PageSizeSelector.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+ Tamaños de página
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDF/TextFormatter.vue b/src/components/Holos/PDF/TextFormatter.vue
new file mode 100644
index 0000000..eec22f7
--- /dev/null
+++ b/src/components/Holos/PDF/TextFormatter.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+ Estilo:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tamaño:
+
+
+
+
+
+
+
+
+ Alinear:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Color:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Elemento de texto seleccionado
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/PDFViewport.vue b/src/components/Holos/PDFViewport.vue
new file mode 100644
index 0000000..967ca1b
--- /dev/null
+++ b/src/components/Holos/PDFViewport.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Holos/Skeleton/Sidebar/Drop.vue b/src/components/Holos/Skeleton/Sidebar/Drop.vue
new file mode 100644
index 0000000..f69bf4f
--- /dev/null
+++ b/src/components/Holos/Skeleton/Sidebar/Drop.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Holos/Skeleton/Sidebar/Left.vue b/src/components/Holos/Skeleton/Sidebar/Left.vue
index 3ed0363..33a06a6 100644
--- a/src/components/Holos/Skeleton/Sidebar/Left.vue
+++ b/src/components/Holos/Skeleton/Sidebar/Left.vue
@@ -1,8 +1,7 @@
@@ -29,30 +27,32 @@ const year = (new Date).getFullYear();
:class="{'w-64': leftSidebar.isClosed, 'w-screen': leftSidebar.isOpened}"
>
Gestión de grados académicos y certificaciones profesionales
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
María González López
+
Información académica y certificaciones profesionales
+
+
+
+
+
+
+
+ Grados Académicos
+
+
+
+
+
+
+
+
Licenciatura en Ingeniería en Sistemas
+
Universidad Nacional Autónoma de México
+
Año: 2015
+
+
+
+ Licenciatura
+
+
+
+
+
+
+
+
Maestría en Ciencias de la Computación
+
Instituto Tecnológico de Monterrey
+
Año: 2018
+
+
+
+ Maestría
+
+
+
+
+
+
+
+
+
+
+ Certificaciones
+
+
+
+
+
+
+
+
AWS Certified Solutions Architect
+
Amazon Web Services
+
Obtenida: 2023-05-15
+
Vigencia: 2026-05-15
+
+
+
+ Vigente
+
+
+
+
+
+
+
+
+
Certified ScrumMaster
+
Scrum Alliance
+
Obtenida: 2022-08-20
+
Vigencia: 2024-08-20
+
+
+
+ Vencida
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Additional/Index.vue b/src/pages/Additional/Index.vue
new file mode 100644
index 0000000..4eb8299
--- /dev/null
+++ b/src/pages/Additional/Index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
Información Adicional
+
Deportes, evaluaciones de desempeño y desarrollo profesional
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
María González López
+
Información adicional y evaluación de desempeño
+
+
+
+
+
+
+
+ Deportes que Practica
+
+
+ Natación
+ Yoga
+ Ciclismo
+
+
+
+
+
+
+
+ Evaluación de Desempeño
+
+
+
+
+
+
+
+
Puntuación General
+
+
+ Excelente
+
+
+
+
+
92/100
+
Evaluado el 2024-01-15
+
+
+
+
+
+
Archivo de Evaluación
+
+
+
+
evaluacion_maria_2024.pdf
+
Evaluador: Juan Pérez
+
+
+
+
+
+
+
+
Observaciones
+
+ Excelente desempeño...
+
+
+
+
+
+
+
+
+ Objetivos y Progreso
+
+
+
+
+
+
+
Completar certificación en React Advanced
+
75%
+
+
Fecha límite: 2024-03-30
+
+
+
+
+
+
+
+
+
Liderar proyecto de refactorización
+
45%
+
+
Fecha límite: 2024-04-15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Auth/Login.vue b/src/pages/Auth/Login.vue
index 6d162dc..0bf2be0 100644
--- a/src/pages/Auth/Login.vue
+++ b/src/pages/Auth/Login.vue
@@ -30,11 +30,39 @@ const login = () => {
defineUser(res.user)
defineCsrfToken(res.csrf)
- location.replace('/')
+ // Redirección basada en roles
+ redirectBasedOnRole(res.userRoles)
}
});
};
+const redirectBasedOnRole = (userRoles) => {
+ // Si no tiene roles o el array está vacío, redirigir a "/"
+ if (!userRoles || userRoles.length === 0) {
+ router.push('/')
+ return
+ }
+
+ // Verificar si tiene el rol coordinador
+ const hasCoordinatorRole = userRoles.some(role => role.name === 'coordinator')
+ if (hasCoordinatorRole) {
+ router.push('/coordinator')
+ return
+ }
+
+ // Verificar si tiene rol admin o developer
+ const hasAdminOrDeveloperRole = userRoles.some(role =>
+ role.name === 'admin' || role.name === 'developer'
+ )
+ if (hasAdminOrDeveloperRole) {
+ router.push('/admin')
+ return
+ }
+
+ // Si no cumple ninguna condición, redirigir a "/"
+ router.push('/')
+};
+
/** Ciclos */
onMounted(() => {
if (hasToken()) {
diff --git a/src/pages/Courses/Assignamment.vue b/src/pages/Courses/Assignamment.vue
new file mode 100644
index 0000000..c354288
--- /dev/null
+++ b/src/pages/Courses/Assignamment.vue
@@ -0,0 +1,281 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Dashboard/Module.js b/src/pages/Dashboard/Module.js
new file mode 100644
index 0000000..cd617bf
--- /dev/null
+++ b/src/pages/Dashboard/Module.js
@@ -0,0 +1,16 @@
+import { lang } from '@Lang/i18n';
+
+// Ruta API
+const apiTo = (name, params = {}) => route(`dashboard.${name}`, params)
+
+// Ruta visual
+const viewTo = ({ name = '', params = {}, query = {} }) => view({ name: `dashboard.${name}`, params, query })
+
+// Obtener traducción del componente
+const transl = (str) => lang(`dashboard.${str}`)
+
+export {
+ viewTo,
+ apiTo,
+ transl
+}
\ No newline at end of file
diff --git a/src/pages/Employees/Index.vue b/src/pages/Employees/Index.vue
new file mode 100644
index 0000000..27327bb
--- /dev/null
+++ b/src/pages/Employees/Index.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
Empleados
+
Gestión de información general de empleados
+
+
+
+
+
+
+
+
+
+ {}"
+ >
+
+
+
+
+
+
+
+
Lista de Empleados
+
3 empleados encontrados
+
+
+
+
+
+
+
+
Nombre Completo
+
Departamento
+
Sede
+
Fecha Ingreso
+
Estado
+
Acciones
+
+
+
+
+
+
+
+
María González López
+
GOLM900515
+
+
Tecnología
+
Ciudad de México
+
2023-01-15
+
+ Activo
+
+
+
+
+
+
+
+
+
+
+
+
Carlos Rodríguez Martín
+
ROMC880822
+
+
Marketing
+
Guadalajara
+
2022-03-10
+
+ Activo
+
+
+
+
+
+
+
+
+
+
+
+
Ana Martínez Sánchez
+
MASA921203
+
+
Finanzas
+
Monterrey
+
2023-06-01
+
+ Activo
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Events/Assignamment.vue b/src/pages/Events/Assignamment.vue
new file mode 100644
index 0000000..49d3b3c
--- /dev/null
+++ b/src/pages/Events/Assignamment.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
Asignación de Presupuesto Anual
+
Gestiona y asigna el presupuesto anual para eventos y actividades
+
\ No newline at end of file
diff --git a/src/pages/Payroll/Index.vue b/src/pages/Payroll/Index.vue
new file mode 100644
index 0000000..bbbc2b0
--- /dev/null
+++ b/src/pages/Payroll/Index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
Nómina
+
Gestión de información bancaria y salarios de empleados
+
+
+
+
+
+
+
+
+
+
+
Nómina Total Mensual
+
$125,000
+
3 empleados activos
+
+
+
+
Último Procesamiento
+
31 Enero
+
Procesado exitosamente
+
+
+
+
Próximo Procesamiento
+
29 Feb
+
En 5 días
+
+
+
+
+
+
+
+
+
+
+
+
$ María González López
+
Información bancaria y detalles de nómina
+
+
+
+
+
+
+
+
+ Información Bancaria
+
+
+
+
+
Banco
+
BBVA Bancomer
+
+
+
+
CLABE
+
012180001234567890
+
+
+
+
Crédito INFONAVIT
+
5020123456789
+
+
+
+
+
+
+
+
+ Desglose Salarial
+
+
+
+
+
Salario Base
+
$35,000
+
+
+
+
Bonos
+
+$8,000
+
+
+
+
Deducciones
+
-$2,000
+
+
+
+
+
Total Mensual
+
$45,000
+
+
+
+
+
+
+
+
Último Pago
+
+
+
$43,000
+
Fecha: 2024-01-31
+
+ Procesado
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Security/Index.vue b/src/pages/Security/Index.vue
new file mode 100644
index 0000000..b66675b
--- /dev/null
+++ b/src/pages/Security/Index.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
Seguridad y Salud
+
Gestión de información médica, tallas y contactos de emergencia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
María González López
+
Información de seguridad y salud ocupacional
+
+
+
+
+
+
Tallas de Ropa
+
+
+
+ Camisa
+ M
+
+
+
+ Overol
+ M
+
+
+
+ Zapatos
+ 25
+
+
+
+
+
+
+
+
+ Información Médica
+
+
+
+
+
+
+
+
+
Certificado Médico
+
certificado_maria_2024.pdf
+
+
+ Vigente
+
+
+
+
+
+
Tipo de Sangre
+
O+
+
+
+
+
+
+
Alergias
+
Polen, mariscos
+
+
+
+
+
+
Altura
+
165 cm
+
+
+
Peso
+
60 kg
+
+
+
+
+
+
Prescripciones
+
Antihistamínicos según necesidad
+
+
+
+
+
Discapacidades
+
Ninguna
+
+
+
+
+
+
+
+
+ Contactos de Emergencia
+
+
+
+
+
+
Juan González
+
+52 55 1234 5678
+
+ Esposo
+
+
+
+
+
Carmen López
+
+52 55 8765 4321
+
+ Madre
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Admin/Create.vue b/src/pages/Vacations/Admin/Create.vue
new file mode 100644
index 0000000..c1692d9
--- /dev/null
+++ b/src/pages/Vacations/Admin/Create.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
+
Solicitar Vacaciones
+
Completa el formulario para solicitar tus días de vacaciones.
+
+
+
+
+
+
+
+
+
+
Detalles de la Solicitud
+
Selecciona las fechas y proporciona información adicional.
+
+
+
+
+
+
+
+
+
Resumen de Solicitud
+
Revisa los detalles antes de enviar.
+
+
+
+
{{ availableDays }}
+
Días Disponibles
+
+
+
+
+
+
+ Período {{ index + 1 }}:
+
+
+
Inicio: {{ period.start_date }}
+
Fin: {{ period.end_date }}
+
+ Días en período {{ index + 1 }}:
+
+ {{ period.number_of_days }} día{{ period.number_of_days > 1 ? 's' : '' }}
+
+
+
+
+
+
+
+
+
+ Total de días:
+
+ {{ totalSelectedDays }} día{{ totalSelectedDays > 1 ? 's' : '' }}
+
+
+
+
+ Excedes tus días disponibles por {{ Math.abs(remainingDays) }} día{{ Math.abs(remainingDays) > 1 ? 's' : '' }}
+
+
+
+
+
+
+
Recordatorios:
+
+
+
+ Las solicitudes deben hacerse con 15 días de anticipación
+
+
+
+ Tu coordinador revisará y aprobará la solicitud
+
+
+
+ Recibirás una notificación con la decisión
+
+
+
+ Los días se descontarán una vez aprobados
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Admin/Form.vue b/src/pages/Vacations/Admin/Form.vue
new file mode 100644
index 0000000..4ac48cb
--- /dev/null
+++ b/src/pages/Vacations/Admin/Form.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Admin/Index.vue b/src/pages/Vacations/Admin/Index.vue
new file mode 100644
index 0000000..0636614
--- /dev/null
+++ b/src/pages/Vacations/Admin/Index.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+ Solicitudes
+
+
Gestión completa de todas las solicitudes de vacaciones del sistema.
+
+
+ Excedes tus días disponibles por {{ Math.abs(remainingDays) }} día{{ Math.abs(remainingDays) > 1 ? 's' : '' }}
+
+
+
+
+
+
+
Recordatorios:
+
+
+
+ Las solicitudes deben hacerse con 15 días de anticipación
+
+
+
+ Tu coordinador revisará y aprobará la solicitud
+
+
+
+ Recibirás una notificación con la decisión
+
+
+
+ Los días se descontarán una vez aprobados
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Coordinator/Form.vue b/src/pages/Vacations/Coordinator/Form.vue
new file mode 100644
index 0000000..4ac48cb
--- /dev/null
+++ b/src/pages/Vacations/Coordinator/Form.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Coordinator/Index.vue b/src/pages/Vacations/Coordinator/Index.vue
new file mode 100644
index 0000000..f0c15ba
--- /dev/null
+++ b/src/pages/Vacations/Coordinator/Index.vue
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+
+
Gestión de Solicitudes
+
Revisa y gestiona las solicitudes de vacaciones de tu equipo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ application.user.full_name }}
+
+ {{ application.status }}
+
+
+
{{ application.user.department.name }}
+
Días disponibles: {{ application.user.vacation_days_available }}
+
+
+ Excedes tus días disponibles por {{ Math.abs(remainingDays) }} día{{ Math.abs(remainingDays) > 1 ? 's' : '' }}
+
+
+
+
+
+
+
Recordatorios:
+
+
+
+ Las solicitudes deben hacerse con 15 días de anticipación
+
+
+
+ Tu coordinador revisará y aprobará la solicitud
+
+
+
+ Recibirás una notificación con la decisión
+
+
+
+ Los días se descontarán una vez aprobados
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Employee/Form.vue b/src/pages/Vacations/Employee/Form.vue
new file mode 100644
index 0000000..4ac48cb
--- /dev/null
+++ b/src/pages/Vacations/Employee/Form.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Vacations/Employee/Index.vue b/src/pages/Vacations/Employee/Index.vue
new file mode 100644
index 0000000..b0bb3c3
--- /dev/null
+++ b/src/pages/Vacations/Employee/Index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+ Mis Solicitudes
+
+
Historial completo de todas tus solicitudes de vacaciones.