From 254371ff3544167015534bc8a8a4baf953957668 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 10:14:13 +0900 Subject: [PATCH 01/13] =?UTF-8?q?:recycle:=20[refactor]=20=EB=A3=A8?= =?UTF-8?q?=ED=8A=B8=20=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC=20=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=20=EC=8B=9C=20=EA=B6=8C=ED=95=9C=EB=B3=84=20=EB=9E=9C?= =?UTF-8?q?=EB=94=A9=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=91=EA=B7=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/router/index.ts b/src/router/index.ts index d962c9a..c2729af 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -151,7 +151,7 @@ router.beforeEach(async (to, from, next) => { ROLE_ADMIN: '/member-management' } - if (info.role && to.path === '/login') { + if ((info.role && to.path === '/login') || (info.role && to.path === '/')) { return next(redirectMap[info.role]) } From 7595a4e3d0ef3dcf16901e20bba1155fa919de6b Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 10:40:38 +0900 Subject: [PATCH 02/13] =?UTF-8?q?:bug:=20[fix]=20ListCard=EC=9D=98=20?= =?UTF-8?q?=EB=86=92=EC=9D=B4=EA=B0=80=20=EB=8A=98=EC=96=B4=EB=82=A0=20?= =?UTF-8?q?=EC=8B=9C=20button-medium=20=EB=86=92=EC=9D=B4=20=EB=84=88?= =?UTF-8?q?=EB=AC=B4=20=EC=BB=A4=EC=A7=80=EB=8A=94=20=EA=B2=83=20=EB=B0=A9?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/styles.css | 2 +- src/components/request-task/RequestTaskFileInput.vue | 2 +- src/utils/axios.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/assets/styles.css b/src/assets/styles.css index cb3f2ba..6d65802 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -51,7 +51,7 @@ body { } .button-medium { - @apply flex items-center justify-center rounded px-4 py-2 font-bold gap-1 text-xs cursor-pointer shrink-0 h-full; + @apply flex items-center justify-center rounded px-4 py-2 font-bold gap-1 text-xs cursor-pointer shrink-0 h-full max-h-[34px]; } .button-medium-primary { @apply button-medium bg-primary1 text-white hover:bg-[#6869DE]; diff --git a/src/components/request-task/RequestTaskFileInput.vue b/src/components/request-task/RequestTaskFileInput.vue index 2fbc180..13a7e87 100644 --- a/src/components/request-task/RequestTaskFileInput.vue +++ b/src/components/request-task/RequestTaskFileInput.vue @@ -28,7 +28,7 @@ diff --git a/src/utils/axios.ts b/src/utils/axios.ts index 2310dfc..b67c70e 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -44,6 +44,7 @@ const setInterceptors = (instance: AxiosInstance) => { response => response, async error => { const { setError } = useErrorStore() + console.log(error) if (axios.isCancel(error)) { setError('요청이 취소되었습니다:', error.message) } else if (error.response) { From da47d8a91ed7b9844d1ddb066acc3ceb7524dd93 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 11:38:05 +0900 Subject: [PATCH 03/13] =?UTF-8?q?:recycle:=20[refactor]=202=EC=B0=A8=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EC=8B=9C=201=EC=B0=A8=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC?= =?UTF-8?q?=20=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/task-management/CategoryAdd.vue | 9 ++++++++- src/components/task-management/CategoryLineSub.vue | 6 +++--- src/utils/axios.ts | 1 - 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/components/task-management/CategoryAdd.vue b/src/components/task-management/CategoryAdd.vue index d444109..e1bfb9a 100644 --- a/src/components/task-management/CategoryAdd.vue +++ b/src/components/task-management/CategoryAdd.vue @@ -157,7 +157,14 @@ onMounted(async () => { } } } else if (categoryStep === '2') { - categoryOptions.value = await getMainCategory() + const mainCategories: Category[] = await getMainCategory() + categoryOptions.value = mainCategories + if (!id) { + const mainCategoryId = ref(Number(route.query.mainCategoryId)) + categoryForm.value.mainCategoryId = mainCategoryId.value + mainCategory.value = + categoryOptions.value.find(el => el.mainCategoryId === mainCategoryId.value)?.name || '' + } if (id) { const { data: initialValue } = await axiosInstance.get(`/api/sub-categories/${id}`) if (initialValue) { diff --git a/src/components/task-management/CategoryLineSub.vue b/src/components/task-management/CategoryLineSub.vue index 436acb8..cb419de 100644 --- a/src/components/task-management/CategoryLineSub.vue +++ b/src/components/task-management/CategoryLineSub.vue @@ -39,7 +39,7 @@
+ @click="MovetoAddSubCategory(main.mainCategoryId)">

새 2차 카테고리 추가

@@ -80,7 +80,7 @@ const deleteCategory = async (id: number) => { closeModal() } -const MovetoAddSubCategory = () => { - router.push('/category-second') +const MovetoAddSubCategory = (id: number) => { + router.push(`/category-second?mainCategoryId=${id}`) } diff --git a/src/utils/axios.ts b/src/utils/axios.ts index b67c70e..2310dfc 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -44,7 +44,6 @@ const setInterceptors = (instance: AxiosInstance) => { response => response, async error => { const { setError } = useErrorStore() - console.log(error) if (axios.isCancel(error)) { setError('요청이 취소되었습니다:', error.message) } else if (error.response) { From de1ccb454f97714e245bbc2889dd537700c9e5ca Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 12:17:33 +0900 Subject: [PATCH 04/13] =?UTF-8?q?:bug:=20[fix]=20400=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=20=ED=95=B8=EB=93=A4=EB=A7=81=20=EB=B0=8F=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/axios.ts | 4 +++- src/views/LoginView.vue | 12 ------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/utils/axios.ts b/src/utils/axios.ts index 2310dfc..a17ec4d 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -81,13 +81,15 @@ const setInterceptors = (instance: AxiosInstance) => { return Promise.reject(new Error('MEMBER_REVIEWER')) } else if (error.response.data === 'MEMBER_012') { return Promise.reject(new Error('MEMBER_DUPLICATED')) + } else { + setError('잘못된 요청입니다', '다시 시도해주세요') } break case 404: setError('요청한 자원을 찾을 수 없습니다') break case 500: - setError('서버 오류', '잠시 후 다시 시도하세요') + setError('서버 오류', '잠시 후 다시 시도해주세요') break default: setError('에러 발생', `${error.response.status}`) diff --git a/src/views/LoginView.vue b/src/views/LoginView.vue index 4f8ce63..4c04d80 100644 --- a/src/views/LoginView.vue +++ b/src/views/LoginView.vue @@ -117,18 +117,6 @@ const handleLogin = async () => { messageHeader.value = '활성화 되어있지 않은 계정입니다' messageBody.value = '접근 상태를 다시 확인하여주세요' break - - case 500: - isModalVisible.value = !isModalVisible.value - messageHeader.value = '서버에 문제가 발생했습니다' - messageBody.value = '잠시 후 다시 이용해주세요' - break - - default: - isModalVisible.value = !isModalVisible.value - messageHeader.value = '문제가 발생했습니다' - messageBody.value = '잠시후 다시 이용해주세요' - break } } } From 7e37147cd5384b7d54c0335edb538beae7bfee1d Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 14:25:12 +0900 Subject: [PATCH 05/13] =?UTF-8?q?:recycle:=20[refactor]=20=EC=B9=B4?= =?UTF-8?q?=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EC=B6=94=EA=B0=80=20/=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20validation=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/common.ts | 16 +++- .../request-approve/RequestApprove.vue | 7 ++ src/components/request-task/RequestTask.vue | 11 ++- .../request-task/RequestTaskDropdown.vue | 3 +- .../request-task/RequestTaskInput.vue | 8 +- .../task-management/CategoryAdd.vue | 73 ++++++++----------- src/types/user.ts | 1 + src/utils/axios.ts | 5 +- src/utils/redirectToLogin.ts | 4 +- 9 files changed, 72 insertions(+), 56 deletions(-) diff --git a/src/api/common.ts b/src/api/common.ts index 3a9ecfa..13b673f 100644 --- a/src/api/common.ts +++ b/src/api/common.ts @@ -1,42 +1,56 @@ +import { useMemberStore } from '@/stores/member' import { axiosInstance, formDataAxiosInstance } from '../utils/axios' +import { createPinia, setActivePinia, storeToRefs } from 'pinia' + +setActivePinia(createPinia()) + +const memberStore = useMemberStore() +const { isLogined } = storeToRefs(memberStore) export const patchEditInfo = async (formdata: FormData) => { + if (!isLogined) return const response = await formDataAxiosInstance.patch('/api/members/info', formdata) return response.data } export const getNotification = async (pageNum: number, sizeNum: number) => { + if (!isLogined) return const response = await axiosInstance.get(`/api/notifications?page=${pageNum}&size=${sizeNum}`) - return response.data } export const patchNotificationRead = async (notificationId: number) => { + if (!isLogined) return const response = await axiosInstance.patch(`/api/notifications/${notificationId}`) return response.data } export const getNotifiCount = async () => { + if (!isLogined) return const response = await axiosInstance.get(`/api/notifications/count`) return response.data } export const getMainCategory = async () => { + if (!isLogined) return const response = await axiosInstance.get('/api/main-category') return response.data } export const getSubCategory = async () => { + if (!isLogined) return const response = await axiosInstance.get('/api/sub-category') return response.data } export const getLabels = async () => { + if (!isLogined) return const response = await axiosInstance.get('/api/labels') return response.data } export const getCategory = async () => { + if (!isLogined) return const response = await axiosInstance.get('/api/category') return response.data } diff --git a/src/components/request-approve/RequestApprove.vue b/src/components/request-approve/RequestApprove.vue index 619a7f4..bdf0464 100644 --- a/src/components/request-approve/RequestApprove.vue +++ b/src/components/request-approve/RequestApprove.vue @@ -71,6 +71,8 @@ import CategoryDropDown from '../request-task/CategoryDropDown.vue' import DueDateInput from './DueDateInput.vue' import LabelDropdown from './LabelDropdown.vue' import ManagerDropdown from './ManagerDropdown.vue' +import { useErrorStore } from '@/stores/error' +import { redirectToLogin } from '@/utils/redirectToLogin' const isModalVisible = ref(false) const category1 = ref(null) @@ -109,6 +111,11 @@ onBeforeRouteLeave((to, from, next) => { }) onMounted(async () => { + const { setError } = useErrorStore() + if (!requestId) { + setError('존재하지 않는 요청입니다', '', () => redirectToLogin('/requested')) + return + } mainCategoryArr.value = await getMainCategory() subCategoryArr.value = await getSubCategory() const data = await getTaskDetailUser(requestId) diff --git a/src/components/request-task/RequestTask.vue b/src/components/request-task/RequestTask.vue index 9be1863..05f33a4 100644 --- a/src/components/request-task/RequestTask.vue +++ b/src/components/request-task/RequestTask.vue @@ -5,14 +5,14 @@ :options="mainCategoryArr" :label-name="'1차 카테고리'" :placeholderText="'1차 카테고리를 선택해주세요'" - :is-invalidate="isInvalidate" + :is-invalidate="isInvalidate === 'category1' ? 'category' : ''" :isDisabled="false" /> { const handleSubmit = async () => { if (isSubmitting.value || isModalVisible.value) return - if (!category1.value || !category2.value) { - isInvalidate.value = 'category' + if (!category1.value) { + isInvalidate.value = 'category1' + return + } else if (!category2.value) { + isInvalidate.value = 'category2' return } else if (!title.value) { isInvalidate.value = 'input' diff --git a/src/components/request-task/RequestTaskDropdown.vue b/src/components/request-task/RequestTaskDropdown.vue index c17c985..e85dc52 100644 --- a/src/components/request-task/RequestTaskDropdown.vue +++ b/src/components/request-task/RequestTaskDropdown.vue @@ -3,6 +3,7 @@

{{ labelName }}

*

+

카테고리를 선택해주세요

() const emit = defineEmits(['update:modelValue']) const dropdownOpen = ref(false) diff --git a/src/components/request-task/RequestTaskInput.vue b/src/components/request-task/RequestTaskInput.vue index 5d67561..697551a 100644 --- a/src/components/request-task/RequestTaskInput.vue +++ b/src/components/request-task/RequestTaskInput.vue @@ -6,6 +6,9 @@

{{ labelName }}을 입력해주세요

회원아이디가 중복되었습니다

제목은 30자 이내로 적어주세요

+

작업코드를 입력해주세요

+

사용할 수 없는 작업코드입니다

+

카테고리명을 입력해주세요

-

- 사용할 수 없는 작업코드입니다. -

diff --git a/src/components/task-management/CategoryAdd.vue b/src/components/task-management/CategoryAdd.vue index e1bfb9a..2d9949a 100644 --- a/src/components/task-management/CategoryAdd.vue +++ b/src/components/task-management/CategoryAdd.vue @@ -14,28 +14,24 @@ - - - + :disabled="route.params.id !== undefined" + :is-invalidate="hasMainCategory" /> + :label-name="`${categoryStep}차 카테고리명`" + :is-invalidate="errorMessage.categoryName" /> + :is-invalidate="errorMessage.categoryCode === 'noCode' ? 'noCode' : isCodeInvalidate" />
() const isModalVisible = ref({ add: false, cancel: false, fail: false }) -const errorMessage = ref('') +const errorMessage = ref({ categoryName: '', categoryCode: '' }) +const hasMainCategory = ref(true) const categoryForm = ref(CATEGORY_FORM) @@ -89,10 +85,6 @@ const handleAddModal = () => { const handleCancelModal = () => { isModalVisible.value.cancel = !isModalVisible.value.cancel } -const handleFailModal = (message: string = '카테고리 정보를 확인해주세요') => { - errorMessage.value = message - isModalVisible.value.fail = !isModalVisible.value.fail -} const handleCancel = () => { handleCancelModal() @@ -103,36 +95,32 @@ const handleGoBack = () => { } const handleSubmit = async () => { - if ( - isCodeInvalidate.value || - categoryForm.value.name.length === 0 || - categoryForm.value.code.length === 0 || - (categoryStep === '2' && categoryForm.value.mainCategoryId === undefined) - ) { - handleFailModal() + hasMainCategory.value = true + errorMessage.value = { categoryCode: '', categoryName: '' } + if (!categoryForm.value.mainCategoryId) { + hasMainCategory.value = false + return + } else if (isCodeInvalidate.value) { + errorMessage.value.categoryCode = 'code' + return + } else if (categoryForm.value.name.length === 0) { + errorMessage.value.categoryName = 'categoryName' + return + } else if (categoryForm.value.code.length === 0) { + errorMessage.value.categoryCode = 'noCode' return } - try { - const categoryId = route.params.id - if (categoryId) { - const patchUrl = `/api/managements/categories/${categoryId}` - await axiosInstance.patch(patchUrl, categoryForm.value) - } else { - const postUrl = - categoryStep === '1' ? '/api/managements/main-category' : '/api/managements/sub-category' - await axiosInstance.post(postUrl, categoryForm.value) - } - isModalVisible.value.add = true - } catch (error) { - if (axios.isAxiosError(error)) { - if (error.response?.data === 'TASK_013') { - handleFailModal('중복된 카테고리명\n혹은 고유코드입니다') - } else { - handleFailModal() - } - } + const categoryId = route.params.id + if (categoryId) { + const patchUrl = `/api/managements/categories/${categoryId}` + await axiosInstance.patch(patchUrl, categoryForm.value) + } else { + const postUrl = + categoryStep === '1' ? '/api/managements/main-category' : '/api/managements/sub-category' + await axiosInstance.post(postUrl, categoryForm.value) } + isModalVisible.value.add = true } const isCodeInvalidate = computed(() => { @@ -163,7 +151,8 @@ onMounted(async () => { const mainCategoryId = ref(Number(route.query.mainCategoryId)) categoryForm.value.mainCategoryId = mainCategoryId.value mainCategory.value = - categoryOptions.value.find(el => el.mainCategoryId === mainCategoryId.value)?.name || '' + categoryOptions.value.find(el => el.mainCategoryId === mainCategoryId.value)?.name || + '1차 카테고리를 선택해주세요' } if (id) { const { data: initialValue } = await axiosInstance.get(`/api/sub-categories/${id}`) diff --git a/src/types/user.ts b/src/types/user.ts index b503e1b..305ed3c 100644 --- a/src/types/user.ts +++ b/src/types/user.ts @@ -21,6 +21,7 @@ export interface RequestTaskDropdownProps { modelValue: string isLabel?: boolean disabled?: boolean + isInvalidate?: boolean } export interface RequestTaskInputProps { diff --git a/src/utils/axios.ts b/src/utils/axios.ts index a17ec4d..00f5f70 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -43,6 +43,7 @@ const setInterceptors = (instance: AxiosInstance) => { instance.interceptors.response.use( response => response, async error => { + console.log(error) const { setError } = useErrorStore() if (axios.isCancel(error)) { setError('요청이 취소되었습니다:', error.message) @@ -77,7 +78,9 @@ const setInterceptors = (instance: AxiosInstance) => { break } case 400: - if (error.response.data === 'MEMBER_013') { + if (error.response.data === 'TASK_013') { + setError('중복된 카테고리명\n혹은 고유코드입니다') + } else if (error.response.data === 'MEMBER_013') { return Promise.reject(new Error('MEMBER_REVIEWER')) } else if (error.response.data === 'MEMBER_012') { return Promise.reject(new Error('MEMBER_DUPLICATED')) diff --git a/src/utils/redirectToLogin.ts b/src/utils/redirectToLogin.ts index 5bdcb93..b74cea4 100644 --- a/src/utils/redirectToLogin.ts +++ b/src/utils/redirectToLogin.ts @@ -1,7 +1,7 @@ import { useErrorStore } from '@/stores/error' -export const redirectToLogin = () => { +export const redirectToLogin = (url?: string) => { const { clearError } = useErrorStore() clearError() - window.location.href = '/login' + window.location.href = url || '/login' } From 72e6d9242b32921ba56c9e2ab47a1b1777539e60 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 14:49:26 +0900 Subject: [PATCH 06/13] =?UTF-8?q?:bug:=20[fix]=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=ED=95=B8=EB=93=A4=EB=A7=81=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.ts | 6 -- src/utils/axios.ts | 9 +- src/views/PwChangeEmail.vue | 29 +----- src/views/PwChangeView.vue | 48 +-------- src/views/PwCheckView.vue | 202 ------------------------------------ 5 files changed, 14 insertions(+), 280 deletions(-) delete mode 100644 src/views/PwCheckView.vue diff --git a/src/router/index.ts b/src/router/index.ts index c2729af..0cbe519 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -22,12 +22,6 @@ const router = createRouter({ component: () => import('../views/PwChangeEmail.vue'), meta: { requiresAuth: true } }, - { - path: '/pw-check', - name: 'PWCheckView', - component: () => import('../views/PwCheckView.vue'), - meta: { requiresAuth: true } - }, { path: '/my-request', name: 'MyRequest', diff --git a/src/utils/axios.ts b/src/utils/axios.ts index 00f5f70..7385c53 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -84,12 +84,19 @@ const setInterceptors = (instance: AxiosInstance) => { return Promise.reject(new Error('MEMBER_REVIEWER')) } else if (error.response.data === 'MEMBER_012') { return Promise.reject(new Error('MEMBER_DUPLICATED')) + } else if ((error.response.data = 'MEMBER_006')) { + setError('비밀번호가 일치하지 않습니다', '다시 시도해주세요') } else { setError('잘못된 요청입니다', '다시 시도해주세요') } break case 404: - setError('요청한 자원을 찾을 수 없습니다') + if (error.response.data === 'MEMBER_001') { + setError('일치하는 정보가 없습니다', '이메일과 이름을 다시 확인해주세요') + } else { + setError('요청한 자원을 찾을 수 없습니다') + } + break case 500: setError('서버 오류', '잠시 후 다시 시도해주세요') diff --git a/src/views/PwChangeEmail.vue b/src/views/PwChangeEmail.vue index 147a2e3..7bd8cf9 100644 --- a/src/views/PwChangeEmail.vue +++ b/src/views/PwChangeEmail.vue @@ -63,7 +63,6 @@ diff --git a/src/views/PwChangeView.vue b/src/views/PwChangeView.vue index d57fc6f..e2181dd 100644 --- a/src/views/PwChangeView.vue +++ b/src/views/PwChangeView.vue @@ -108,7 +108,6 @@ From 6df590035edbeeeed339ab45ed0b1babeded9ad1 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 14:58:16 +0900 Subject: [PATCH 07/13] =?UTF-8?q?:lipstick:=20[design]=20:=20LineChart=200?= =?UTF-8?q?=EB=B6=80=ED=84=B0=20=EC=8B=9C=EC=9E=91=20=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/charts/LineChart.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/charts/LineChart.vue b/src/components/charts/LineChart.vue index 4fb2190..c8e818e 100644 --- a/src/components/charts/LineChart.vue +++ b/src/components/charts/LineChart.vue @@ -62,7 +62,6 @@ const options = { maintainAspectRatio: false, scales: { y: { - beginAtZero: true, ticks: { stepSize: 1 }, From 4c8315974246e670dbe50d837546f329e0ea4db3 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 15:02:45 +0900 Subject: [PATCH 08/13] =?UTF-8?q?:lipstick:=20[design]=20:=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=91=9C=EC=8B=9C=EC=B9=B8=20=ED=81=AC=EA=B8=B0=20?= =?UTF-8?q?=EC=A6=9D=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/my-request/MyRequestListCard.vue | 2 +- src/components/my-task/MyTaskListCard.vue | 2 +- src/components/request-history/RequestHistoryListCard.vue | 2 +- src/constants/manager.ts | 4 ++-- src/constants/user.ts | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/my-request/MyRequestListCard.vue b/src/components/my-request/MyRequestListCard.vue index fd29072..9a70e00 100644 --- a/src/components/my-request/MyRequestListCard.vue +++ b/src/components/my-request/MyRequestListCard.vue @@ -49,7 +49,7 @@ const myRequestTabList: ListCardProps[] = [ { content: info.categoryName, width: 80 }, { content: info.title }, { content: info.processorName, width: 120, profileImg: info.processorImg }, - { content: info.taskStatus, width: 64, isStatus: true }, + { content: info.taskStatus, width: 80, isStatus: true }, { content: info.finishedAt ? formatDate(info.finishedAt) : '', width: 80 } ] diff --git a/src/components/my-task/MyTaskListCard.vue b/src/components/my-task/MyTaskListCard.vue index 0c2f14b..7900032 100644 --- a/src/components/my-task/MyTaskListCard.vue +++ b/src/components/my-task/MyTaskListCard.vue @@ -48,7 +48,7 @@ const myRequestTabList: ListCardProps[] = [ { content: info.categoryName, width: 80 }, { content: info.title }, { content: info.requesterName, width: 120, profileImg: info.requesterImg }, - { content: info.taskStatus, width: 64, isStatus: true }, + { content: info.taskStatus, width: 80, isStatus: true }, { content: info.finishedAt ? formatDate(info.finishedAt) : '', width: 80 } ] diff --git a/src/components/request-history/RequestHistoryListCard.vue b/src/components/request-history/RequestHistoryListCard.vue index 901681f..404c5dd 100644 --- a/src/components/request-history/RequestHistoryListCard.vue +++ b/src/components/request-history/RequestHistoryListCard.vue @@ -49,7 +49,7 @@ const myRequestTabList: ListCardProps[] = [ { content: info.title }, { content: info.requesterName, width: 120, profileImg: info.requesterImg }, { content: info.processorName, width: 120, profileImg: info.processorImg }, - { content: info.taskStatus, width: 64, isStatus: true }, + { content: info.taskStatus, width: 80, isStatus: true }, { content: info.finishedAt ? formatDate(info.finishedAt) : '', width: 80 } ] diff --git a/src/constants/manager.ts b/src/constants/manager.ts index ed9b077..4717867 100644 --- a/src/constants/manager.ts +++ b/src/constants/manager.ts @@ -18,7 +18,7 @@ export const REQUEST_HISTORY_LIST_BAR_TAB: ListBarTabProps[] = [ { content: '제목' }, { content: '요청자', width: 120 }, { content: '담당자', width: 120 }, - { content: '상태', width: 64 }, + { content: '상태', width: 80 }, { content: '종료일', width: 80, sortBy: 'FINISHED_AT' } ] @@ -29,7 +29,7 @@ export const MY_TASK_LIST_BAR_TAB: ListBarTabProps[] = [ { content: '2차 카테고리', width: 80 }, { content: '제목' }, { content: '요청자', width: 120 }, - { content: '상태', width: 64 }, + { content: '상태', width: 80 }, { content: '종료일', width: 80, sortBy: 'FINISHED_AT' } ] diff --git a/src/constants/user.ts b/src/constants/user.ts index 499f443..1afd16b 100644 --- a/src/constants/user.ts +++ b/src/constants/user.ts @@ -8,7 +8,7 @@ export const MY_REQUEST_LIST_BAR_TAB: ListBarTabProps[] = [ { content: '2차 카테고리', width: 80 }, { content: '제목' }, { content: '담당자', width: 120 }, - { content: '상태', width: 64 }, + { content: '상태', width: 80 }, { content: '종료일', width: 80, sortBy: 'FINISHED_AT' } ] From fecd55f801cf9d155958e278a1e493a14daa872d Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 15:38:46 +0900 Subject: [PATCH 09/13] =?UTF-8?q?:recycle:=20[refactor]=20=EA=B8=80?= =?UTF-8?q?=EB=A1=9C=EB=B2=8C=20=EC=98=A4=EB=A5=98=20=ED=95=B8=EB=93=A4?= =?UTF-8?q?=EB=A7=81=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20try..catch=EB=AC=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/EditInformation.vue | 11 ++----- .../MemberManagementListCard.vue | 14 +++------ .../request-approve/RequestApprove.vue | 8 ++--- src/components/request-task/ReRequestTask.vue | 6 ++-- src/components/request-task/RequestTask.vue | 3 -- .../request-task/RequestTaskDropdown.vue | 2 +- .../requested/RequestedListCard.vue | 9 ++---- .../task-detail/TaskDetailRight.vue | 12 +++----- src/components/task-detail/TaskStatusList.vue | 29 +++++++------------ .../task-management/CategoryAdd.vue | 4 +-- src/components/top-bar/NotificationModal.vue | 3 +- src/components/top-bar/TopBar.vue | 9 ++---- .../user-manage/DepartmentDropDown.vue | 6 +--- .../user-manage/UserRegistration.vue | 1 - src/components/user-manage/UserUpdate.vue | 1 - src/stores/member.ts | 12 +++----- 16 files changed, 40 insertions(+), 90 deletions(-) diff --git a/src/components/common/EditInformation.vue b/src/components/common/EditInformation.vue index 59d1ac2..0856bb9 100644 --- a/src/components/common/EditInformation.vue +++ b/src/components/common/EditInformation.vue @@ -3,7 +3,7 @@ + @close="isModalVisible = !isModalVisible"> @@ -288,13 +288,8 @@ const handleSubmit = async () => { selectedFile.value = null } - try { - await patchEditInfo(formData) - isModalVisible.value = true - await memberStore.updateMemberInfoWithToken() - } catch (error) { - console.error('요청 실패:', error) - } + await patchEditInfo(formData) + isModalVisible.value = true } } diff --git a/src/components/member-management/MemberManagementListCard.vue b/src/components/member-management/MemberManagementListCard.vue index b73923e..9f9396c 100644 --- a/src/components/member-management/MemberManagementListCard.vue +++ b/src/components/member-management/MemberManagementListCard.vue @@ -96,16 +96,10 @@ const closeModal = () => { } const onMemberDelete = async (memberId: number) => { - try { - await axiosInstance.delete(`/api/managements/members`, { data: { memberId } }) - resultModalType.value = 'successType' - message.value = '회원을 삭제했습니다' - toggleModal('result') - } catch { - resultModalType.value = 'failType' - message.value = '회원 삭제에 실패했습니다' - toggleModal('result') - } + await axiosInstance.delete(`/api/managements/members`, { data: { memberId } }) + resultModalType.value = 'successType' + message.value = '회원을 삭제했습니다' + toggleModal('result') } const onMemberInvite = async (memberId: number) => { diff --git a/src/components/request-approve/RequestApprove.vue b/src/components/request-approve/RequestApprove.vue index bdf0464..8505f88 100644 --- a/src/components/request-approve/RequestApprove.vue +++ b/src/components/request-approve/RequestApprove.vue @@ -165,11 +165,7 @@ const handleSubmit = async () => { : null, labelId: approveData.value.label?.labelId || null } - try { - await postTaskApprove(requestId, requestData) - isModalVisible.value = true - } catch (error) { - console.error('API 요청 실패:', error) - } + await postTaskApprove(requestId, requestData) + isModalVisible.value = true } diff --git a/src/components/request-task/ReRequestTask.vue b/src/components/request-task/ReRequestTask.vue index 91898a9..a908e81 100644 --- a/src/components/request-task/ReRequestTask.vue +++ b/src/components/request-task/ReRequestTask.vue @@ -127,6 +127,9 @@ const handleSubmit = async () => { isInvalidate.value = 'description' return } + + isSubmitting.value = true + const formData = new FormData() const attachmentsToDelete = initFileArr.value @@ -168,9 +171,6 @@ const handleSubmit = async () => { await patchTaskRequest(id, formData) } isModalVisible.value = 'success' - } catch (e) { - isModalVisible.value = 'fail' - console.error('요청 실패:', e) } finally { isSubmitting.value = false } diff --git a/src/components/request-task/RequestTask.vue b/src/components/request-task/RequestTask.vue index 05f33a4..8fc2200 100644 --- a/src/components/request-task/RequestTask.vue +++ b/src/components/request-task/RequestTask.vue @@ -142,9 +142,6 @@ const handleSubmit = async () => { try { await postTaskRequest(formData) isModalVisible.value = 'success' - } catch (e) { - console.error(e) - isModalVisible.value = 'fail' } finally { isSubmitting.value = false } diff --git a/src/components/request-task/RequestTaskDropdown.vue b/src/components/request-task/RequestTaskDropdown.vue index e85dc52..63c9946 100644 --- a/src/components/request-task/RequestTaskDropdown.vue +++ b/src/components/request-task/RequestTaskDropdown.vue @@ -3,7 +3,7 @@

{{ labelName }}

*

-

카테고리를 선택해주세요

+

카테고리를 선택해주세요

{ modalError.value = '반려 사유를 입력해주세요' return } - try { - await axiosInstance.patch(`/api/tasks/${info.taskId}/terminate`, rejectReason) - toggleModal('success') - } catch { - toggleModal('fail') - modalError.value = '작업 반려에 실패했습니다' - } + await axiosInstance.patch(`/api/tasks/${info.taskId}/terminate`, rejectReason) + toggleModal('success') } const { info: userInfo } = useMemberStore() diff --git a/src/components/task-detail/TaskDetailRight.vue b/src/components/task-detail/TaskDetailRight.vue index 9af1531..83a8194 100644 --- a/src/components/task-detail/TaskDetailRight.vue +++ b/src/components/task-detail/TaskDetailRight.vue @@ -113,14 +113,10 @@ const newManager = ref(selectedManager.value) watch(newManager, async newValue => { if (newValue?.nickname !== selectedManager.value.nickname && newValue) { - try { - await changeProcessor(data.taskId, newValue.memberId) - selectedManager.value = newValue - queryClient.invalidateQueries({ queryKey: ['historyData', data.taskId] }) - queryClient.invalidateQueries({ queryKey: ['taskDetailUser', data.taskId] }) - } catch (error) { - console.error('Error updating processor', error) - } + await changeProcessor(data.taskId, newValue.memberId) + selectedManager.value = newValue + queryClient.invalidateQueries({ queryKey: ['historyData', data.taskId] }) + queryClient.invalidateQueries({ queryKey: ['taskDetailUser', data.taskId] }) } }) diff --git a/src/components/task-detail/TaskStatusList.vue b/src/components/task-detail/TaskStatusList.vue index 1f644f4..b8da419 100644 --- a/src/components/task-detail/TaskStatusList.vue +++ b/src/components/task-detail/TaskStatusList.vue @@ -94,17 +94,12 @@ const rejectRequest = async () => { modalError.value = '종료 사유를 입력해주세요' return } - try { - await axiosInstance.patch(`/api/tasks/${taskId}/terminate`, rejectReason) - toggleModal('success') - emit('update:status', 'TERMINATED') - currentStatus.value = 'TERMINATED' - queryClient.invalidateQueries({ queryKey: ['taskDetailUser', taskId] }) - queryClient.invalidateQueries({ queryKey: ['historyData', taskId] }) - } catch { - toggleModal('fail') - modalError.value = '작업 종료에 실패했습니다' - } + await axiosInstance.patch(`/api/tasks/${taskId}/terminate`, rejectReason) + toggleModal('success') + emit('update:status', 'TERMINATED') + currentStatus.value = 'TERMINATED' + queryClient.invalidateQueries({ queryKey: ['taskDetailUser', taskId] }) + queryClient.invalidateQueries({ queryKey: ['historyData', taskId] }) } const changeStatus = async (newStatus: Status) => { @@ -116,14 +111,10 @@ const changeStatus = async (newStatus: Status) => { return } else { emit('update:status', newStatus) - try { - currentStatus.value = newStatus - await patchChangeStatus(taskId || 0, newStatus) - queryClient.invalidateQueries({ queryKey: ['taskDetailUser', taskId] }) - queryClient.invalidateQueries({ queryKey: ['historyData', taskId] }) - } catch (error) { - console.error('Failed to update status:', error) - } + currentStatus.value = newStatus + await patchChangeStatus(taskId || 0, newStatus) + queryClient.invalidateQueries({ queryKey: ['taskDetailUser', taskId] }) + queryClient.invalidateQueries({ queryKey: ['historyData', taskId] }) } } diff --git a/src/components/task-management/CategoryAdd.vue b/src/components/task-management/CategoryAdd.vue index 2d9949a..8e36aac 100644 --- a/src/components/task-management/CategoryAdd.vue +++ b/src/components/task-management/CategoryAdd.vue @@ -21,7 +21,7 @@ placeholder-text="1차 카테고리를 선택해주세요" v-if="categoryStep == '2'" :disabled="route.params.id !== undefined" - :is-invalidate="hasMainCategory" /> + :is-invalidate="!hasMainCategory" /> { const handleSubmit = async () => { hasMainCategory.value = true errorMessage.value = { categoryCode: '', categoryName: '' } - if (!categoryForm.value.mainCategoryId) { + if (!categoryForm.value.mainCategoryId && categoryStep === '2') { hasMainCategory.value = false return } else if (isCodeInvalidate.value) { diff --git a/src/components/top-bar/NotificationModal.vue b/src/components/top-bar/NotificationModal.vue index 3255952..564574b 100644 --- a/src/components/top-bar/NotificationModal.vue +++ b/src/components/top-bar/NotificationModal.vue @@ -102,8 +102,7 @@ const loadMoreNotifications = async ($state: InfiniteLoadingState) => { } else { $state.complete() } - } catch (error) { - console.error('알림을 불러오는 중 오류 발생:', error) + } catch { $state.error() } } diff --git a/src/components/top-bar/TopBar.vue b/src/components/top-bar/TopBar.vue index 11ef216..ead8413 100644 --- a/src/components/top-bar/TopBar.vue +++ b/src/components/top-bar/TopBar.vue @@ -81,12 +81,9 @@ const isProfileVisible = ref(false) const fetchNotificationCount = async () => { if (!info.value.role) return - try { - const data = await getNotifiCount() - countNotifi.value = data.count - } catch (error) { - console.error('알림 개수 불러오기 실패:', error) - } + + const data = await getNotifiCount() + countNotifi.value = data.count } const toggleNotifi = async () => { diff --git a/src/components/user-manage/DepartmentDropDown.vue b/src/components/user-manage/DepartmentDropDown.vue index 3107f68..455b9ad 100644 --- a/src/components/user-manage/DepartmentDropDown.vue +++ b/src/components/user-manage/DepartmentDropDown.vue @@ -54,10 +54,6 @@ const selectOption = (option: DepartmentType) => { } onMounted(async () => { - try { - dePartments.value = await getDepartmentsAdmin() - } catch (error) { - console.error('부서가져오기 실패:', error) - } + dePartments.value = await getDepartmentsAdmin() }) diff --git a/src/components/user-manage/UserRegistration.vue b/src/components/user-manage/UserRegistration.vue index 9c58796..8b7e69e 100644 --- a/src/components/user-manage/UserRegistration.vue +++ b/src/components/user-manage/UserRegistration.vue @@ -34,7 +34,6 @@ v-model="userRegistrationForm.role" :options="RoleKeys" :label-name="'역할'" - :is-invalidate="isInvalidate" :placeholderText="'회원의 역할을 선택해주세요'" /> { const token = Cookies.get('accessToken') if (!token) return - try { - const { data }: { data: User } = await axiosInstance.get('/api/members/info') - info.value = data - isLogined.value = true - return data.role - } catch (e) { - console.log(e) - } + const { data }: { data: User } = await axiosInstance.get('/api/members/info') + info.value = data + isLogined.value = true + return data.role } function logout() { From 7623db8c680e1ccda65ae61672e7d61efc8d6c6f Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 16:07:51 +0900 Subject: [PATCH 10/13] =?UTF-8?q?:bug:=20[fix]=20=EC=9E=98=EB=AA=BB?= =?UTF-8?q?=EB=90=9C=20=EC=95=84=EC=9D=B4=EB=94=94=20=ED=98=95=EC=8B=9D=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/EditInformation.vue | 1 + src/components/request-task/RequestTaskInput.vue | 1 + src/components/user-manage/UserRegistration.vue | 12 +++++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/components/common/EditInformation.vue b/src/components/common/EditInformation.vue index 0856bb9..2899f3e 100644 --- a/src/components/common/EditInformation.vue +++ b/src/components/common/EditInformation.vue @@ -290,6 +290,7 @@ const handleSubmit = async () => { await patchEditInfo(formData) isModalVisible.value = true + await memberStore.updateMemberInfoWithToken() } } diff --git a/src/components/request-task/RequestTaskInput.vue b/src/components/request-task/RequestTaskInput.vue index 697551a..5bccfa3 100644 --- a/src/components/request-task/RequestTaskInput.vue +++ b/src/components/request-task/RequestTaskInput.vue @@ -9,6 +9,7 @@

작업코드를 입력해주세요

사용할 수 없는 작업코드입니다

카테고리명을 입력해주세요

+

잘못된 형식의 아이디입니다

import { addMemberAdmin } from '@/api/admin' import { INITIAL_USER_REGISTRATION, RoleKeys, RoleTypeMapping } from '@/constants/admin' -import { computed, onMounted, ref } from 'vue' +import { computed, onMounted, ref, watch } from 'vue' import { useRouter } from 'vue-router' import FormButtonContainer from '../common/FormButtonContainer.vue' import FormCheckbox from '../common/FormCheckbox.vue' @@ -84,8 +84,14 @@ const handleCancel = () => { router.back() } +const usernameRegex = /^[a-z]{3,10}\.[a-z]{1,5}$/ + const handleSubmit = async () => { try { + if (!usernameRegex.test(userRegistrationForm.value.nickname)) { + isInvalidate.value = 'wrongNickname' + return + } const formData = { ...userRegistrationForm.value, isReviewer: isManager.value ? userRegistrationForm.value.isReviewer : false, @@ -104,4 +110,8 @@ const handleSubmit = async () => { } } } + +watch(isManager, () => { + userRegistrationForm.value.isReviewer = false +}) From e2a5d601f50de314a557067f5555492aabf5b1a2 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 12 Feb 2025 16:14:14 +0900 Subject: [PATCH 11/13] =?UTF-8?q?:recycle:=20[refactor]=20console.log,=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/styles.css | 12 +++++----- src/components/common/EditInformation.vue | 22 +++++++++---------- src/components/common/FormCheckbox.vue | 2 +- src/components/common/ModalView.vue | 4 ++-- src/components/common/TaskCard.vue | 6 ++--- src/components/common/TaskLabel.vue | 2 +- src/components/common/TaskStatus.vue | 2 +- src/components/common/TitleBar.vue | 2 +- src/components/common/TitleContainer.vue | 2 +- src/components/filters/FilterCategory.vue | 6 ++--- .../filters/FilterDropdownMulti.vue | 2 +- src/components/icons/NotificationIcon.vue | 2 +- src/components/lists/ListBarTab.vue | 2 +- src/components/lists/ListPagination.vue | 2 +- src/components/lists/NoContent.vue | 2 +- .../MemberManagementAddByCsv.vue | 2 +- .../request-approve/LabelDropdown.vue | 2 +- .../request-approve/ManagerDropdown.vue | 2 +- .../request-approve/RequestApprove.vue | 2 +- .../request-task/CategoryDropDown.vue | 2 +- .../request-task/RequestTaskDropdown.vue | 2 +- .../request-task/RequestTaskFileInput.vue | 4 ++-- .../RequestTaskFileInputAfter.vue | 4 ++-- .../request-task/RequestTaskInput.vue | 2 +- .../request-task/RequestTaskTextArea.vue | 2 +- src/components/statistics/PeriodButtons.vue | 2 +- src/components/statistics/StatisticsCard.vue | 2 +- .../statistics/StatisticsCategoryCard.vue | 2 +- src/components/task-board/TaskBoard.vue | 12 +++++----- .../task-detail/TaskDetailFiles.vue | 2 +- .../task-detail/TaskDetailHistory.vue | 6 ++--- .../task-detail/TaskDetailHistoryChat.vue | 6 ++--- .../task-detail/TaskDetailHistoryFile.vue | 4 ++-- .../task-detail/TaskDetailRight.vue | 2 +- .../task-detail/TaskDetailTopBar.vue | 2 +- src/components/task-detail/TaskStatusList.vue | 2 +- .../task-management/CategoryAdd.vue | 2 +- .../task-management/CategoryLine.vue | 4 ++-- .../task-management/CategoryLineSub.vue | 6 ++--- .../task-management/CategoryManagement.vue | 2 +- .../task-management/ColorSelectModal.vue | 2 +- .../task-management/LabelManagement.vue | 2 +- .../task-management/LabelManagementLine.vue | 2 +- .../team-board/CurrentTaskRatio.vue | 12 ++++++---- src/components/team-board/TeamBoardCard.vue | 12 ++++++---- .../top-bar/NotificationMessage.vue | 16 +++++++------- src/components/top-bar/NotificationModal.vue | 4 ++-- src/components/top-bar/ProfileModal.vue | 6 ++--- src/components/top-bar/SideBar.vue | 8 +++---- .../user-manage/DepartmentDropDown.vue | 2 +- src/constants/iconPath.ts | 3 --- src/utils/axios.ts | 1 - src/views/LoginView.vue | 2 +- src/views/MemberManagementView.vue | 4 ++-- src/views/MyRequestView.vue | 2 +- src/views/PwChangeEmail.vue | 2 +- src/views/PwChangeView.vue | 8 +++---- 57 files changed, 121 insertions(+), 117 deletions(-) diff --git a/src/assets/styles.css b/src/assets/styles.css index 6d65802..ece208b 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -38,7 +38,7 @@ body { } .button-large { - @apply flex w-full py-3 font-bold border rounded items-center justify-center min-w-[138px]; + @apply flex w-full py-3 font-semibold border rounded items-center justify-center min-w-[138px]; } .button-large-default { @apply button-large bg-white text-disabled border-border-1 hover:bg-background-2; @@ -51,7 +51,7 @@ body { } .button-medium { - @apply flex items-center justify-center rounded px-4 py-2 font-bold gap-1 text-xs cursor-pointer shrink-0 h-full max-h-[34px]; + @apply flex items-center justify-center rounded px-4 py-2 font-semibold gap-1 text-xs cursor-pointer shrink-0 h-full max-h-[34px]; } .button-medium-primary { @apply button-medium bg-primary1 text-white hover:bg-[#6869DE]; @@ -70,7 +70,7 @@ body { } .button-small { - @apply flex items-center gap-1 text-xs font-bold; + @apply flex items-center gap-1 text-xs font-semibold; } .button-small-primary { @apply text-primary1; @@ -93,7 +93,7 @@ body { @apply flex flex-col gap-1 shrink-0; } .filter-title { - @apply text-[10px] font-bold text-body; + @apply text-[10px] font-semibold text-body; } .filter-dropdown { @apply flex justify-center items-center w-full h-8 px-2 border-b border-border-1 relative text-xs cursor-pointer; @@ -110,7 +110,7 @@ body { } .task-detail { - @apply text-xs text-body font-bold mb-2; + @apply text-xs text-body font-semibold mb-2; } .request-task-dropdown { @@ -131,7 +131,7 @@ body { @apply max-w-1200 min-h-screen flex flex-col gap-6; } .task-management-title { - @apply flex w-full h-8 pl-6 gap-6 items-center text-xs bg-background-2 text-body font-bold border-b border-b-border-1; + @apply flex w-full h-8 pl-6 gap-6 items-center text-xs bg-background-2 text-body font-semibold border-b border-b-border-1; } .category-management-line { @apply flex items-center px-4 w-full h-11 border-b border-b-border-1; diff --git a/src/components/common/EditInformation.vue b/src/components/common/EditInformation.vue index 2899f3e..f87a74f 100644 --- a/src/components/common/EditInformation.vue +++ b/src/components/common/EditInformation.vue @@ -26,7 +26,7 @@
-

프로필 사진

+

프로필 사진

@@ -56,7 +56,7 @@ class="hidden" />
-

이름

+

이름

{{ name.length }} / 10 {{ nameError }}
-

아이디

+

아이디

{{ info.nickname }}

-

이메일

+

이메일

{{ info.email }}

-

부서

+

부서

{{ info.departmentName }}

-

직무

+

직무

{{ info.departmentRole }}

-

알림 수신 여부

+

알림 수신 여부

-

비밀번호 재설정

+

비밀번호 재설정