feature/#97-member-extend-data #105

Merged
jkeffects merged 4 commits from feature/#97-member-extend-data into develop 2025-06-03 13:33:18 +00:00
4 changed files with 20 additions and 4 deletions
Showing only changes of commit 3b89262ce9 - Show all commits

View file

@ -80,6 +80,10 @@
<input type="text" id="internalId" /> <input type="text" id="internalId" />
</div> </div>
<div>
<label for="note">Notiz (optional)</label>
<textarea type="text" id="note" />
</div>
<div class="flex flex-row gap-2"> <div class="flex flex-row gap-2">
<button primary type="submit" :disabled="status == 'loading' || status?.status == 'success'">erstellen</button> <button primary type="submit" :disabled="status == 'loading' || status?.status == 'success'">erstellen</button>
<Spinner v-if="status == 'loading'" class="my-auto" /> <Spinner v-if="status == 'loading'" class="my-auto" />
@ -154,6 +158,7 @@ export default defineComponent({
nameaffix: formData.nameaffix.value, nameaffix: formData.nameaffix.value,
birthdate: formData.birthdate.value, birthdate: formData.birthdate.value,
internalId: formData.internalId.value, internalId: formData.internalId.value,
note: formData.note.value,
}; };
this.status = "loading"; this.status = "loading";
this.createMember(createMember) this.createMember(createMember)

View file

@ -15,6 +15,7 @@ export interface MemberViewModel {
sendNewsletter?: CommunicationViewModel; sendNewsletter?: CommunicationViewModel;
smsAlarming?: Array<CommunicationViewModel>; smsAlarming?: Array<CommunicationViewModel>;
preferredCommunication?: Array<CommunicationViewModel>; preferredCommunication?: Array<CommunicationViewModel>;
note?: string;
} }
export interface MemberStatisticsViewModel { export interface MemberStatisticsViewModel {
@ -36,6 +37,7 @@ export interface CreateMemberViewModel {
nameaffix: string; nameaffix: string;
birthdate: Date; birthdate: Date;
internalId?: string; internalId?: string;
note?: string;
} }
export interface UpdateMemberViewModel { export interface UpdateMemberViewModel {
@ -46,4 +48,5 @@ export interface UpdateMemberViewModel {
nameaffix: string; nameaffix: string;
birthdate: Date; birthdate: Date;
internalId?: string; internalId?: string;
note?: string;
} }

View file

@ -75,6 +75,10 @@
<label for="internalId">Interne ID (optional)</label> <label for="internalId">Interne ID (optional)</label>
<input type="text" id="internalId" v-model="member.internalId" /> <input type="text" id="internalId" v-model="member.internalId" />
</div> </div>
<div>
<label for="note">Notiz (optional)</label>
<textarea type="text" id="note" v-model="member.note" />
</div>
<div class="flex flex-row justify-end gap-2"> <div class="flex flex-row justify-end gap-2">
<button primary-outline type="reset" class="w-fit!" :disabled="canSaveOrReset" @click="resetForm"> <button primary-outline type="reset" class="w-fit!" :disabled="canSaveOrReset" @click="resetForm">
verwerfen verwerfen
@ -93,7 +97,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import MainTemplate from "@/templates/Main.vue";
import { useMemberStore } from "@/stores/admin/club/member/member"; import { useMemberStore } from "@/stores/admin/club/member/member";
import type { MemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { MemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
@ -163,6 +166,7 @@ export default defineComponent({
nameaffix: formData.nameaffix.value, nameaffix: formData.nameaffix.value,
birthdate: formData.birthdate.value, birthdate: formData.birthdate.value,
internalId: formData.internalId.value, internalId: formData.internalId.value,
note: formData.note.value,
}; };
this.status = "loading"; this.status = "loading";
this.updateActiveMember(updateMember) this.updateActiveMember(updateMember)

View file

@ -25,13 +25,17 @@
<label for="birthdate">Geburtsdatum</label> <label for="birthdate">Geburtsdatum</label>
<input type="date" id="birthdate" :value="activeMemberObj.birthdate" readonly /> <input type="date" id="birthdate" :value="activeMemberObj.birthdate" readonly />
</div> </div>
<div>
<label for="note">Notiz</label>
<textarea type="text" id="note" v-model="activeMemberObj.note" readonly />
</div>
<div v-if="membershipStatistics.length != 0 || totalMembershipStatistics != undefined"> <div v-if="membershipStatistics.length != 0 || totalMembershipStatistics != undefined">
<p>Statistiken zur Mitgliedschaft</p> <p>Statistiken zur Mitgliedschaft</p>
<div class="flex flex-col h-fit w-full rounded-md overflow-hidden"> <div class="flex flex-col h-fit w-full rounded-md overflow-hidden divide-y divide-white">
<div class="bg-primary p-2 text-white flex flex-row justify-between items-center"> <div class="bg-primary p-2 text-white flex flex-row justify-between items-center">
<p> <p>
gesamt {{ totalMembershipStatistics.durationInDays }} Tage gesamt {{ totalMembershipStatistics?.durationInDays }} Tage
<span class="whitespace-nowrap"> ~> {{ totalMembershipStatistics.exactDuration }}</span> <span class="whitespace-nowrap"> ~> {{ totalMembershipStatistics?.exactDuration }}</span>
</p> </p>
</div> </div>
<div <div