오류 수정, 통계 보강
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
</Column>
|
||||
<Column field="owner.name" header="모임장" sortable style="width: 15%">
|
||||
<template #body="slotProps">
|
||||
{{ slotProps.data.owner?.name || '-' }}
|
||||
{{ slotProps.data.owner?.name || 'guest' }}
|
||||
</template>
|
||||
</Column>
|
||||
<Column field="memberCount" header="회원 수" sortable style="width: 10%"></Column>
|
||||
@@ -125,13 +125,16 @@
|
||||
</div>
|
||||
</template>
|
||||
</Column>
|
||||
<Column field="gender" header="성별" sortable style="min-width: 6rem"></Column>
|
||||
<Column field="gender" header="성별" sortable style="min-width: 6rem">
|
||||
<template #body="slotProps">
|
||||
{{ getGenderLabel(slotProps.data.gender) }}
|
||||
</template>
|
||||
</Column>
|
||||
<Column field="memberType" header="회원 유형" sortable style="min-width: 8rem">
|
||||
<template #body="slotProps">
|
||||
<Select v-model="slotProps.data.memberType"
|
||||
:options="memberTypes"
|
||||
@change="updateMemberType(slotProps.data)"
|
||||
:disabled="slotProps.data.memberType === '모임장' && !canChangeOwner" />
|
||||
<span>
|
||||
{{ getMemberTypeLabel(slotProps.data.memberType) }}
|
||||
</span>
|
||||
</template>
|
||||
</Column>
|
||||
<Column field="handicap" header="핸디캡" sortable style="min-width: 6rem"></Column>
|
||||
@@ -154,7 +157,7 @@
|
||||
<Button icon="pi pi-trash"
|
||||
class="p-button-rounded p-button-danger"
|
||||
@click="confirmDeleteMember(slotProps.data)"
|
||||
:disabled="slotProps.data.memberType === '모임장'" />
|
||||
:disabled="slotProps.data.memberType === 'owner'" />
|
||||
</template>
|
||||
</Column>
|
||||
</DataTable>
|
||||
@@ -172,16 +175,22 @@
|
||||
</div>
|
||||
<div class="field mb-3">
|
||||
<label for="gender">성별</label>
|
||||
<Select id="gender" v-model="member.gender"
|
||||
:options="['남성', '여성']" placeholder="성별 선택"
|
||||
:class="{'p-invalid': memberSubmitted && !member.gender}" class="w-full" />
|
||||
<Select id="gender" v-model="member.gender"
|
||||
:options="[{ label: '남성', value: 'male' }, { label: '여성', value: 'female' }]" optionLabel="label" optionValue="value" placeholder="성별 선택"
|
||||
:class="{'p-invalid': memberSubmitted && !member.gender}" class="w-full" />
|
||||
<small class="p-error" v-if="memberSubmitted && !member.gender">성별은 필수입니다.</small>
|
||||
</div>
|
||||
<div class="field mb-3">
|
||||
<label for="memberType">회원 유형</label>
|
||||
<Select id="memberType" v-model="member.memberType"
|
||||
:options="memberTypes" placeholder="회원 유형 선택"
|
||||
:class="{'p-invalid': memberSubmitted && !member.memberType}" class="w-full" />
|
||||
<Select id="memberType" v-model="member.memberType"
|
||||
:options="[
|
||||
{ label: '정회원', value: 'regular' },
|
||||
{ label: '준회원', value: 'associate' },
|
||||
{ label: '게스트', value: 'guest' },
|
||||
{ label: '운영진', value: 'manager' },
|
||||
{ label: '모임장', value: 'owner' }
|
||||
]" optionLabel="label" optionValue="value" placeholder="회원 유형 선택"
|
||||
:class="{'p-invalid': memberSubmitted && !member.memberType}" class="w-full" />
|
||||
<small class="p-error" v-if="memberSubmitted && !member.memberType">회원 유형은 필수입니다.</small>
|
||||
</div>
|
||||
<div class="field mb-3">
|
||||
@@ -234,6 +243,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getGenderLabel, getMemberTypeLabel } from '@/utils/enumMappings';
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { useToast } from 'primevue/usetoast';
|
||||
import dayjs from 'dayjs';
|
||||
@@ -257,7 +267,7 @@ const clubs = ref([]);
|
||||
const clubMembers = ref([]);
|
||||
|
||||
// 회원 유형 목록
|
||||
const memberTypes = ref(['모임장', '정회원', '준회원', '운영진']);
|
||||
const memberTypes = ref(['owner', 'regular', 'associate', 'manager']);
|
||||
|
||||
// 기능 목록
|
||||
const allFeatures = ref([
|
||||
@@ -585,7 +595,7 @@ const openNewMemberDialog = () => {
|
||||
id: null,
|
||||
name: '',
|
||||
gender: null,
|
||||
memberType: '준회원',
|
||||
memberType: 'associate',
|
||||
handicap: 0,
|
||||
phone: '',
|
||||
email: ''
|
||||
|
||||
Reference in New Issue
Block a user