From 93210040526c29501ffb20a57e41509814fa59b3 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Sun, 2 Feb 2025 02:47:53 +0900 Subject: [PATCH 01/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EA=B8=B0=EB=A1=9D=20=EB=AA=A9=EB=A1=9D=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20API=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SideBar.vue | 2 +- src/components/hooks/useLogsParamsChange.ts | 26 ++++++---- .../login-logs/LoginLogsFilterBar.vue | 9 ++-- src/components/login-logs/LoginLogsList.vue | 40 +++++++++++--- .../login-logs/LoginLogsListCard.vue | 25 ++++++--- .../MemberManagementList.vue | 33 +++++++++--- src/components/my-request/MyRequestList.vue | 15 ++---- src/constants/admin.ts | 3 +- src/stores/params.ts | 28 +++++----- src/types/admin.ts | 52 ++++++++++++++++--- src/types/stores.ts | 12 ++--- 11 files changed, 170 insertions(+), 75 deletions(-) diff --git a/src/components/SideBar.vue b/src/components/SideBar.vue index fe08f51f..192a0811 100644 --- a/src/components/SideBar.vue +++ b/src/components/SideBar.vue @@ -69,7 +69,7 @@ import { SIDE_USER_MENU, SIDE_MANAGER_MENU, SIDE_ADMIN_MENU } from '@/constants/ const route = useRoute() // 회원 역할, 닉네임 필요 -const role = ref('manager') +const role = ref('admin') const name = ref('백지연') const nickname = ref('Chloe.yeon') diff --git a/src/components/hooks/useLogsParamsChange.ts b/src/components/hooks/useLogsParamsChange.ts index 9ebc4473..5261797a 100644 --- a/src/components/hooks/useLogsParamsChange.ts +++ b/src/components/hooks/useLogsParamsChange.ts @@ -3,6 +3,10 @@ import { useLogsParamsStore } from '@/stores/params' export const useLogsParamsChange = () => { const { params } = useLogsParamsStore() + const onArrayChange = (array: Value[], value: Value) => { + return array.includes(value) ? array.filter(el => el !== value) : [...array, value] + } + const onTermChange = (value: string) => { if (value === '') { params.term = '' @@ -10,29 +14,29 @@ export const useLogsParamsChange = () => { params.term = Number(value) } } - const onDivisionChange = (value: string) => { - params.division = value + const onLogStatusChange = (value: string) => { + params.logStatus = onArrayChange(params.logStatus!, value) } const onNickNameChange = (value: string) => { params.nickName = value } - const onIpAddressChange = (value: string) => { - params.ipAddress = value + const onClientIpChange = (value: string) => { + params.clientIp = value } const onPageSizeChange = (value: string) => { params.pageSize = Number(value) } - const toggleSortBy = () => { - params.sortDirection = params.sortDirection === 'DESC' ? 'ASC' : 'DESC' - } + // const toggleSortBy = () => { + // params.sortDirection = params.sortDirection === 'DESC' ? 'ASC' : 'DESC' + // } return { onTermChange, - onDivisionChange, + onLogStatusChange, onNickNameChange, - onIpAddressChange, - onPageSizeChange, - toggleSortBy + onClientIpChange, + onPageSizeChange + // toggleSortBy } } diff --git a/src/components/login-logs/LoginLogsFilterBar.vue b/src/components/login-logs/LoginLogsFilterBar.vue index bbd48f2e..fcf7d5ce 100644 --- a/src/components/login-logs/LoginLogsFilterBar.vue +++ b/src/components/login-logs/LoginLogsFilterBar.vue @@ -5,17 +5,17 @@ :option-list="TERM_LIST" :value="String(store.params.term)" @update:value="onParamsChange.onTermChange" /> - + :value="store.params.logStatus" + @update:value="onParamsChange.onLogStatusChange" /> - + + @@ -23,16 +24,39 @@ diff --git a/src/components/login-logs/LoginLogsListCard.vue b/src/components/login-logs/LoginLogsListCard.vue index fd7c4756..f052dfd3 100644 --- a/src/components/login-logs/LoginLogsListCard.vue +++ b/src/components/login-logs/LoginLogsListCard.vue @@ -15,15 +15,26 @@ diff --git a/src/components/member-management/MemberManagementList.vue b/src/components/member-management/MemberManagementList.vue index e75f03d5..3f91e0dc 100644 --- a/src/components/member-management/MemberManagementList.vue +++ b/src/components/member-management/MemberManagementList.vue @@ -6,15 +6,16 @@ @@ -26,13 +27,33 @@ import ListContainer from '../lists/ListContainer.vue' import { useMemberManagementParamsStore } from '@/stores/params' import MemberManagementListBar from './MemberManagementListBar.vue' import MemberManagementListCard from './MemberManagementListCard.vue' -import { DUMMY_MEMBER_MANAGEMENT_LIST_DATA } from '@/datas/dummy' +import NoContent from '../lists/NoContent.vue' +import axiosInstance from '@/utils/axios' +import { useQuery } from '@tanstack/vue-query' +import { computed } from 'vue' +import type { MemberManagementResponse } from '@/types/admin' const { params } = useMemberManagementParamsStore() -const DUMMY_TOTAL_PAGE = 18 const onPageChange = (value: number) => { params.page = value } -// Data Handling +const fetchMemberList = async () => { + const response = await axiosInstance.get('/api/members', { + headers: { + Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` + }, + params + }) + return response.data +} + +const { data } = useQuery({ + queryKey: ['member', params], + queryFn: fetchMemberList +}) + +const totalPage = computed(() => { + return data.value?.totalPages +}) diff --git a/src/components/my-request/MyRequestList.vue b/src/components/my-request/MyRequestList.vue index 459ced6d..53e6f397 100644 --- a/src/components/my-request/MyRequestList.vue +++ b/src/components/my-request/MyRequestList.vue @@ -15,7 +15,7 @@ @@ -31,7 +31,7 @@ import axiosInstance from '@/utils/axios' import { useQuery } from '@tanstack/vue-query' import { useParseParams } from '../hooks/useParseParams' import type { MyRequestResponse } from '@/types/user' -import { ref, watch } from 'vue' +import { computed } from 'vue' import NoContent from '../lists/NoContent.vue' const { params } = useRequestParamsStore() @@ -56,12 +56,7 @@ const { data } = useQuery({ queryFn: fetchRequestList }) -watch( - data, - () => { - if (data.value?.totalPages) totalPage.value = data.value.totalPages - }, - { once: true } -) -const totalPage = ref(0) +const totalPage = computed(() => { + return data.value?.totalPages +}) diff --git a/src/constants/admin.ts b/src/constants/admin.ts index 197cb3e5..4ee37c7c 100644 --- a/src/constants/admin.ts +++ b/src/constants/admin.ts @@ -13,8 +13,7 @@ export const MEMBER_MANAGEMENT_LIST_BAR_TAB: ListBarTabProps[] = [ ] export const LOGIN_LOGS_DIVISION_LIST: Option[] = [ - { content: '전체', value: '' }, - { content: '로그인 시도', value: 'LOGIN_TRY' }, + { content: '로그인 시도', value: 'LOGIN' }, { content: '로그아웃', value: 'LOGOUT' } ] diff --git a/src/stores/params.ts b/src/stores/params.ts index 17eeb14b..b7dd748e 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -40,13 +40,13 @@ export const useRequestParamsStore = defineStore('requestParams', () => { export const useMemberManagementParamsStore = defineStore('userManagementParams', () => { const params = ref({ + page: 0, + pageSize: 20, name: '', nickName: '', department: '', email: '', role: '', - pageSize: 20, - page: 1, sortBy: 'REGISTERED_AT', sortDirection: 'DESC' }) @@ -56,25 +56,25 @@ export const useMemberManagementParamsStore = defineStore('userManagementParams' export const useLogsParamsStore = defineStore('logsParams', () => { const params = ref({ + page: 0, + pageSize: 20, term: '', - division: '', + logStatus: [], nickName: '', - ipAddress: '', - pageSize: 20, - page: 1, - sortBy: 'CREATED_AT', - sortDirection: 'DESC' + clientIp: '' + // sortBy: 'CREATED_AT', + // sortDirection: 'DESC' }) const $reset = () => { + params.value.page = 0 + params.value.pageSize = 20 params.value.term = '' - params.value.division = '' + params.value.logStatus = [] params.value.nickName = '' - params.value.ipAddress = '' - params.value.pageSize = 20 - params.value.page = 1 - params.value.sortBy = 'CREATED_AT' - params.value.sortDirection = 'DESC' + params.value.clientIp = '' + // params.value.sortBy = 'CREATED_AT' + // params.value.sortDirection = 'DESC' } return { params, $reset } diff --git a/src/types/admin.ts b/src/types/admin.ts index 436b33f5..0852979d 100644 --- a/src/types/admin.ts +++ b/src/types/admin.ts @@ -12,14 +12,24 @@ export interface MemberManagementListData { registeredAt: string } -export interface LogsListData { +export interface LoginLogsListData { logId: number - division: string - createdAt: string + logStatus: string + requestAt: string nickName: string - ipAddress: string - status: number - result?: string + clientIp: string + statusCode: number + customStatusCode: string + failedAttempts: number +} + +export interface ApiLogsListData { + logId: number + logStatus: string + requestedAt: string + nickName: string + clientIp: string + statusCode: number } export interface UserRegistrationProps { @@ -76,3 +86,33 @@ export interface NewDevisonTypes { divisionName: string divisionColor: string } + +export interface MemberManagementResponse { + content: MemberManagementListData[] + totalElements: number + totalPages: number + pageNumber: number + pageSize: number + isFirst: boolean + isLast: boolean +} + +export interface LoginLogsResponse { + content: LoginLogsListData[] + totalElements: number + totalPages: number + pageNumber: number + pageSize: number + isFirst: boolean + isLast: boolean +} + +export interface ApiLogsResponse { + content: ApiLogsListData[] + totalElements: number + totalPages: number + pageNumber: number + pageSize: number + isFirst: boolean + isLast: boolean +} diff --git a/src/types/stores.ts b/src/types/stores.ts index 9c3d2f3d..fd942e6e 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -26,14 +26,14 @@ export interface MemberManagementParams { } export interface LogsParams { + page: number + pageSize: number term: number | '' - division: string + logStatus: string[] nickName: string - ipAddress: string - pageSize: number - page: number - sortBy: 'CREATED_AT' - sortDirection: SortDirection + clientIp: string + // sortBy: 'CREATED_AT' + // sortDirection: SortDirection } export interface TeamBoardParams { From 73d48ca36eec5fc433ce3ad105cc201241712aa5 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Sun, 2 Feb 2025 02:58:03 +0900 Subject: [PATCH 02/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EA=B8=B0=EB=A1=9D=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsFilterBar.vue | 9 +- src/components/api-logs/ApiLogsList.vue | 38 +- src/components/api-logs/ApiLogsListCard.vue | 25 +- .../login-logs/LoginLogsFilterBar.vue | 4 +- src/datas/dummy.ts | 344 +----------------- src/types/admin.ts | 2 +- 6 files changed, 57 insertions(+), 365 deletions(-) diff --git a/src/components/api-logs/ApiLogsFilterBar.vue b/src/components/api-logs/ApiLogsFilterBar.vue index bbd48f2e..fcf7d5ce 100644 --- a/src/components/api-logs/ApiLogsFilterBar.vue +++ b/src/components/api-logs/ApiLogsFilterBar.vue @@ -5,17 +5,17 @@ :option-list="TERM_LIST" :value="String(store.params.term)" @update:value="onParamsChange.onTermChange" /> - + :value="store.params.logStatus" + @update:value="onParamsChange.onLogStatusChange" /> - + @@ -23,16 +23,38 @@ diff --git a/src/components/api-logs/ApiLogsListCard.vue b/src/components/api-logs/ApiLogsListCard.vue index fd7c4756..59e8e800 100644 --- a/src/components/api-logs/ApiLogsListCard.vue +++ b/src/components/api-logs/ApiLogsListCard.vue @@ -15,15 +15,26 @@ diff --git a/src/components/login-logs/LoginLogsFilterBar.vue b/src/components/login-logs/LoginLogsFilterBar.vue index fcf7d5ce..1b09049b 100644 --- a/src/components/login-logs/LoginLogsFilterBar.vue +++ b/src/components/login-logs/LoginLogsFilterBar.vue @@ -7,7 +7,7 @@ @update:value="onParamsChange.onTermChange" /> Date: Sun, 2 Feb 2025 16:59:38 +0900 Subject: [PATCH 03/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=ED=9A=8C=EC=9B=90=20=EC=A1=B0=ED=9A=8C=20API=20?= =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberManagementFilterBar.vue | 12 ++++++------ .../member-management/MemberManagementList.vue | 2 +- src/stores/params.ts | 14 +++++++------- src/types/common.ts | 2 +- src/types/stores.ts | 10 +++++----- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/member-management/MemberManagementFilterBar.vue b/src/components/member-management/MemberManagementFilterBar.vue index a53a7ac2..fac9dc66 100644 --- a/src/components/member-management/MemberManagementFilterBar.vue +++ b/src/components/member-management/MemberManagementFilterBar.vue @@ -6,12 +6,12 @@ @update:value="value => (params.name = value)" /> + :value="params.nickname" + @update:value="value => (params.nickname = value)" /> + :value="String(params.departmentId)" + @update:value="value => (params.departmentId = Number(value))" /> + :value="String(params.size)" + @update:value="value => (params.size = Number(value))" /> diff --git a/src/components/member-management/MemberManagementList.vue b/src/components/member-management/MemberManagementList.vue index 3f91e0dc..7d8cc100 100644 --- a/src/components/member-management/MemberManagementList.vue +++ b/src/components/member-management/MemberManagementList.vue @@ -39,7 +39,7 @@ const onPageChange = (value: number) => { } const fetchMemberList = async () => { - const response = await axiosInstance.get('/api/members', { + const response = await axiosInstance.get('/api/managements/members', { headers: { Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` }, diff --git a/src/stores/params.ts b/src/stores/params.ts index b7dd748e..8a5f2953 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -41,14 +41,14 @@ export const useRequestParamsStore = defineStore('requestParams', () => { export const useMemberManagementParamsStore = defineStore('userManagementParams', () => { const params = ref({ page: 0, - pageSize: 20, - name: '', - nickName: '', - department: '', + size: 20, + name: 'a', + nickname: '', + departmentId: 1, email: '', - role: '', - sortBy: 'REGISTERED_AT', - sortDirection: 'DESC' + role: '' + // sortBy: 'REGISTERED_AT', + // sortDirection: 'DESC' }) return { params } diff --git a/src/types/common.ts b/src/types/common.ts index 92ae0f91..bb8ee460 100644 --- a/src/types/common.ts +++ b/src/types/common.ts @@ -47,7 +47,7 @@ export type Status = 'REQUESTED' | 'IN_PROGRESS' | 'PENDING_COMPLETED' | 'COMPLE export type SortDirection = 'DESC' | 'ASC' -export type Role = 'USER' | 'MANAGER' | 'ADMIN' +export type Role = 'ROLE_USER' | 'ROLE_MANAGER' | 'ROLE_ADMIN' export interface DueDateInputProps { modelValue: string diff --git a/src/types/stores.ts b/src/types/stores.ts index fd942e6e..ebfaeb8b 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -15,14 +15,14 @@ export interface RequestParams { export interface MemberManagementParams { name: string - nickName: string - department: string + nickname: string + departmentId: number email: string role: Role | '' - pageSize: number + size: number page: number - sortBy: 'REGISTERED_AT' - sortDirection: SortDirection + // sortBy: 'REGISTERED_AT' + // sortDirection: SortDirection } export interface LogsParams { From 39640a3311dc36ff2450d7c3bb39e3663b53f387 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Mon, 3 Feb 2025 00:26:35 +0900 Subject: [PATCH 04/15] =?UTF-8?q?:bug:=20[fix]=20=EA=B0=90=EC=82=AC=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=20api=20=EC=A3=BC=EC=86=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsList.vue | 2 +- src/components/login-logs/LoginLogsList.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/api-logs/ApiLogsList.vue b/src/components/api-logs/ApiLogsList.vue index e1a47960..50a11585 100644 --- a/src/components/api-logs/ApiLogsList.vue +++ b/src/components/api-logs/ApiLogsList.vue @@ -37,7 +37,7 @@ const onPageChange = (value: number) => { } const fetchApiLogsList = async () => { - const response = await axiosInstance.get('/api/logs/login', { + const response = await axiosInstance.get('/api/managements/logs/login', { headers: { Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` }, diff --git a/src/components/login-logs/LoginLogsList.vue b/src/components/login-logs/LoginLogsList.vue index 6bdf7c9b..f59c175d 100644 --- a/src/components/login-logs/LoginLogsList.vue +++ b/src/components/login-logs/LoginLogsList.vue @@ -39,7 +39,7 @@ const onPageChange = (value: number) => { } const fetchLoginLogsList = async () => { - const response = await axiosInstance.get('/api/logs/login', { + const response = await axiosInstance.get('/api/managements/logs/login', { headers: { Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` }, From 3bfb02228a64574a6f11b6eddaee0f63bfc5775f Mon Sep 17 00:00:00 2001 From: seorang42 Date: Mon, 3 Feb 2025 00:30:11 +0900 Subject: [PATCH 05/15] =?UTF-8?q?:bug:=20[fix]=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=A1=9D=20/=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EA=B8=B0=EB=A1=9D=20=ED=95=84=ED=84=B0=20=EC=84=9C=EB=A1=9C=20?= =?UTF-8?q?=EB=B0=98=EB=8C=80=EB=A1=9C=20=EC=84=A4=EC=A0=95=EB=90=98?= =?UTF-8?q?=EC=97=88=EB=8D=98=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsFilterBar.vue | 4 ++-- src/components/login-logs/LoginLogsFilterBar.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/api-logs/ApiLogsFilterBar.vue b/src/components/api-logs/ApiLogsFilterBar.vue index fcf7d5ce..5375c618 100644 --- a/src/components/api-logs/ApiLogsFilterBar.vue +++ b/src/components/api-logs/ApiLogsFilterBar.vue @@ -7,7 +7,7 @@ @update:value="onParamsChange.onTermChange" /> Date: Mon, 3 Feb 2025 12:00:53 +0900 Subject: [PATCH 06/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EA=B0=90?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EA=B7=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=20ENUM=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/admin.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/constants/admin.ts b/src/constants/admin.ts index 4ee37c7c..24d662ee 100644 --- a/src/constants/admin.ts +++ b/src/constants/admin.ts @@ -19,9 +19,16 @@ export const LOGIN_LOGS_DIVISION_LIST: Option[] = [ export const API_LOGS_DIVISION_LIST: Option[] = [ { content: '요청 생성', value: 'REQUEST_CREATED' }, - { content: '요청 수정', value: 'REQUEST_EDITED' }, - { content: '요청 취소', value: 'REQUEST_CANCELED' }, - { content: '요청 승인', value: 'REQUEST_APPROVED' } + { content: '요청 수정', value: 'REQUEST_UPDATED' }, + { content: '요청 취소', value: 'REQUEST_CANCELLED' }, + { content: '요청 승인', value: 'REQUEST_APPROVED' }, + { content: '처리자 변경', value: 'ASSIGNER_CHANGED' }, + { content: '댓글 추가', value: 'COMMENT_ADDED' }, + { content: '댓글 수정', value: 'COMMENT_UPDATED' }, + { content: '작업 상태 변경', value: 'STATUS_CHANGED' }, + { content: '작업 완료', value: 'TASK_COMPLETED' }, + { content: '작업 실패', value: 'TASK_FAILED' }, + { content: '작업 조회', value: 'TASK_VIEWED' } ] export const LOGS_LIST_BAR_TAB: ListBarTabProps[] = [ @@ -30,7 +37,7 @@ export const LOGS_LIST_BAR_TAB: ListBarTabProps[] = [ { content: '아이디', width: 80 }, { content: 'IP 주소', width: 120 }, { content: 'Status', width: 40 }, - { content: '결과' } + { content: '비고' } ] import type { From 76b9d46ace5fa9aad4165c0d16061c036422de19 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Mon, 3 Feb 2025 12:51:59 +0900 Subject: [PATCH 07/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EA=B0=90?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EA=B7=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsFilterBar.vue | 2 +- src/components/api-logs/ApiLogsListBar.vue | 7 ++++++- src/components/hooks/useLogsParamsChange.ts | 10 +++++----- src/components/login-logs/LoginLogsFilterBar.vue | 2 +- src/components/login-logs/LoginLogsListBar.vue | 7 ++++++- src/constants/admin.ts | 2 +- src/stores/params.ts | 10 +++++----- src/types/stores.ts | 4 ++-- 8 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/components/api-logs/ApiLogsFilterBar.vue b/src/components/api-logs/ApiLogsFilterBar.vue index 5375c618..0f2181a7 100644 --- a/src/components/api-logs/ApiLogsFilterBar.vue +++ b/src/components/api-logs/ApiLogsFilterBar.vue @@ -1,5 +1,5 @@ @@ -16,8 +16,13 @@ import { useLogsParamsStore } from '@/stores/params' import ListBarTab from '../lists/ListBarTab.vue' import { LOGS_LIST_BAR_TAB } from '@/constants/admin' import { useLogsParamsChange } from '../hooks/useLogsParamsChange' +import { computed } from 'vue' const { params } = useLogsParamsStore() +const orderRequest = computed(() => ({ + sortBy: params.sortBy, + sortDirection: params.sortDirection +})) const { toggleSortBy } = useLogsParamsChange() diff --git a/src/components/hooks/useLogsParamsChange.ts b/src/components/hooks/useLogsParamsChange.ts index 5261797a..95b36e3e 100644 --- a/src/components/hooks/useLogsParamsChange.ts +++ b/src/components/hooks/useLogsParamsChange.ts @@ -27,16 +27,16 @@ export const useLogsParamsChange = () => { params.pageSize = Number(value) } - // const toggleSortBy = () => { - // params.sortDirection = params.sortDirection === 'DESC' ? 'ASC' : 'DESC' - // } + const toggleSortBy = () => { + params.sortDirection = params.sortDirection === 'DESC' ? 'ASC' : 'DESC' + } return { onTermChange, onLogStatusChange, onNickNameChange, onClientIpChange, - onPageSizeChange - // toggleSortBy + onPageSizeChange, + toggleSortBy } } diff --git a/src/components/login-logs/LoginLogsFilterBar.vue b/src/components/login-logs/LoginLogsFilterBar.vue index 574f72b5..451f82c9 100644 --- a/src/components/login-logs/LoginLogsFilterBar.vue +++ b/src/components/login-logs/LoginLogsFilterBar.vue @@ -1,5 +1,5 @@ @@ -16,8 +16,13 @@ import ListBarTab from '../lists/ListBarTab.vue' import { useLogsParamsStore } from '@/stores/params' import { LOGS_LIST_BAR_TAB } from '@/constants/admin' import { useLogsParamsChange } from '../hooks/useLogsParamsChange' +import { computed } from 'vue' const { params } = useLogsParamsStore() +const orderRequest = computed(() => ({ + sortBy: params.sortBy, + sortDirection: params.sortDirection +})) const { toggleSortBy } = useLogsParamsChange() diff --git a/src/constants/admin.ts b/src/constants/admin.ts index 24d662ee..9162c64a 100644 --- a/src/constants/admin.ts +++ b/src/constants/admin.ts @@ -33,7 +33,7 @@ export const API_LOGS_DIVISION_LIST: Option[] = [ export const LOGS_LIST_BAR_TAB: ListBarTabProps[] = [ { content: '구분', width: 80 }, - { content: '시각', width: 180, sortBy: 'CREATED_AT' }, + { content: '시각', width: 180, sortBy: 'REQUESTED_AT' }, { content: '아이디', width: 80 }, { content: 'IP 주소', width: 120 }, { content: 'Status', width: 40 }, diff --git a/src/stores/params.ts b/src/stores/params.ts index 8a5f2953..68e8e80c 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -61,9 +61,9 @@ export const useLogsParamsStore = defineStore('logsParams', () => { term: '', logStatus: [], nickName: '', - clientIp: '' - // sortBy: 'CREATED_AT', - // sortDirection: 'DESC' + clientIp: '', + sortBy: 'REQUESTED_AT', + sortDirection: 'DESC' }) const $reset = () => { @@ -73,8 +73,8 @@ export const useLogsParamsStore = defineStore('logsParams', () => { params.value.logStatus = [] params.value.nickName = '' params.value.clientIp = '' - // params.value.sortBy = 'CREATED_AT' - // params.value.sortDirection = 'DESC' + params.value.sortBy = 'REQUESTED_AT' + params.value.sortDirection = 'DESC' } return { params, $reset } diff --git a/src/types/stores.ts b/src/types/stores.ts index ebfaeb8b..098f18c0 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -32,8 +32,8 @@ export interface LogsParams { logStatus: string[] nickName: string clientIp: string - // sortBy: 'CREATED_AT' - // sortDirection: SortDirection + sortBy: 'REQUESTED_AT' + sortDirection: SortDirection } export interface TeamBoardParams { From b7c6598fc948f59198db93730ed027ee89edb792 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Mon, 3 Feb 2025 13:36:13 +0900 Subject: [PATCH 08/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20=EA=B0=90?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EA=B7=B8=20Params=EC=97=90=EC=84=9C=20sor?= =?UTF-8?q?tBy=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsListBar.vue | 2 +- src/components/login-logs/LoginLogsListBar.vue | 2 +- src/stores/params.ts | 2 -- src/types/stores.ts | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/components/api-logs/ApiLogsListBar.vue b/src/components/api-logs/ApiLogsListBar.vue index 324b31d0..d085ca13 100644 --- a/src/components/api-logs/ApiLogsListBar.vue +++ b/src/components/api-logs/ApiLogsListBar.vue @@ -20,7 +20,7 @@ import { computed } from 'vue' const { params } = useLogsParamsStore() const orderRequest = computed(() => ({ - sortBy: params.sortBy, + sortBy: 'REQUESTED_AT', sortDirection: params.sortDirection })) diff --git a/src/components/login-logs/LoginLogsListBar.vue b/src/components/login-logs/LoginLogsListBar.vue index fbeafe29..a0fcaac5 100644 --- a/src/components/login-logs/LoginLogsListBar.vue +++ b/src/components/login-logs/LoginLogsListBar.vue @@ -20,7 +20,7 @@ import { computed } from 'vue' const { params } = useLogsParamsStore() const orderRequest = computed(() => ({ - sortBy: params.sortBy, + sortBy: 'REQUESTED_AT', sortDirection: params.sortDirection })) diff --git a/src/stores/params.ts b/src/stores/params.ts index 68e8e80c..9e74aee4 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -62,7 +62,6 @@ export const useLogsParamsStore = defineStore('logsParams', () => { logStatus: [], nickName: '', clientIp: '', - sortBy: 'REQUESTED_AT', sortDirection: 'DESC' }) @@ -73,7 +72,6 @@ export const useLogsParamsStore = defineStore('logsParams', () => { params.value.logStatus = [] params.value.nickName = '' params.value.clientIp = '' - params.value.sortBy = 'REQUESTED_AT' params.value.sortDirection = 'DESC' } diff --git a/src/types/stores.ts b/src/types/stores.ts index 098f18c0..b7c24274 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -32,7 +32,6 @@ export interface LogsParams { logStatus: string[] nickName: string clientIp: string - sortBy: 'REQUESTED_AT' sortDirection: SortDirection } From 82aaf55d07543721c019a71709d32a8c05b00c43 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Mon, 3 Feb 2025 14:01:47 +0900 Subject: [PATCH 09/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=EA=B4=80=EB=A6=AC=20Params=20=EB=B3=80=EC=88=98?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member-management/MemberManagementFilterBar.vue | 12 ++++++------ src/stores/params.ts | 8 ++++---- src/types/stores.ts | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/member-management/MemberManagementFilterBar.vue b/src/components/member-management/MemberManagementFilterBar.vue index fac9dc66..cfb892c4 100644 --- a/src/components/member-management/MemberManagementFilterBar.vue +++ b/src/components/member-management/MemberManagementFilterBar.vue @@ -6,12 +6,12 @@ @update:value="value => (params.name = value)" /> + :value="params.nickName" + @update:value="value => (params.nickName = value)" /> + :value="String(params.departmentName)" + @update:value="value => (params.departmentName = value)" /> + :value="String(params.pageSize)" + @update:value="value => (params.pageSize = Number(value))" /> diff --git a/src/stores/params.ts b/src/stores/params.ts index 9e74aee4..ab7580ee 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -41,11 +41,11 @@ export const useRequestParamsStore = defineStore('requestParams', () => { export const useMemberManagementParamsStore = defineStore('userManagementParams', () => { const params = ref({ page: 0, - size: 20, - name: 'a', - nickname: '', - departmentId: 1, + pageSize: 20, + name: '', email: '', + nickName: '', + departmentName: '', role: '' // sortBy: 'REGISTERED_AT', // sortDirection: 'DESC' diff --git a/src/types/stores.ts b/src/types/stores.ts index b7c24274..4f96e86b 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -14,13 +14,13 @@ export interface RequestParams { } export interface MemberManagementParams { + page: number + pageSize: number name: string - nickname: string - departmentId: number email: string + nickName: string + departmentName: string role: Role | '' - size: number - page: number // sortBy: 'REGISTERED_AT' // sortDirection: SortDirection } From 5a1f3e14f9f7a6559d26ede1bba5ff3a2eba73de Mon Sep 17 00:00:00 2001 From: seorang42 Date: Tue, 4 Feb 2025 15:25:41 +0900 Subject: [PATCH 10/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20Role=20Enum?= =?UTF-8?q?=EA=B0=92=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/member-management/MemberManagementListCard.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/member-management/MemberManagementListCard.vue b/src/components/member-management/MemberManagementListCard.vue index f410071b..ceb873df 100644 --- a/src/components/member-management/MemberManagementListCard.vue +++ b/src/components/member-management/MemberManagementListCard.vue @@ -53,7 +53,7 @@ import ModalView from '../ModalView.vue' import { ref } from 'vue' const roleContent = (role: Role) => { - return role === 'USER' ? '사용자' : role === 'MANAGER' ? '담당자' : '관리자' + return role === 'ROLE_USER' ? '사용자' : role === 'ROLE_MANAGER' ? '담당자' : '관리자' } const { info } = defineProps<{ info: MemberManagementListData }>() From 1e835ad391442e15d384dc0c24e0c1446d9f1a3e Mon Sep 17 00:00:00 2001 From: seorang42 Date: Tue, 4 Feb 2025 17:22:59 +0900 Subject: [PATCH 11/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=9E=84?= =?UTF-8?q?=EC=8B=9C=20=EC=97=B0=EA=B2=B0=20=EB=B0=8F=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberManagementListBar.vue | 2 +- .../MemberManagementListCard.vue | 56 ++++++++++++++----- src/constants/common.ts | 6 +- src/stores/params.ts | 5 +- src/types/admin.ts | 6 +- src/types/stores.ts | 3 +- 6 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/components/member-management/MemberManagementListBar.vue b/src/components/member-management/MemberManagementListBar.vue index f4c26bc6..6c0ee5cf 100644 --- a/src/components/member-management/MemberManagementListBar.vue +++ b/src/components/member-management/MemberManagementListBar.vue @@ -20,7 +20,7 @@ import { computed } from 'vue' const { params } = useMemberManagementParamsStore() const orderRequest = computed(() => ({ - sortBy: params.sortBy, + sortBy: 'REGISTERED_AT', sortDirection: params.sortDirection })) diff --git a/src/components/member-management/MemberManagementListCard.vue b/src/components/member-management/MemberManagementListCard.vue index ceb873df..9cdf6f69 100644 --- a/src/components/member-management/MemberManagementListCard.vue +++ b/src/components/member-management/MemberManagementListCard.vue @@ -29,17 +29,29 @@ + @close="closeModal"> + + + + + + + :is-open="isModalVisible.invite" + @close="closeModal"> @@ -51,6 +63,8 @@ import type { MemberManagementListData } from '@/types/admin' import { useRouter } from 'vue-router' import ModalView from '../ModalView.vue' import { ref } from 'vue' +import axiosInstance from '@/utils/axios' +import { useQueryClient } from '@tanstack/vue-query' const roleContent = (role: Role) => { return role === 'ROLE_USER' ? '사용자' : role === 'ROLE_MANAGER' ? '담당자' : '관리자' @@ -59,28 +73,42 @@ const roleContent = (role: Role) => { const { info } = defineProps<{ info: MemberManagementListData }>() const myRequestTabList: ListCardProps[] = [ { content: info.name, width: 60 }, - { content: info.nickName, width: 80 }, - { content: info.department, width: 80 }, + { content: info.nickname, width: 80 }, + { content: info.departmentName, width: 80 }, { content: info.departmentRole, width: 80 }, { content: info.email }, { content: roleContent(info.role), width: 60 }, - { content: info.permission ? '허용' : '', width: 60 }, + { content: info.isReviewer ? '허용' : '', width: 60 }, { content: info.registeredAt, width: 80 } ] const router = useRouter() +const queryClient = useQueryClient() -const isModalOpen = ref({ +const isModalVisible = ref({ delete: false, - invite: false + invite: false, + fail: false, + success: false }) -const toggleModal = (key: keyof typeof isModalOpen.value) => { - isModalOpen.value[key] = !isModalOpen.value[key] +const toggleModal = (key: keyof typeof isModalVisible.value) => { + isModalVisible.value = Object.fromEntries( + Object.keys(isModalVisible.value).map(k => [k, k === key]) + ) as typeof isModalVisible.value +} +const closeModal = () => { + const prevSuccess = isModalVisible.value.success + isModalVisible.value = { delete: false, invite: false, fail: false, success: false } + if (prevSuccess) queryClient.invalidateQueries({ queryKey: ['member'] }) } -const onMemberDelete = (memberId: number) => { - console.log(memberId) - toggleModal('delete') +const onMemberDelete = async (memberId: number) => { + try { + await axiosInstance.patch(`/api/managements/members/${memberId}`) + toggleModal('success') + } catch { + toggleModal('fail') + } } const onMemberInvite = (memberId: number) => { diff --git a/src/constants/common.ts b/src/constants/common.ts index 9cc62cd5..eebad716 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -21,9 +21,9 @@ export const PAGE_SIZE_LIST = [ export const ROLE_LIST = [ { value: '', content: '전체' }, - { value: 'user', content: '사용자' }, - { value: 'manager', content: '담당자' }, - { value: 'admin', content: '관리자' } + { value: 'ROLE_USER', content: '사용자' }, + { value: 'ROLE_MANAGER', content: '담당자' }, + { value: 'ROLE_ADMIN', content: '관리자' } ] export const COLOR_LIST = [ diff --git a/src/stores/params.ts b/src/stores/params.ts index ab7580ee..e23b7578 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -46,9 +46,8 @@ export const useMemberManagementParamsStore = defineStore('userManagementParams' email: '', nickName: '', departmentName: '', - role: '' - // sortBy: 'REGISTERED_AT', - // sortDirection: 'DESC' + role: 'ROLE_USER', + sortDirection: 'DESC' }) return { params } diff --git a/src/types/admin.ts b/src/types/admin.ts index 37a6b5d5..ac5e268c 100644 --- a/src/types/admin.ts +++ b/src/types/admin.ts @@ -3,12 +3,12 @@ import type { Role } from './common' export interface MemberManagementListData { memberId: number name: string - nickName: string - department: string + nickname: string + departmentName: string departmentRole: string email: string role: Role - permission?: boolean + isReviewer: boolean registeredAt: string } diff --git a/src/types/stores.ts b/src/types/stores.ts index 4f96e86b..1b8900ed 100644 --- a/src/types/stores.ts +++ b/src/types/stores.ts @@ -21,8 +21,7 @@ export interface MemberManagementParams { nickName: string departmentName: string role: Role | '' - // sortBy: 'REGISTERED_AT' - // sortDirection: SortDirection + sortDirection: SortDirection } export interface LogsParams { From de06611a124ba5ee37f8e23e7639219815d821f7 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 5 Feb 2025 00:17:16 +0900 Subject: [PATCH 12/15] =?UTF-8?q?:sparkles:=20[feat]=20:=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=ED=9A=8C=EC=9B=90=20=EC=A1=B0=ED=9A=8C=20API=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member-management/MemberManagementListCard.vue | 9 +++++++-- src/stores/params.ts | 2 +- src/types/admin.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/member-management/MemberManagementListCard.vue b/src/components/member-management/MemberManagementListCard.vue index 9cdf6f69..72850b37 100644 --- a/src/components/member-management/MemberManagementListCard.vue +++ b/src/components/member-management/MemberManagementListCard.vue @@ -65,6 +65,7 @@ import ModalView from '../ModalView.vue' import { ref } from 'vue' import axiosInstance from '@/utils/axios' import { useQueryClient } from '@tanstack/vue-query' +import { formatDate } from '@/utils/date' const roleContent = (role: Role) => { return role === 'ROLE_USER' ? '사용자' : role === 'ROLE_MANAGER' ? '담당자' : '관리자' @@ -79,7 +80,7 @@ const myRequestTabList: ListCardProps[] = [ { content: info.email }, { content: roleContent(info.role), width: 60 }, { content: info.isReviewer ? '허용' : '', width: 60 }, - { content: info.registeredAt, width: 80 } + { content: formatDate(info.createdAt), width: 80 } ] const router = useRouter() @@ -104,7 +105,11 @@ const closeModal = () => { const onMemberDelete = async (memberId: number) => { try { - await axiosInstance.patch(`/api/managements/members/${memberId}`) + await axiosInstance.patch( + `/api/managements/members/delete`, + { memberId }, + { headers: { Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` } } + ) toggleModal('success') } catch { toggleModal('fail') diff --git a/src/stores/params.ts b/src/stores/params.ts index e23b7578..9e37dc47 100644 --- a/src/stores/params.ts +++ b/src/stores/params.ts @@ -46,7 +46,7 @@ export const useMemberManagementParamsStore = defineStore('userManagementParams' email: '', nickName: '', departmentName: '', - role: 'ROLE_USER', + role: '', sortDirection: 'DESC' }) diff --git a/src/types/admin.ts b/src/types/admin.ts index ac5e268c..897a3f4b 100644 --- a/src/types/admin.ts +++ b/src/types/admin.ts @@ -9,7 +9,7 @@ export interface MemberManagementListData { email: string role: Role isReviewer: boolean - registeredAt: string + createdAt: string } export interface LoginLogsListData { From 43e4bccc9b881605783743a31ea334939e3ed509 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 5 Feb 2025 00:27:38 +0900 Subject: [PATCH 13/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20=ED=99=98?= =?UTF-8?q?=EA=B2=BD=20=EB=B3=80=EC=88=98=EB=A1=9C=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=9C=20=EB=B6=80=EB=B6=84=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/components/api-logs/ApiLogsList.vue | 5 +---- src/components/login-logs/LoginLogsList.vue | 5 +---- .../member-management/MemberManagementList.vue | 9 ++------- .../member-management/MemberManagementListCard.vue | 8 ++------ src/components/my-request/MyRequestList.vue | 7 +------ src/components/my-task/MyTaskList.vue | 7 +------ src/components/request-history/RequestHistoryList.vue | 7 +------ src/components/requested/RequestedList.vue | 7 +------ src/components/statistics/StatisticsCard.vue | 3 --- src/components/statistics/StatisticsCategoryCard.vue | 6 ------ 10 files changed, 10 insertions(+), 54 deletions(-) diff --git a/src/components/api-logs/ApiLogsList.vue b/src/components/api-logs/ApiLogsList.vue index 50a11585..e89f4fde 100644 --- a/src/components/api-logs/ApiLogsList.vue +++ b/src/components/api-logs/ApiLogsList.vue @@ -26,7 +26,7 @@ import ListContainer from '../lists/ListContainer.vue' import { useLogsParamsStore } from '@/stores/params' import ApiLogsListBar from './ApiLogsListBar.vue' import ApiLogsListCard from './ApiLogsListCard.vue' -import axiosInstance from '@/utils/axios' +import { axiosInstance } from '@/utils/axios' import { useQuery } from '@tanstack/vue-query' import type { ApiLogsResponse } from '@/types/admin' import { computed } from 'vue' @@ -38,9 +38,6 @@ const onPageChange = (value: number) => { const fetchApiLogsList = async () => { const response = await axiosInstance.get('/api/managements/logs/login', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, params: { ...params, logStatus: params.logStatus.join(',') diff --git a/src/components/login-logs/LoginLogsList.vue b/src/components/login-logs/LoginLogsList.vue index f59c175d..930abfe7 100644 --- a/src/components/login-logs/LoginLogsList.vue +++ b/src/components/login-logs/LoginLogsList.vue @@ -27,7 +27,7 @@ import ListContainer from '../lists/ListContainer.vue' import { useLogsParamsStore } from '@/stores/params' import LoginLogsListBar from './LoginLogsListBar.vue' import LoginLogsListCard from './LoginLogsListCard.vue' -import axiosInstance from '@/utils/axios' +import { axiosInstance } from '@/utils/axios' import { useQuery } from '@tanstack/vue-query' import { computed } from 'vue' import type { LoginLogsResponse } from '@/types/admin' @@ -40,9 +40,6 @@ const onPageChange = (value: number) => { const fetchLoginLogsList = async () => { const response = await axiosInstance.get('/api/managements/logs/login', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, params: { ...params, logStatus: params.logStatus.join(',') diff --git a/src/components/member-management/MemberManagementList.vue b/src/components/member-management/MemberManagementList.vue index 7d8cc100..18e2e250 100644 --- a/src/components/member-management/MemberManagementList.vue +++ b/src/components/member-management/MemberManagementList.vue @@ -28,7 +28,7 @@ import { useMemberManagementParamsStore } from '@/stores/params' import MemberManagementListBar from './MemberManagementListBar.vue' import MemberManagementListCard from './MemberManagementListCard.vue' import NoContent from '../lists/NoContent.vue' -import axiosInstance from '@/utils/axios' +import { axiosInstance } from '@/utils/axios' import { useQuery } from '@tanstack/vue-query' import { computed } from 'vue' import type { MemberManagementResponse } from '@/types/admin' @@ -39,12 +39,7 @@ const onPageChange = (value: number) => { } const fetchMemberList = async () => { - const response = await axiosInstance.get('/api/managements/members', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, - params - }) + const response = await axiosInstance.get('/api/managements/members', { params }) return response.data } diff --git a/src/components/member-management/MemberManagementListCard.vue b/src/components/member-management/MemberManagementListCard.vue index 72850b37..f0573174 100644 --- a/src/components/member-management/MemberManagementListCard.vue +++ b/src/components/member-management/MemberManagementListCard.vue @@ -63,7 +63,7 @@ import type { MemberManagementListData } from '@/types/admin' import { useRouter } from 'vue-router' import ModalView from '../ModalView.vue' import { ref } from 'vue' -import axiosInstance from '@/utils/axios' +import { axiosInstance } from '@/utils/axios' import { useQueryClient } from '@tanstack/vue-query' import { formatDate } from '@/utils/date' @@ -105,11 +105,7 @@ const closeModal = () => { const onMemberDelete = async (memberId: number) => { try { - await axiosInstance.patch( - `/api/managements/members/delete`, - { memberId }, - { headers: { Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` } } - ) + await axiosInstance.patch(`/api/managements/members/delete`, { memberId }) toggleModal('success') } catch { toggleModal('fail') diff --git a/src/components/my-request/MyRequestList.vue b/src/components/my-request/MyRequestList.vue index 849a36eb..a53cfe21 100644 --- a/src/components/my-request/MyRequestList.vue +++ b/src/components/my-request/MyRequestList.vue @@ -42,12 +42,7 @@ const onPageChange = (value: number) => { const fetchMyRequestList = async () => { const { parseRequestParams } = useParseParams() const parsedParams = parseRequestParams(params) - const response = await axiosInstance.get('/api/tasks/requests', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, - params: parsedParams - }) + const response = await axiosInstance.get('/api/tasks/requests', { params: parsedParams }) return response.data } diff --git a/src/components/my-task/MyTaskList.vue b/src/components/my-task/MyTaskList.vue index d470a1e4..6e1c03dd 100644 --- a/src/components/my-task/MyTaskList.vue +++ b/src/components/my-task/MyTaskList.vue @@ -42,12 +42,7 @@ const onPageChange = (value: number) => { const fetchMyTaskList = async () => { const { parseRequestParams } = useParseParams() const parsedParams = parseRequestParams(params) - const response = await axiosInstance.get('/api/tasks/assigned', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, - params: parsedParams - }) + const response = await axiosInstance.get('/api/tasks/assigned', { params: parsedParams }) return response.data } diff --git a/src/components/request-history/RequestHistoryList.vue b/src/components/request-history/RequestHistoryList.vue index 2399d44e..f3ef6028 100644 --- a/src/components/request-history/RequestHistoryList.vue +++ b/src/components/request-history/RequestHistoryList.vue @@ -42,12 +42,7 @@ const onPageChange = (value: number) => { const fetchRequestHistoryList = async () => { const { parseRequestParams } = useParseParams() const parsedParams = parseRequestParams(params) - const response = await axiosInstance.get('/api/tasks', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, - params: parsedParams - }) + const response = await axiosInstance.get('/api/tasks', { params: parsedParams }) return response.data } diff --git a/src/components/requested/RequestedList.vue b/src/components/requested/RequestedList.vue index b5b25eab..a2defa6f 100644 --- a/src/components/requested/RequestedList.vue +++ b/src/components/requested/RequestedList.vue @@ -42,12 +42,7 @@ const onPageChange = (value: number) => { const fetchRequestedList = async () => { const { parseRequestParams } = useParseParams() const parsedParams = parseRequestParams(params) - const response = await axiosInstance.get('/api/tasks/requests/pending', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, - params: parsedParams - }) + const response = await axiosInstance.get('/api/tasks/requests/pending', { params: parsedParams }) return response.data } diff --git a/src/components/statistics/StatisticsCard.vue b/src/components/statistics/StatisticsCard.vue index 9a547990..e5194cfe 100644 --- a/src/components/statistics/StatisticsCard.vue +++ b/src/components/statistics/StatisticsCard.vue @@ -53,9 +53,6 @@ const changePeriod = (newPeriodType: PeriodType) => { const fetchStatistics = async () => { const response = await axiosInstance.get('/api/tasks/statistics', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, params: { periodType: periodType.value, statisticsType diff --git a/src/components/statistics/StatisticsCategoryCard.vue b/src/components/statistics/StatisticsCategoryCard.vue index 6fae0d6c..262779b1 100644 --- a/src/components/statistics/StatisticsCategoryCard.vue +++ b/src/components/statistics/StatisticsCategoryCard.vue @@ -45,9 +45,6 @@ const changeMainCategory = (value: string) => (mainCategory.value = value) const fetchMainStatistics = async () => { const response = await axiosInstance.get('/api/tasks/statistics', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, params: { periodType: periodType.value, statisticsType: 'REQUEST_BY_CATEGORY' @@ -69,9 +66,6 @@ const mainSeries = computed(() => { const fetchSubStatistics = async () => { const response = await axiosInstance.get('/api/tasks/statistics/subcategory', { - headers: { - Authorization: `Bearer ${import.meta.env.VITE_ACCESS_TOKEN}` - }, params: { periodType: periodType.value, mainCategory: mainCategory.value From b897d337bb9c0ae755d8487b300dd19ebc8b1502 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 5 Feb 2025 00:35:53 +0900 Subject: [PATCH 14/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EA=B8=B0=EB=A1=9D=20=EC=84=B1=EA=B3=B5=20?= =?UTF-8?q?=EC=8B=9C=20=EA=B2=B0=EA=B3=BC=20=ED=91=9C=EC=8B=9C=20=EC=A0=9C?= =?UTF-8?q?=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/login-logs/LoginLogsListCard.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/login-logs/LoginLogsListCard.vue b/src/components/login-logs/LoginLogsListCard.vue index f052dfd3..d8346563 100644 --- a/src/components/login-logs/LoginLogsListCard.vue +++ b/src/components/login-logs/LoginLogsListCard.vue @@ -35,6 +35,11 @@ const myRequestTabList: ListCardProps[] = [ { content: info.nickName, width: 80 }, { content: info.clientIp, width: 120, isTextXs: true }, { content: String(info.statusCode), width: 40, isTextXs: true, isStatusCode: true }, - { content: info.failedAttempts !== 0 ? `failedAttempts = ${info.failedAttempts}` : '' } + { + content: + info.statusCode !== 200 && info.failedAttempts !== 0 + ? `failedAttempts = ${info.failedAttempts}` + : '' + } ] From ba13a75d1ae06b169528ce5970afc3afd60f3c61 Mon Sep 17 00:00:00 2001 From: seorang42 Date: Wed, 5 Feb 2025 09:47:36 +0900 Subject: [PATCH 15/15] =?UTF-8?q?:recycle:=20[refactor]=20:=20=EA=B0=90?= =?UTF-8?q?=EC=82=AC=20=EB=A1=9C=EA=B7=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?ENUM=EA=B0=92=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/api-logs/ApiLogsList.vue | 2 +- src/components/api-logs/ApiLogsListCard.vue | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/components/api-logs/ApiLogsList.vue b/src/components/api-logs/ApiLogsList.vue index e89f4fde..c8c67368 100644 --- a/src/components/api-logs/ApiLogsList.vue +++ b/src/components/api-logs/ApiLogsList.vue @@ -37,7 +37,7 @@ const onPageChange = (value: number) => { } const fetchApiLogsList = async () => { - const response = await axiosInstance.get('/api/managements/logs/login', { + const response = await axiosInstance.get('/api/managements/logs/general', { params: { ...params, logStatus: params.logStatus.join(',') diff --git a/src/components/api-logs/ApiLogsListCard.vue b/src/components/api-logs/ApiLogsListCard.vue index 59e8e800..31ce9289 100644 --- a/src/components/api-logs/ApiLogsListCard.vue +++ b/src/components/api-logs/ApiLogsListCard.vue @@ -17,16 +17,12 @@ import type { ListCardProps } from '@/types/common' import ListCardTab from '../lists/ListCardTab.vue' import type { ApiLogsListData } from '@/types/admin' import { formatDate } from '@/utils/date' - -const logStatus = { - LOGIN: '로그인 시도', - LOGOUT: '로그아웃' -} +import { API_LOGS_DIVISION_LIST } from '@/constants/admin' const { info } = defineProps<{ info: ApiLogsListData }>() const myRequestTabList: ListCardProps[] = [ { - content: logStatus[info.logStatus as keyof typeof logStatus], + content: API_LOGS_DIVISION_LIST.find(el => el.value === info.logStatus)?.content, width: 80, isTextXs: true, isTextBody: true