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

@ -796,3 +796,7 @@ input:checked + .slider:before {
} }
/* toast end */ /* toast end */
.cursor-none{
cursor: none !important;
}

View File

@ -24,6 +24,7 @@
class="form-control" class="form-control"
:value="password" :value="password"
autocomplete="new-password" autocomplete="new-password"
maxlength="8"
placeholder="비밀번호 입력" placeholder="비밀번호 입력"
@input="filterInput" @input="filterInput"
/> />
@ -42,7 +43,7 @@
</template> </template>
<template v-else> <template v-else>
<p class="m-0">{{ comment.content }}</p> <div class="m-0" style="white-space: pre-wrap">{{ comment.content }}</div>
</template> </template>
</div> </div>
<!-- <p>현재 isDeleted : {{ isDeleted }}</p> --> <!-- <p>현재 isDeleted : {{ isDeleted }}</p> -->
@ -119,7 +120,7 @@
}); });
const displayName = computed(() => { const displayName = computed(() => {
return props.nickname? props.nickname: props.comment.author; return props.nickname ? props.nickname : props.comment.author;
}); });
// emits // emits

View File

@ -43,7 +43,7 @@
@input="clearAlert('nickname')" @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 }} {{ nicknameAlert }}
</div> </div>
</div> </div>
@ -57,7 +57,11 @@
autocomplete="new-password" autocomplete="new-password"
v-model="password" v-model="password"
placeholder="비밀번호" 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"> <div v-if="passwordAlert2" class="position-absolute text-danger small top-100 start-0">
@ -145,6 +149,7 @@
if (!$common.isNotEmpty(password.value)) { if (!$common.isNotEmpty(password.value)) {
passwordAlert2.value = '비밀번호를 입력해주세요.'; passwordAlert2.value = '비밀번호를 입력해주세요.';
password.value = '';
isValid = false; isValid = false;
} else { } else {
passwordAlert2.value = ''; passwordAlert2.value = '';

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="d-flex align-items-center flex-wrap"> <div class="d-flex align-items-center flex-wrap">
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class="avatar me-2"> <div class="avatar me-2 cursor-none">
<img <img
:src="getProfileImage(profileImg)" :src="getProfileImage(profileImg)"
alt="user" alt="user"

View File

@ -126,7 +126,7 @@ watch(() => props.data.localVote.total_voted, () => {
// //
const checkVoteCompletion = () => { 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 }); emit('voteEnded', { id: props.data.localVote.LOCVOTSEQ });
} }
}; };

View File

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

View File

@ -30,6 +30,7 @@
autocomplete="new-password" autocomplete="new-password"
v-model="password" v-model="password"
placeholder="비밀번호 입력" placeholder="비밀번호 입력"
maxlength="8"
@input=" @input="
password = password.replace(/\s/g, ''); password = password.replace(/\s/g, '');
inputCheck(); inputCheck();
@ -562,6 +563,7 @@
if (comment.isEditTextarea) { if (comment.isEditTextarea) {
comment.isEditTextarea = false; comment.isEditTextarea = false;
comment.isCommentPassword = true; comment.isCommentPassword = true;
toggleCommentPassword(comment, 'delete');
} else { } else {
toggleCommentPassword(comment, 'delete'); 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({ const calendarOptions = reactive({
@ -143,6 +156,20 @@ const calendarOptions = reactive({
dateClick: handleDateClick, dateClick: handleDateClick,
datesSet: handleMonthChange, datesSet: handleMonthChange,
events: calendarEvents, events: calendarEvents,
customButtons: {
prev: {
text: 'PREV',
click: () => moveCalendar(1),
},
today: {
text: 'TODAY',
click: () => moveCalendar(3),
},
next: {
text: 'NEXT',
click: () => moveCalendar(2),
},
},
}); });
// //
function handleMonthChange(viewInfo) { function handleMonthChange(viewInfo) {
@ -178,6 +205,21 @@ function handleDateClick(info) {
const isMyVacation = myVacations.value.some(vac => vac.date.substring(0, 10) === clickedDateStr && !vac.receiverId); 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") { if (currentValue && currentValue !== "delete") {
selectedDates.value.delete(clickedDateStr); selectedDates.value.delete(clickedDateStr);

View File

@ -132,7 +132,6 @@ const checkedNames = (numList) => {
} }
// //
const endVoteId = (endVoteId) => { const endVoteId = (endVoteId) => {
console.log('endVoteId',endVoteId)
$api.patch('vote/updateEndData',{ $api.patch('vote/updateEndData',{
endVoteId :endVoteId endVoteId :endVoteId
}).then((res)=>{ }).then((res)=>{
@ -143,7 +142,6 @@ const endVoteId = (endVoteId) => {
} }
// //
const voteEnded = async (id) =>{ const voteEnded = async (id) =>{
console.log('voteEnded',id)
await endVoteId(id.id); await endVoteId(id.id);
} }
// //

View File

@ -34,7 +34,7 @@
</div> </div>
<!-- 숨겨진 input 태그를 사용하여 강제로 포커스 --> <!-- 숨겨진 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"> <div v-for="(item, index) in itemList" :key="index">
@ -115,10 +115,7 @@ import { useUserStore } from '@s/userList';
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
const userStore = useUserStore(); 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 toastStore = useToastStore();
const activeUserList = ref([]); const activeUserList = ref([]);
const disabledUsers = ref([]); const disabledUsers = ref([]);
@ -144,12 +141,11 @@ const focusDateInput = () => {
const minDate = ref(''); const minDate = ref('');
onMounted(() => { onMounted(() => {
nextTick(() => {
const offset = new Date().getTimezoneOffset() * 60000; const offset = new Date().getTimezoneOffset() * 60000;
const today = new Date(Date.now() - offset); const today = new Date(Date.now() - offset);
today.setDate(today.getDate() + 1); today.setDate(today.getDate() + 1);
minDate.value = today.toISOString().substring(0, 16); minDate.value = today.toISOString().substring(0, 16);
});
}); });
const userSet = ({ userList, userTotal }) => { const userSet = ({ userList, userTotal }) => {

View File

@ -31,6 +31,7 @@
<!-- 단어 목록 --> <!-- 단어 목록 -->
<ul v-if="total > 0" class="ms-3 list-unstyled"> <ul v-if="total > 0" class="ms-3 list-unstyled">
<DictCard <DictCard
class="DictCard"
v-for="item in wordList" v-for="item in wordList"
:key="item.WRDDICSEQ" :key="item.WRDDICSEQ"
:item="item" :item="item"
@ -159,6 +160,9 @@
if (newAlphabet !== null) { if (newAlphabet !== null) {
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value); getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
} else { } else {
if( selectedCategory.value !== '' && selectedCategory.value !== null){
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
}
wordList.value = []; wordList.value = [];
total.value = 0; total.value = 0;
} }
@ -173,6 +177,9 @@
getwordList(searchText.value, selectedAlphabet.value, ''); getwordList(searchText.value, selectedAlphabet.value, '');
} }
} else { } else {
if( selectedAlphabet.value !== '' && selectedAlphabet.value !== null){
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
}
wordList.value = []; wordList.value = [];
total.value = 0; total.value = 0;
} }
@ -194,7 +201,6 @@
sendWordRequest(category, wordData, newCodName); sendWordRequest(category, wordData, newCodName);
}; };
const sendWordRequest = (category, wordData, data) => { const sendWordRequest = (category, wordData, data) => {
console.log(category,'category')
const payload = { const payload = {
WRDDICCAT: category, WRDDICCAT: category,
WRDDICTTL: wordData.title, WRDDICTTL: wordData.title,