diff --git a/src/pages/inquiry.jsx b/src/pages/inquiry.jsx index 1211fd6..7cc0744 100644 --- a/src/pages/inquiry.jsx +++ b/src/pages/inquiry.jsx @@ -14,9 +14,12 @@ export default function Inquiry() { const columns = [ + { key: "문의 유형", value: "문의 유형" }, { key: "문의 제목", value: "문의 제목" }, { key: "문의 내용", value: "문의 내용" }, { key: "문의 상태", value: "문의 상태" }, + { key: "작성자", value: "작성자" }, + { key: "문의 작성일", value: "문의 작성일" }, ]; const handleTypeChange = (value) => { @@ -39,22 +42,72 @@ export default function Inquiry() { }; const response = await getInquiry(params); - console.log(response); if (response && response.data && response.data.result) { console.log("API 응답 데이터:", response.data.result.content); - // const inquiryData = response.data.result.content.map(inquiry => ({ - // "문의 제목": inquiry.title, - // "문의 내용": inquiry.content, - // "문의 작성일": inquiry.createdAt, - // "문의 상태": inquiry.status === "PENDING" ? "답변 대기" : - // inquiry.status === "RESOLVED" ? "답변 완료" : - // inquiry.status === "REJECTED" ? "답변 거절" : inquiry.status - // })); + // inquiryType 숫자를 한국어로 변환하는 함수 + const getInquiryTypeLabel = (type) => { + if (typeof type === 'number') { + const typeMap = { + 1: "피드", + 2: "외주", + 3: "후기", + 4: "채팅", + 5: "계정/인증", + 6: "기타" + }; + return typeMap[type] || `유형 ${type}`; + } + const stringMap = { + "RELATED_FEED": "피드", + "RELATED_RECRUIT": "외주", + "RELATED_REVIEW": "후기", + "RELATED_CHAT": "채팅", + "RELATED_AUTHENTICATION": "계정/인증", + "ETC": "기타" + }; + return stringMap[type] || type; + }; + const inquiryData = response.data.result.content.map(inquiry => { + // 날짜 포맷팅 + const formatDate = (dateString) => { + if (!dateString) return ""; + try { + return new Date(dateString).toLocaleString('ko-KR', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + hour12: false + }).replace(/\. /g, '.').replace(/\.$/, ''); + } catch (e) { + return dateString; + } + }; + + const mappedData = { + "문의 유형": getInquiryTypeLabel(inquiry.inquiryType), + "문의 제목": inquiry.title || "", + "문의 내용": inquiry.content || "", + "문의 작성일": formatDate(inquiry.createdTime || inquiry.createdAt || inquiry.createdDate), + "작성자": inquiry.writer || inquiry.writerName || inquiry.memberName || "", + "문의 상태": inquiry.status === "PENDING" ? "답변 대기" : + inquiry.status === "RESOLVED" ? "답변 완료" : + inquiry.status === "REJECTED" ? "답변 거절" : inquiry.status || "미설정", + inquiryId: inquiry.inquiryId, + originalData: inquiry, + }; + + console.log("매핑된 데이터:", mappedData); + return mappedData; + }); + + console.log("전체 inquiryData:", inquiryData); setPaginationData(inquiryData); - const totalElements = response.data.result.totalElements || inquiryData.length; + const totalElements = response.data.result.page?.totalElements || response.data.result.totalElements || inquiryData.length; setTotalPages(Math.ceil(totalElements / pageSize)); } } catch (error) { diff --git a/src/pages/members.jsx b/src/pages/members.jsx index ffcaa6a..40a863c 100644 --- a/src/pages/members.jsx +++ b/src/pages/members.jsx @@ -44,9 +44,14 @@ const getMemberData = async () => { } const response = await getMember(params); - // console.log(response); + // console.log("전체 API 응답:", response); + // console.log("response.data:", response?.data); + // console.log("response.data.result:", response?.data?.result); if (response && response.data && response.data.result) { // console.log("API 응답 데이터:", response.data.result.content); + // console.log("페이지 정보:", response.data.result.page); + // console.log("totalElements:", response.data.result.page?.totalElements || response.data.result.totalElements); + const memberData = response.data.result.content.map(member => { const processedMember = { 타입: member.roleType === "STUDENT" ? "학생" : member.roleType === "ADMIN" ? "관리자" : member.roleType === "CLUB" ? "동아리" : "기업", @@ -69,7 +74,15 @@ const getMemberData = async () => { // console.log("전체 memberData:", memberData); setPaginationData(memberData); - const totalElements = response.data.result.totalElements || memberData.length; + // API 응답에서 totalElements 가져오기 + const totalElements = response.data.result.page?.totalElements || + response.data.result.totalElements || + response.data.result.content?.length || + memberData.length; + + console.log("계산된 totalElements:", totalElements); + console.log("계산된 totalPages:", Math.ceil(totalElements / pageSize)); + setTotalPages(Math.ceil(totalElements / pageSize)); } } catch (error) { @@ -222,7 +235,7 @@ useEffect(() => { {showModal && selectedMember && (