Update Member model to allow optional birthDate and enhance QuickAddMemberDialog for better input handling. Refactor DiaryView to remove default birthDate logic and improve member creation process. Adjust MembersView to handle empty birthDate gracefully in formatting.
This commit is contained in:
@@ -14,7 +14,8 @@
|
||||
<input
|
||||
type="text"
|
||||
id="firstName"
|
||||
v-model="localMember.firstName"
|
||||
:value="localMember.firstName"
|
||||
@input="updateMember('firstName', $event.target.value)"
|
||||
required
|
||||
class="form-input"
|
||||
placeholder="Vorname"
|
||||
@@ -25,7 +26,8 @@
|
||||
<input
|
||||
type="text"
|
||||
id="lastName"
|
||||
v-model="localMember.lastName"
|
||||
:value="localMember.lastName"
|
||||
@input="updateMember('lastName', $event.target.value)"
|
||||
class="form-input"
|
||||
placeholder="Nachname"
|
||||
/>
|
||||
@@ -33,17 +35,18 @@
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="birthDate">Geburtsdatum:</label>
|
||||
<label for="birthDate">Geburtsdatum (optional):</label>
|
||||
<input
|
||||
type="date"
|
||||
id="birthDate"
|
||||
v-model="localMember.birthDate"
|
||||
:value="localMember.birthDate"
|
||||
@input="updateMember('birthDate', $event.target.value)"
|
||||
class="form-input"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="gender">Geschlecht:</label>
|
||||
<select id="gender" v-model="localMember.gender" class="form-select">
|
||||
<select id="gender" :value="localMember.gender" @change="updateMember('gender', $event.target.value)" class="form-select">
|
||||
<option value="">Bitte wählen</option>
|
||||
<option value="male">Männlich</option>
|
||||
<option value="female">Weiblich</option>
|
||||
@@ -101,15 +104,14 @@ export default {
|
||||
this.localMember = { ...newVal };
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
localMember: {
|
||||
handler(newVal) {
|
||||
this.$emit('update:member', newVal);
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
updateMember(field, value) {
|
||||
this.localMember[field] = value;
|
||||
this.$emit('update:member', { ...this.localMember });
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.$emit('update:modelValue', false);
|
||||
this.$emit('close');
|
||||
|
||||
@@ -1713,15 +1713,10 @@ export default {
|
||||
openQuickAddDialog() {
|
||||
this.showQuickAddDialog = true;
|
||||
|
||||
// Standard-Geburtsdatum: 01.01.(aktuelles Jahr - 10)
|
||||
const currentYear = new Date().getFullYear();
|
||||
const defaultBirthYear = currentYear - 10;
|
||||
const defaultBirthDate = `${defaultBirthYear}-01-01`;
|
||||
|
||||
this.newMember = {
|
||||
firstName: '',
|
||||
lastName: '',
|
||||
birthDate: defaultBirthDate,
|
||||
birthDate: '',
|
||||
gender: ''
|
||||
};
|
||||
},
|
||||
@@ -1736,39 +1731,46 @@ export default {
|
||||
};
|
||||
},
|
||||
|
||||
async createAndAddMember() {
|
||||
if (!this.isNewMemberValid) return;
|
||||
async createAndAddMember(memberData) {
|
||||
console.log('🔍 createAndAddMember aufgerufen mit:', memberData);
|
||||
|
||||
// Verwende die übergebenen Daten oder die lokalen Daten als Fallback
|
||||
const data = memberData || this.newMember;
|
||||
|
||||
console.log('📊 Verwendete Daten:', data);
|
||||
|
||||
if (!data.firstName || data.firstName.trim() === '') {
|
||||
console.log('❌ Validierung fehlgeschlagen: Vorname fehlt');
|
||||
this.showInfo('Fehler', 'Vorname ist erforderlich', '', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Standard-Geburtsdatum falls keins eingegeben wurde
|
||||
let birthDate = this.newMember.birthDate;
|
||||
if (!birthDate) {
|
||||
const currentYear = new Date().getFullYear();
|
||||
const defaultBirthYear = currentYear - 10;
|
||||
birthDate = `${defaultBirthYear}-01-01`;
|
||||
}
|
||||
|
||||
console.log('✅ Validierung erfolgreich, erstelle Mitglied...');
|
||||
|
||||
// Erstelle neues Mitglied
|
||||
const memberData = {
|
||||
firstName: this.newMember.firstName.trim(),
|
||||
lastName: this.newMember.lastName.trim(),
|
||||
birthDate: birthDate,
|
||||
gender: this.newMember.gender
|
||||
const memberDataToSend = {
|
||||
firstName: data.firstName.trim(),
|
||||
lastName: data.lastName.trim(),
|
||||
birthDate: data.birthDate || '',
|
||||
gender: data.gender
|
||||
};
|
||||
|
||||
console.log('📤 Sende Daten an API:', memberDataToSend);
|
||||
|
||||
const response = await apiClient.post(`/clubmembers/set/${this.currentClub}`, {
|
||||
id: null, // null für neues Mitglied
|
||||
firstname: memberData.firstName,
|
||||
lastname: memberData.lastName,
|
||||
firstname: memberDataToSend.firstName,
|
||||
lastname: memberDataToSend.lastName,
|
||||
street: '',
|
||||
city: '',
|
||||
birthdate: memberData.birthDate,
|
||||
birthdate: memberDataToSend.birthDate,
|
||||
phone: '',
|
||||
email: '',
|
||||
active: true,
|
||||
testMembership: false,
|
||||
picsInInternetAllowed: false,
|
||||
gender: memberData.gender
|
||||
gender: memberDataToSend.gender
|
||||
});
|
||||
|
||||
if (response.data.result === 'success') {
|
||||
|
||||
@@ -565,7 +565,9 @@ export default {
|
||||
pdfGenerator.save('Telefonliste.pdf');
|
||||
},
|
||||
getFormattedBirthdate(birthDate) {
|
||||
if (!birthDate) return '–';
|
||||
const date = new Date(birthDate);
|
||||
if (isNaN(date.getTime())) return '–';
|
||||
return `${String(date.getDate()).padStart(2, '0')}.${String(date.getMonth() + 1).padStart(2, '0')}.${date.getFullYear()}`;
|
||||
},
|
||||
labelGender(g) {
|
||||
|
||||
Reference in New Issue
Block a user