Fix #138
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 16s
Build and Push Docker Images / build-frontend (push) Successful in 52s

This commit is contained in:
2026-03-17 18:10:32 +01:00
parent 6919de096a
commit da50782ffc
5 changed files with 89 additions and 28 deletions

View File

@@ -27,6 +27,11 @@ const date = computed({
}
})
const selectToday = () => {
emit('update:model-value', new Date())
emit('close')
}
const attrs = [{
key: 'today',
highlight: {
@@ -37,18 +42,31 @@ const attrs = [{
</script>
<template>
<VCalendarDatePicker
show-weeknumbers
v-model="date"
:mode="props.mode"
is24hr
transparent
borderless
color="green"
:attributes="attrs"
:is-dark="isDark"
title-position="left"
trim-weeks
:first-day-of-week="2"
/>
<div class="space-y-3">
<VCalendarDatePicker
show-weeknumbers
v-model="date"
:mode="props.mode"
is24hr
transparent
borderless
color="green"
:attributes="attrs"
:is-dark="isDark"
title-position="left"
trim-weeks
:first-day-of-week="2"
/>
<div class="flex justify-end px-2 pb-2">
<UButton
size="xs"
color="gray"
variant="soft"
icon="i-heroicons-calendar-days"
label="Heute"
@click="selectToday"
/>
</div>
</div>
</template>

View File

@@ -102,6 +102,10 @@ const currentUnit = computed(() => {
const selectedService = data.value.services?.find(s => s.id === form.value.service)
return selectedService?.unitSymbol || data.value?.units?.[0]?.symbol || 'h'
})
const setDeliveryDateToToday = () => {
form.value.deliveryDate = dayjs().format('YYYY-MM-DD')
}
</script>
<template>
@@ -120,12 +124,16 @@ const currentUnit = computed(() => {
:error="errors.deliveryDate"
required
>
<UInput
v-model="form.deliveryDate"
type="date"
size="lg"
icon="i-heroicons-calendar-days"
/>
<div class="flex items-center gap-2">
<UInput
v-model="form.deliveryDate"
type="date"
size="lg"
icon="i-heroicons-calendar-days"
class="flex-1"
/>
<UButton color="gray" variant="soft" size="lg" label="Heute" @click="setDeliveryDateToToday" />
</div>
</UFormGroup>
<UFormGroup

View File

@@ -50,6 +50,9 @@ const isOpen = computed({
const toDateStr = (dateStr: string) => dateStr ? $dayjs(dateStr).format('YYYY-MM-DD') : ''
const toTimeStr = (dateStr: string) => dateStr ? $dayjs(dateStr).format('HH:mm') : ''
const setDateFieldToToday = (field: 'start_date' | 'end_date') => {
state[field] = $dayjs().format('YYYY-MM-DD')
}
watch(() => props.entry, (newVal) => {
if (newVal) {
@@ -140,7 +143,10 @@ async function onSubmit(event: FormSubmitEvent<any>) {
<div class="grid grid-cols-2 gap-4">
<UFormGroup label="Start Datum" name="start_date">
<UInput type="date" v-model="state.start_date" />
<div class="flex items-center gap-2">
<UInput type="date" v-model="state.start_date" class="flex-1" />
<UButton color="gray" variant="soft" label="Heute" @click="setDateFieldToToday('start_date')" />
</div>
</UFormGroup>
<UFormGroup label="Start Zeit" name="start_time">
<UInput type="time" v-model="state.start_time" />
@@ -149,7 +155,10 @@ async function onSubmit(event: FormSubmitEvent<any>) {
<div class="grid grid-cols-2 gap-4">
<UFormGroup label="Ende Datum" name="end_date">
<UInput type="date" v-model="state.end_date" />
<div class="flex items-center gap-2">
<UInput type="date" v-model="state.end_date" class="flex-1" />
<UButton color="gray" variant="soft" label="Heute" @click="setDateFieldToToday('end_date')" />
</div>
</UFormGroup>
<UFormGroup label="Ende Zeit" name="end_time">
<UInput type="time" v-model="state.end_time" />

View File

@@ -152,7 +152,10 @@
<div class="space-y-4">
<UFormGroup label="Ausführungsdatum (Belegdatum)" help="Dieses Datum steuert auch den Leistungszeitraum (z.B. Vormonat bei 'Rückwirkend').">
<UInput type="date" v-model="executionDate" />
<div class="flex items-center gap-2">
<UInput type="date" v-model="executionDate" class="flex-1" />
<UButton color="gray" variant="soft" label="Heute" @click="setExecutionDateToToday" />
</div>
</UFormGroup>
<UDivider label="Vorlagen auswählen" />
@@ -303,6 +306,10 @@ const isExecuting = ref(false)
const modalSearch = ref("") // NEU: Suchstring für das Modal
const selectedExecutionIntervall = ref("all")
const setExecutionDateToToday = () => {
executionDate.value = dayjs().format('YYYY-MM-DD')
}
// --- SerialExecutions State ---
const showExecutionsSlideover = ref(false)
const executionItems = ref([])

View File

@@ -107,6 +107,19 @@ function recalculateWeeklyHours() {
profile.value.weekly_working_hours = Number(total.toFixed(2))
}
const getToday = () => {
const now = new Date()
const year = now.getFullYear()
const month = String(now.getMonth() + 1).padStart(2, '0')
const day = String(now.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
}
const setProfileDate = (field: 'birthday' | 'entry_date') => {
if (!profile.value) return
profile.value[field] = getToday()
}
const checkZip = async () => {
const zipData = await useFunctions().useZipCheck(profile.value.address_zip)
if (zipData) {
@@ -190,7 +203,10 @@ onMounted(fetchProfile)
</UFormGroup>
<UFormGroup label="Geburtstag">
<UInput type="date" v-model="profile.birthday" />
<div class="flex items-center gap-2">
<UInput type="date" v-model="profile.birthday" class="flex-1" />
<UButton color="gray" variant="soft" label="Heute" @click="setProfileDate('birthday')" />
</div>
</UFormGroup>
</UForm>
</UCard>
@@ -215,7 +231,10 @@ onMounted(fetchProfile)
</UFormGroup>
<UFormGroup label="Eintrittsdatum">
<UInput type="date" v-model="profile.entry_date" />
<div class="flex items-center gap-2">
<UInput type="date" v-model="profile.entry_date" class="flex-1" />
<UButton color="gray" variant="soft" label="Heute" @click="setProfileDate('entry_date')" />
</div>
</UFormGroup>
<UFormGroup label="Wöchentliche Arbeitszeit (Std)">