From 936effe5d0f8ff7952d84d3b57185c046842fa3d Mon Sep 17 00:00:00 2001 From: hyuna Date: Tue, 28 May 2024 16:44:17 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat=20::=20=EB=AA=A8=EC=A7=91=EC=9D=98?= =?UTF-8?q?=EB=A2=B0=EC=84=9C,=EA=B8=B0=EC=97=85,=EC=A7=80=EC=9B=90?= =?UTF-8?q?=EC=84=9C=20=EC=B4=9D=20=EA=B0=9C=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Apis/Applications/index.ts | 8 ++ src/Apis/Applications/response.ts | 4 + src/Apis/Companies/index.ts | 9 +++ src/Apis/Companies/response.ts | 4 + src/Apis/Recruitments/index.ts | 9 +++ src/Apis/Recruitments/response.ts | 4 + .../ApplicationView/Table/index.tsx | 28 +++++-- src/Components/ApplicationView/Table/style.ts | 20 ++++- .../CompanyRecruitment/Table/index.tsx | 77 +++++++++++-------- .../CompanyRecruitment/Table/style.ts | 20 ++++- .../RecruitmentForm/Table/index.tsx | 27 +++++-- src/Components/RecruitmentForm/Table/style.ts | 20 ++++- 12 files changed, 179 insertions(+), 51 deletions(-) diff --git a/src/Apis/Applications/index.ts b/src/Apis/Applications/index.ts index 5bd5c7b..cee893c 100644 --- a/src/Apis/Applications/index.ts +++ b/src/Apis/Applications/index.ts @@ -101,3 +101,11 @@ export const useRejectApplication = ( } ); }; + +/**지원서 총 개수 조회 */ +export const useApplicationCnt = () => { + return useQuery(['applicationCnt'], async () => { + const data = await instance.get(`${router}/teacher/count`); + return data.data; + }); +}; diff --git a/src/Apis/Applications/response.ts b/src/Apis/Applications/response.ts index 3d825a6..3d65035 100644 --- a/src/Apis/Applications/response.ts +++ b/src/Apis/Applications/response.ts @@ -26,3 +26,7 @@ export interface InternshipStudentType { student_name: string; student_gcn: string; } + +export interface CntType { + count: number; +} diff --git a/src/Apis/Companies/index.ts b/src/Apis/Companies/index.ts index bc669ad..82daf5f 100644 --- a/src/Apis/Companies/index.ts +++ b/src/Apis/Companies/index.ts @@ -12,6 +12,7 @@ import { CompanyInfoEditType, } from './request'; import { + CntType, CompanyDetailResponse, CompanyRecruitmentResponse, EmployableCompaniesResponse, @@ -163,3 +164,11 @@ export const useChangeCompanyInfo = ( } ); }; + +/**기업 총 개수 조회 */ +export const useCompanyCnt = () => { + return useQuery(['CompanyCnt'], async () => { + const data = await instance.get(`${router}/count`); + return data.data; + }); +}; diff --git a/src/Apis/Companies/response.ts b/src/Apis/Companies/response.ts index 7aaf437..b9bef92 100644 --- a/src/Apis/Companies/response.ts +++ b/src/Apis/Companies/response.ts @@ -57,3 +57,7 @@ export interface CompanyDetailResponse { business_area_code: number; biz_registration_url: string; } + +export interface CntType { + count: number; +} diff --git a/src/Apis/Recruitments/index.ts b/src/Apis/Recruitments/index.ts index f112018..3b3eef9 100644 --- a/src/Apis/Recruitments/index.ts +++ b/src/Apis/Recruitments/index.ts @@ -5,6 +5,7 @@ import { RecruitmentFormQueryStringType, } from './request'; import { + CntType, RecruitmentFormDetailResponse, RecruitmentFormResponse, } from './response'; @@ -166,3 +167,11 @@ export const useEditRecruitment = ( } ); }; + +/**모집의뢰서 총 개수 조회 */ +export const useRecruitmentCnt = () => { + return useQuery(['RecruitmentCnt'], async () => { + const response = await instance.get(`${router}/count`); + return response.data; + }); +}; diff --git a/src/Apis/Recruitments/response.ts b/src/Apis/Recruitments/response.ts index 4ea6a65..46116d2 100644 --- a/src/Apis/Recruitments/response.ts +++ b/src/Apis/Recruitments/response.ts @@ -50,3 +50,7 @@ export interface AreasType { major_task: string; preferential_treatment: string | null; } + +export interface CntType { + count: number; +} diff --git a/src/Components/ApplicationView/Table/index.tsx b/src/Components/ApplicationView/Table/index.tsx index 624e514..c99be0b 100644 --- a/src/Components/ApplicationView/Table/index.tsx +++ b/src/Components/ApplicationView/Table/index.tsx @@ -7,7 +7,7 @@ import { useToastStore, } from '@team-return/design-system'; import * as _ from './style'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { Pagination } from '../../../Utils/Pagination'; import { ApplicationResponse } from '../../../Apis/Applications/response'; import { selectStudent } from '../../../Apis/Applications/request'; @@ -15,6 +15,7 @@ import { DownloadDataPropsType } from '../../../Apis/File/request'; import { useDownloadData } from '../../../Apis/File'; import { useModalContext } from '../../../Utils/Modal'; import { + useApplicationCnt, useChangeRequestStatus, useRejectApplication, } from '../../../Apis/Applications'; @@ -59,6 +60,7 @@ export function ApplicationViewTable({ const [clickedData, setClickedData] = useState([]); const [changeStatus, setChangeStatus] = useState(''); const [downloadBoxView, setDownloadBoxView] = useState(0); + const [applicationCnt, setApplicationCnt] = useState(0); const [rejectReason, setRejectReason] = useState(''); const { form: trainDate, handleChange: trainDateChange } = useForm({ start_date: '', @@ -114,6 +116,13 @@ export function ApplicationViewTable({ } ); const { isLoading: requestStatusIsLoading } = changeStatusAPI; + const { data: cnt } = useApplicationCnt(); + + useEffect(() => { + if (cnt) { + setApplicationCnt(cnt.count); + } + }, [cnt]); /** 지원서 상태 변경할 때 확인하는 확인 모달을 여는 함수입니다. */ const openChangeStatusModal = (statusName: string) => { @@ -483,9 +492,13 @@ export function ApplicationViewTable({ return ( <_.Container> - <_.BtnWrapper> - - + 현장실습 + + + <_.TableWrapper> ([]); const [changeStatus, setChangeStatus] = useState(''); + const [companyCnt, setCompanyCnt] = useState(0); const { companyRecruitmentQueryString, setCompanyRecruitmentQueryString } = useCompanyRecruitmentQueryString(); + const { data: cnt } = useCompanyCnt(); + + useEffect(() => { + if (cnt) { + setCompanyCnt(cnt.count); + } + }, [cnt]); + /** 전체 선택 & 전체 선택 해제하는 함수입니다. */ const checkAllBox = () => { if (searchInArray(allSelectFormId, clickedData).length === dataLength) { @@ -251,36 +261,41 @@ export function CompanyRecruitmentTable({ return ( <_.Container> - <_.BtnWrapper> - - - - + <_.BtnContentWrapper> + <_.TitleText> + 총 <_.CntContent>{companyCnt}개 + + <_.BtnWrapper> + + + + + <_.TableWrapper>
` text-align: center; word-break: keep-all; `; + +export const CntContent = styled.p` + color: #135c9d; + margin-left: 4px; +`; + +export const CntTitle = styled.p` + font-weight: 600; + font-size: 24px; + display: flex; +`; diff --git a/src/Components/RecruitmentForm/Table/index.tsx b/src/Components/RecruitmentForm/Table/index.tsx index 910adba..53dfb23 100644 --- a/src/Components/RecruitmentForm/Table/index.tsx +++ b/src/Components/RecruitmentForm/Table/index.tsx @@ -5,7 +5,7 @@ import { useToastStore, } from '@team-return/design-system'; import * as _ from './style'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { RecruitmentFormResponse } from '../../../Apis/Recruitments/response'; import { Pagination } from '../../../Utils/Pagination'; import { useChangeRecruitmentsStatus } from '../../../Apis/Recruitments/index'; @@ -31,6 +31,7 @@ export function RecruitmentFormTable({ recruitmentFormIsLoading, }: PropsType) { const { append } = useToastStore(); + const { data: cnt } = useRecruitmentCnt(); const { recruitmentFormQueryString, setRecruitmentFormQueryString } = useRecruitmentFormQueryString(); @@ -39,6 +40,7 @@ export function RecruitmentFormTable({ const dataLength = recruitmentForm?.recruitments.length; const [clickedData, setClickedData] = useState([]); const [changeStatus, setChangeStatus] = useState(''); + const [recruitmentCnt, setRecruitmentCnt] = useState(0); /** 지원서 상태를 변경하는 api를 호출합니다. */ const { mutate: changeStatusAPI, isLoading } = useChangeRecruitmentsStatus( @@ -64,6 +66,12 @@ export function RecruitmentFormTable({ } ); + useEffect(() => { + if (cnt) { + setRecruitmentCnt(cnt.count); + } + }, [cnt]); + /** 전체 선택 & 전체 선택 해제를 하는 함수입니다. */ const checkAllBox = () => { if (searchInArray(allSelectFormId, clickedData).length === dataLength) { @@ -232,9 +240,13 @@ export function RecruitmentFormTable({ return ( <_.Container> - <_.BtnWrapper> - - + 모집종료 + + + <_.TableWrapper>
` text-align: center; word-break: keep-all; `; + +export const CntContent = styled.p` + color: #135c9d; + margin-left: 4px; +`; + +export const CntTitle = styled.p` + font-weight: 600; + font-size: 24px; + display: flex; +`; From b114b1a9189b5c7c96ec761b963fa029dd1ee90b Mon Sep 17 00:00:00 2001 From: hyuna Date: Tue, 28 May 2024 16:47:22 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix=20::=20=EB=B9=8C=EB=93=9C=20=EC=98=A4?= =?UTF-8?q?=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/Apis/Applications/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Apis/Applications/index.ts b/src/Apis/Applications/index.ts index cee893c..57abbec 100644 --- a/src/Apis/Applications/index.ts +++ b/src/Apis/Applications/index.ts @@ -1,11 +1,11 @@ -import { - useMutation, - MutationOptions, - useQuery, -} from 'react-query'; +import { useMutation, MutationOptions, useQuery } from 'react-query'; import { instance } from '../axios'; import { ApplicantInfoQueryStringType } from './request'; -import { ApplicationResponse, InternshipStudentResponse } from './response'; +import { + ApplicationResponse, + CntType, + InternshipStudentResponse, +} from './response'; const router = '/applications'; From c00780f8a58479ca267a0dc1546481b971cb3d71 Mon Sep 17 00:00:00 2001 From: hyuna Date: Tue, 28 May 2024 16:51:28 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix=20::=20=EB=B9=8C=EB=93=9C=20=EC=98=A4?= =?UTF-8?q?=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 --- .../RecruitmentForm/Table/index.tsx | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/Components/RecruitmentForm/Table/index.tsx b/src/Components/RecruitmentForm/Table/index.tsx index 53dfb23..46ded5b 100644 --- a/src/Components/RecruitmentForm/Table/index.tsx +++ b/src/Components/RecruitmentForm/Table/index.tsx @@ -8,7 +8,10 @@ import * as _ from './style'; import { useEffect, useState } from 'react'; import { RecruitmentFormResponse } from '../../../Apis/Recruitments/response'; import { Pagination } from '../../../Utils/Pagination'; -import { useChangeRecruitmentsStatus } from '../../../Apis/Recruitments/index'; +import { + useChangeRecruitmentsStatus, + useRecruitmentCnt, +} from '../../../Apis/Recruitments/index'; import { companyStatus, companyType } from '../../../Utils/Translation'; import { getValueByKey } from '../../../Utils/useGetPropertyKey'; import { searchInArray } from '../../../Utils/useSearchForArray'; @@ -247,32 +250,32 @@ export function RecruitmentFormTable({ <_.BtnWrapper> - - + + From be1fc6326b361c32aaf3f745182718dc1edb842a Mon Sep 17 00:00:00 2001 From: hyuna Date: Wed, 29 May 2024 16:51:58 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat=20::=20=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Apis/Applications/index.ts | 10 +- src/Apis/Applications/response.ts | 2 +- src/Apis/Companies/index.ts | 8 +- src/Apis/Companies/response.ts | 2 +- src/Apis/Recruitments/index.ts | 10 +- src/Apis/Recruitments/response.ts | 2 +- .../ApplicationView/Table/index.tsx | 110 +++++++++--------- src/Components/ApplicationView/Table/style.ts | 4 +- .../CompanyRecruitment/Table/index.tsx | 21 ++-- .../CompanyRecruitment/Table/style.ts | 4 +- .../RecruitmentForm/Table/index.tsx | 18 +-- src/Components/RecruitmentForm/Table/style.ts | 4 +- 12 files changed, 103 insertions(+), 92 deletions(-) diff --git a/src/Apis/Applications/index.ts b/src/Apis/Applications/index.ts index 57abbec..a210279 100644 --- a/src/Apis/Applications/index.ts +++ b/src/Apis/Applications/index.ts @@ -3,7 +3,7 @@ import { instance } from '../axios'; import { ApplicantInfoQueryStringType } from './request'; import { ApplicationResponse, - CntType, + applicationCountType, InternshipStudentResponse, } from './response'; @@ -103,9 +103,11 @@ export const useRejectApplication = ( }; /**지원서 총 개수 조회 */ -export const useApplicationCnt = () => { - return useQuery(['applicationCnt'], async () => { - const data = await instance.get(`${router}/teacher/count`); +export const useApplicationCount = () => { + return useQuery(['applicationCount'], async () => { + const data = await instance.get( + `${router}/teacher/count` + ); return data.data; }); }; diff --git a/src/Apis/Applications/response.ts b/src/Apis/Applications/response.ts index 3d65035..d2e6887 100644 --- a/src/Apis/Applications/response.ts +++ b/src/Apis/Applications/response.ts @@ -27,6 +27,6 @@ export interface InternshipStudentType { student_gcn: string; } -export interface CntType { +export interface applicationCountType { count: number; } diff --git a/src/Apis/Companies/index.ts b/src/Apis/Companies/index.ts index 82daf5f..99578e8 100644 --- a/src/Apis/Companies/index.ts +++ b/src/Apis/Companies/index.ts @@ -12,7 +12,7 @@ import { CompanyInfoEditType, } from './request'; import { - CntType, + CompanyCountType, CompanyDetailResponse, CompanyRecruitmentResponse, EmployableCompaniesResponse, @@ -166,9 +166,9 @@ export const useChangeCompanyInfo = ( }; /**기업 총 개수 조회 */ -export const useCompanyCnt = () => { - return useQuery(['CompanyCnt'], async () => { - const data = await instance.get(`${router}/count`); +export const useCompanyCount = () => { + return useQuery(['CompanyCount'], async () => { + const data = await instance.get(`${router}/count`); return data.data; }); }; diff --git a/src/Apis/Companies/response.ts b/src/Apis/Companies/response.ts index b9bef92..d668798 100644 --- a/src/Apis/Companies/response.ts +++ b/src/Apis/Companies/response.ts @@ -58,6 +58,6 @@ export interface CompanyDetailResponse { biz_registration_url: string; } -export interface CntType { +export interface CompanyCountType { count: number; } diff --git a/src/Apis/Recruitments/index.ts b/src/Apis/Recruitments/index.ts index 3b3eef9..ef3284c 100644 --- a/src/Apis/Recruitments/index.ts +++ b/src/Apis/Recruitments/index.ts @@ -5,7 +5,7 @@ import { RecruitmentFormQueryStringType, } from './request'; import { - CntType, + RecruitmentCountType, RecruitmentFormDetailResponse, RecruitmentFormResponse, } from './response'; @@ -169,9 +169,11 @@ export const useEditRecruitment = ( }; /**모집의뢰서 총 개수 조회 */ -export const useRecruitmentCnt = () => { - return useQuery(['RecruitmentCnt'], async () => { - const response = await instance.get(`${router}/count`); +export const useRecruitmentCount = () => { + return useQuery(['RecruitmentCount'], async () => { + const response = await instance.get( + `${router}/count` + ); return response.data; }); }; diff --git a/src/Apis/Recruitments/response.ts b/src/Apis/Recruitments/response.ts index 46116d2..b38a850 100644 --- a/src/Apis/Recruitments/response.ts +++ b/src/Apis/Recruitments/response.ts @@ -51,6 +51,6 @@ export interface AreasType { preferential_treatment: string | null; } -export interface CntType { +export interface RecruitmentCountType { count: number; } diff --git a/src/Components/ApplicationView/Table/index.tsx b/src/Components/ApplicationView/Table/index.tsx index c99be0b..26cd011 100644 --- a/src/Components/ApplicationView/Table/index.tsx +++ b/src/Components/ApplicationView/Table/index.tsx @@ -15,7 +15,7 @@ import { DownloadDataPropsType } from '../../../Apis/File/request'; import { useDownloadData } from '../../../Apis/File'; import { useModalContext } from '../../../Utils/Modal'; import { - useApplicationCnt, + useApplicationCount, useChangeRequestStatus, useRejectApplication, } from '../../../Apis/Applications'; @@ -60,7 +60,7 @@ export function ApplicationViewTable({ const [clickedData, setClickedData] = useState([]); const [changeStatus, setChangeStatus] = useState(''); const [downloadBoxView, setDownloadBoxView] = useState(0); - const [applicationCnt, setApplicationCnt] = useState(0); + const [applicationCount, setApplicationCount] = useState(0); const [rejectReason, setRejectReason] = useState(''); const { form: trainDate, handleChange: trainDateChange } = useForm({ start_date: '', @@ -116,13 +116,13 @@ export function ApplicationViewTable({ } ); const { isLoading: requestStatusIsLoading } = changeStatusAPI; - const { data: cnt } = useApplicationCnt(); + const { data: applicationCountData } = useApplicationCount(); useEffect(() => { - if (cnt) { - setApplicationCnt(cnt.count); + if (applicationCountData) { + setApplicationCount(applicationCountData.count); } - }, [cnt]); + }, [applicationCountData]); /** 지원서 상태 변경할 때 확인하는 확인 모달을 여는 함수입니다. */ const openChangeStatusModal = (statusName: string) => { @@ -493,56 +493,60 @@ export function ApplicationViewTable({ return ( <_.Container> <_.BtnContentWrapper> - <_.TitleText> - 총 <_.CntContent>{applicationCnt}개 - + <_.CountTitle> + 총 <_.CountContent>{applicationCount}개 + <_.BtnWrapper> - - - - - + + + + + diff --git a/src/Components/ApplicationView/Table/style.ts b/src/Components/ApplicationView/Table/style.ts index 2f05ae6..c058d31 100644 --- a/src/Components/ApplicationView/Table/style.ts +++ b/src/Components/ApplicationView/Table/style.ts @@ -101,12 +101,12 @@ export const MiddleText = styled.div` color: black; `; -export const CntContent = styled.p` +export const CountContent = styled.p` color: #135c9d; margin-left: 4px; `; -export const CntTitle = styled.p` +export const CountTitle = styled.p` font-weight: 600; font-size: 24px; display: flex; diff --git a/src/Components/CompanyRecruitment/Table/index.tsx b/src/Components/CompanyRecruitment/Table/index.tsx index 9d0ae49..9f470a2 100644 --- a/src/Components/CompanyRecruitment/Table/index.tsx +++ b/src/Components/CompanyRecruitment/Table/index.tsx @@ -10,7 +10,7 @@ import { Pagination } from '../../../Utils/Pagination'; import { useChangeCompanyStatus, useChangeContractCompany, - useCompanyCnt, + useCompanyCount, } from '../../../Apis/Companies'; import { CompanyRecruitmentResponse } from '../../../Apis/Companies/response'; import { companyType } from '../../../Utils/Translation'; @@ -37,18 +37,18 @@ export function CompanyRecruitmentTable({ const dataLength = companyRecruitment?.companies.length; const [clickedData, setClickedData] = useState([]); const [changeStatus, setChangeStatus] = useState(''); - const [companyCnt, setCompanyCnt] = useState(0); + const [companyCount, setCompanyCount] = useState(0); const { companyRecruitmentQueryString, setCompanyRecruitmentQueryString } = useCompanyRecruitmentQueryString(); - const { data: cnt } = useCompanyCnt(); + const { data: CompanyCountData } = useCompanyCount(); useEffect(() => { - if (cnt) { - setCompanyCnt(cnt.count); + if (CompanyCountData) { + setCompanyCount(CompanyCountData.count); } - }, [cnt]); + }, [CompanyCountData]); /** 전체 선택 & 전체 선택 해제하는 함수입니다. */ const checkAllBox = () => { @@ -262,10 +262,13 @@ export function CompanyRecruitmentTable({ return ( <_.Container> <_.BtnContentWrapper> - <_.TitleText> - 총 <_.CntContent>{companyCnt}개 - + <_.CountTitle> + 총 <_.CountContent>{companyCount}개 + <_.BtnWrapper> + - - - - + <_.BtnWrapper> + + + + + + <_.TableWrapper>
총 <_.CountContent>{recruitmentCount}개 - <_.BtnWrapper> - - - - - + <_.BtnWrapper> + + + + + + <_.TableWrapper>