diff --git a/src/components/input/FormInput.vue b/src/components/input/FormInput.vue
index 7c1da23..6d1e98b 100644
--- a/src/components/input/FormInput.vue
+++ b/src/components/input/FormInput.vue
@@ -5,6 +5,7 @@
*
+ {{ min }}
{
const baseUrl = $api.defaults.baseURL.replace(/api\/$/, '');
const userStore = useUserInfoStore();
-const currentDate = new Date();
-const voteEndDate = new Date(props.data.localVote.formatted_LOCVOTEDT.replace(' ', 'T'));
-voteEndDate.setDate(voteEndDate.getDate() + 1);
+const offset = new Date().getTimezoneOffset() * 60000
+const today = new Date(Date.now() - offset);
+const currentDate = today.toISOString().substring(0,16);
+const voteEndDate = props.data.localVote.LOCVOTEDT.substring(0,16);
// 종료 여부 계산
const isVoteEnded = computed(() => {
return currentDate > voteEndDate;
@@ -114,7 +115,7 @@ const isVoteEnded = computed(() => {
const emit = defineEmits(['addContents','checkedNames','endVoteId','voteEnded','randomList','voteDelete','updateVote']);
onMounted(() => {
if (isVoteEnded.value && !props.data.localVote.LOCVOTDDT) {
- emit('voteEnded', { id: props.data.localVote.LOCVOTSEQ });
+ emit('voteEnded', { id: props.data.localVote.LOCVOTSEQ });
}
checkVoteCompletion();
});
@@ -125,7 +126,7 @@ watch(() => props.data.localVote.total_voted, () => {
// 종료 체크 함수
const checkVoteCompletion = () => {
- if (props.data.localVote.total_votable === props.data.localVote.total_voted && !props.data.localVote.LOCVOTDDT) {
+ if (props.data.localVote.total_votable === props.data.localVote.total_voted && props.data.localVote.LOCVOTDDT == '') {
emit('voteEnded', { id: props.data.localVote.LOCVOTSEQ });
}
};
@@ -136,7 +137,6 @@ const checkedNames = (numList) =>{
emit('checkedNames',numList);
}
const endBtn = (voteid) =>{
- voteEndDate.setTime(currentDate.getTime()); // 현재 날짜로 설정
emit('endVoteId',voteid);
}
const voteDelete = (voteid) =>{
diff --git a/src/components/voteboard/voteCardCheck.vue b/src/components/voteboard/voteCardCheck.vue
index 98ddda1..aba7b20 100644
--- a/src/components/voteboard/voteCardCheck.vue
+++ b/src/components/voteboard/voteCardCheck.vue
@@ -17,16 +17,23 @@
:is-alert="contentAlerts[index]"
v-model="item.content"
:is-btn="true"
+ @keyup="ValidHandler('content' + (index + 1))"
>
-
+
@@ -46,20 +53,19 @@ import SaveBtn from '@c/button/SaveBtn.vue'
import FormInput from '@c/input/FormInput.vue';
import voteCardCheckList from '@c/voteboard/voteCardCheckList.vue';
import { computed, ref } from 'vue';
-import LinkInput from "@/components/voteboard/voteLinkInput.vue";
import { voteCommon } from '@s/voteCommon';
import DeleteBtn from "@c/button/DeleteBtn.vue";
import { useToastStore } from '@s/toastStore';
import router from '@/router';
const toastStore = useToastStore();
-const contentAlerts = ref(false);
+const contentAlerts = ref([false, false]);
const titleAlert = ref(false);
const title = ref('');
const rink = ref('');
const { itemList, addItem, removeItem } = voteCommon(true);
const total = computed(() => props.total + itemList.value.length);
const isSaveDisabled = computed(() => {
- return itemList.value.length === 0 || itemList.value.every(item => !item.content.trim());
+ return itemList.value.length === 0 || itemList.value.every(item => !item.content.trim() && !item.url.trim());
});
const props = defineProps({
data: {
@@ -77,12 +83,35 @@ const props = defineProps({
});
const emit = defineEmits(['addContents','checkedNames']);
//항목추가
-const addContentSave = (voteId) =>{
+const addContentSave = (voteId,index) =>{
+ let valid = true;
const filteredItemList = itemList.value.filter(item => item.content && item.content.trim() !== '');
- emit('addContents',filteredItemList,voteId);
- itemList.value = [{ content: "", url: "" }];
+
+ itemList.value.forEach((item, index) => {
+ if (!item.content.trim() && item.url.trim()) {
+ contentAlerts.value[index] = true;
+ valid = false;
+ } else {
+ contentAlerts.value[index] = false;
+ }
+ });
+
+ if(valid){
+ emit('addContents',filteredItemList,voteId);
+ itemList.value = [{ content: "", url: "" }];
+ removeItem();
+ }
}
+const ValidHandler = (field) => {
+ if (field.startsWith('content')) {
+ const index = parseInt(field.replace('content', '')) - 1;
+ if (!isNaN(index)) {
+ contentAlerts.value[index] = false;
+ }
+ }
+};
+
const checkedNames = ref([]); // 선택된 값 저장
const updateCheckedNames = (newValues) => {
checkedNames.value = newValues;
diff --git a/src/views/voteboard/voteBoardList.vue b/src/views/voteboard/voteBoardList.vue
index 4d30091..e1f885b 100644
--- a/src/views/voteboard/voteBoardList.vue
+++ b/src/views/voteboard/voteBoardList.vue
@@ -132,17 +132,18 @@ const checkedNames = (numList) => {
}
//투표종료
const endVoteId = (endVoteId) => {
+ console.log('endVoteId',endVoteId)
$api.patch('vote/updateEndData',{
endVoteId :endVoteId
}).then((res)=>{
if(res.data.status === 'OK'){
- //toastStore.onToast('투표가 종료되었습니다.', 's');
getvoteList();
}
})
}
//기한 지난 투표 종료
const voteEnded = async (id) =>{
+ console.log('voteEnded',id)
await endVoteId(id.id);
}
//투표 삭제
diff --git a/src/views/voteboard/voteboardWrite.vue b/src/views/voteboard/voteboardWrite.vue
index d1b3a03..b94450e 100644
--- a/src/views/voteboard/voteboardWrite.vue
+++ b/src/views/voteboard/voteboardWrite.vue
@@ -28,8 +28,8 @@
:is-essential="true"
:is-alert="endDateAlert"
v-model="endDate"
- :min="today"
- @change="ValidHandlerendDate"
+ :min="minDate"
+ @input="ValidHandlerendDate"
/>
@@ -102,7 +102,7 @@