forked from verdnatura/salix-front
WIP
This commit is contained in:
parent
e1cf13076f
commit
6baaebf6bd
|
@ -835,6 +835,7 @@ export default {
|
||||||
workerCreate: 'New worker',
|
workerCreate: 'New worker',
|
||||||
department: 'Department',
|
department: 'Department',
|
||||||
pda: 'PDA',
|
pda: 'PDA',
|
||||||
|
timeControl: 'Time control',
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
|
@ -1201,4 +1202,13 @@ export default {
|
||||||
},
|
},
|
||||||
iban_tooltip: 'IBAN: ES21 1234 5678 90 0123456789',
|
iban_tooltip: 'IBAN: ES21 1234 5678 90 0123456789',
|
||||||
},
|
},
|
||||||
|
weekdays: {
|
||||||
|
sun: 'Sunday',
|
||||||
|
mon: 'Monday',
|
||||||
|
tue: 'Tuesday',
|
||||||
|
wed: 'Wednesday',
|
||||||
|
thu: 'Thursday',
|
||||||
|
fri: 'Friday',
|
||||||
|
sat: 'Saturday',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -835,6 +835,7 @@ export default {
|
||||||
workerCreate: 'Nuevo trabajador',
|
workerCreate: 'Nuevo trabajador',
|
||||||
department: 'Departamentos',
|
department: 'Departamentos',
|
||||||
pda: 'PDA',
|
pda: 'PDA',
|
||||||
|
timeControl: 'Control de horario',
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
name: 'Nombre',
|
name: 'Nombre',
|
||||||
|
@ -1201,4 +1202,13 @@ export default {
|
||||||
},
|
},
|
||||||
iban_tooltip: 'IBAN: ES21 1234 5678 90 0123456789',
|
iban_tooltip: 'IBAN: ES21 1234 5678 90 0123456789',
|
||||||
},
|
},
|
||||||
|
weekdays: {
|
||||||
|
sun: 'Domingo',
|
||||||
|
mon: 'Lunes',
|
||||||
|
tue: 'Martes',
|
||||||
|
wed: 'Miércoles',
|
||||||
|
thu: 'Jueves',
|
||||||
|
fri: 'Viernes',
|
||||||
|
sat: 'Sábado',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
<script setup>
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import { onMounted, ref, computed, onBeforeMount } from 'vue';
|
||||||
|
import FetchData from 'components/FetchData.vue';
|
||||||
|
|
||||||
|
import useNotify from 'src/composables/useNotify.js';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { useRole } from 'src/composables/useRole';
|
||||||
|
import { useWeekdayStore } from 'src/stores/useWeekdayStore';
|
||||||
|
import { useStateStore } from 'stores/useStateStore';
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const { notify } = useNotify();
|
||||||
|
const { hasAny } = useRole();
|
||||||
|
const stateStore = useStateStore();
|
||||||
|
const weekdayStore = useWeekdayStore();
|
||||||
|
|
||||||
|
const entryDirections = [
|
||||||
|
{ code: 'in', description: t('Entrada') },
|
||||||
|
{ code: 'middle', description: t('Intermedio') },
|
||||||
|
{ code: 'out', description: t('Salida') },
|
||||||
|
];
|
||||||
|
|
||||||
|
const columns = computed(() => {
|
||||||
|
return weekdayStore.localeWeekdays?.map((day) => {
|
||||||
|
const obj = {
|
||||||
|
label: day.locale,
|
||||||
|
name: day.name,
|
||||||
|
align: 'left',
|
||||||
|
};
|
||||||
|
return obj;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const calendarRef = ref(null);
|
||||||
|
const selectedDate = ref(null);
|
||||||
|
const selectedDateRange = ref(null);
|
||||||
|
|
||||||
|
const handleDateSelection = (date) => {
|
||||||
|
if (!date) return;
|
||||||
|
console.log('date', date);
|
||||||
|
|
||||||
|
const _date = new Date(date.year, date.month - 1, date.day);
|
||||||
|
console.log('_date', _date);
|
||||||
|
|
||||||
|
const dateRange = { from: '', to: '' };
|
||||||
|
|
||||||
|
// Obtener la fecha de 3 días atrás
|
||||||
|
const threeDaysAgo = new Date(_date);
|
||||||
|
threeDaysAgo.setDate(_date.getDate() - 3);
|
||||||
|
dateRange.from = {
|
||||||
|
year: threeDaysAgo.getFullYear(),
|
||||||
|
month: threeDaysAgo.getMonth() + 1, // Los meses van de 0 a 11, por eso sumamos 1
|
||||||
|
day: threeDaysAgo.getDate(),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Obtener la fecha de 3 días adelante
|
||||||
|
const threeDaysAhead = new Date(_date);
|
||||||
|
threeDaysAhead.setDate(_date.getDate() + 3);
|
||||||
|
dateRange.to = {
|
||||||
|
year: threeDaysAhead.getFullYear(),
|
||||||
|
month: threeDaysAhead.getMonth() + 1, // Los meses van de 0 a 11, por eso sumamos 1
|
||||||
|
day: threeDaysAhead.getDate(),
|
||||||
|
};
|
||||||
|
|
||||||
|
calendarRef.value.setEditingRange(dateRange.from, dateRange.to);
|
||||||
|
console.log('date range:', dateRange);
|
||||||
|
};
|
||||||
|
|
||||||
|
// const isAllowedToEdit = computed(() => hasAny(['hr', 'productionAssi']));
|
||||||
|
// const columns = computed(() => [
|
||||||
|
// {
|
||||||
|
// label: 'asd',
|
||||||
|
// name: 'picture',
|
||||||
|
// align: 'left',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: t('entry.latestBuys.tags'),
|
||||||
|
// name: 'tags',
|
||||||
|
// align: 'left',
|
||||||
|
// },
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
console.log('columns:: ', columns.value);
|
||||||
|
|
||||||
|
onBeforeMount(() => {
|
||||||
|
weekdayStore.initStore();
|
||||||
|
console.log('asdasdasd:: ', weekdayStore);
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
stateStore.rightDrawer = true;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<!-- <FetchData
|
||||||
|
ref="fetchCurrentDeviceRef"
|
||||||
|
url="DeviceProductionUsers"
|
||||||
|
:filter="{
|
||||||
|
where: { userFk: route.params.id },
|
||||||
|
include: { relation: 'deviceProduction' },
|
||||||
|
}"
|
||||||
|
auto-load
|
||||||
|
@on-fetch="(data) => setCurrentPDA(data[0])"
|
||||||
|
/> -->
|
||||||
|
<QDrawer v-model="stateStore.rightDrawer" side="right" :width="300" show-if-above>
|
||||||
|
<!-- <QScrollArea class="fit text-grey-8"> -->
|
||||||
|
<div class="fit">
|
||||||
|
<QDate
|
||||||
|
ref="calendarRef"
|
||||||
|
v-model="selectedDate"
|
||||||
|
@range-start="handleDateSelection"
|
||||||
|
mask="YYYY-MM-DD"
|
||||||
|
color="primary"
|
||||||
|
minimal
|
||||||
|
:years-in-month-view="false"
|
||||||
|
first-day-of-week="1"
|
||||||
|
range
|
||||||
|
class
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- </QScrollArea> -->
|
||||||
|
</QDrawer>
|
||||||
|
<QPage class="column items-center q-pa-md">
|
||||||
|
<QCard class="full-width">
|
||||||
|
<QTable :columns="columns"> </QTable>
|
||||||
|
</QCard>
|
||||||
|
</QPage>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.test {
|
||||||
|
max-width: 100px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
es:
|
||||||
|
Entrada: Entrada
|
||||||
|
Intermedio: Intermedio
|
||||||
|
Salida: Salida
|
||||||
|
</i18n>
|
|
@ -12,7 +12,7 @@ export default {
|
||||||
redirect: { name: 'WorkerMain' },
|
redirect: { name: 'WorkerMain' },
|
||||||
menus: {
|
menus: {
|
||||||
main: ['WorkerList', 'WorkerDepartment'],
|
main: ['WorkerList', 'WorkerDepartment'],
|
||||||
card: ['WorkerNotificationsManager', 'WorkerPda'],
|
card: ['WorkerNotificationsManager', 'WorkerPda', 'WorkerTimeControl'],
|
||||||
departmentCard: ['BasicData'],
|
departmentCard: ['BasicData'],
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
|
@ -85,6 +85,16 @@ export default {
|
||||||
},
|
},
|
||||||
component: () => import('src/pages/Worker/Card/WorkerPda.vue'),
|
component: () => import('src/pages/Worker/Card/WorkerPda.vue'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'WorkerTimeControl',
|
||||||
|
path: 'time-control',
|
||||||
|
meta: {
|
||||||
|
title: 'timeControl',
|
||||||
|
icon: 'access_time',
|
||||||
|
},
|
||||||
|
component: () =>
|
||||||
|
import('src/pages/Worker/Card/WorkerTimeControl.vue'),
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { computed, ref, reactive } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
|
export const useWeekdayStore = defineStore('weekdayStore', () => {
|
||||||
|
const weekdays = [
|
||||||
|
{ code: 'sun', name: 'Sunday' },
|
||||||
|
{ code: 'mon', name: 'Monday' },
|
||||||
|
{ code: 'tue', name: 'Tuesday' },
|
||||||
|
{ code: 'wed', name: 'Wednesday' },
|
||||||
|
{ code: 'thu', name: 'Thursday' },
|
||||||
|
{ code: 'fri', name: 'Friday' },
|
||||||
|
{ code: 'sat', name: 'Saturday' },
|
||||||
|
];
|
||||||
|
|
||||||
|
const localeOrder = {
|
||||||
|
es: ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'],
|
||||||
|
en: ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
|
||||||
|
};
|
||||||
|
|
||||||
|
const { t, locale } = useI18n();
|
||||||
|
const localeWeekdays = ref([]);
|
||||||
|
const weekdaysMap = reactive({});
|
||||||
|
|
||||||
|
const initStore = () => {
|
||||||
|
getWeekdaysMap();
|
||||||
|
getLocales();
|
||||||
|
console.log('weekdaysMap:: ', weekdaysMap);
|
||||||
|
};
|
||||||
|
|
||||||
|
const getWeekdaysMap = () => {
|
||||||
|
if (Object.keys(weekdaysMap).length > 0) return weekdaysMap;
|
||||||
|
|
||||||
|
weekdays.forEach((day, i) => {
|
||||||
|
const obj = {
|
||||||
|
...day,
|
||||||
|
index: i,
|
||||||
|
char: day.name.substr(0, 1),
|
||||||
|
abr: day.name.substr(0, 3),
|
||||||
|
locale: t(`weekdays.${day.code}`),
|
||||||
|
localeChar: t(`weekdays.${day.code}`).substr(0, 1),
|
||||||
|
localeAbr: t(`weekdays.${day.code}`).substr(0, 3),
|
||||||
|
};
|
||||||
|
weekdaysMap[day.code] = obj;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const getLocales = () => {
|
||||||
|
if (localeWeekdays.value.length > 0) return localeWeekdays.value;
|
||||||
|
for (let code of localeOrder.es) {
|
||||||
|
console.log('code:: ', code);
|
||||||
|
localeWeekdays.value.push(weekdaysMap[code]);
|
||||||
|
}
|
||||||
|
console.log('localeWeekdays:: ', localeWeekdays.value);
|
||||||
|
return localeWeekdays.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
// const orderLocales = (weekDaysArray) => {
|
||||||
|
// const order = localeOrder[locale.value] || localeOrder.en;
|
||||||
|
// const orderedLocales = [];
|
||||||
|
// for (let code of order) orderedLocales.push(weekDaysArray[code]);
|
||||||
|
// // return order.map((code) => localeWeekdays.value.find((day) => day.code === code));
|
||||||
|
// };
|
||||||
|
|
||||||
|
return {
|
||||||
|
initStore,
|
||||||
|
getLocales,
|
||||||
|
localeWeekdays,
|
||||||
|
weekdaysMap,
|
||||||
|
};
|
||||||
|
});
|
Loading…
Reference in New Issue