활동로그 추가

This commit is contained in:
2025-05-09 10:34:04 +09:00
parent 31740e2e71
commit 2924a61a9d
11 changed files with 793 additions and 565 deletions
+23 -23
View File
@@ -47,23 +47,23 @@
<Dialog v-model:visible="clubDialog" :style="{width: '450px'}"
:header="dialogMode === 'new' ? '새 클럽 추가' : '클럽 수정'"
:modal="true" class="p-fluid">
<div class="field">
<div class="field mb-3">
<label for="name">클럽명</label>
<InputText id="name" v-model="club.name" required autofocus :class="{'p-invalid': submitted && !club.name}" />
<InputText id="name" v-model="club.name" required autofocus :class="{'p-invalid': submitted && !club.name}" class="w-full"/>
<small class="p-error" v-if="submitted && !club.name">클럽명은 필수입니다.</small>
</div>
<div class="field">
<div class="field mb-3">
<label for="description">클럽 설명</label>
<Textarea id="description" v-model="club.description" rows="3" />
<Textarea id="description" v-model="club.description" rows="3" class="w-full" />
</div>
<div class="field">
<div class="field mb-3">
<label for="ownerEmail">모임장 이메일</label>
<InputText id="ownerEmail" v-model="club.ownerEmail" required :class="{'p-invalid': submitted && !club.ownerEmail}" />
<InputText id="ownerEmail" v-model="club.ownerEmail" required :class="{'p-invalid': submitted && !club.ownerEmail}" class="w-full" />
<small class="p-error" v-if="submitted && !club.ownerEmail">모임장 이메일은 필수입니다.</small>
</div>
<div class="field">
<div class="field mb-3">
<label for="location">볼링장</label>
<InputText id="location" v-model="club.location" />
<InputText id="location" v-model="club.location" class="w-full" />
</div>
<template #footer>
@@ -128,7 +128,7 @@
<Column field="gender" header="성별" sortable style="min-width: 6rem"></Column>
<Column field="memberType" header="회원 유형" sortable style="min-width: 8rem">
<template #body="slotProps">
<Dropdown v-model="slotProps.data.memberType"
<Select v-model="slotProps.data.memberType"
:options="memberTypes"
@change="updateMemberType(slotProps.data)"
:disabled="slotProps.data.memberType === '모임장' && !canChangeOwner" />
@@ -165,36 +165,36 @@
<Dialog v-model:visible="memberFormDialog" :style="{width: '450px'}"
:header="memberDialogMode === 'new' ? '새 회원 추가' : '회원 정보 수정'"
:modal="true" class="p-fluid">
<div class="field">
<div class="field mb-3">
<label for="name">이름</label>
<InputText id="name" v-model="member.name" required autofocus :class="{'p-invalid': memberSubmitted && !member.name}" />
<InputText id="name" v-model="member.name" required autofocus :class="{'p-invalid': memberSubmitted && !member.name}" class="w-full"/>
<small class="p-error" v-if="memberSubmitted && !member.name">이름은 필수입니다.</small>
</div>
<div class="field">
<div class="field mb-3">
<label for="gender">성별</label>
<Dropdown id="gender" v-model="member.gender"
<Select id="gender" v-model="member.gender"
:options="['남성', '여성']" placeholder="성별 선택"
:class="{'p-invalid': memberSubmitted && !member.gender}" />
:class="{'p-invalid': memberSubmitted && !member.gender}" class="w-full" />
<small class="p-error" v-if="memberSubmitted && !member.gender">성별은 필수입니다.</small>
</div>
<div class="field">
<div class="field mb-3">
<label for="memberType">회원 유형</label>
<Dropdown id="memberType" v-model="member.memberType"
<Select id="memberType" v-model="member.memberType"
:options="memberTypes" placeholder="회원 유형 선택"
:class="{'p-invalid': memberSubmitted && !member.memberType}" />
:class="{'p-invalid': memberSubmitted && !member.memberType}" class="w-full" />
<small class="p-error" v-if="memberSubmitted && !member.memberType">회원 유형은 필수입니다.</small>
</div>
<div class="field">
<div class="field mb-3">
<label for="handicap">핸디캡</label>
<InputNumber id="handicap" v-model="member.handicap" :min="0" :max="300" />
<InputNumber id="handicap" v-model="member.handicap" :min="0" :max="300" class="w-full" />
</div>
<div class="field">
<div class="field mb-3">
<label for="phone">연락처</label>
<InputText id="phone" v-model="member.phone" />
<InputText id="phone" v-model="member.phone" class="w-full" />
</div>
<div class="field">
<div class="field mb-3">
<label for="email">이메일</label>
<InputText id="email" v-model="member.email" type="email" />
<InputText id="email" v-model="member.email" type="email" class="w-full" />
</div>
<template #footer>