feat : sélecteur d'exercice sur l'onglet RTT de la fiche employé
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
Permet de consulter les exercices passés (table hebdomadaire RTT) en réutilisant le pattern de l'onglet Congés. Plage bornée par max(début historique contrat, RTT_START_DATE). Bouton + Payer les RTT verrouillé sur exercices clos. Onglet masqué pour FORFAIT (inchangé). Backend : rttStartDate désormais toujours exposé sur EmployeeRttSummary pour que le sélecteur conserve sa borne lors de la navigation vers un exercice passé. Le masquage existant des lignes Report continue de fonctionner (comparaison mois-à-mois). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
<Icon name="mdi:chevron-left" size="24"/>
|
||||
</button>
|
||||
<span class="text-lg font-bold tracking-wide min-w-[170px] text-center">
|
||||
{{ currentMonthLabel }} {{ currentYear }}
|
||||
{{ currentMonthLabel }} {{ displayedMonthYear }}
|
||||
</span>
|
||||
<button
|
||||
class="rounded px-2 py-1 font-bold hover:bg-primary-600 disabled:opacity-40 disabled:cursor-not-allowed flex items-center"
|
||||
@@ -27,7 +27,8 @@
|
||||
</p>
|
||||
<div class="flex justify-center">
|
||||
<button
|
||||
class="rounded-md bg-primary-500 px-8 py-2 font-bold text-white hover:bg-primary-600"
|
||||
class="rounded-md bg-primary-500 px-8 py-2 font-bold text-white hover:bg-primary-600 disabled:opacity-40 disabled:cursor-not-allowed"
|
||||
:disabled="isHistoricalYear"
|
||||
@click="openPaymentDrawer"
|
||||
>
|
||||
+ Payer les RTT
|
||||
@@ -183,6 +184,22 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="mt-6 flex items-center gap-3">
|
||||
<label for="rtt-year-select" class="text-md font-semibold text-primary-500 uppercase">
|
||||
Exercice :
|
||||
</label>
|
||||
<select
|
||||
id="rtt-year-select"
|
||||
:value="selectedYear ?? ''"
|
||||
:disabled="!availableYears.length"
|
||||
class="border border-primary-500 rounded-md px-3 py-1 text-md font-semibold text-primary-500 bg-white focus:outline-none focus:ring-2 focus:ring-secondary-500/20 disabled:opacity-50"
|
||||
@change="handleYearChange"
|
||||
>
|
||||
<option v-for="option in availableYears" :key="option.value" :value="option.value">
|
||||
{{ option.label }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Payment Drawer -->
|
||||
@@ -261,14 +278,36 @@
|
||||
import type { EmployeeRttSummary, EmployeeRttWeekSummary } from '~/services/dto/employee-rtt-summary'
|
||||
import AppDrawer from '~/components/AppDrawer.vue'
|
||||
|
||||
type RttYearOption = {
|
||||
value: number
|
||||
label: string
|
||||
}
|
||||
|
||||
const props = defineProps<{
|
||||
summary: EmployeeRttSummary | null
|
||||
selectedYear: number | null
|
||||
availableYears: RttYearOption[]
|
||||
currentYear: number | null
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
(event: 'submit-rtt-payment', month: number, base25Minutes: number, bonus25Minutes: number, base50Minutes: number, bonus50Minutes: number): void
|
||||
(event: 'update-selected-year', year: number): void
|
||||
}>()
|
||||
|
||||
const isHistoricalYear = computed(() =>
|
||||
props.selectedYear !== null
|
||||
&& props.currentYear !== null
|
||||
&& props.selectedYear !== props.currentYear
|
||||
)
|
||||
|
||||
const handleYearChange = (event: Event) => {
|
||||
const target = event.target as HTMLSelectElement
|
||||
const value = Number(target.value)
|
||||
if (Number.isNaN(value)) return
|
||||
emit('update-selected-year', value)
|
||||
}
|
||||
|
||||
// --- Last complete week number ---
|
||||
|
||||
const lastCompleteWeek = computed(() => {
|
||||
@@ -324,7 +363,7 @@ const currentMonth = computed(() => orderedMonths[currentMonthIndex.value])
|
||||
|
||||
const currentMonthLabel = computed(() => monthLabels[currentMonth.value])
|
||||
|
||||
const currentYear = computed(() => {
|
||||
const displayedMonthYear = computed(() => {
|
||||
if (!props.summary) return ''
|
||||
return currentMonth.value >= 6 ? props.summary.year - 1 : props.summary.year
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user