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
062742c602
@ -17,12 +17,13 @@
|
|||||||
@updateReaction="handleUpdateReaction"
|
@updateReaction="handleUpdateReaction"
|
||||||
/>
|
/>
|
||||||
<!-- 댓글 비밀번호 입력창 (익명일 경우) -->
|
<!-- 댓글 비밀번호 입력창 (익명일 경우) -->
|
||||||
<div v-if="currentPasswordCommentId === comment.commentId && unknown && comment.author == '익명'" class="mt-3 w-25 ms-auto">
|
<div v-if="currentPasswordCommentId === comment.commentId && unknown && comment.author == '익명'" class="mt-3 w-20 ms-auto">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
:value="password"
|
:value="password"
|
||||||
|
autocomplete="new-password"
|
||||||
placeholder="비밀번호 입력"
|
placeholder="비밀번호 입력"
|
||||||
@input="filterInput"
|
@input="filterInput"
|
||||||
/>
|
/>
|
||||||
@ -122,9 +123,9 @@
|
|||||||
'update:password',
|
'update:password',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const filterInput = (event) => {
|
const filterInput = event => {
|
||||||
event.target.value = event.target.value.replace(/\s/g, ""); // 공백 제거
|
event.target.value = event.target.value.replace(/\s/g, ''); // 공백 제거
|
||||||
emit("update:password", event.target.value);
|
emit('update:password', event.target.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const localEditedContent = ref(props.comment.content);
|
const localEditedContent = ref(props.comment.content);
|
||||||
|
|||||||
@ -41,6 +41,7 @@
|
|||||||
type="password"
|
type="password"
|
||||||
id="basic-default-password"
|
id="basic-default-password"
|
||||||
class="form-control flex-grow-1"
|
class="form-control flex-grow-1"
|
||||||
|
autocomplete="new-password"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
placeholder="비밀번호 입력"
|
placeholder="비밀번호 입력"
|
||||||
@input="passwordAlertTextHandler"
|
@input="passwordAlertTextHandler"
|
||||||
@ -103,8 +104,8 @@
|
|||||||
textAlert.value = '';
|
textAlert.value = '';
|
||||||
};
|
};
|
||||||
|
|
||||||
const passwordAlertTextHandler = (event) => {
|
const passwordAlertTextHandler = event => {
|
||||||
event.target.value = event.target.value.replace(/\s/g, "");
|
event.target.value = event.target.value.replace(/\s/g, '');
|
||||||
passwordAlert2.value = '';
|
passwordAlert2.value = '';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -20,8 +20,10 @@
|
|||||||
<div class="ms-auto text-end">
|
<div class="ms-auto text-end">
|
||||||
<!-- 수정, 삭제 버튼 -->
|
<!-- 수정, 삭제 버튼 -->
|
||||||
<template v-if="!isDeletedComment && (unknown || isCommentAuthor || isAuthor)">
|
<template v-if="!isDeletedComment && (unknown || isCommentAuthor || isAuthor)">
|
||||||
<EditButton @click.stop="editClick" />
|
<div class="float-end ms-1">
|
||||||
<DeleteButton @click.stop="deleteClick" />
|
<EditButton @click.stop="editClick" />
|
||||||
|
<DeleteButton :class="'ms-1'" @click.stop="deleteClick" />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 좋아요, 싫어요 버튼 (댓글에서만 표시) -->
|
<!-- 좋아요, 싫어요 버튼 (댓글에서만 표시) -->
|
||||||
|
|||||||
@ -1,39 +1,40 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="btn btn-label-primary btn-icon float-end" @click="toggleText">
|
<button class="btn btn-label-primary btn-icon" @click="toggleText">
|
||||||
<i :class="buttonClass"></i>
|
<i :class="buttonClass"></i>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, watch, defineProps } from 'vue';
|
import { ref, watch, defineProps } from 'vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
isToggleEnabled: {
|
isToggleEnabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
isActive: {
|
isActive: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const buttonClass = ref("bx bx-edit-alt");
|
const buttonClass = ref('bx bx-edit-alt');
|
||||||
|
|
||||||
watch(() => props.isActive, (newVal) => {
|
watch(
|
||||||
buttonClass.value = newVal ? "bx bx-x" : "bx bx-edit-alt";
|
() => props.isActive,
|
||||||
});
|
newVal => {
|
||||||
|
buttonClass.value = newVal ? 'bx bx-x' : 'bx bx-edit-alt';
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
const toggleText = () => {
|
const toggleText = () => {
|
||||||
if (props.isToggleEnabled) {
|
if (props.isToggleEnabled) {
|
||||||
buttonClass.value = buttonClass.value === "bx bx-edit-alt" ? "bx bx-x" : "bx bx-edit-alt";
|
buttonClass.value = buttonClass.value === 'bx bx-edit-alt' ? 'bx bx-x' : 'bx bx-edit-alt';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const resetButton = () => {
|
const resetButton = () => {
|
||||||
buttonClass.value = "bx bx-edit-alt";
|
buttonClass.value = 'bx bx-edit-alt';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
defineExpose({ resetButton });
|
|
||||||
|
|
||||||
|
defineExpose({ resetButton });
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -74,16 +74,13 @@ nextTick(() => {
|
|||||||
const sortedUserList = computed(() => {
|
const sortedUserList = computed(() => {
|
||||||
if (!employeeId.value) return [];
|
if (!employeeId.value) return [];
|
||||||
|
|
||||||
// 관리자가 아닌 사용자만 필터링
|
// 모든 사용자 포함 (관리자 필터링 제거)
|
||||||
const nonAdminUsers = userList.value.filter(user => user.MEMBERROL !== "ROLE_ADMIN");
|
const myProfile = userList.value.find(user => user.MEMBERSEQ === employeeId.value);
|
||||||
|
const otherUsers = userList.value.filter(user => user.MEMBERSEQ !== employeeId.value);
|
||||||
const myProfile = nonAdminUsers.find(user => user.MEMBERSEQ === employeeId.value);
|
|
||||||
const otherUsers = nonAdminUsers.filter(user => user.MEMBERSEQ !== employeeId.value);
|
|
||||||
|
|
||||||
return myProfile ? [myProfile, ...otherUsers] : otherUsers;
|
return myProfile ? [myProfile, ...otherUsers] : otherUsers;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const getUserProfileImage = (profilePath) =>
|
const getUserProfileImage = (profilePath) =>
|
||||||
profilePath && profilePath.trim() ? `${baseUrl}upload/img/profile/${profilePath}` : defaultProfile;
|
profilePath && profilePath.trim() ? `${baseUrl}upload/img/profile/${profilePath}` : defaultProfile;
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,8 @@
|
|||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
{{ data.LOCVOTCON }}
|
{{ data.LOCVOTCON }}
|
||||||
<a v-if="data.LOCVOTLIK" :href="data.LOCVOTLIK.startsWith('http') ? data.LOCVOTLIK : 'http://' + data.LOCVOTLIK" target="_blank">
|
<div></div>
|
||||||
|
<a v-if="data.LOCVOTLIK" :href="data.LOCVOTLIK.startsWith('http') ? data.LOCVOTLIK : 'http://' + data.LOCVOTLIK" class="d-inline-block text-truncate" target="_blank" rel="noopener noreferrer">
|
||||||
{{ data.LOCVOTLIK }}
|
{{ data.LOCVOTLIK }}
|
||||||
</a>
|
</a>
|
||||||
</label>
|
</label>
|
||||||
@ -54,5 +55,10 @@ const handleChange = (event) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
a {
|
||||||
|
max-width: 500px; /* 원하는 너비로 조정 */
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -6,21 +6,22 @@
|
|||||||
<!-- 링크 입력창 (옆으로 나오게) -->
|
<!-- 링크 입력창 (옆으로 나오게) -->
|
||||||
<div
|
<div
|
||||||
v-if="isPopoverVisible"
|
v-if="isPopoverVisible"
|
||||||
class="popover-container d-flex align-items-center"
|
class="d-flex"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
v-model="link"
|
v-model="link"
|
||||||
placeholder="URL을 입력해주세요"
|
placeholder="URL을 입력해주세요"
|
||||||
class="form-control me-2"
|
class="form-control"
|
||||||
style="min-width: 200px;"
|
style="min-width: 500px;"
|
||||||
/>
|
/>
|
||||||
<save-btn class="btn-sm" @click="saveLink"/>
|
<save-btn class="btn-sm" @click="saveLink"/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 등록된 링크, 입력창이 보이지 않고 등록된 링크만 보일 때 -->
|
<!-- 등록된 링크, 입력창이 보이지 않고 등록된 링크만 보일 때 -->
|
||||||
<span v-if="isLinkSaved && !isPopoverVisible" class="ms-2">
|
<span v-if="isLinkSaved && !isPopoverVisible" class="ms-2">
|
||||||
<a :href="formattedLink" target="_blank" rel="noopener noreferrer">{{ link }}</a>
|
<a :href="formattedLink" class="d-inline-block text-truncate" target="_blank" rel="noopener noreferrer">
|
||||||
|
{{ link }}
|
||||||
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -60,4 +61,10 @@ display: flex;
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px; /* 아이콘과 입력창 간격 조정 */
|
gap: 8px; /* 아이콘과 입력창 간격 조정 */
|
||||||
}
|
}
|
||||||
|
a {
|
||||||
|
max-width: 500px; /* 원하는 너비로 조정 */
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
autocomplete="off"
|
autocomplete="new-password"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
placeholder="비밀번호 입력"
|
placeholder="비밀번호 입력"
|
||||||
@input="
|
@input="
|
||||||
@ -799,8 +799,8 @@
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.board-content img {
|
.board-content img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -269,11 +269,7 @@ const fetchUserList = async () => {
|
|||||||
try {
|
try {
|
||||||
await userListStore.fetchUserList();
|
await userListStore.fetchUserList();
|
||||||
|
|
||||||
// "ROLE_ADMIN"을 제외하고 필터링
|
userList.value = [...userListStore.userList];
|
||||||
const filteredUsers = userListStore.userList.filter(user => user.MEMBERROL !== "ROLE_ADMIN");
|
|
||||||
|
|
||||||
// 필터링된 리스트를 userList에 반영
|
|
||||||
userList.value = [...filteredUsers];
|
|
||||||
|
|
||||||
if (!userList.value.length) {
|
if (!userList.value.length) {
|
||||||
console.warn("📌 사용자 목록이 비어 있음!");
|
console.warn("📌 사용자 목록이 비어 있음!");
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 투표리스트 -->
|
<!-- 투표리스트 -->
|
||||||
<div v-if="!voteListCardData" class="mt66"> ❌❌등록된 투표가 없습니다.❌❌</div>
|
<div v-if="voteListCardData.length == 0 " class="mt66">등록된 투표가 없습니다.</div>
|
||||||
<vote-list
|
<vote-list
|
||||||
:data="voteListCardData"
|
:data="voteListCardData"
|
||||||
@addContents="addContents"
|
@addContents="addContents"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user