Merge branch 'main' into commuters
All checks were successful
LocalNet_front/pipeline/head This commit looks good
All checks were successful
LocalNet_front/pipeline/head This commit looks good
This commit is contained in:
commit
ecaf40ced2
@ -795,4 +795,8 @@ input:checked + .slider:before {
|
||||
right: 20px;
|
||||
}
|
||||
|
||||
/* toast end */
|
||||
/* toast end */
|
||||
|
||||
.cursor-none{
|
||||
cursor: none !important;
|
||||
}
|
||||
@ -24,6 +24,7 @@
|
||||
class="form-control"
|
||||
:value="password"
|
||||
autocomplete="new-password"
|
||||
maxlength="8"
|
||||
placeholder="비밀번호 입력"
|
||||
@input="filterInput"
|
||||
/>
|
||||
@ -42,7 +43,7 @@
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<p class="m-0">{{ comment.content }}</p>
|
||||
<div class="m-0" style="white-space: pre-wrap">{{ comment.content }}</div>
|
||||
</template>
|
||||
</div>
|
||||
<!-- <p>현재 isDeleted 값: {{ isDeleted }}</p> -->
|
||||
@ -119,7 +120,7 @@
|
||||
});
|
||||
|
||||
const displayName = computed(() => {
|
||||
return props.nickname? props.nickname: props.comment.author;
|
||||
return props.nickname ? props.nickname : props.comment.author;
|
||||
});
|
||||
|
||||
// emits 정의
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
@input="clearAlert('nickname')"
|
||||
/>
|
||||
<!-- 닉네임 경고 메시지 -->
|
||||
<div v-if="nicknameAlert" class="position-absolute text-danger small top-100 start-0" >
|
||||
<div v-if="nicknameAlert" class="position-absolute text-danger small top-100 start-0">
|
||||
{{ nicknameAlert }}
|
||||
</div>
|
||||
</div>
|
||||
@ -57,7 +57,11 @@
|
||||
autocomplete="new-password"
|
||||
v-model="password"
|
||||
placeholder="비밀번호"
|
||||
@input="clearAlert('password')"
|
||||
maxlength="8"
|
||||
@input="
|
||||
password = password.replace(/\s/g, '');
|
||||
clearAlert('password');
|
||||
"
|
||||
/>
|
||||
<!-- 비밀번호 경고 메시지 -->
|
||||
<div v-if="passwordAlert2" class="position-absolute text-danger small top-100 start-0">
|
||||
@ -145,6 +149,7 @@
|
||||
|
||||
if (!$common.isNotEmpty(password.value)) {
|
||||
passwordAlert2.value = '비밀번호를 입력해주세요.';
|
||||
password.value = '';
|
||||
isValid = false;
|
||||
} else {
|
||||
passwordAlert2.value = '';
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="d-flex align-items-center flex-wrap">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="avatar me-2">
|
||||
<div class="avatar me-2 cursor-none">
|
||||
<img
|
||||
:src="getProfileImage(profileImg)"
|
||||
alt="user"
|
||||
|
||||
@ -126,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 == null) {
|
||||
emit('voteEnded', { id: props.data.localVote.LOCVOTSEQ });
|
||||
}
|
||||
};
|
||||
|
||||
@ -166,7 +166,8 @@
|
||||
// 목록 페이지로 이동
|
||||
const goList = () => {
|
||||
accessStore.$reset();
|
||||
router.push('/board');
|
||||
//router.push('/board');
|
||||
router.back();
|
||||
};
|
||||
|
||||
// 전 페이지로 이동
|
||||
|
||||
@ -30,6 +30,7 @@
|
||||
autocomplete="new-password"
|
||||
v-model="password"
|
||||
placeholder="비밀번호 입력"
|
||||
maxlength="8"
|
||||
@input="
|
||||
password = password.replace(/\s/g, '');
|
||||
inputCheck();
|
||||
@ -562,6 +563,7 @@
|
||||
if (comment.isEditTextarea) {
|
||||
comment.isEditTextarea = false;
|
||||
comment.isCommentPassword = true;
|
||||
toggleCommentPassword(comment, 'delete');
|
||||
} else {
|
||||
toggleCommentPassword(comment, 'delete');
|
||||
}
|
||||
|
||||
@ -127,6 +127,19 @@ const hasChanges = computed(() => {
|
||||
);
|
||||
});
|
||||
|
||||
// 캘린더 이동 함수 (이전, 다음, 오늘)
|
||||
const moveCalendar = async (value = 0) => {
|
||||
const calendarApi = fullCalendarRef.value?.getApi();
|
||||
|
||||
if (value === 1) {
|
||||
calendarApi.prev(); // 이전 달로 이동
|
||||
} else if (value === 2) {
|
||||
calendarApi.next(); // 다음 달로 이동
|
||||
} else if (value === 3) {
|
||||
calendarApi.today(); // 오늘 날짜로 이동
|
||||
}
|
||||
};
|
||||
|
||||
/* 캘린더 설정 */
|
||||
// 풀 캘린더 옵션,이벤트
|
||||
const calendarOptions = reactive({
|
||||
@ -143,6 +156,20 @@ const calendarOptions = reactive({
|
||||
dateClick: handleDateClick,
|
||||
datesSet: handleMonthChange,
|
||||
events: calendarEvents,
|
||||
customButtons: {
|
||||
prev: {
|
||||
text: 'PREV',
|
||||
click: () => moveCalendar(1),
|
||||
},
|
||||
today: {
|
||||
text: 'TODAY',
|
||||
click: () => moveCalendar(3),
|
||||
},
|
||||
next: {
|
||||
text: 'NEXT',
|
||||
click: () => moveCalendar(2),
|
||||
},
|
||||
},
|
||||
});
|
||||
// 캘린더 월 변경
|
||||
function handleMonthChange(viewInfo) {
|
||||
@ -178,6 +205,21 @@ function handleDateClick(info) {
|
||||
|
||||
const isMyVacation = myVacations.value.some(vac => vac.date.substring(0, 10) === clickedDateStr && !vac.receiverId);
|
||||
|
||||
if (!selectedDates.value.has(clickedDateStr) && isMyVacation && halfDayType.value) {
|
||||
const existingVacation = myVacations.value.find(vac => vac.date.substring(0, 10) === clickedDateStr && !vac.receiverId);
|
||||
const selectedType =
|
||||
halfDayType.value === "AM" ? "700101" :
|
||||
halfDayType.value === "PM" ? "700102" : "700103";
|
||||
if (existingVacation.type === selectedType) {
|
||||
toastStore.onToast("이미 사용한 연차입니다.", "e");
|
||||
if (halfDayButtonsRef.value) {
|
||||
halfDayButtonsRef.value.resetHalfDay();
|
||||
}
|
||||
halfDayType.value = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 이미 활성화된 날짜를 한 번 더 클릭하면 비활성화
|
||||
if (currentValue && currentValue !== "delete") {
|
||||
selectedDates.value.delete(clickedDateStr);
|
||||
|
||||
@ -132,7 +132,6 @@ const checkedNames = (numList) => {
|
||||
}
|
||||
//투표종료
|
||||
const endVoteId = (endVoteId) => {
|
||||
console.log('endVoteId',endVoteId)
|
||||
$api.patch('vote/updateEndData',{
|
||||
endVoteId :endVoteId
|
||||
}).then((res)=>{
|
||||
@ -143,7 +142,6 @@ const endVoteId = (endVoteId) => {
|
||||
}
|
||||
//기한 지난 투표 종료
|
||||
const voteEnded = async (id) =>{
|
||||
console.log('voteEnded',id)
|
||||
await endVoteId(id.id);
|
||||
}
|
||||
//투표 삭제
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 숨겨진 input 태그를 사용하여 강제로 포커스 -->
|
||||
<input ref="dateInput" type="datetime-local" v-model="endDate" class="hidden-date-input">
|
||||
<input ref="dateInput" :min="minDate" type="datetime-local" v-model="endDate" class="hidden-date-input">
|
||||
|
||||
<!-- 항목 입력 반복 -->
|
||||
<div v-for="(item, index) in itemList" :key="index">
|
||||
@ -115,10 +115,7 @@ import { useUserStore } from '@s/userList';
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const userStore = useUserStore();
|
||||
// const offset = new Date().getTimezoneOffset() * 60000
|
||||
// const today = new Date(Date.now() - offset);
|
||||
// today.setDate(today.getDate() + 1);
|
||||
// const minDate = today.toISOString().substring(0, 16);
|
||||
|
||||
const toastStore = useToastStore();
|
||||
const activeUserList = ref([]);
|
||||
const disabledUsers = ref([]);
|
||||
@ -144,12 +141,11 @@ const focusDateInput = () => {
|
||||
|
||||
const minDate = ref('');
|
||||
onMounted(() => {
|
||||
nextTick(() => {
|
||||
const offset = new Date().getTimezoneOffset() * 60000;
|
||||
const today = new Date(Date.now() - offset);
|
||||
today.setDate(today.getDate() + 1);
|
||||
minDate.value = today.toISOString().substring(0, 16);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
const userSet = ({ userList, userTotal }) => {
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
<!-- 단어 목록 -->
|
||||
<ul v-if="total > 0" class="ms-3 list-unstyled">
|
||||
<DictCard
|
||||
class="DictCard"
|
||||
v-for="item in wordList"
|
||||
:key="item.WRDDICSEQ"
|
||||
:item="item"
|
||||
@ -159,6 +160,9 @@
|
||||
if (newAlphabet !== null) {
|
||||
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
|
||||
} else {
|
||||
if( selectedCategory.value !== '' && selectedCategory.value !== null){
|
||||
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
|
||||
}
|
||||
wordList.value = [];
|
||||
total.value = 0;
|
||||
}
|
||||
@ -173,6 +177,9 @@
|
||||
getwordList(searchText.value, selectedAlphabet.value, '');
|
||||
}
|
||||
} else {
|
||||
if( selectedAlphabet.value !== '' && selectedAlphabet.value !== null){
|
||||
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
|
||||
}
|
||||
wordList.value = [];
|
||||
total.value = 0;
|
||||
}
|
||||
@ -194,7 +201,6 @@
|
||||
sendWordRequest(category, wordData, newCodName);
|
||||
};
|
||||
const sendWordRequest = (category, wordData, data) => {
|
||||
console.log(category,'category')
|
||||
const payload = {
|
||||
WRDDICCAT: category,
|
||||
WRDDICTTL: wordData.title,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user