Merge branch 'khj'

This commit is contained in:
khj0414 2025-03-07 16:21:31 +09:00
commit e9c0b09d93
4 changed files with 50 additions and 35 deletions

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="card mb-6"> <div class="card mb-6" :class="{'disabled-class': data.localVote.LOCVOTDDT}" >
<div class="card-body" v-if="!data.localVote.LOCVOTDEL" > <div class="card-body" v-if="!data.localVote.LOCVOTDEL" >
<h5 class="card-title mb-1"> <h5 class="card-title mb-1">
<div class="list-unstyled users-list d-flex align-items-center gap-1"> <div class="list-unstyled users-list d-flex align-items-center gap-1">
@ -18,7 +18,7 @@
</div> </div>
<div class="add-btn d-flex align-items-center"> <div class="add-btn d-flex align-items-center">
<!-- 투표완료시 --> <!-- 투표완료시 -->
<i v-if="data.yesVotetotal == '1'" class="bx bxs-check-circle link-success"></i> <i v-if="yesVotetotal != '0'" class="bx bxs-check-circle link-success"></i>
<!-- 투표작성자만 수정/삭제/종료 가능 --> <!-- 투표작성자만 수정/삭제/종료 가능 -->
<div v-if="userStore.user.id === data.localVote.LOCVOTREG"> <div v-if="userStore.user.id === data.localVote.LOCVOTREG">
<button <button
@ -27,8 +27,9 @@
class="bx btn btn-danger" class="bx btn btn-danger"
@click="endBtn(data.localVote.LOCVOTSEQ)" @click="endBtn(data.localVote.LOCVOTSEQ)"
>종료</button> >종료</button>
<DeleteBtn @click="voteDelete(data.localVote.LOCVOTSEQ)" /> <DeleteBtn v-if="!data.localVote.LOCVOTDDT" @click="voteDelete(data.localVote.LOCVOTSEQ)" />
</div> </div>
<p v-if="data.localVote.LOCVOTDDT" class="btn-icon btn-danger rounded-2"><i class="bx bx-power-off"></i></p>
</div> </div>
</div> </div>
</div> </div>
@ -37,21 +38,23 @@
<h5 class="mb-1">{{ data.localVote.LOCVOTTTL }}</h5> <h5 class="mb-1">{{ data.localVote.LOCVOTTTL }}</h5>
<small >{{ data.localVote.formatted_LOCVOTRDT }} ~ {{ data.localVote.formatted_LOCVOTEDT }}</small> <small >{{ data.localVote.formatted_LOCVOTRDT }} ~ {{ data.localVote.formatted_LOCVOTEDT }}</small>
<!-- 투표안했을시--> <!-- 투표안했을시-->
<div v-if="data.localVote.LOCVOTDDT && data.voteResult.length == 0"> <div v-if="data.localVote.LOCVOTDDT && voteResult == 0">
<small class="text-primary text-uppercase">투표 결과없음 (😂아무도 투표하지 않았습니다)</small> <small class="text-primary text-uppercase">투표 결과없음 (😂아무도 투표하지 않았습니다)</small>
</div> </div>
<div v-else> <div v-else>
<vote-card-check <vote-card-check
v-if="data.yesVotetotal == 0" v-if="yesVotetotal == 0 && !data.localVote.LOCVOTDDT"
@addContents="addContents" @addContents="addContents"
@checkedNames="checkedNames" @checkedNames="checkedNames"
:data="data.voteDetails" :data="data.voteDetails"
:voteInfo="data.localVote" :voteInfo="data.localVote"
:total="data.voteDetails.length "/> :total="data.voteDetails.length "/>
<small v-if="yesVotetotal != 0 && !data.localVote.LOCVOTDDT">투표 완료 : 종료시 투표 결과가 나타납니다.</small>
<!-- 투표 결과 --> <!-- 투표 결과 -->
<div v-if="data.localVote.LOCVOTDDT" class="mt-3"> <div v-if="data.localVote.LOCVOTDDT" class="mt-3">
<vote-result-list :data="data.voteResult" @randomList="randomList" :randomResultNum="data.localVote.LOCVOTRES"/> <vote-result-list :data="data.voteDetails" @randomList="randomList" :randomResultNum="data.localVote.LOCVOTRES"/>
</div> </div>
<!-- 투표완/미완 인원 --> <!-- 투표완/미완 인원 -->
<vote-user-list <vote-user-list
@ -85,6 +88,13 @@ const props = defineProps({
required: false, required: false,
}, },
}); });
const voteResult = computed(() => {
return props.data.voteDetails.reduce((sum, item) => sum + item.VOTE_COUNT, 0);
});
const yesVotetotal = computed(() => {
return props.data.voteDetails.reduce((sum, item) => sum + item.yesvote, 0);
});
const baseUrl = $api.defaults.baseURL.replace(/api\/$/, ''); const baseUrl = $api.defaults.baseURL.replace(/api\/$/, '');
const userStore = useUserInfoStore(); const userStore = useUserInfoStore();
const currentDate = new Date(); const currentDate = new Date();

View File

@ -10,27 +10,26 @@
:selectedValues="checkedNames" :selectedValues="checkedNames"
@update:selectedValues="updateCheckedNames" @update:selectedValues="updateCheckedNames"
/> />
<div v-if="voteInfo.LOCVOTADD ==='1' && index === data.length - 1" class="d-flex align-items-center"> <div v-if="voteInfo.LOCVOTADD ==='1' && index === data.length - 1">
<div class="d-flex flex-column gap-2"> <div v-for="(item, index) in itemList" :key="index" class="d-flex align-items-start mt-2">
<div v-for="(item, index) in itemList" :key="index" class="d-flex align-items-start"> <div class="flex-grow-1 me-2 ">
<form-input <form-input
class="flex-grow-1 me-2"
:title="'항목 ' + (index + data.length + 1)" :title="'항목 ' + (index + data.length + 1)"
:name="'content' + index" :name="'content' + index"
:is-essential="false" :is-essential="false"
:is-alert="contentAlerts[index]" :is-alert="contentAlerts[index]"
v-model="item.content" v-model="item.content"
/> />
<link-input v-model="item.url" /> <link-input v-model="item.url" />
<delete-btn @click="removeItem(index)" class="ms-2" />
</div> </div>
<div class="mb-4 d-flex justify-content"> <delete-btn @click="removeItem(index)" />
<plus-btn @click="addItem" :disabled="total >= 10" class="mb-3" /> </div>
<div class="mb-4 d-flex justify-content mt-3">
<plus-btn @click="addItem" :disabled="total >= 10" class="mb-2" />
<button class="btn btn-primary btn-icon mb-3" @click="addContentSave(item.LOCVOTSEQ)" :disabled="isSaveDisabled"> <button class="btn btn-primary btn-icon mb-3" @click="addContentSave(item.LOCVOTSEQ)" :disabled="isSaveDisabled">
<i class="bx bx-check"></i> <i class="bx bx-check"></i>
</button> </button>
</div> </div>
</div>
</div> </div>
</div> </div>

View File

@ -11,7 +11,7 @@
@change="onChange" @change="onChange"
:value="formValue" :value="formValue"
:disabled="isDisabled" :disabled="isDisabled"
:isEssential="true" :isEssential="false"
/> />
</div> </div>
<div class="col-2 btn-margin" v-if="!isDisabled"> <div class="col-2 btn-margin" v-if="!isDisabled">

View File

@ -77,20 +77,23 @@ const changeCheck = () =>{
getvoteList(); getvoteList();
} }
// //
const getvoteList = async () => { const getvoteList = () => {
const response = await $api.get('vote/getVoteList',{ isLoading.value = true;
params: $api.get('vote/getVoteList',{
{ //
page: currentPage.value params:
,voteset:voteset.value {
,myVote:ischeked.value ? '1':'0' page: currentPage.value
} ,voteset:voteset.value
}); ,myVote:ischeked.value ? '1':'0'
if (response.data.status === "OK") { }
PageData.value = response.data.data; }).then(res => {
voteListCardData.value = response.data.data.list; PageData.value = res.data.data;
} voteListCardData.value = res.data.data.list;
}; isLoading.value = false;
})
};
const selectHandler = () =>{ const selectHandler = () =>{
voteset.value = category.value; voteset.value = category.value;
getvoteList(); getvoteList();
@ -148,14 +151,17 @@ const voteDelete =(id) =>{
} }
// 1 // 1
const randomList = (data,id) =>{ const randomList = (data,id) =>{
isLoading.value = false;
$api.post('vote/randomList',{ $api.post('vote/randomList',{
randomList :data randomList :data
,voteid:id ,voteid:id
}).then((res)=>{ }).then((res)=>{
if(res.data.status === 'OK'){ if(res.data.status === 'OK'){
toastStore.onToast('랜덤뽑기 진행되었습니다.', 's'); toastStore.onToast('랜덤뽑기 진행되었습니다.', 's');
getvoteList(); setTimeout(() => {
} getvoteList();
}, 2000); // 3000ms = 3
}
}) })
} }
// //