fix : wip
This commit is contained in:
@@ -19,10 +19,11 @@
|
||||
</div>
|
||||
|
||||
<div v-else class="overflow-hidden rounded-lg border border-neutral-200 bg-white">
|
||||
<div class="grid grid-cols-[120px_120px_1fr_200px] gap-4 border-b border-neutral-200 bg-tertiary-500 px-6 py-3 text-md font-semibold text-neutral-700">
|
||||
<div class="grid grid-cols-[120px_160px_1fr_220px_200px] gap-4 border-b border-neutral-200 bg-tertiary-500 px-6 py-3 text-md font-semibold text-neutral-700">
|
||||
<span class="text-left">Code</span>
|
||||
<span class="text-left">Libellé</span>
|
||||
<span class="text-left">Couleur</span>
|
||||
<span class="text-left">Compte en heures</span>
|
||||
<span class="text-right">Actions</span>
|
||||
</div>
|
||||
<div v-if="isLoading" class="px-6 py-4 text-md text-neutral-500">
|
||||
@@ -32,7 +33,7 @@
|
||||
<div
|
||||
v-for="type in absenceTypes"
|
||||
:key="type.id"
|
||||
class="grid grid-cols-[120px_120px_1fr_200px] items-center gap-4 border-b border-neutral-100 px-6 py-3 text-md text-neutral-800 last:border-b-0"
|
||||
class="grid grid-cols-[120px_160px_1fr_220px_200px] items-center gap-4 border-b border-neutral-100 px-6 py-3 text-md text-neutral-800 last:border-b-0"
|
||||
>
|
||||
<span class="font-semibold text-left">{{ type.code }}</span>
|
||||
<span class="text-left">{{ type.label }}</span>
|
||||
@@ -43,6 +44,14 @@
|
||||
/>
|
||||
<span class="text-md uppercase text-neutral-500">{{ type.color }}</span>
|
||||
</div>
|
||||
<div class="text-left">
|
||||
<span
|
||||
class="inline-flex rounded-md px-2 py-1 text-sm font-semibold"
|
||||
:class="type.countAsWorkedHours ? 'bg-emerald-100 text-emerald-700' : 'bg-neutral-100 text-neutral-700'"
|
||||
>
|
||||
{{ type.countAsWorkedHours ? 'Oui' : 'Non' }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-end gap-2">
|
||||
<button
|
||||
type="button"
|
||||
@@ -94,6 +103,31 @@
|
||||
Le libellé est obligatoire.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-md font-semibold text-neutral-700">
|
||||
Compté comme travaillé
|
||||
</label>
|
||||
<div class="mt-2 flex items-center gap-6">
|
||||
<label class="inline-flex items-center gap-2 text-md text-neutral-800">
|
||||
<input
|
||||
v-model="form.countAsWorkedHours"
|
||||
type="radio"
|
||||
class="h-4 w-4"
|
||||
:value="true"
|
||||
/>
|
||||
Oui
|
||||
</label>
|
||||
<label class="inline-flex items-center gap-2 text-md text-neutral-800">
|
||||
<input
|
||||
v-model="form.countAsWorkedHours"
|
||||
type="radio"
|
||||
class="h-4 w-4"
|
||||
:value="false"
|
||||
/>
|
||||
Non
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="text-md font-semibold text-neutral-700" for="color">
|
||||
Couleur <span class="text-red-600">*</span>
|
||||
@@ -150,7 +184,8 @@ const drawerTitle = computed(() =>
|
||||
const form = reactive({
|
||||
code: '',
|
||||
label: '',
|
||||
color: '#222783'
|
||||
color: '#222783',
|
||||
countAsWorkedHours: true
|
||||
})
|
||||
|
||||
const validationTouched = reactive({
|
||||
@@ -214,6 +249,7 @@ const resetForm = () => {
|
||||
form.code = ''
|
||||
form.label = ''
|
||||
form.color = '#222783'
|
||||
form.countAsWorkedHours = true
|
||||
}
|
||||
|
||||
const openCreate = () => {
|
||||
@@ -227,6 +263,7 @@ const openEdit = (type: AbsenceType) => {
|
||||
form.code = type.code
|
||||
form.label = type.label
|
||||
form.color = type.color
|
||||
form.countAsWorkedHours = type.countAsWorkedHours
|
||||
isDrawerOpen.value = true
|
||||
}
|
||||
|
||||
@@ -249,13 +286,15 @@ const handleSubmit = async () => {
|
||||
await updateAbsenceType(editingType.value.id, {
|
||||
code: form.code,
|
||||
label: form.label,
|
||||
color: form.color
|
||||
color: form.color,
|
||||
countAsWorkedHours: form.countAsWorkedHours
|
||||
})
|
||||
} else {
|
||||
await createAbsenceType({
|
||||
code: form.code,
|
||||
label: form.label,
|
||||
color: form.color
|
||||
color: form.color,
|
||||
countAsWorkedHours: form.countAsWorkedHours
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -13,9 +13,14 @@
|
||||
:sites="sites"
|
||||
:formatted-selected-date="formattedSelectedDate"
|
||||
:shortcut-button-class="shortcutButtonClass"
|
||||
:week-shortcut-button-class="weekShortcutButtonClass"
|
||||
:get-week-shortcut-label="getWeekShortcutLabel"
|
||||
@set-yesterday="setYesterday"
|
||||
@set-today="setToday"
|
||||
@set-tomorrow="setTomorrow"
|
||||
@set-previous-week="setPreviousWeek"
|
||||
@set-this-week="setThisWeek"
|
||||
@set-next-week="setNextWeek"
|
||||
@shift-date="shiftDate"
|
||||
/>
|
||||
|
||||
@@ -28,30 +33,43 @@
|
||||
</div>
|
||||
|
||||
<div v-else class="flex flex-1 min-h-0 flex-col gap-4">
|
||||
<HoursDayView
|
||||
v-if="viewMode === 'day'"
|
||||
v-model:rows="rows"
|
||||
:employees="visibleEmployees"
|
||||
:is-admin="isAdmin"
|
||||
:day-grid-cols="dayGridCols"
|
||||
:contract-label="contractLabel"
|
||||
:is-time-tracking="isTimeTracking"
|
||||
<div class="flex-1 min-h-0 flex flex-col">
|
||||
<HoursDayView
|
||||
v-if="viewMode === 'day'"
|
||||
v-model:rows="rows"
|
||||
:employees="visibleEmployees"
|
||||
:is-admin="isAdmin"
|
||||
:day-grid-cols="dayGridCols"
|
||||
:contract-label="contractLabel"
|
||||
:is-time-tracking="isTimeTracking"
|
||||
:is-presence-tracking="isPresenceTracking"
|
||||
:is-row-locked="isRowLocked"
|
||||
:is-half-locked-by-absence="isHalfLockedByAbsence"
|
||||
:is-evening-locked-by-absence="isEveningLockedByAbsence"
|
||||
:is-validation-pending="isValidationPending"
|
||||
:can-toggle-validation="canToggleValidation"
|
||||
:is-bulk-validation-checked="isBulkValidationChecked"
|
||||
:is-bulk-validation-indeterminate="isBulkValidationIndeterminate"
|
||||
:on-toggle-validation="toggleValidation"
|
||||
:on-toggle-validation-bulk="toggleValidationBulk"
|
||||
:get-row-metrics="getRowMetrics"
|
||||
:get-row-absence-label="getRowAbsenceLabel"
|
||||
:get-presence-day-value="getPresenceDayValue"
|
||||
:on-absence-click="openAbsenceDrawer"
|
||||
:format-minutes="formatMinutes"
|
||||
class="max-h-full"
|
||||
/>
|
||||
|
||||
<HoursWeekView
|
||||
v-else-if="isAdmin && viewMode === 'week'"
|
||||
:is-week-loading="isWeekLoading"
|
||||
:week-grid-cols="weekGridCols"
|
||||
:weekly-summary="filteredWeeklySummary"
|
||||
:week-day-headers="weekDayHeaders"
|
||||
:format-minutes="formatMinutes"
|
||||
/>
|
||||
<HoursWeekView
|
||||
v-else-if="isAdmin && viewMode === 'week'"
|
||||
:is-week-loading="isWeekLoading"
|
||||
:week-grid-cols="weekGridCols"
|
||||
:weekly-summary="filteredWeeklySummary"
|
||||
:week-day-headers="weekDayHeaders"
|
||||
:format-minutes="formatMinutes"
|
||||
class="max-h-full"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-if="viewMode === 'day'" class="shrink-0 px-4 pt-4 flex justify-center">
|
||||
<button
|
||||
@@ -65,6 +83,21 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<AbsenceFormDrawer
|
||||
v-model="isAbsenceDrawerOpen"
|
||||
:employees="employees"
|
||||
:absence-types="absenceTypes"
|
||||
:form="absenceForm"
|
||||
:editing-absence="editingAbsence"
|
||||
:is-submitting="isAbsenceSubmitting"
|
||||
:lock-employee="true"
|
||||
:lock-dates="true"
|
||||
:show-comment="false"
|
||||
@submit="submitAbsence"
|
||||
@delete="deleteAbsenceFromDrawer"
|
||||
@cancel="closeAbsenceDrawer"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -79,6 +112,11 @@ const {
|
||||
employees,
|
||||
visibleEmployees,
|
||||
rows,
|
||||
absenceTypes,
|
||||
absenceForm,
|
||||
isAbsenceDrawerOpen,
|
||||
isAbsenceSubmitting,
|
||||
editingAbsence,
|
||||
filteredWeeklySummary,
|
||||
isLoading,
|
||||
isWeekLoading,
|
||||
@@ -89,17 +127,34 @@ const {
|
||||
formattedSelectedDate,
|
||||
weekDayHeaders,
|
||||
shortcutButtonClass,
|
||||
weekShortcutButtonClass,
|
||||
getWeekShortcutLabel,
|
||||
setToday,
|
||||
setYesterday,
|
||||
setTomorrow,
|
||||
setThisWeek,
|
||||
setPreviousWeek,
|
||||
setNextWeek,
|
||||
shiftDate,
|
||||
contractLabel,
|
||||
isTimeTracking,
|
||||
isPresenceTracking,
|
||||
isRowLocked,
|
||||
isHalfLockedByAbsence,
|
||||
isEveningLockedByAbsence,
|
||||
isValidationPending,
|
||||
canToggleValidation,
|
||||
isBulkValidationChecked,
|
||||
isBulkValidationIndeterminate,
|
||||
toggleValidation,
|
||||
toggleValidationBulk,
|
||||
getRowMetrics,
|
||||
getRowAbsenceLabel,
|
||||
getPresenceDayValue,
|
||||
openAbsenceDrawer,
|
||||
submitAbsence,
|
||||
deleteAbsenceFromDrawer,
|
||||
closeAbsenceDrawer,
|
||||
formatMinutes,
|
||||
handleSave
|
||||
} = useHoursPage()
|
||||
|
||||
Reference in New Issue
Block a user