From 004836ece75d2d1346b6bc8e42cfb447100211a3 Mon Sep 17 00:00:00 2001 From: "jose.lopez" Date: Thu, 25 Sep 2025 15:52:04 -0600 Subject: [PATCH 1/3] =?UTF-8?q?Nuevo=20dise=C3=B1o=20usuarios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Holos/NewTable.vue | 151 ++++++++++++ src/lang/es.js | 4 + src/layouts/AdminLayout.vue | 21 +- .../Index.vue => Admin/Users/Academic.vue} | 0 .../Index.vue => Admin/Users/Additional.vue} | 0 src/pages/Admin/Users/Create.vue | 23 +- src/pages/Admin/Users/Index.vue | 233 +++++++----------- .../Index.vue => Admin/Users/Payroll.vue} | 0 .../Index.vue => Admin/Users/Security.vue} | 0 src/router/Index.js | 60 ++--- 10 files changed, 287 insertions(+), 205 deletions(-) create mode 100644 src/components/Holos/NewTable.vue rename src/pages/{Academic/Index.vue => Admin/Users/Academic.vue} (100%) rename src/pages/{Additional/Index.vue => Admin/Users/Additional.vue} (100%) rename src/pages/{Payroll/Index.vue => Admin/Users/Payroll.vue} (100%) rename src/pages/{Security/Index.vue => Admin/Users/Security.vue} (100%) diff --git a/src/components/Holos/NewTable.vue b/src/components/Holos/NewTable.vue new file mode 100644 index 0000000..574316f --- /dev/null +++ b/src/components/Holos/NewTable.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/lang/es.js b/src/lang/es.js index bc0039a..ed2a246 100644 --- a/src/lang/es.js +++ b/src/lang/es.js @@ -150,6 +150,7 @@ export default { }, dashboard: 'Dashboard', date: 'Fecha', + department: 'Departamento', dates: { start: 'Fecha Inicial', end: 'Fecha Final' @@ -202,6 +203,8 @@ export default { home: 'Volver a la pagina de inicio.', title:'Ayuda', }, + headquarter: 'Sede', + hire_date: 'Fecha de contratación', history: { title:'Historial de acciones', description:'Historial de acciones realizadas por los usuarios en orden cronológico.' @@ -405,6 +408,7 @@ export default { onError:'Ocurrió un error al crear el usuario' }, deleted:'Usuario eliminado', + description: 'Gestión de información general de empleados', remove: 'Remover usuario', edit: { title: 'Editar usuario' diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue index 0b5a612..d6fc208 100644 --- a/src/layouts/AdminLayout.vue +++ b/src/layouts/AdminLayout.vue @@ -48,29 +48,24 @@ onMounted(() => { /> - @@ -133,12 +128,6 @@ onMounted(() => { v-if="hasPermission('users.index')" :name="$t('admin.title')" > - ({ ...data, - roles: data.roles.map(role => role.id) + roles: data.roles.map(role => role.id), + departmen_id: data.departmen_id?.id })).post(apiTo('store'), { onSuccess: () => { Notify.success(Lang('register.create.onSuccess')) @@ -46,6 +49,17 @@ onMounted(() => { roles.value = r.roles; } }); + + api.catalog({ + 'department:all': null, + }, + { + onSuccess: (r) => { + console.log(r); + departments.value = r['department:all'] ?? []; + } + } + ); }) @@ -82,5 +96,10 @@ onMounted(() => { :options="roles" multiple /> + diff --git a/src/pages/Admin/Users/Index.vue b/src/pages/Admin/Users/Index.vue index a824ae6..9b46c34 100644 --- a/src/pages/Admin/Users/Index.vue +++ b/src/pages/Admin/Users/Index.vue @@ -2,19 +2,24 @@ import { onMounted, ref } from 'vue'; import { useSearcher } from '@Services/Api'; import { hasPermission } from '@Plugins/RolePermission'; +import { getDate } from '@Controllers/DateController'; import { can, apiTo, viewTo, transl } from './Module' -import IconButton from '@Holos/Button/Icon.vue' -import DestroyView from '@Holos/Modal/Template/Destroy.vue'; +import IconButton from '@Holos/Button/Icon.vue' +import DestroyView from '@Holos/Modal/Template/Destroy.vue'; import SearcherHead from '@Holos/Searcher.vue'; -import Table from '@Holos/Table.vue'; -import ShowView from './Modals/Show.vue'; +import Table from '@Holos/NewTable.vue'; +import ShowView from './Modals/Show.vue'; + +import GoogleIcon from '@Shared/GoogleIcon.vue'; +import Searcher from '@Holos/Searcher.vue'; +import Adding from '@Holos/Button/ButtonRh.vue'; /** Propiedades */ const models = ref([]); /** Referencias */ -const showModal = ref(false); +const showModal = ref(false); const destroyModal = ref(false); /** Métodos */ @@ -31,146 +36,86 @@ onMounted(() => { - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/Payroll/Index.vue b/src/pages/Admin/Users/Payroll.vue similarity index 100% rename from src/pages/Payroll/Index.vue rename to src/pages/Admin/Users/Payroll.vue diff --git a/src/pages/Security/Index.vue b/src/pages/Admin/Users/Security.vue similarity index 100% rename from src/pages/Security/Index.vue rename to src/pages/Admin/Users/Security.vue diff --git a/src/router/Index.js b/src/router/Index.js index 99cac92..69fd1da 100644 --- a/src/router/Index.js +++ b/src/router/Index.js @@ -130,7 +130,7 @@ const router = createRouter({ title: 'Inicio', icon: 'home', }, - redirect: '/admin/employees', + redirect: '/admin/dashboard', children: [ { path: 'dashboard', @@ -141,42 +141,6 @@ const router = createRouter({ }, component: () => import('@Pages/Dashboard/Admin.vue'), }, - { - path: 'employees', - name: 'admin.employees', - meta: { - title: 'Empleados', - icon: 'people', - }, - redirect: '/admin/employees', - children: [ - { - path: '', - name: 'admin.employees.index', - component: () => import('@Pages/Employees/Index.vue'), - }, - { - path: 'academic', - name: 'admin.academic.index', - component: () => import('@Pages/Academic/Index.vue'), - }, - { - path: 'security', - name: 'admin.security.index', - component: () => import('@Pages/Security/Index.vue'), - }, - { - path: 'payroll', - name: 'admin.payroll.index', - component: () => import('@Pages/Payroll/Index.vue'), - }, - { - path: 'additional', - name: 'admin.additional.index', - component: () => import('@Pages/Additional/Index.vue'), - }, - ] - }, { path: 'vacations', name: 'admin.vacations', @@ -267,19 +231,16 @@ const router = createRouter({ { path: '', name: 'admin.users.index', - beforeEnter: (to, from, next) => can(next, 'users.index'), component: () => import('@Pages/Admin/Users/Index.vue'), }, { path: 'online', name: 'admin.users.online', - beforeEnter: (to, from, next) => can(next, 'users.online'), component: () => import('@Pages/Admin/Users/Online.vue') }, { path: 'create', name: 'admin.users.create', - beforeEnter: (to, from, next) => can(next, 'users.create'), meta: { title: 'Crear', icon: 'add', @@ -288,7 +249,6 @@ const router = createRouter({ }, { path: ':id/edit', name: 'admin.users.edit', - beforeEnter: (to, from, next) => can(next, 'users.edit'), meta: { title: 'Editar', icon: 'edit', @@ -297,13 +257,27 @@ const router = createRouter({ }, { path: ':id/settings', name: 'admin.users.settings', - beforeEnter: (to, from, next) => can(next, 'users.settings'), component: () => import('@Pages/Admin/Users/Settings.vue'), meta: { title: 'Configuración', icon: 'settings', }, - } + }, + { + path: 'admin/users/academic', + name: 'admin.users.academic', + component: () => import('@Pages/Admin/Users/Academic.vue'), + }, + { + path: 'admin/users/security', + name: 'admin.users.security', + component: () => import('@Pages/Admin/Users/Security.vue'), + }, + { + path: 'admin/users/additional', + name: 'admin.users.additional', + component: () => import('@Pages/Admin/Users/Additional.vue'), + }, ] }, { -- 2.45.2 From a3c6d0e5843fc183aff3a6b8a9b79ffe00e26810 Mon Sep 17 00:00:00 2001 From: "jose.lopez" Date: Thu, 25 Sep 2025 16:13:22 -0600 Subject: [PATCH 2/3] Correcciones menores --- src/pages/Admin/Users/Create.vue | 10 ++++----- src/pages/Admin/Users/Edit.vue | 38 ++++++++++++++++++++++++++++---- src/pages/Admin/Users/Form.vue | 7 ++++++ src/pages/Admin/Users/Index.vue | 2 +- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/pages/Admin/Users/Create.vue b/src/pages/Admin/Users/Create.vue index 16c0ae9..b804a22 100644 --- a/src/pages/Admin/Users/Create.vue +++ b/src/pages/Admin/Users/Create.vue @@ -20,9 +20,10 @@ const form = useForm({ maternal: '', email: '', phone: '', + hire_date: '', password: '', roles: [], - departmen_id: '', + department_id: '', }); const roles = ref([]); @@ -33,7 +34,7 @@ function submit() { form.transform(data => ({ ...data, roles: data.roles.map(role => role.id), - departmen_id: data.departmen_id?.id + department_id: data.department_id?.id })).post(apiTo('store'), { onSuccess: () => { Notify.success(Lang('register.create.onSuccess')) @@ -55,7 +56,6 @@ onMounted(() => { }, { onSuccess: (r) => { - console.log(r); departments.value = r['department:all'] ?? []; } } @@ -97,8 +97,8 @@ onMounted(() => { multiple /> diff --git a/src/pages/Admin/Users/Edit.vue b/src/pages/Admin/Users/Edit.vue index 058579a..d6f3bff 100644 --- a/src/pages/Admin/Users/Edit.vue +++ b/src/pages/Admin/Users/Edit.vue @@ -1,11 +1,12 @@ @@ -54,5 +78,11 @@ onMounted(() => { action="update" :form="form" @submit="submit" - /> + > + + diff --git a/src/pages/Admin/Users/Form.vue b/src/pages/Admin/Users/Form.vue index f6990cf..84f6cc2 100644 --- a/src/pages/Admin/Users/Form.vue +++ b/src/pages/Admin/Users/Form.vue @@ -61,6 +61,13 @@ function submit() { :onError="form.errors.email" required /> +
{ {{ model.full_name }} {{ model.department?.name }} {{ model.headquarter }} - {{ getDate(model.hire_date) }} + {{ model.hire_date ? getDate(model.hire_date) : '-' }} -- 2.45.2 From 9737e4c378de3850208f61cc127aacdbe6ce5c93 Mon Sep 17 00:00:00 2001 From: "jose.lopez" Date: Fri, 26 Sep 2025 16:14:51 -0600 Subject: [PATCH 3/3] Historial academico y certificados --- src/components/Holos/Card/AcademicRecords.vue | 83 ++++++++++ src/components/Holos/Card/Certifications.vue | 121 ++++++++++++++ src/lang/es.js | 27 ++++ src/layouts/AdminLayout.vue | 2 +- src/pages/Admin/Users/Academic.vue | 147 ----------------- .../Users/Academic/CreateCertification.vue | 58 +++++++ .../Admin/Users/Academic/CreateRecord.vue | 82 ++++++++++ .../Users/Academic/EditCertification.vue | 75 +++++++++ src/pages/Admin/Users/Academic/EditRecord.vue | 97 +++++++++++ .../Users/Academic/FormCertification.vue | 76 +++++++++ src/pages/Admin/Users/Academic/FormRecord.vue | 64 ++++++++ src/pages/Admin/Users/Academic/Index.vue | 151 ++++++++++++++++++ src/pages/Admin/Users/Academic/Module.js | 21 +++ src/pages/Admin/Users/Create.vue | 3 +- src/router/Index.js | 35 +++- 15 files changed, 888 insertions(+), 154 deletions(-) create mode 100644 src/components/Holos/Card/AcademicRecords.vue create mode 100644 src/components/Holos/Card/Certifications.vue delete mode 100644 src/pages/Admin/Users/Academic.vue create mode 100644 src/pages/Admin/Users/Academic/CreateCertification.vue create mode 100644 src/pages/Admin/Users/Academic/CreateRecord.vue create mode 100644 src/pages/Admin/Users/Academic/EditCertification.vue create mode 100644 src/pages/Admin/Users/Academic/EditRecord.vue create mode 100644 src/pages/Admin/Users/Academic/FormCertification.vue create mode 100644 src/pages/Admin/Users/Academic/FormRecord.vue create mode 100644 src/pages/Admin/Users/Academic/Index.vue create mode 100644 src/pages/Admin/Users/Academic/Module.js diff --git a/src/components/Holos/Card/AcademicRecords.vue b/src/components/Holos/Card/AcademicRecords.vue new file mode 100644 index 0000000..6c58818 --- /dev/null +++ b/src/components/Holos/Card/AcademicRecords.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/components/Holos/Card/Certifications.vue b/src/components/Holos/Card/Certifications.vue new file mode 100644 index 0000000..2d18022 --- /dev/null +++ b/src/components/Holos/Card/Certifications.vue @@ -0,0 +1,121 @@ + + + diff --git a/src/lang/es.js b/src/lang/es.js index ed2a246..6e7566e 100644 --- a/src/lang/es.js +++ b/src/lang/es.js @@ -150,6 +150,8 @@ export default { }, dashboard: 'Dashboard', date: 'Fecha', + date_expiration: 'Fecha de expiración', + date_obtained: 'Fecha de obtención', department: 'Departamento', dates: { start: 'Fecha Inicial', @@ -169,6 +171,7 @@ export default { confirm: 'Al presionar ELIMINAR el registro se eliminará permanentemente y no podrá recuperarse.', title: 'Eliminar', }, + degreeType: 'Tipo de grado', deleted:'Registro eliminado', description:'Descripción', details:'Detalles', @@ -205,6 +208,7 @@ export default { }, headquarter: 'Sede', hire_date: 'Fecha de contratación', + institution: 'Institución', history: { title:'Historial de acciones', description:'Historial de acciones realizadas por los usuarios en orden cronológico.' @@ -219,6 +223,7 @@ export default { menu:'Menú', name:'Nombre', noRecords:'Sin registros', + number: 'Número', notification:'Notificación', notifications: { unreadClosed:'Ocultas', @@ -397,6 +402,28 @@ export default { unreaded:'No leído', user:'Usuario', users:{ + academic: { + create: { + certification: { + description: 'Permite agregar nuevas certificaciones profesionales al historial académico del usuario.', + title: 'Crear certificación' + }, + record: { + description: 'Permite agregar nuevos grados académicos al historial del usuario.', + title: 'Crear registro académico' + } + }, + edit: { + certification: { + description: 'Permite modificar los datos de la certificación profesional seleccionada.', + title: 'Editar certificación' + }, + record: { + description: 'Permite modificar los datos del registro académico seleccionado.', + title: 'Editar registro académico' + } + } + }, activity: { title: 'Actividad del usuario', description: 'Historial de acciones realizadas por el usuario.', diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue index d6fc208..ffdba34 100644 --- a/src/layouts/AdminLayout.vue +++ b/src/layouts/AdminLayout.vue @@ -55,7 +55,7 @@ onMounted(() => { -import GoogleIcon from '@Shared/GoogleIcon.vue'; -import Adding from '@Holos/Button/ButtonRh.vue'; - - - \ No newline at end of file diff --git a/src/pages/Admin/Users/Academic/CreateCertification.vue b/src/pages/Admin/Users/Academic/CreateCertification.vue new file mode 100644 index 0000000..bccede7 --- /dev/null +++ b/src/pages/Admin/Users/Academic/CreateCertification.vue @@ -0,0 +1,58 @@ + + + \ No newline at end of file diff --git a/src/pages/Admin/Users/Academic/CreateRecord.vue b/src/pages/Admin/Users/Academic/CreateRecord.vue new file mode 100644 index 0000000..f9110ee --- /dev/null +++ b/src/pages/Admin/Users/Academic/CreateRecord.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/src/pages/Admin/Users/Academic/EditCertification.vue b/src/pages/Admin/Users/Academic/EditCertification.vue new file mode 100644 index 0000000..5cc2039 --- /dev/null +++ b/src/pages/Admin/Users/Academic/EditCertification.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/pages/Admin/Users/Academic/EditRecord.vue b/src/pages/Admin/Users/Academic/EditRecord.vue new file mode 100644 index 0000000..2001ef3 --- /dev/null +++ b/src/pages/Admin/Users/Academic/EditRecord.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/src/pages/Admin/Users/Academic/FormCertification.vue b/src/pages/Admin/Users/Academic/FormCertification.vue new file mode 100644 index 0000000..34f4efd --- /dev/null +++ b/src/pages/Admin/Users/Academic/FormCertification.vue @@ -0,0 +1,76 @@ + + +