diff --git a/public/css/custom.css b/public/css/custom.css index d2e01a7..2d61ee1 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -539,7 +539,7 @@ .map { top: -160px; - left: -5px; + left: 90px; } @keyframes sparkle { diff --git a/src/components/commuters/CommuterCalendar.vue b/src/components/commuters/CommuterCalendar.vue index 1f62ebf..925d5df 100644 --- a/src/components/commuters/CommuterCalendar.vue +++ b/src/components/commuters/CommuterCalendar.vue @@ -63,8 +63,8 @@ {{ commuter.memberName }} -
-
+
+
출근 :
{{ commuter.PROJCTNAM }} @@ -431,9 +431,3 @@ onMounted(async () => { ); }); - - diff --git a/src/components/input/UserFormInput.vue b/src/components/input/UserFormInput.vue index 36c4573..b3eebd4 100644 --- a/src/components/input/UserFormInput.vue +++ b/src/components/input/UserFormInput.vue @@ -14,7 +14,6 @@ :value="computedValue" :disabled="disabled" :maxLength="maxlength" - :minLength="minlength" :placeholder="title" @blur="$emit('blur')" /> @@ -30,7 +29,6 @@ :value="computedValue" :disabled="disabled" :maxLength="maxlength" - :minLength="minlength" :placeholder="title" @blur="$emit('blur')" @click="handleDateClick" @@ -81,11 +79,6 @@ default: 30, required: false, }, - minlength: { - type: Number, - default: 4, - required: false, - }, isAlert: { type: Boolean, default: false, diff --git a/src/components/list/ProjectCard.vue b/src/components/list/ProjectCard.vue index a529850..cf627fa 100644 --- a/src/components/list/ProjectCard.vue +++ b/src/components/list/ProjectCard.vue @@ -32,36 +32,19 @@
-
- -
주소
-
-
- {{ address }} {{ addressdtail }} - -
- -
-
- - - -
- - -
-
+ + + +
+ {{ address }} {{ addressdtail }}
@@ -195,6 +178,7 @@ import DeleteBtn from '../button/DeleteBtn.vue'; import FormInput from '@c/input/FormInput.vue'; import FormSelect from '@c/input/FormSelect.vue'; import ArrInput from '@c/input/ArrInput.vue'; +import MapPopover from '@c/map/MapPopover.vue'; import { useToastStore } from '@s/toastStore'; import { useUserInfoStore } from '@/stores/useUserInfoStore'; import commonApi, { refreshColorList } from '@/common/commonApi'; @@ -270,11 +254,7 @@ const emit = defineEmits(['update']); const isModalOpen = ref(false); const logData = ref([]); -// 주소 팝오버 상태 -const isPopoverVisible = ref(false); -const map = ref(); const mapIconRef = ref(null); -const coordinates = ref(null); // 수정 모달 상태 const isEditModalOpen = ref(false); @@ -292,8 +272,6 @@ const selectedUsers = ref({ }); -const isKakaoMapLoaded = ref(false); - const startDateInput = ref(null); const endDateInput = ref(null); @@ -538,43 +516,6 @@ const handleUpdate = async () => { } }; -// 주소를 좌표로 변환하는 함수 -const convertAddressToCoordinates = () => { - if (!window.kakao || !window.kakao.maps) { - return; - } - - const geocoder = new window.kakao.maps.services.Geocoder(); - geocoder.addressSearch(props.address, (result, status) => { - if (status === window.kakao.maps.services.Status.OK) { - coordinates.value = { - lat: parseFloat(result[0].y), - lng: parseFloat(result[0].x) - }; - } - }); -}; - -const onLoadKakaoMap = (mapRef) => { - map.value = mapRef; -}; - -// 지도 확대 -const zoomIn = () => { - if (map.value) { - const level = map.value.getLevel(); - map.value.setLevel(level + 1); - } -}; - -// 지도 축소 -const zoomOut = () => { - if (map.value) { - const level = map.value.getLevel(); - map.value.setLevel(level - 1); - } -}; - // 프로젝트 삭제 const handleDelete = () => { $api.patch('project/delete', { @@ -605,13 +546,6 @@ onMounted(async () => { endInputElement = endDateInput.value.$el.querySelector('input[type="date"]'); } - const checkKakaoMapsLoaded = () => { - if (window.kakao && window.kakao.maps && window.kakao.maps.services) { - convertAddressToCoordinates(); - } - }; - - checkKakaoMapsLoaded(); }); diff --git a/src/components/map/MapPopover.vue b/src/components/map/MapPopover.vue new file mode 100644 index 0000000..c1ba217 --- /dev/null +++ b/src/components/map/MapPopover.vue @@ -0,0 +1,109 @@ + + + diff --git a/src/components/search/SearchBar.vue b/src/components/search/SearchBar.vue index 9a68666..03bfb3a 100644 --- a/src/components/search/SearchBar.vue +++ b/src/components/search/SearchBar.vue @@ -1,17 +1,8 @@ diff --git a/src/components/user/RegisterForm.vue b/src/components/user/RegisterForm.vue index aea85d2..726df69 100644 --- a/src/components/user/RegisterForm.vue +++ b/src/components/user/RegisterForm.vue @@ -332,9 +332,12 @@ }; watch(password, (newValue) => { - if (newValue.length >= 4) { + if (newValue && newValue.length >= 4) { passwordErrorAlert.value = false; passwordError.value = ''; + } else if (newValue && newValue.length < 4) { + passwordErrorAlert.value = true; + passwordError.value = '비밀번호는 4자리 이상이어야 합니다.'; } }); @@ -342,6 +345,7 @@ // 회원가입 const handleSubmit = async () => { await checkColorDuplicate(); + idAlert.value = id.value.trim() === ''; passwordAlert.value = password.value.trim() === ''; passwordcheckAlert.value = passwordcheck.value.trim() === ''; @@ -351,8 +355,8 @@ addressAlert.value = address.value.trim() === ''; phoneAlert.value = phone.value.trim() === ''; - // 비밀번호 길이 체크 로직 추가 - if (password.value.length < 4) { + // 비밀번호 길이 체크 로직 수정 + if (password.value && password.value.length < 4) { passwordErrorAlert.value = true; passwordError.value = '비밀번호는 4자리 이상이어야 합니다.'; } else { diff --git a/src/components/voteboard/voteCard.vue b/src/components/voteboard/voteCard.vue index c987a79..095a66d 100644 --- a/src/components/voteboard/voteCard.vue +++ b/src/components/voteboard/voteCard.vue @@ -1,5 +1,5 @@