diff --git a/src/components/EditApply.jsx b/src/components/EditApply.jsx
index d8a496b..ff4095c 100644
--- a/src/components/EditApply.jsx
+++ b/src/components/EditApply.jsx
@@ -72,7 +72,7 @@ const EditApply = ({ jobPostData = {}, applicationData = [], onSave }) => {
}
}
setCurrentQuestionIndex(0);
- }, [currentPageIndex, applicationDataState]);
+ }, [currentPageIndex]);
// 토글 핸들러
const handleToggleClick = () => {
@@ -162,13 +162,13 @@ const EditApply = ({ jobPostData = {}, applicationData = [], onSave }) => {
jobPart: jobPart, // 수정된 직무명
memberId: jobPostData.memberId,
jobApplications: applicationDataState.map((app) => ({
- id: appIdRef.current++,
+ id: app.jobPostId,
applicationType: app.applicationType,
place: app.place,
result: app.result,
submissionStatus: app.submissionStatus,
applicationStartDate: app.applicationStartDate,
- applicationCloseDate: new Date(applyDate).getTime(),
+ applicationCloseDate: formatDate(new Date(applyDate).getTime()),
memberId: jobPostData.memberId,
jobPostId: jobPostData.jobPostId,
applicationDetails: app.applicationDetails.map(question => ({
@@ -186,14 +186,14 @@ const EditApply = ({ jobPostData = {}, applicationData = [], onSave }) => {
handleSaveRef.current = handleSave;
}, [companyName, jobPart, applyDate, currentQuestionIndex, currentPageIndex, applicationDataState, submissionStatus, resultStatus]);
- useEffect(() => {
- // 언마운트시 데이터 저장(저장 버튼과 같은 기능)
- return () => {
- if (handleSaveRef.current) {
- handleSaveRef.current();
- }
- };
- }, [])
+ // useEffect(() => {
+ // // 언마운트시 데이터 저장(저장 버튼과 같은 기능)
+ // return () => {
+ // if (handleSaveRef.current) {
+ // handleSaveRef.current();
+ // }
+ // };
+ // }, [])
// 현재 보여져야 하는 질문
const currentQuestions = applicationDataState[currentPageIndex]?.applicationDetails || [];
@@ -213,21 +213,30 @@ const EditApply = ({ jobPostData = {}, applicationData = [], onSave }) => {
setApplyDate(date); // DatePicker의 선택된 날짜 상태를 업데이트
};
+ // 타임스탬프를 'yy-mm-dd' 형식으로 변환하는 함수
+ const formatDate = (timestamp) => {
+ const date = new Date(timestamp);
+ const year = date.getFullYear().toString(); // 'yy' 형식
+ const month = String(date.getMonth() + 1).padStart(2, '0'); // 'mm' 형식
+ const day = String(date.getDate()).padStart(2, '0'); // 'dd' 형식
+ return `${year}-${month}-${day}`;
+ };
+
// 제출 여부 수정 핸들러
-const handleApplySubmissionStatus = (icon) => {
- const updatedApplicationData = [...applicationDataState];
- updatedApplicationData[currentPageIndex].submissionStatus = getSubmitIconStatus(icon);
- setApplicationData(updatedApplicationData);
- setSubmissionStatus(getSubmitIconStatus(icon));
-};
+ const handleApplySubmissionStatus = (icon) => {
+ const updatedApplicationData = [...applicationDataState];
+ updatedApplicationData[currentPageIndex].submissionStatus = getSubmitIconStatus(icon);
+ setApplicationData(updatedApplicationData);
+ setSubmissionStatus(getSubmitIconStatus(icon));
+ };
-// 결과 수정 핸들러
-const handleApplyResult = (icon) => {
- const updatedApplicationData = [...applicationDataState];
- updatedApplicationData[currentPageIndex].result = getResultIconStatus(icon);
- setApplicationData(updatedApplicationData);
- setResultStatus(getResultIconStatus(icon));
-};
+ // 결과 수정 핸들러
+ const handleApplyResult = (icon) => {
+ const updatedApplicationData = [...applicationDataState];
+ updatedApplicationData[currentPageIndex].result = getResultIconStatus(icon);
+ setApplicationData(updatedApplicationData);
+ setResultStatus(getResultIconStatus(icon));
+ };
// 아이콘 상태에 따른 반환 함수
const getStatusIcon = (status) => {
@@ -301,7 +310,7 @@ const handleApplyResult = (icon) => {
setCurrentPageIndex(index)}>
- {page.applicationType === '서류' ? '서류' : page.applicationType === '면접' ? '면접' : page.applicationType === '면접 피드백' ? '면접 피드백' : '기업분석'}
+ {page.applicationType === 'DOCUMENT' ? '서류' : page.applicationType === 'INTERVIEW' ? '면접' : page.applicationType === 'INTERVIEW_FEEDBACK' ? '면접 피드백' : '기업분석'}
removePage(index)}>
@@ -317,10 +326,10 @@ const handleApplyResult = (icon) => {
{isToggleOpen && (
-
handleAddPage('서류')}>서류 추가
-
handleAddPage('면접')}>면접 추가
-
handleAddPage('면접 피드백')}>면접피드백 추가
-
handleAddPage('기업분석')}>기업분석 추가
+
handleAddPage('DOCUMENT')}>서류 추가
+
handleAddPage('INTERVIEW')}>면접 추가
+
handleAddPage('INTERVIEW_FEEDBACK')}>면접피드백 추가
+
handleAddPage('BUSINESS_ANALYSIS')}>기업분석 추가
)}
diff --git a/src/components/NewApply.jsx b/src/components/NewApply.jsx
index 8414a0d..bd34ed1 100644
--- a/src/components/NewApply.jsx
+++ b/src/components/NewApply.jsx
@@ -196,20 +196,20 @@ const NewApply = ({ jobPostData = {}, applicationData = [], onSave }) => {
};
// 제출 여부 수정 핸들러
-const handleApplySubmissionStatus = (icon) => {
- const updatedApplicationData = [...applicationDataState];
- updatedApplicationData[currentPageIndex].submissionStatus = getSubmitIconStatus(icon);
- setApplicationData(updatedApplicationData);
- setSubmissionStatus(getSubmitIconStatus(icon));
-};
+ const handleApplySubmissionStatus = (icon) => {
+ const updatedApplicationData = [...applicationDataState];
+ updatedApplicationData[currentPageIndex].submissionStatus = getSubmitIconStatus(icon);
+ setApplicationData(updatedApplicationData);
+ setSubmissionStatus(getSubmitIconStatus(icon));
+ };
-// 결과 수정 핸들러
-const handleApplyResult = (icon) => {
- const updatedApplicationData = [...applicationDataState];
- updatedApplicationData[currentPageIndex].result = getResultIconStatus(icon);
- setApplicationData(updatedApplicationData);
- setResultStatus(getResultIconStatus(icon));
-};
+ // 결과 수정 핸들러
+ const handleApplyResult = (icon) => {
+ const updatedApplicationData = [...applicationDataState];
+ updatedApplicationData[currentPageIndex].result = getResultIconStatus(icon);
+ setApplicationData(updatedApplicationData);
+ setResultStatus(getResultIconStatus(icon));
+ };
// 아이콘 상태에 따른 반환 함수
const getStatusIcon = (status) => {
diff --git a/src/pages/ActivityRecord.jsx b/src/pages/ActivityRecord.jsx
index 17d8901..b55a9d0 100644
--- a/src/pages/ActivityRecord.jsx
+++ b/src/pages/ActivityRecord.jsx
@@ -95,7 +95,7 @@ const ActivityRecord = () => {
활동 추가하기
-
+
{filteredActivities.map((item) => {
return (
{
면접 합격
-
+
{combinedData.map((application) => (
{
// 지원현황 데이터 업데이트
const handleUpdate = async (updatedData) => {
+ console.log(updatedData);
try {
const response = await instance.patch(`/api/job-posts/${currentId}`, updatedData);
if (response.data && response.data.status === 'success') {
console.log("수정된 데이터:", response.data.data);
- window.location.reload();
+ // window.location.reload();
} else {
console.error('지원현황 수정 중 오류 발생:', response.data.message);
}
diff --git a/src/pages/EditMyAbout.jsx b/src/pages/EditMyAbout.jsx
index 718aa85..7803b69 100644
--- a/src/pages/EditMyAbout.jsx
+++ b/src/pages/EditMyAbout.jsx
@@ -6,7 +6,6 @@ import instance from "../api/instance";
const EditMyAbout = () => {
const nav = useNavigate();
- const [infoData, setInfoData] = useState();
const [formData, setFormData] = useState({
career: "",
aboutMe: ""
@@ -19,9 +18,11 @@ const EditMyAbout = () => {
const response = await instance.get('/api/member/info');
if (response.data && response.data.status === 'success') {
console.log(response.data.data);
- setInfoData(response.data.data); // 받아온 데이터를 applyData 상태에 저장
// 받아온 데이터를 formData에 저장
setFormData({
+ field: response.data.data.field || "",
+ belong: response.data.data.belong || "",
+ job: response.data.data.job || "",
educationBackground: response.data.data.educationBackground || "",
skill: response.data.data.skill || "",
activityHistory: response.data.data.activityHistory || "",
@@ -40,7 +41,7 @@ const EditMyAbout = () => {
}, []);
// infoData가 null일 때 로딩 스피너나 대체 UI를 표시할 수 있음
- if (!infoData) {
+ if (!formData) {
return Loading...
; // 데이터를 불러오는 동안 표시될 내용
}
@@ -79,7 +80,7 @@ const EditMyAbout = () => {
{
{
const nav = useNavigate();
- const [infoData, setInfoData] = useState();
const [formData, setFormData] = useState({
+ belong: "",
+ job: "",
educationBackground: "",
skill: "",
activityHistory: "",
@@ -29,9 +37,11 @@ const EditMyInfo = () => {
const response = await instance.get('/api/member/info');
if (response.data && response.data.status === 'success') {
console.log(response.data.data);
- setInfoData(response.data.data); // 받아온 데이터를 applyData 상태에 저장
// 받아온 데이터를 formData에 저장
setFormData({
+ field: response.data.data.field || "",
+ belong: response.data.data.belong || "",
+ job: response.data.data.job || "",
educationBackground: response.data.data.educationBackground || "",
skill: response.data.data.skill || "",
activityHistory: response.data.data.activityHistory || "",
@@ -50,7 +60,7 @@ const EditMyInfo = () => {
}, []);
// infoData가 null일 때 로딩 스피너나 대체 UI를 표시할 수 있음
- if (!infoData) {
+ if (!formData) {
return Loading...
; // 데이터를 불러오는 동안 표시될 내용
}
@@ -67,9 +77,9 @@ const EditMyInfo = () => {
const handleSave = async () => {
try {
const payload = {
- ...formData,
+ ...formData
};
- const response = await instance.post('/api/member/additional-info', payload);
+ const response = await instance.post('/api/member/default-info', payload);
if (response.data.status === 'success') {
nav("/user/mypage"); // 저장 후 마이페이지로 이동
}
@@ -87,33 +97,25 @@ const EditMyInfo = () => {
@@ -121,7 +123,7 @@ const EditMyInfo = () => {
{
{
console.log('저장할 데이터:', savedData);
try {
const response = await instance.post('/api/job-posts', savedData);
- window.location.reload();
+ //window.location.reload();
console.log('서버 응답:', response.data);
} catch (error) {
console.error('에러 발생:', error);
diff --git a/src/pages/Setting.jsx b/src/pages/Setting.jsx
index 7910e27..e34a271 100644
--- a/src/pages/Setting.jsx
+++ b/src/pages/Setting.jsx
@@ -12,14 +12,38 @@ const Setting = () => {
currentPassword: "",
newPassword: "",
});
- // const [formData, setFormData] = useState({
- // educationBackground: "",
- // skill: "",
- // activityHistory: "",
- // award: "",
- // languageScore: "",
- // });
+ const [formData, setFormData] = useState({
+ field: "",
+ });
+
+ // 서버로부터 데이터 GET
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ const response = await instance.get('/api/member/info');
+ if (response.data && response.data.status === 'success') {
+ console.log(response.data.data);
+ // 받아온 데이터를 formData에 저장
+ setFormData({
+ field: response.data.data.field || "",
+ belong: response.data.data.belong || "",
+ job: response.data.data.job || "",
+ educationBackground: response.data.data.educationBackground || "",
+ skill: response.data.data.skill || "",
+ activityHistory: response.data.data.activityHistory || "",
+ award: response.data.data.award || "",
+ languageScore: response.data.data.languageScore || "",
+ career: response.data.data.career || "",
+ aboutMe: response.data.data.aboutMe || ""
+ });
+ }
+ } catch (error) {
+ console.error('Error fetching apply data:', error);
+ }
+ };
+ fetchData();
+ }, []);
// 입력값을 업데이트하는 함수
const handleInputChange = (e) => {
@@ -28,10 +52,10 @@ const Setting = () => {
...passwordFormData,
[name]: value
});
- // setFormData({
- // ...formData,
- // [name]: value,
- // });
+ setFormData({
+ ...formData,
+ [name]: value,
+ });
};
// 저장 버튼 클릭 시 서버로 POST 요청
@@ -44,13 +68,35 @@ const Setting = () => {
if (response.data.status === 'success') {
console.log('비밀번호 변경 성공!');
alert('비밀번호가 변경되었습니다');
- nav("/user/mypage"); // 저장 후 마이페이지로 이동
}
} catch (error) {
console.error('비밀번호 변경 실패:', error);
}
};
+ // 저장 버튼 클릭 시 서버로 POST 요청
+ const handleSave = async () => {
+ try {
+ const payload = {
+ ...formData,
+ };
+ const response = await instance.post('/api/member/additional-info', payload);
+ if (response.data.status === 'success') {
+ sessionStorage.setItem('field', formData.field)
+ alert('분야 정보가 변경되었습니다');
+ }
+ } catch (error) {
+ console.error('Error saving info data:', error);
+ }
+ };
+
+ // 비밀번호와 분야 정보를 모두 저장하는 함수
+ const handleSaveAll = async () => {
+ await handlePasswordSave(); // 비밀번호 저장
+ await handleSave(); // 분야 정보 저장
+ nav("/user/mypage"); // 저장 후 마이페이지로 이동
+ };
+
return (
@@ -72,6 +118,7 @@ const Setting = () => {
{
@@ -102,9 +156,7 @@ const Setting = () => {