Merge branch 'khj'
This commit is contained in:
commit
936be84a6f
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="card mb-6" :class="{'disabled-class': data.localVote.LOCVOTDDT}" >
|
||||
<div class="card mb-6" :class="{ 'disabled-class': data.localVote.LOCVOTDDT && (topVoters.length == 1 || data.localVote.LOCVOTRES || voteResult == 0)}">
|
||||
<div class="card-body" v-if="!data.localVote.LOCVOTDEL" >
|
||||
<h5 class="card-title mb-1">
|
||||
<div class="list-unstyled users-list d-flex align-items-center gap-1">
|
||||
@ -15,10 +15,9 @@
|
||||
<div class="d-flex justify-content-between">
|
||||
<div class="user-info">
|
||||
<h6 class="mb-1">{{ data.localVote.MEMBERNAM }}</h6>
|
||||
<!-- 투표완료시 -->
|
||||
</div>
|
||||
<div class="add-btn d-flex align-items-center">
|
||||
<!-- 투표완료시 -->
|
||||
<i v-if="yesVotetotal != '0'" class="bx bxs-check-circle link-success"></i>
|
||||
<!-- 투표작성자만 수정/삭제/종료 가능 -->
|
||||
<div v-if="userStore.user.id === data.localVote.LOCVOTREG">
|
||||
<button
|
||||
@ -31,6 +30,7 @@
|
||||
<DeleteBtn v-if="!data.localVote.LOCVOTDDT" @click="voteDelete(data.localVote.LOCVOTSEQ)" />
|
||||
</div>
|
||||
<p v-if="data.localVote.LOCVOTDDT" class="btn-icon btn-danger rounded-2"><i class="bx bx-power-off"></i></p>
|
||||
<i v-if="yesVotetotal != '0'" class="bx bxs-check-circle link-success"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -55,7 +55,7 @@
|
||||
|
||||
<!-- 투표 결과 -->
|
||||
<div v-if="data.localVote.LOCVOTDDT" class="mt-3">
|
||||
<vote-result-list :data="data.voteDetails" @randomList="randomList" :randomResultNum="data.localVote.LOCVOTRES"/>
|
||||
<vote-result-list :data="topVoters" @randomList="randomList" :randomResultNum="data.localVote.LOCVOTRES" :locvotreg="data.localVote.LOCVOTREG"/>
|
||||
</div>
|
||||
<!-- 투표완/미완 인원 -->
|
||||
<vote-user-list
|
||||
@ -96,6 +96,14 @@ const yesVotetotal = computed(() => {
|
||||
return props.data.voteDetails.reduce((sum, item) => sum + item.yesvote, 0);
|
||||
});
|
||||
|
||||
// 가장 많은 투표를 받은 항목들 (1위)
|
||||
const topVoters = computed(() => {
|
||||
// 가장 높은 VOTE_COUNT 찾기
|
||||
const maxVoteCount = Math.max(...props.data.voteDetails.map(item => item.VOTE_COUNT));
|
||||
// VOTE_COUNT가 가장 높은 항목들 필터링
|
||||
return props.data.voteDetails.filter(item => item.VOTE_COUNT === maxVoteCount);
|
||||
});
|
||||
|
||||
const baseUrl = $api.defaults.baseURL.replace(/api\/$/, '');
|
||||
const userStore = useUserInfoStore();
|
||||
const currentDate = new Date();
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
<div class="card mb-6 border border-2 border-primary rounded primary-shadow">
|
||||
<div class="card-body">
|
||||
<!-- 1위가 여러개일때 -->
|
||||
<vote-result-random v-if="topVoters.length > 1" :data="topVoters" :randomResultNum="randomResultNum"
|
||||
<vote-result-random v-if="topVoters.length > 1" :data="topVoters" :randomResultNum="randomResultNum" :locvotreg="locvotreg"
|
||||
@randomList="randomList"/>
|
||||
<!-- 1위가 하나일때-->
|
||||
<vote-result-card v-if="topVoters.length == 1" :data="topVoters"/>
|
||||
@ -24,6 +24,10 @@ const props = defineProps({
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
locvotreg: {
|
||||
type: Number,
|
||||
required: false,
|
||||
},
|
||||
});
|
||||
// 가장 많은 투표를 받은 항목들 (1위)
|
||||
const topVoters = computed(() => {
|
||||
|
||||
@ -16,9 +16,8 @@
|
||||
<span class="spinner-grow me-1" role="status" aria-hidden="true"></span>
|
||||
random..
|
||||
</button>
|
||||
<div class="d-grid w-100 mt-6">
|
||||
<div class="d-grid w-100 mt-6" v-if="userStore.user.id === locvotreg">
|
||||
<button v-if="!isRandom && !randomResultNum" @click="randomList" class="btn btn-primary"><i class='bx bx-sync'></i></button>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -26,6 +25,7 @@
|
||||
import voteResultRandomList from "@c/voteboard/voteResultRandomList.vue"
|
||||
import voteResultCard from '@c/voteboard/voteResultCard.vue';
|
||||
import { ref, watch } from "vue";
|
||||
import { useUserInfoStore } from "@s/useUserInfoStore";
|
||||
const emit = defineEmits(['randomList']);
|
||||
const props = defineProps({
|
||||
data: {
|
||||
@ -36,7 +36,12 @@ const props = defineProps({
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
locvotreg: {
|
||||
type: Number,
|
||||
required: false,
|
||||
},
|
||||
});
|
||||
const userStore = useUserInfoStore();
|
||||
const isRandom = ref(false);
|
||||
const randomList = () =>{
|
||||
isRandom.value = true;
|
||||
|
||||
@ -34,6 +34,7 @@
|
||||
<Pagination
|
||||
v-if="PageData.pages"
|
||||
v-bind="PageData"
|
||||
:currentPage="currentPage"
|
||||
@update:currentPage="handlePageChange"
|
||||
/>
|
||||
</div>
|
||||
@ -149,7 +150,6 @@ const voteDelete =(id) =>{
|
||||
}
|
||||
//랜덤 1위 뽑기
|
||||
const randomList = (data,id) =>{
|
||||
isLoading.value = false;
|
||||
$api.post('vote/randomList',{
|
||||
randomList :data
|
||||
,voteid:id
|
||||
@ -158,7 +158,7 @@ const randomList = (data,id) =>{
|
||||
toastStore.onToast('랜덤뽑기 진행되었습니다.', 's');
|
||||
setTimeout(() => {
|
||||
getvoteList();
|
||||
}, 2000); // 3000ms = 3초
|
||||
}, 1000);
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -169,9 +169,9 @@ const updateVote = (id) =>{
|
||||
voteWrite();
|
||||
}
|
||||
// 페이지 변경
|
||||
const handlePageChange = async (page) => {
|
||||
const handlePageChange = (page) => {
|
||||
currentPage.value=page;
|
||||
await getvoteList();
|
||||
getvoteList();
|
||||
};
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
@change="ValidHandlerendDate"
|
||||
/>
|
||||
<!-- 항목 입력 반복 -->
|
||||
<div v-for="(item, index) in itemList" :key="index" class="d-flex align-items-start">
|
||||
<div v-for="(item, index) in itemList" :key="index" class="d-flex align-items-start ">
|
||||
<div class="flex-grow-1 me-2 ">
|
||||
<form-input
|
||||
:title="'항목 ' + (index + 1)"
|
||||
@ -174,7 +174,7 @@ const saveVote = () => {
|
||||
}));
|
||||
$api.post('vote/insertWord',{
|
||||
addvoteIs :addvoteitem.value === false ? '0' :'1'
|
||||
,votemMltiIs: addvotemulti.value === false ? '0' : '1'
|
||||
,votemMltiIs :addvotemulti.value === false ? '0' : '1'
|
||||
,title :title.value.trim()
|
||||
,endDate :endDate.value
|
||||
,itemList :filteredItemList
|
||||
@ -207,6 +207,6 @@ const goList = () => {
|
||||
|
||||
<style scoped>
|
||||
.item-input {
|
||||
max-width: 200px;
|
||||
max-width: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user