Merge branch 'main' into project-list

This commit is contained in:
yoon 2025-03-10 15:45:01 +09:00
commit eca45a84c4
6 changed files with 69 additions and 43 deletions

View File

@ -106,13 +106,14 @@ cursor: not-allowed !important;
padding-bottom: 20px; padding-bottom: 20px;
} }
.vac-modal-content { .vac-modal-content {
background: #fff; background: #fff;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
box-shadow: 0px -4px 10px rgba(0, 0, 0, 0.1); /* 위쪽 그림자만 적용 */ box-shadow: 0px -4px 5px rgba(0, 0, 0, 0.1),
max-width: 500px; 0px 4px 0px rgba(0, 0, 0, 0);
width: 100%; max-width: 500px;
position: relative; width: 100%;
position: relative;
} }
.vac-modal-body { .vac-modal-body {
max-height: 140px; max-height: 140px;
@ -211,20 +212,25 @@ cursor: not-allowed !important;
.profile-list { .profile-list {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-start; gap: 15px;
gap: 10px;
padding: 0; padding: 0;
margin-left: 12%; list-style: none;
justify-content: flex-start;
cursor: pointer;
} }
.profile-img { .profile-item {
transition: all 0.2s ease-in-out; display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
width: calc(33.33% - 10px);
} }
/* 오전/오후반차,저장버튼 */ /* 오전/오후반차,저장버튼 */
/* 버튼 기본 스타일 */ /* 버튼 기본 스타일 */
.vac-btn { .vac-btn {
width: 50px; width: 60px;
height: 50px; height: 60px;
border-radius: 50%; border-radius: 50%;
font-size: 20px; font-size: 20px;
display: flex; display: flex;
@ -281,8 +287,8 @@ cursor: not-allowed !important;
/* 버튼 기본 (비활성화일 때 기본 녹색) */ /* 버튼 기본 (비활성화일 때 기본 녹색) */
.vac-btn-success { .vac-btn-success {
font-size: 24px; font-size: 24px;
width: 50px; width: 60px;
height: 50px; height: 60px;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
align-items: center; align-items: center;
@ -313,7 +319,7 @@ cursor: not-allowed !important;
} }
/* 작은 화면에서 버튼 크기 조정 */ /* 작은 화면에서 버튼 크기 조정 */
@media (max-width: 1600px) { @media (max-width: 1700px) {
.count-btn { .count-btn {
width: 28px; width: 28px;
height: 28px; height: 28px;
@ -349,6 +355,28 @@ cursor: not-allowed !important;
text-align: center; text-align: center;
margin-bottom: 5px; margin-bottom: 5px;
} }
.vac-btn {
width: 50px;
height: 50px;
font-size: 18px;
}
.vac-btn-success {
font-size: 20px;
width: 50px;
height: 50px;
}
}
@media (max-width: 1500px) {
.close-btn {
top: 5px;
right: 5px;
font-size: 13px;
}
.vacation-item {
font-size: 11px;
text-align: center;
margin-bottom: 5px;
}
.vac-btn { .vac-btn {
width: 40px; width: 40px;
height: 40px; height: 40px;
@ -360,7 +388,6 @@ cursor: not-allowed !important;
height: 40px; height: 40px;
} }
} }
.grayscaleImg { .grayscaleImg {

View File

@ -18,19 +18,19 @@ const props = defineProps({
}, },
}); });
const buttonClass = ref("bx bx-edit"); const buttonClass = ref("bx bx-edit-alt");
watch(() => props.isActive, (newVal) => { watch(() => props.isActive, (newVal) => {
buttonClass.value = newVal ? "bx bx-x" : "bx bx-edit"; 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" ? "bx bx-x" : "bx bx-edit"; buttonClass.value = buttonClass.value === "bx bx-edit-alt" ? "bx bx-x" : "bx bx-edit-alt";
} }
}; };
const resetButton = () => { const resetButton = () => {
buttonClass.value = "bx bx-edit"; buttonClass.value = "bx bx-edit-alt";
}; };

View File

@ -2,7 +2,7 @@
<div class="mb-2" :class="isRow ? 'row' : ''"> <div class="mb-2" :class="isRow ? 'row' : ''">
<label :for="name" class="col-md-2 col-form-label" :class="isLabel ? 'd-block' : 'd-none'"> <label :for="name" class="col-md-2 col-form-label" :class="isLabel ? 'd-block' : 'd-none'">
{{ title }} {{ title }}
<span :class="isEssential ? 'link-danger' : 'none'">*</span> <span v-if="isEssential" class="link-danger">*</span>
</label> </label>
<div :class="isRow ? 'col-md-10' : 'col-md-12'" class="d-flex gap-2 align-items-center"> <div :class="isRow ? 'col-md-10' : 'col-md-12'" class="d-flex gap-2 align-items-center">
<select class="form-select" :id="name" v-model="selectData" :disabled="disabled" :style="isColor ? { color: selected } : {}" @blur="$emit('blur')"> <select class="form-select" :id="name" v-model="selectData" :disabled="disabled" :style="isColor ? { color: selected } : {}" @blur="$emit('blur')">

View File

@ -1,10 +1,11 @@
<template> <template>
<div class="card-body d-flex justify-content-center m-n5"> <div class="card-body d-flex justify-content-center m-n5">
<ul class="list-unstyled profile-list"> <ul class="profile-list">
<li <li
v-for="(user, index) in sortedUserList" v-for="(user, index) in sortedUserList"
:key="index" :key="index"
:class="{ disabled: user.disabled }" class="profile-item"
:class="{ newRow: (index + 1) % 4 === 0 }"
@click="$emit('profileClick', user)" @click="$emit('profileClick', user)"
data-bs-placement="top" data-bs-placement="top"
:aria-label="user.MEMBERSEQ" :aria-label="user.MEMBERSEQ"
@ -91,20 +92,20 @@ const showImage = (event) => (event.target.style.visibility = "visible");
const profileSize = computed(() => { const profileSize = computed(() => {
const totalUsers = userList.value.length; const totalUsers = userList.value.length;
if (windowWidth.value >= 1650) { if (windowWidth.value >= 1850) {
if (totalUsers <= 10) return "60px"; if (totalUsers <= 10) return "80px";
if (totalUsers <= 15) return "53px"; if (totalUsers <= 15) return "60px";
return "45px"; return "45px";
} else if (windowWidth.value >= 1400) { } else if (windowWidth.value >= 1500) {
if (totalUsers <= 10) return "60px";
if (totalUsers <= 15) return "40px";
return "30px";
} else if (windowWidth.value >= 900) {
if (totalUsers <= 10) return "48px"; if (totalUsers <= 10) return "48px";
if (totalUsers <= 15) return "30px"; if (totalUsers <= 15) return "30px";
return "20px"; return "20px";
} else if (windowWidth.value >= 1024) {
if (totalUsers <= 10) return "40px";
if (totalUsers <= 15) return "30px";
return "20px";
} else { } else {
return "30px"; return "35px";
} }
}); });

View File

@ -11,7 +11,7 @@
@change="onChange" @change="onChange"
:value="formValue" :value="formValue"
:disabled="isDisabled" :disabled="isDisabled"
:isEssential="false" :is-essential="false"
/> />
</div> </div>
<div class="col-2 btn-margin" v-if="!isDisabled"> <div class="col-2 btn-margin" v-if="!isDisabled">

View File

@ -2,12 +2,7 @@
<div class="container-xxl flex-grow-1 container-p-y"> <div class="container-xxl flex-grow-1 container-p-y">
<div > <div >
<!-- 타이틀, 검색 --> <!-- 타이틀, 검색 -->
<div class="row"> <SearchBar @update:data="search"/>
<div class="col-12 col-md-6">
<h5 class="mb-0 title"></h5>
</div>
<SearchBar @update:data="search"/>
</div>
<!-- 단어 갯수, 작성하기 --> <!-- 단어 갯수, 작성하기 -->
<WriteButton ref="writeButton" @click="writeStore.toggleItem(999999)" :isToggleEnabled="true"/> <WriteButton ref="writeButton" @click="writeStore.toggleItem(999999)" :isToggleEnabled="true"/>
<!-- --> <!-- -->
@ -35,7 +30,7 @@
:key="item.WRDDICSEQ" :key="item.WRDDICSEQ"
:item="item" :item="item"
v-model:cateList="cateList" v-model:cateList="cateList"
@refreshWordList="getwordList" @refreshWordList="refreshWordList"
@updateChecked="updateCheckedItems" @updateChecked="updateCheckedItems"
/> />
</ul> </ul>
@ -108,11 +103,14 @@
// //
onMounted(() => { onMounted(() => {
//getwordList();
getIndex(); getIndex();
writeStore.closeAll(); writeStore.closeAll();
}); });
const refreshWordList = () => {
getwordList(searchText.value, selectedAlphabet.value, selectedCategory.value);
};
// //
const getwordList = (searchKeyword='', indexKeyword='', category='') => { const getwordList = (searchKeyword='', indexKeyword='', category='') => {
axios.get('worddict/getWordList',{ axios.get('worddict/getWordList',{