Add Vereinsadresse to config with option to use Vorsitzender address, add full address fields for Vorstand
This commit is contained in:
@@ -33,6 +33,68 @@
|
||||
|
||||
<!-- Tab Content -->
|
||||
<div class="p-8">
|
||||
<!-- Vereinsdaten -->
|
||||
<div v-if="activeTab === 'verein'">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900 mb-6">Vereinsdaten</h2>
|
||||
|
||||
<div class="space-y-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Vereinsname</label>
|
||||
<input
|
||||
v-model="config.verein.name"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="p-4 bg-blue-50 rounded-lg border border-blue-200">
|
||||
<label class="flex items-center cursor-pointer">
|
||||
<input
|
||||
v-model="config.verein.useVorsitzenderAddress"
|
||||
type="checkbox"
|
||||
class="w-5 h-5 text-primary-600 border-gray-300 rounded focus:ring-primary-500"
|
||||
/>
|
||||
<span class="ml-3 text-sm font-medium text-gray-900">
|
||||
Adresse des 1. Vorsitzenden als Vereinsadresse verwenden
|
||||
</span>
|
||||
</label>
|
||||
<p class="text-xs text-gray-600 mt-2 ml-8">
|
||||
Wenn deaktiviert, können Sie unten eine separate Vereinsadresse angeben.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-if="!config.verein.useVorsitzenderAddress" class="p-6 bg-gray-50 rounded-lg border border-gray-200">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4">Separate Vereinsadresse</h3>
|
||||
<div class="grid sm:grid-cols-2 gap-4">
|
||||
<div class="sm:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Straße & Hausnummer</label>
|
||||
<input
|
||||
v-model="config.verein.strasse"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">PLZ</label>
|
||||
<input
|
||||
v-model="config.verein.plz"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Ort</label>
|
||||
<input
|
||||
v-model="config.verein.ort"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Trainingszeiten -->
|
||||
<div v-if="activeTab === 'training'">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900 mb-6">Trainingszeiten & Trainingsort</h2>
|
||||
@@ -316,7 +378,7 @@
|
||||
class="p-6 bg-gray-50 rounded-lg border border-gray-200"
|
||||
>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4 capitalize">
|
||||
{{ key.replace(/([A-Z])/g, ' $1').trim() }}
|
||||
{{ formatPositionName(key) }}
|
||||
</h3>
|
||||
<div class="grid sm:grid-cols-2 gap-4">
|
||||
<div>
|
||||
@@ -335,6 +397,30 @@
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div class="sm:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Straße & Hausnummer</label>
|
||||
<input
|
||||
v-model="position.strasse"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">PLZ</label>
|
||||
<input
|
||||
v-model="position.plz"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Ort</label>
|
||||
<input
|
||||
v-model="position.ort"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Telefon</label>
|
||||
<input
|
||||
@@ -399,6 +485,7 @@ const successMessage = ref('')
|
||||
const activeTab = ref('training')
|
||||
|
||||
const config = ref({
|
||||
verein: { name: '', strasse: '', plz: '', ort: '', useVorsitzenderAddress: true },
|
||||
training: { ort: {}, zeiten: [] },
|
||||
trainer: [],
|
||||
mitgliedschaft: [],
|
||||
@@ -407,6 +494,7 @@ const config = ref({
|
||||
})
|
||||
|
||||
const tabs = [
|
||||
{ id: 'verein', label: 'Verein', icon: Settings },
|
||||
{ id: 'training', label: 'Training', icon: Calendar },
|
||||
{ id: 'trainer', label: 'Trainer', icon: UsersIcon },
|
||||
{ id: 'mitgliedschaft', label: 'Mitgliedschaft', icon: CreditCard },
|
||||
@@ -489,6 +577,18 @@ const removeMembership = (index) => {
|
||||
config.value.mitgliedschaft.splice(index, 1)
|
||||
}
|
||||
|
||||
const formatPositionName = (key) => {
|
||||
const names = {
|
||||
'vorsitzender': '1. Vorsitzender',
|
||||
'stellvertreter': 'Stellvertreter',
|
||||
'kassenwart': 'Kassenwart',
|
||||
'schriftfuehrer': 'Schriftführer',
|
||||
'sportwart': 'Sportwart',
|
||||
'jugendwart': 'Jugendwart'
|
||||
}
|
||||
return names[key] || key
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
@@ -7,12 +7,18 @@
|
||||
<div class="w-24 h-1 bg-primary-600 mb-8" />
|
||||
|
||||
<div class="bg-white p-8 rounded-xl shadow-lg space-y-6">
|
||||
<div>
|
||||
<div v-if="config">
|
||||
<h2 class="text-xl font-display font-bold text-gray-900 mb-2">Angaben gemäß § 5 TMG</h2>
|
||||
<p class="text-gray-700">
|
||||
Harheimer Tischtennis-Club 1954 e. V. (HTC)<br />
|
||||
In der Fuchskaut 4<br />
|
||||
60437 Frankfurt am Main
|
||||
{{ config.verein.name }}<br />
|
||||
<template v-if="config.verein.useVorsitzenderAddress">
|
||||
{{ config.vorstand.vorsitzender.strasse }}<br />
|
||||
{{ config.vorstand.vorsitzender.plz }} {{ config.vorstand.vorsitzender.ort }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ config.verein.strasse }}<br />
|
||||
{{ config.verein.plz }} {{ config.verein.ort }}
|
||||
</template>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -94,30 +94,30 @@
|
||||
"email": "j.dichmann@gmx.de"
|
||||
},
|
||||
"stellvertreter": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"vorname": "Jürgen",
|
||||
"nachname": "Kratz",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"telefon": "06101-43221",
|
||||
"email": ""
|
||||
},
|
||||
"kassenwart": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"vorname": "Olaf",
|
||||
"nachname": "Nüßlein",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"telefon": "06101-47469",
|
||||
"email": ""
|
||||
},
|
||||
"schriftfuehrer": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"vorname": "Jürgen",
|
||||
"nachname": "Dichmann",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"telefon": "06101-4992227",
|
||||
"email": ""
|
||||
},
|
||||
"sportwart": {
|
||||
@@ -147,4 +147,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user