오류 수정, 통계 보강
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
<Tag :value="slotProps.value.group" :severity="slotProps.value.group === '참가자' ? 'success' : 'info'" class="mr-2" />
|
||||
<span style="font-weight:bold;">{{ slotProps.value.name }}</span>
|
||||
<span style="color:#888; font-size:0.93em; margin-left: 0.5em;">
|
||||
{{ slotProps.value.memberType }} / {{ slotProps.value.gender }} / 에버리지: {{ slotProps.value.average ?? '-' }}
|
||||
{{ getMemberTypeLabel(slotProps.value.memberType) }} / {{ getGenderLabel(slotProps.value.gender) }} / 에버리지: {{ slotProps.value.average ?? '-' }}
|
||||
</span>
|
||||
</div>
|
||||
<span v-else>
|
||||
@@ -46,7 +46,7 @@
|
||||
<Tag :value="slotProps.option.group" :severity="slotProps.option.group === '참가자' ? 'success' : 'info'" class="mr-2" />
|
||||
<span style="font-weight:bold;">{{ slotProps.option.name }}</span>
|
||||
<span style="color:#888; font-size:0.93em; margin-left: 0.5em;">
|
||||
{{ slotProps.option.memberType }} / {{ slotProps.option.gender }} / 에버리지: {{ slotProps.option.average ?? '-' }}
|
||||
{{ getMemberTypeLabel(slotProps.option.memberType) }} / {{ getGenderLabel(slotProps.option.gender) }} / 에버리지: {{ slotProps.option.average ?? '-' }}
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
@@ -65,7 +65,7 @@
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<label>성별</label>
|
||||
<Select v-model="newGuest.gender" :options="genderOptions" optionLabel="label" optionValue="value" placeholder="성별 선택" class="w-full" />
|
||||
<Select v-model="newGuest.gender" :options="GENDER_OPTIONS" optionLabel="label" optionValue="value" placeholder="성별 선택" class="w-full" />
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<label>에버리지</label>
|
||||
@@ -80,7 +80,7 @@
|
||||
<label>참가 상태</label>
|
||||
<Select
|
||||
v-model="status"
|
||||
:options="statusOptions"
|
||||
:options="STATUS_OPTIONS"
|
||||
optionLabel="label"
|
||||
optionValue="value"
|
||||
placeholder="상태를 선택하세요"
|
||||
@@ -118,6 +118,15 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
STATUS_OPTIONS,
|
||||
GENDER_OPTIONS,
|
||||
PAYMENT_STATUS_OPTIONS,
|
||||
getGenderLabel,
|
||||
getMemberTypeLabel,
|
||||
getStatusLabel,
|
||||
getPaymentStatusLabel
|
||||
} from '@/utils/enumMappings';
|
||||
import { ref, computed, watch } from 'vue';
|
||||
import Tag from 'primevue/tag';
|
||||
import InputText from 'primevue/inputtext';
|
||||
@@ -198,24 +207,18 @@ const error = ref('');
|
||||
const submitted = ref(false);
|
||||
|
||||
const statusOptions = [
|
||||
{ label: '참가예정', value: '참가예정' },
|
||||
{ label: '참가확정', value: '참가확정' },
|
||||
{ label: '취소', value: '취소' }
|
||||
{ label: getStatusLabel('참가예정'), value: '참가예정' },
|
||||
{ label: getStatusLabel('참가확정'), value: '참가확정' },
|
||||
{ label: getStatusLabel('취소'), value: '취소' }
|
||||
];
|
||||
const paymentStatusOptions = [
|
||||
{ label: '미납', value: '미납' },
|
||||
{ label: '납부완료', value: '납부완료' }
|
||||
{ label: getPaymentStatusLabel('미납'), value: '미납' },
|
||||
{ label: getPaymentStatusLabel('납부완료'), value: '납부완료' }
|
||||
];
|
||||
|
||||
const newGuest = ref({ name: '', phone: '', gender: '' });
|
||||
|
||||
import PublicEventService from '@/services/PublicEventService';
|
||||
|
||||
const newGuest = ref({ name: '', phone: '', gender: '' });
|
||||
const genderOptions = [
|
||||
{ label: '남성', value: '남성' },
|
||||
{ label: '여성', value: '여성' }
|
||||
];
|
||||
|
||||
async function addNewGuest() {
|
||||
error.value = '';
|
||||
if (!newGuest.value.name || !newGuest.value.phone || !newGuest.value.gender) {
|
||||
|
||||
@@ -16,18 +16,9 @@
|
||||
<Tag v-if="member.isGuest" value="G" severity="warning" class="ml-2" />
|
||||
</div>
|
||||
<div class="info-under-name">
|
||||
{{ member.gender || '-' }}
|
||||
<span v-if="member.status" :class="{
|
||||
'status-cancel': member.status === '취소',
|
||||
'status-pending': member.status === '참가예정'
|
||||
}">
|
||||
· {{ member.status }}
|
||||
</span>
|
||||
<span v-if="member.paymentStatus" :class="{
|
||||
'payment-unpaid': member.paymentStatus === '미납'
|
||||
}">
|
||||
· {{ member.paymentStatus }}
|
||||
</span>
|
||||
{{ getGenderLabel(member.gender) || '-' }}
|
||||
<span v-if="member.status" :class="{ 'status-cancel': member.status === 'canceled', 'status-pending': member.status === 'pending' }">· {{ getParticipantStatusLabel(member.status) }}</span>
|
||||
<span v-if="member.paymentStatus" :class="{ 'payment-unpaid': member.paymentStatus === 'unpaid' }">· {{ getPaymentStatusLabel(member.paymentStatus) }}</span>
|
||||
</div>
|
||||
<div class="member-meta">핸디캡: {{ member.handicap ?? '-' }} / 에버리지: {{ member.average ?? '-' }}</div>
|
||||
<div class="member-meta">{{ member.comment }}</div>
|
||||
@@ -55,8 +46,16 @@
|
||||
@blur="onScoreBlur(member, n, teamNumber)"
|
||||
@keydown.enter="onScoreEnter(member, n, teamNumber)"
|
||||
/>
|
||||
<span v-else>{{ member.scores?.[n - 1] ?? '-' }}</span>
|
||||
|
||||
<span
|
||||
v-else-if="
|
||||
!canInputScore &&
|
||||
member.scores?.[n-1] &&
|
||||
Number(member.scores[n-1]?.score) !==
|
||||
Number(member.scores[n-1]?.score) + Number(member.scores[n-1]?.handicap ?? member.handicap ?? 0)
|
||||
"
|
||||
>
|
||||
{{ member.scores[n-1]?.score }}
|
||||
</span>
|
||||
<!-- 핸디캡 포함 점수 표시 -->
|
||||
<span :class="scoreColorClass(scoreStates[member.participantId + '-' + n], scoresProxy[member.participantId + '-' + n], member.handicap)"
|
||||
class="score-hc-value score-status-text"
|
||||
@@ -92,6 +91,8 @@
|
||||
<script setup>
|
||||
import { computed, onMounted, watch, ref } from 'vue';
|
||||
import { calculateIndividualRankings, getRankColorClass } from '@/utils/rankingUtils';
|
||||
import { getGenderLabel, getParticipantStatusLabel, getPaymentStatusLabel } from '@/utils/enumMappings';
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
members: Array,
|
||||
|
||||
Reference in New Issue
Block a user