Merge branch 'main' into commuters
All checks were successful
LocalNet_front/pipeline/head This commit looks good

This commit is contained in:
yoon 2025-03-25 17:44:50 +09:00
commit ecaf40ced2
11 changed files with 73 additions and 18 deletions

View File

@ -795,4 +795,8 @@ input:checked + .slider:before {
right: 20px;
}
/* toast end */
/* toast end */
.cursor-none{
cursor: none !important;
}

View File

@ -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

View File

@ -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 = '';

View File

@ -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"

View File

@ -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 });
}
};

View File

@ -166,7 +166,8 @@
//
const goList = () => {
accessStore.$reset();
router.push('/board');
//router.push('/board');
router.back();
};
//

View File

@ -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');
}

View File

@ -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);

View File

@ -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);
}
//

View File

@ -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 }) => {

View File

@ -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,