This commit is contained in:
2026-03-25 20:28:04 +01:00
parent 37039f082c
commit 33b4a249cc
9 changed files with 303 additions and 42 deletions

View File

@@ -12,6 +12,7 @@ Route::middleware(IdentifyTenant::class)->group(function () {
Route::get('/available-events', AvailableEventsController::class);
Route::get('/{eventId}', SignupController::class);
Route::get('/{eventId}/signup', SignupController::class);
Route::middleware(['auth'])->group(function () {

View File

@@ -3,7 +3,8 @@ import {onMounted, reactive, ref} from "vue";
import ParticipationFees from "./ParticipationFees.vue";
import ParticipationSummary from "./ParticipationSummary.vue";
import CommonSettings from "./CommonSettings.vue";
import EventManagement from "./EventManagement.vue";
import EventManagement from "./EventManagement.vue";
import Modal from "../../../../Views/Components/Modal.vue";
const props = defineProps({
data: Object,
@@ -14,6 +15,8 @@ import EventManagement from "./EventManagement.vue";
});
const displayData = ref('main');
const showEventData = ref(false);
async function showMain() {
const response = await fetch("/api/v1/event/details/" + props.data.event.id + '/summary');
@@ -34,12 +37,14 @@ import EventManagement from "./EventManagement.vue";
displayData.value = 'eventManagement';
}
async function eventData() {
showEventData.value = true;
}
onMounted(async () => {
const response = await fetch("/api/v1/event/details/" + props.data.event.id + '/summary');
const data = await response.json();
Object.assign(dynamicProps, data);
console.log(dynamicProps.event)
});
</script>
@@ -53,7 +58,7 @@ import EventManagement from "./EventManagement.vue";
<div class="event-flexbox" v-else>
<div class="event-flexbox-row top">
<div class="left"><ParticipationSummary :event="dynamicProps.event" /></div>
<div class="left"><ParticipationSummary v-if="dynamicProps.event" :event="dynamicProps.event" /></div>
<div class="right">
<input type="button" value="Erste-Hilfe-Liste (PDF)" /><br/>
<input type="button" value="Teili-Liste (CSV)" /><br/>
@@ -70,10 +75,45 @@ import EventManagement from "./EventManagement.vue";
<div class="event-flexbox-row bottom">
<label style="font-size: 9pt;" class="link" @click="showCommonSettings">Allgemeine Einstellungen</label> &nbsp;
<label style="font-size: 9pt;" class="link" @click="showEventManagement">Veranstaltungsleitung</label> &nbsp;
<label style="font-size: 9pt;" class="link" @click="eventData()">Details für Einladung</label> &nbsp;
<label style="font-size: 9pt;" class="link" @click="showParticipationFees">Teilnahmegebühren</label>
<a style="font-size: 9pt;" class="link" :href="'/cost-unit/' + props.data.event.costUnit.id">Ausgabenübersicht</a>
</div>
</div>
<Modal title="Veranstaltungsdetails" v-if="showEventData" :show="showEventData" @close="showEventData = false">
<table>
<tr>
<th>Beginn</th>
<td>{{ dynamicProps.event.eventBegin }}</td>
</tr>
<tr>
<th>Ende</th>
<td>{{ dynamicProps.event.eventEnd }}</td>
</tr>
<tr>
<th>Anmeldeschluss</th>
<td>{{dynamicProps.event.earlyBirdEnd.formatted}}</td>
</tr>
<tr>
<th>Nachmeldeschluss</th>
<td>{{dynamicProps.event.registrationFinalEnd.formatted}}</td>
</tr>
<tr>
<th>Anmelde-URL</th>
<td>
{{dynamicProps.event.url}}<br />
<img :src="'/print-event-code/' + dynamicProps.event.identifier" alt="Event Code" style="width: 150px; height: 150px; margin-top: 20px;" />
</td>
</tr>
</table>
</Modal>
</template>
<style>
@@ -96,7 +136,7 @@ import EventManagement from "./EventManagement.vue";
}
.event-flexbox-row.top .right {
flex: 0 0 250px; /* feste Breite von 20% */
flex: 0 0 250px;
padding: 10px;
}

View File

@@ -3,6 +3,9 @@
event: Object
})
console.log(props.event)
</script>
<template>
@@ -11,35 +14,61 @@
<div class="participant-flexbox-row top">
<div class="left">
<h3>Teilnehmende</h3>
<table class="participant-income-table" style="margin-bottom: 40px;">
<table class="participant-income-table" style="margin-bottom: 40px; font-size: 11pt;">
<tr>
<th>Teili</th>
<td>7 Personen:</td>
<td>35,00 Euro</td>
<td>{{props.event.participants.participant.count}} Personen:</td>
<td>
{{props.event.participants.participant.amount.paid.readable}} /
</td>
<td>
{{props.event.participants.participant.amount.expected.readable}}
</td>
</tr>
<tr>
<th>Teili</th>
<td>7 Personen:</td>
<td>35,00 Euro</td>
<th>Team</th>
<td>{{props.event.participants.team.count}} Personen:</td>
<td>
{{props.event.participants.team.amount.paid.readable}} /
</td>
<td>
{{props.event.participants.team.amount.expected.readable}}
</td>
</tr>
<tr>
<th>Teili</th>
<td>7 Personen:</td>
<td>35,00 Euro</td>
<th>Unterstützende</th>
<td>{{props.event.participants.volunteer.count}} Personen:</td>
<td>
{{props.event.participants.volunteer.amount.paid.readable}} /
</td>
<td>
{{props.event.participants.volunteer.amount.expected.readable}}
</td>
</tr>
<tr>
<th colspan="2">Sonstiges</th>
<td>{{ props.event.flatSupport }}</td>
<th>Sonstige</th>
<td>{{props.event.participants.other.count}} Personen:</td>
<td>
{{props.event.participants.other.amount.paid.readable}} /
</td>
<td>
{{props.event.participants.other.amount.expected.readable}}
</td>
</tr>
<tr>
<th colspan="2">Sonstige Einnahmen</th>
<td colspan="2">{{ props.event.flatSupport }}</td>
</tr>
<tr>
<th style="padding-bottom: 20px" colspan="2">Förderung</th>
<td style="padding-bottom: 20px">
{{ props.event.supportPersonCalced }}<br />
<label style="font-size: 9pt;">({{ props.event.supportPerson }} / Tag p.P.)</label>
<td style="padding-bottom: 20px" colspan="2">
{{ props.event.supportPerson.readable }}<br />
<label style="font-size: 9pt;">({{ props.event.supportPersonIndex }} / Tag p.P.)</label>
</td>
</tr>
@@ -47,27 +76,38 @@
<tr>
<th colspan="2" style="border-width: 1px; border-bottom-style: solid">Gesamt</th>
<td style="font-weight: bold; border-width: 1px; border-bottom-style: solid">{{ props.event.totalIncome }}</td>
<td style="font-weight: bold; border-width: 1px; border-bottom-style: solid">
{{ props.event.income.real.readable }} /
</td>
<td style="font-weight: bold; border-width: 1px; border-bottom-style: solid">
{{ props.event.income.expected.readable }}
</td>
</tr>
<tr style="color:#4caf50;" v-if="props.event.totalBalance.value >= 0">
<tr>
<th style="padding-top: 20px; font-size: 12pt !important;" colspan="2">Bilanz</th>
<td style="font-weight: bold; padding-top: 20px; font-size: 12pt !important;">{{ props.event.totalBalance.text }}</td>
</tr>
<td v-if="props.event.totalBalance.real.value >= 0" style="color: #4caf50;font-weight: bold; padding-top: 20px; font-size: 12pt !important;">
{{ props.event.totalBalance.real.readable }} /
</td>
<td v-else style="color: #f44336; font-weight: bold; padding-top: 20px; font-size: 12pt !important;">
{{props.event.totalBalance.expected.readable}}
</td>
<tr style="color:#f44336;" v-else>
<th style="padding-top: 20px; font-size: 12pt !important;" colspan="2">Bilanz</th>
<td style="font-weight: bold; padding-top: 20px; font-size: 12pt !important;">{{ props.event.totalBalance.text }}</td>
<td v-if="props.event.totalBalance.expected.value >= 0" style="color: #4caf50; font-weight: bold; padding-top: 20px; font-size: 12pt !important;">
{{ props.event.totalBalance.expected.readable }}
</td>
<td v-else style="color: #f44336; font-weight: bold; padding-top: 20px; font-size: 12pt !important;">
{{props.event.totalBalance.expected.readable}}
</td>
</tr>
</table>
<strong>Anmelde-URL: {{props.event.url}}</strong>
</div>
<div class="right">
<h3>Ausgaben</h3>
<table class="event-payment-table">
<table class="event-payment-table" style="font-size: 11pt;">
<tr v-for="amount in props.event.costUnit.amounts">
<th>{{amount.name}}</th>
<td>{{amount.string}}</td>
@@ -110,7 +150,7 @@
.participant-income-table,
.event-payment-table {
width: 300px;
width: 475px;
}
.participant-income-table th {
@@ -122,4 +162,8 @@
width: 25px !important;
font-size: 11pt;
}
.event-payment-table {
width: 100%;
}
</style>