Mitgliedermeldung jetzt wieder möglich

This commit is contained in:
Torsten Schulz (local)
2026-06-21 17:23:29 +02:00
parent 302ed20a9b
commit dd91c07694

View File

@@ -82,6 +82,14 @@
</div>
<div class="member-preview-actions">
<button type="button" class="btn-primary" @click="editMember(selectedMemberPreview)">{{ $t('members.editMember') }}</button>
<button
v-if="canShowClickTtRegistration(selectedMemberPreview)"
type="button"
@click="requestClickTtRegistration(selectedMemberPreview)"
:disabled="isClickTtRegistrationPending(selectedMemberPreview)"
>
{{ isClickTtRegistrationPending(selectedMemberPreview) ? 'Anmeldung läuft…' : 'HTTV-Anmeldung' }}
</button>
<button type="button" @click="openOrdersDialog(selectedMemberPreview)">{{ $t('orders.title') }}</button>
<button type="button" @click="openImageModal(selectedMemberPreview)">{{ $t('members.memberImages') }}</button>
<button type="button" @click="openNotesModal(selectedMemberPreview)">{{ $t('members.notes') }}</button>
@@ -359,6 +367,27 @@
</button>
</div>
</div>
<div v-if="memberToEdit && canManageMembers" class="contact-section member-clicktt-section">
<label><span>HTTV-/click-TT</span></label>
<div class="member-clicktt-actions">
<button
v-if="canShowClickTtRegistration(memberToEdit)"
type="button"
class="member-clicktt-button"
@click="requestClickTtRegistration(memberToEdit)"
:disabled="isClickTtRegistrationPending(memberToEdit)"
>
{{ isClickTtRegistrationPending(memberToEdit) ? 'Anmeldung läuft…' : 'Spielberechtigung / Anmeldung übermitteln' }}
</button>
<div v-else class="member-clicktt-hint">
{{ clickTtRegistrationAvailabilityText(memberToEdit) }}
</div>
<div v-if="memberToEdit.clickTtApplicationSubmitted" class="member-clicktt-status">
Antrag bereits an click-TT übermittelt.
</div>
</div>
</div>
<label><span>{{ $t('members.image') }}:</span>
<div style="display: flex; gap: 10px; align-items: center;">
@@ -715,6 +744,10 @@ export default {
return this.hasPermission('members', 'write');
},
canManageMembers() {
return this.hasPermission('members', 'write');
},
trainingGroupFilterOptions() {
const groups = new Map();
this.members.forEach((member) => {
@@ -1631,6 +1664,39 @@ export default {
this.clickTtPendingMemberIds = this.clickTtPendingMemberIds.filter(id => id !== member.id);
}
},
isClickTtRegistrationPending(member) {
return !!member?.id && this.clickTtPendingMemberIds.includes(member.id);
},
canShowClickTtRegistration(member) {
if (!this.canManageMembers || !member?.id) {
return false;
}
if (!member.active) {
return false;
}
if (member.clickTtApplicationSubmitted) {
return false;
}
if (member.ttr || member.qttr) {
return false;
}
return true;
},
clickTtRegistrationAvailabilityText(member) {
if (!member?.id) {
return 'Die HTTV-Anmeldung ist erst für gespeicherte Mitglieder verfügbar.';
}
if (!member.active) {
return 'Die HTTV-Anmeldung ist nur für aktive Mitglieder verfügbar.';
}
if (member.clickTtApplicationSubmitted) {
return 'Für dieses Mitglied wurde bereits ein Antrag an click-TT übermittelt.';
}
if (member.ttr || member.qttr) {
return 'Für dieses Mitglied sind bereits TTR/QTTR-Daten vorhanden.';
}
return 'Die HTTV-Anmeldung kann hier direkt ausgelöst werden.';
},
toggleNewMember() {
this.memberFormIsOpen = !this.memberFormIsOpen;
if (!this.memberFormIsOpen && this.memberToEdit) {
@@ -4179,6 +4245,33 @@ table td {
font-size: 0.88rem;
}
.member-clicktt-section {
border: 1px solid #d7dee6;
border-radius: 10px;
background: #f8fbfd;
}
.member-clicktt-actions {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.member-clicktt-button {
align-self: flex-start;
}
.member-clicktt-hint,
.member-clicktt-status {
color: #51606f;
font-size: 0.9rem;
}
.member-clicktt-status {
color: #12427a;
font-weight: 600;
}
@keyframes pulse-warning {
0%, 100% {
opacity: 1;