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 = [{ const attrs = [{
key: 'today', key: 'today',
highlight: { highlight: {
@@ -37,6 +42,7 @@ const attrs = [{
</script> </script>
<template> <template>
<div class="space-y-3">
<VCalendarDatePicker <VCalendarDatePicker
show-weeknumbers show-weeknumbers
v-model="date" v-model="date"
@@ -51,4 +57,16 @@ const attrs = [{
trim-weeks trim-weeks
:first-day-of-week="2" :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> </template>

View File

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

View File

@@ -50,6 +50,9 @@ const isOpen = computed({
const toDateStr = (dateStr: string) => dateStr ? $dayjs(dateStr).format('YYYY-MM-DD') : '' const toDateStr = (dateStr: string) => dateStr ? $dayjs(dateStr).format('YYYY-MM-DD') : ''
const toTimeStr = (dateStr: string) => dateStr ? $dayjs(dateStr).format('HH:mm') : '' 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) => { watch(() => props.entry, (newVal) => {
if (newVal) { if (newVal) {
@@ -140,7 +143,10 @@ async function onSubmit(event: FormSubmitEvent<any>) {
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<UFormGroup label="Start Datum" name="start_date"> <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>
<UFormGroup label="Start Zeit" name="start_time"> <UFormGroup label="Start Zeit" name="start_time">
<UInput type="time" v-model="state.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"> <div class="grid grid-cols-2 gap-4">
<UFormGroup label="Ende Datum" name="end_date"> <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>
<UFormGroup label="Ende Zeit" name="end_time"> <UFormGroup label="Ende Zeit" name="end_time">
<UInput type="time" v-model="state.end_time" /> <UInput type="time" v-model="state.end_time" />

View File

@@ -152,7 +152,10 @@
<div class="space-y-4"> <div class="space-y-4">
<UFormGroup label="Ausführungsdatum (Belegdatum)" help="Dieses Datum steuert auch den Leistungszeitraum (z.B. Vormonat bei 'Rückwirkend')."> <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> </UFormGroup>
<UDivider label="Vorlagen auswählen" /> <UDivider label="Vorlagen auswählen" />
@@ -303,6 +306,10 @@ const isExecuting = ref(false)
const modalSearch = ref("") // NEU: Suchstring für das Modal const modalSearch = ref("") // NEU: Suchstring für das Modal
const selectedExecutionIntervall = ref("all") const selectedExecutionIntervall = ref("all")
const setExecutionDateToToday = () => {
executionDate.value = dayjs().format('YYYY-MM-DD')
}
// --- SerialExecutions State --- // --- SerialExecutions State ---
const showExecutionsSlideover = ref(false) const showExecutionsSlideover = ref(false)
const executionItems = ref([]) const executionItems = ref([])

View File

@@ -107,6 +107,19 @@ function recalculateWeeklyHours() {
profile.value.weekly_working_hours = Number(total.toFixed(2)) 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 checkZip = async () => {
const zipData = await useFunctions().useZipCheck(profile.value.address_zip) const zipData = await useFunctions().useZipCheck(profile.value.address_zip)
if (zipData) { if (zipData) {
@@ -190,7 +203,10 @@ onMounted(fetchProfile)
</UFormGroup> </UFormGroup>
<UFormGroup label="Geburtstag"> <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> </UFormGroup>
</UForm> </UForm>
</UCard> </UCard>
@@ -215,7 +231,10 @@ onMounted(fetchProfile)
</UFormGroup> </UFormGroup>
<UFormGroup label="Eintrittsdatum"> <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>
<UFormGroup label="Wöchentliche Arbeitszeit (Std)"> <UFormGroup label="Wöchentliche Arbeitszeit (Std)">