From 49169e224b4f2dd0bd0d7021d250662370dd5ac9 Mon Sep 17 00:00:00 2001 From: minjeong9919 Date: Tue, 25 Feb 2025 16:33:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=ED=83=80=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EA=B0=80=20=ED=95=84=EC=9A=94=ED=95=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=97=90=20=EB=8F=99=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/logoImage.png | Bin 10134 -> 5817 bytes .../collaboration/CollaborationRegister.tsx | 631 ++++++++--------- .../collaboration/PostDetailWithLink.tsx | 1 + src/pages/idea-market/IdeaMarketMain.tsx | 7 + .../idea-market/IdeaMarketMarketPlace.tsx | 7 + src/pages/idea-market/IdeaMarketPayment.tsx | 8 + src/pages/idea-market/IdeaMarketRegister.tsx | 535 +++++++------- .../IdeaMarketRegisterComplete.tsx | 44 +- src/pages/idea-market/IdeaRegisteredPage.tsx | 34 +- .../request-assign/RequestAssignMain.tsx | 7 + .../request-assign/RequestAssignRegister.tsx | 655 +++++++++--------- .../request-assign/RequestAssignTechZone.tsx | 7 + .../request-assign/RequestRegisteredPage.tsx | 42 +- src/routes.tsx | 2 +- src/seoMetaTag.tsx | 2 +- stats.html | 2 +- 16 files changed, 1038 insertions(+), 946 deletions(-) diff --git a/src/assets/images/logoImage.png b/src/assets/images/logoImage.png index ee27e7821d27fc317dbce6882f6686fefcf0f5ff..fbeceb5587aee6c91ee464a55988b856c00e256d 100644 GIT binary patch delta 4988 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 Y;>fW=_Bro|5Zp^skbN&xC2bt^Ut>b|wEzGB diff --git a/src/pages/collaboration/CollaborationRegister.tsx b/src/pages/collaboration/CollaborationRegister.tsx index 291a3bb..49b2389 100644 --- a/src/pages/collaboration/CollaborationRegister.tsx +++ b/src/pages/collaboration/CollaborationRegister.tsx @@ -81,6 +81,7 @@ const visibilityToEnum: Record = { const MAX_FILE_SIZE = 5 * 1024 * 1024; const BASE_URL = import.meta.env.VITE_BASE_URL; +import { MetaTag } from '../../seoMetaTag'; const OPTIONS = [ '광고 · 홍보', @@ -435,353 +436,363 @@ const CollaborationRegister = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
팀 빌딩
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
-
- -
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + <> + +
+
팀 빌딩
+
+
+
+ +
+
setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))} +
+ )} +
- ) : ( - - )} -
- -
-
-
-
-
-
- 링크 첨부 -
-
+
setLink(e.target.value)} - className={styles.ideaNameInput} + id='fileInput' + type='file' + ref={fileInputRef} + onChange={handleFileUpload} + style={{ display: 'none' }} + accept='image/*' /> + {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
- -
-
- 첨부파일 - (PDF) -
- 내 PC -
-
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - -
- -
-
-
- 모집 분야 및 인원 설정 - (필수) -
- {recruitmentFields.map((field, index) => ( -
- handleFieldChange(index, e.target.value)} - className={styles.recruitmentFieldInput} - /> +
+
{ - const value = e.target.value.replace(/[^0-9]/g, ''); - handleQuantityChange(index, value); - }} - placeholder='모집 인원' - className={styles.recruitmentFieldInput} + placeholder='팀 주제를 입력하세요. (필수)' + className={styles.ideaNameInput} /> - { - setRecruitmentFields((prev) => - prev.filter((_, i) => i !== index), - ); - }}> - 삭제 -
- ))} -
-
-
-
-
- 프로젝트 개최 인원 정보 - (필수) -
- {initialMembers.map((member, index) => ( -
- - handleInitialMemberChange(index, 'identifier', e.target.value) - } - className={styles.recruitmentFieldInput} - /> +
+
+ 링크 첨부 +
+
- handleInitialMemberChange(index, 'domain', e.target.value) - } - className={styles.recruitmentFieldInput} + placeholder='과제 링크를 임베드 하세요.' + value={link} + onChange={(e) => setLink(e.target.value)} + className={styles.ideaNameInput} /> - - { - setInitialMembers((prev) => prev.filter((_, i) => i !== index)); - }}> - 삭제 -
- ))} -
-
-
-
-
- 모집 기한 설정 (필수) - *마감 일자를 입력해주세요 +
+ +
-
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, year: value })); - }} - className={styles.recruitmentDateInput} - placeholder='YYYY' - maxLength={4} - /> -
- -
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, month: value })); - }} - className={styles.recruitmentDateInput} - placeholder='MM' - maxLength={2} - /> +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
- - -
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, day: value })); - }} - className={styles.recruitmentDateInput} - placeholder='DD' - maxLength={2} - /> +
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
- +
-
-
-
- - 공개 여부 +
+
+ 모집 분야 및 인원 설정 (필수) - +
+ {recruitmentFields.map((field, index) => ( +
+ handleFieldChange(index, e.target.value)} + className={styles.recruitmentFieldInput} + /> + { + const value = e.target.value.replace(/[^0-9]/g, ''); + handleQuantityChange(index, value); + }} + placeholder='모집 인원' + className={styles.recruitmentFieldInput} + /> + { + setRecruitmentFields((prev) => + prev.filter((_, i) => i !== index), + ); + }}> + 삭제 + +
+ ))} +
+ +
-
-
-
- - + +
+
+ 프로젝트 개최 인원 정보 + (필수) +
+ {initialMembers.map((member, index) => ( +
+ + handleInitialMemberChange(index, 'identifier', e.target.value) + } + className={styles.recruitmentFieldInput} + /> + + handleInitialMemberChange(index, 'domain', e.target.value) + } + className={styles.recruitmentFieldInput} + /> + { + setInitialMembers((prev) => + prev.filter((_, i) => i !== index), + ); + }}> + 삭제 +
+ ))} +
+
+
-
- {isPortfolioVisible ? : } - - 프로필 공개 +
+
+ 모집 기한 설정 (필수) + *마감 일자를 입력해주세요 +
+
+
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, year: value })); + }} + className={styles.recruitmentDateInput} + placeholder='YYYY' + maxLength={4} + /> +
+ + +
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, month: value })); + }} + className={styles.recruitmentDateInput} + placeholder='MM' + maxLength={2} + /> +
+ + +
+ { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, day: value })); + }} + className={styles.recruitmentDateInput} + placeholder='DD' + maxLength={2} + /> +
+ +
+
+ +
+
+ + 공개 여부 + (필수) - +
+
+
+
+ + + +
+
+ +
+ {isPortfolioVisible ? : } + + 프로필 공개 + + +
-
-
- - +
+ + +
+ setIsModalOpen(false)} + />
- setIsModalOpen(false)} - /> -
+ ); }; diff --git a/src/pages/collaboration/PostDetailWithLink.tsx b/src/pages/collaboration/PostDetailWithLink.tsx index 06951a8..1c10dd8 100644 --- a/src/pages/collaboration/PostDetailWithLink.tsx +++ b/src/pages/collaboration/PostDetailWithLink.tsx @@ -95,6 +95,7 @@ const PostDetailWithLink = () => { description={data?.title} keywords={data?.title} title={`${data.writer.name}님의 글`} + image={data.thumbnailImageUrl} url={`/collaboration/postdetailwithlink/${collaborationId}`} />
diff --git a/src/pages/idea-market/IdeaMarketMain.tsx b/src/pages/idea-market/IdeaMarketMain.tsx index 80852a6..3740b2d 100644 --- a/src/pages/idea-market/IdeaMarketMain.tsx +++ b/src/pages/idea-market/IdeaMarketMain.tsx @@ -14,6 +14,7 @@ import { GetIdeaListRequest } from '../../types/mainType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -214,6 +215,12 @@ const IdeaMarketMain = () => { return ( <> +
아이디어 마켓 diff --git a/src/pages/idea-market/IdeaMarketMarketPlace.tsx b/src/pages/idea-market/IdeaMarketMarketPlace.tsx index 941e4a3..b7757e2 100644 --- a/src/pages/idea-market/IdeaMarketMarketPlace.tsx +++ b/src/pages/idea-market/IdeaMarketMarketPlace.tsx @@ -14,6 +14,7 @@ import { GetIdeaListRequest } from '../../types/mainType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -214,6 +215,12 @@ const IdeaMarketMarketPlace = () => { return ( <> +
아이디어 마켓 diff --git a/src/pages/idea-market/IdeaMarketPayment.tsx b/src/pages/idea-market/IdeaMarketPayment.tsx index cbf4bd8..d98a298 100644 --- a/src/pages/idea-market/IdeaMarketPayment.tsx +++ b/src/pages/idea-market/IdeaMarketPayment.tsx @@ -10,6 +10,7 @@ import { getIdeaMarketPayment } from '../../apis/purchaseAPI'; import { IdeaMarketPurchase } from '../../types/purchaseType'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; +import { MetaTag } from '../../seoMetaTag'; const IdeaMarketPayment = () => { const { ideaId } = useParams<{ ideaId: string }>(); @@ -50,6 +51,13 @@ const IdeaMarketPayment = () => { return ( <> +
diff --git a/src/pages/idea-market/IdeaMarketRegister.tsx b/src/pages/idea-market/IdeaMarketRegister.tsx index a4c6196..75de908 100644 --- a/src/pages/idea-market/IdeaMarketRegister.tsx +++ b/src/pages/idea-market/IdeaMarketRegister.tsx @@ -11,6 +11,7 @@ import CheckButton from '../../assets/icons/checkButton.svg?react'; import DisabledCheckButton from '../../assets/icons/disabledCheckButton.svg?react'; import InfoDropdown from '../../assets/icons/infoDropdown.svg?react'; import { Image } from '../../components/common/image/Image'; +import { MetaTag } from '../../seoMetaTag'; interface IdeaMarketRequestData { title: string; @@ -373,312 +374,322 @@ const IdeaMarketRegister = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
아이디어 등록하기
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
- -
-
- - 페이지 설정 - (필수) - -
-
- - -
- - {pageType === 'Idea Solution' && ( + <> + +
+
아이디어 등록하기
+
+
+
+ +
setShowDetail(!showDetail)}> -
- - Idea Solution이란? - - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 전문가가 제공하는 과제 제작 서비스 - - - {`ex) '블로그 제작을 도와드립니다.' / '로고 제작 서비스를 제공합니다.'`} - + className={styles.select} + onClick={() => setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))}
)}
- )} +
- {pageType === 'Market Place' && ( +
+
+ + 페이지 설정 + (필수) + +
setShowDetail(!showDetail)}> -
- Market Place란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 완성된 과제물과 창의적인 제품을 거래하는 공간 - - - {`ex) '어르신 맞춤형 키오스크 로봇' / '다이어트 식단 관리 앱 개발'`} + className={styles.pageTypeWrapper} + role='group' + aria-labelledby='pageTypeLabel'> + + +
+ + {pageType === 'Idea Solution' && ( +
setShowDetail(!showDetail)}> +
+ + Idea Solution이란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + />
- )} -
- )} -
-
+ {showDetail && ( +
+ + 전문가가 제공하는 과제 제작 서비스 + + + {`ex) '블로그 제작을 도와드립니다.' / '로고 제작 서비스를 제공합니다.'`} + +
+ )} +
+ )} -
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + {pageType === 'Market Place' && ( +
setShowDetail(!showDetail)}> +
+ + Market Place란? + + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 완성된 과제물과 창의적인 제품을 거래하는 공간 + + + {`ex) '어르신 맞춤형 키오스크 로봇' / '다이어트 식단 관리 앱 개발'`} + +
+ )} +
+ )}
- ) : ( - - )} -
+
-
-
+
+ {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
-
-
- 첨부파일 - (PDF) -
- 내 PC +
+
+
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - + +
+ +
- -
-
-
-
- 책정 금액 - (필수) +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
-
- - +
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
+
- {pageType === 'Market Place' && ( -
-
- 수량 설정 +
+
+
+ 책정 금액 (필수)
- -
+ +
+
+ + {pageType === 'Market Place' && ( +
+
+ 수량 설정 + (필수) +
+
+ + +
+ + +
+
+
+ )} +
+ +
+
+ + 공개 여부 + (필수) + +
+
+
+
+
-
- )} -
-
-
- - 공개 여부 - (필수) - -
-
-
-
- - +
+ {isPortfolioVisible ? : } + + 프로필 공개 +
- -
- {isPortfolioVisible ? : } - - 프로필 공개 - - -
-
-
- - +
+ + +
-
+ ); }; diff --git a/src/pages/idea-market/IdeaMarketRegisterComplete.tsx b/src/pages/idea-market/IdeaMarketRegisterComplete.tsx index 4413d53..b973b86 100644 --- a/src/pages/idea-market/IdeaMarketRegisterComplete.tsx +++ b/src/pages/idea-market/IdeaMarketRegisterComplete.tsx @@ -16,28 +16,30 @@ const IdeaMarketRegisterComplete = () => { }; return ( -
-
- + <> +
+
+ +
+

아이디어 등록 완료!

+

+ 아이디어가 브레인픽스에 + 등록되었어요. +

+
+ + +
-

아이디어 등록 완료!

-

- 아이디어가 브레인픽스에 - 등록되었어요. -

-
- - -
-
+ ); }; diff --git a/src/pages/idea-market/IdeaRegisteredPage.tsx b/src/pages/idea-market/IdeaRegisteredPage.tsx index a9153fb..21da9b6 100644 --- a/src/pages/idea-market/IdeaRegisteredPage.tsx +++ b/src/pages/idea-market/IdeaRegisteredPage.tsx @@ -13,6 +13,7 @@ import { getUserIdFromToken } from '../../utils/auth'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; import { Join } from '../join/Join'; +import { MetaTag } from '../../seoMetaTag'; const IdeaRegisteredPage = () => { const { ideaId } = useParams<{ ideaId: string }>(); @@ -62,19 +63,28 @@ const IdeaRegisteredPage = () => { const userId = getUserIdFromToken(); return ( -
- - - + - - -
+
+ + + + + +
+ ); }; diff --git a/src/pages/request-assign/RequestAssignMain.tsx b/src/pages/request-assign/RequestAssignMain.tsx index ef411ae..21eeb1c 100644 --- a/src/pages/request-assign/RequestAssignMain.tsx +++ b/src/pages/request-assign/RequestAssignMain.tsx @@ -17,6 +17,7 @@ import { GetIdeaListRequest } from '../../types/registerType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -217,6 +218,12 @@ const RequestAssignMain = () => { return ( <> +
요청 과제 diff --git a/src/pages/request-assign/RequestAssignRegister.tsx b/src/pages/request-assign/RequestAssignRegister.tsx index 5a68999..a76bab8 100644 --- a/src/pages/request-assign/RequestAssignRegister.tsx +++ b/src/pages/request-assign/RequestAssignRegister.tsx @@ -10,6 +10,7 @@ import CheckButton from '../../assets/icons/checkButton.svg?react'; import DisabledCheckButton from '../../assets/icons/disabledCheckButton.svg?react'; import InfoDropdown from '../../assets/icons/infoDropdown.svg?react'; import { Image } from '../../components/common/image/Image'; +import { MetaTag } from '../../seoMetaTag'; interface RequestAssignRequestData { title: string; @@ -421,381 +422,391 @@ const RequestAssignRegisterNow = () => { const formats = ['font', 'size', 'align', 'link', 'image']; return ( -
-
요청 과제 등록하기
-
-
-
- -
-
setIsDropdownOpen((prev) => !prev)}> - {category || '분야별'} - {isDropdownOpen ? : } - {isDropdownOpen && ( -
- {OPTIONS.map((option) => ( -
setCategory(option)}> - {option} -
- ))} -
- )} -
-
- -
-
- - 페이지 설정 - (필수) - -
-
- - -
- - {pageType === 'OPEN_IDEA' && ( + <> + +
+
요청 과제 등록하기
+
+
+
+ +
setShowDetail(!showDetail)}> -
- Open Idea란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 누구나 참여할 수 있는 창의적인 아이디어 과제 - - - {`ex) '새로운 카페 브랜드를 위한 세련되고 기억에 남는 이름을 제안해주세요.' - '환경 보호를 주제로 한 캠페인을 위한 슬로건을 만들어주세요.'`} - + className={styles.select} + onClick={() => setIsDropdownOpen((prev) => !prev)}> + {category || '분야별'} + {isDropdownOpen ? : } + {isDropdownOpen && ( +
+ {OPTIONS.map((option) => ( +
setCategory(option)}> + {option} +
+ ))}
)}
- )} +
- {pageType === 'TECH_ZONE' && ( +
+
+ + 페이지 설정 + (필수) + +
setShowDetail(!showDetail)}> -
- Tech Zone이란? - { - e.stopPropagation(); - setShowDetail(!showDetail); - }} - /> -
- {showDetail && ( -
- - 전문 지식이 필요한 기술 중심 프로젝트 - - - {` ex) '판매 데이터를 분석하여 다음 분기의 매출 예측 모델을 개발해주세요.' - '간단한 이커머스 웹사이트를 구축하고 결제 시스템을 연동해주세요.'`} - -
- )} + className={styles.pageTypeWrapper} + role='group' + aria-labelledby='pageTypeLabel'> + +
- )} -
-
-
- - {previewImageUrl ? ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - handleImageUpload(); - } - }}> - Selected + {pageType === 'OPEN_IDEA' && ( +
setShowDetail(!showDetail)}> +
+ Open Idea란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 누구나 참여할 수 있는 창의적인 아이디어 과제 + + + {`ex) '새로운 카페 브랜드를 위한 세련되고 기억에 남는 이름을 제안해주세요.' + '환경 보호를 주제로 한 캠페인을 위한 슬로건을 만들어주세요.'`} + +
+ )} +
+ )} + + {pageType === 'TECH_ZONE' && ( +
setShowDetail(!showDetail)}> +
+ Tech Zone이란? + { + e.stopPropagation(); + setShowDetail(!showDetail); + }} + /> +
+ {showDetail && ( +
+ + 전문 지식이 필요한 기술 중심 프로젝트 + + + {` ex) '판매 데이터를 분석하여 다음 분기의 매출 예측 모델을 개발해주세요.' + '간단한 이커머스 웹사이트를 구축하고 결제 시스템을 연동해주세요.'`} + +
+ )} +
+ )}
- ) : ( - - )} -
+
-
-
+
+ {previewImageUrl ? ( +
{ + if (e.key === 'Enter' || e.key === ' ') { + handleImageUpload(); + } + }}> + Selected +
+ ) : ( + + )}
-
- -
- - -
- -
-
- 첨부파일 - (PDF) -
- 내 PC -
-
-
- - {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} - -
- -
-
-
- 모집 기한 설정 (필수) - *마감 일자를 입력해주세요 -
-
-
+
+
{ - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, year: value })); - }} - className={styles.recruitmentDateInput} - placeholder='YYYY' - maxLength={4} + placeholder='과제명이에용..' + className={styles.ideaNameInput} />
- +
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, month: value })); - }} - className={styles.recruitmentDateInput} - placeholder='MM' - maxLength={2} - /> -
- +
+ + +
-
- { - const value = e.target.value.replace(/[^0-9]/g, ''); - setRecruitmentDeadline((prev) => ({ ...prev, day: value })); - }} - className={styles.recruitmentDateInput} - placeholder='DD' - maxLength={2} - /> +
+
+ 첨부파일 + (PDF) +
+ 내 PC +
+
+
+ + {pdfFile ? pdfFile.name : '파일이 업로드 되지 않았습니다.'} +
- +
-
- {pageType === 'TECH_ZONE' && (
- 모집 분야 및 인원 설정 - (필수) + 모집 기한 설정 (필수) + *마감 일자를 입력해주세요
- {recruitmentFields.map((field) => ( -
+
+
handleFieldChange(field.id, e.target.value)} - className={styles.recruitmentFieldInput} + value={recruitmentDeadline.year} + onChange={(e) => { + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, year: value })); + }} + className={styles.recruitmentDateInput} + placeholder='YYYY' + maxLength={4} /> +
+ + +
{ const value = e.target.value.replace(/[^0-9]/g, ''); - handleNumberChange(field.id, parseInt(value) || 0); + setRecruitmentDeadline((prev) => ({ ...prev, month: value })); }} - placeholder='현재 인원 / 모집 인원' - className={styles.recruitmentFieldInput} + className={styles.recruitmentDateInput} + placeholder='MM' + maxLength={2} /> +
+ + +
{ + const value = e.target.value.replace(/[^0-9]/g, ''); + setRecruitmentDeadline((prev) => ({ ...prev, day: value })); + }} + className={styles.recruitmentDateInput} + placeholder='DD' + maxLength={2} /> -
- ))} -
- - +
- )} - -
-
- - 공개 여부 - (필수) - -
-
-
-
- + + {pageType === 'TECH_ZONE' && ( +
+
+ 모집 분야 및 인원 설정 + (필수) +
+ {recruitmentFields.map((field) => ( +
+ handleFieldChange(field.id, e.target.value)} + className={styles.recruitmentFieldInput} + /> + { + const value = e.target.value.replace(/[^0-9]/g, ''); + handleNumberChange(field.id, parseInt(value) || 0); + }} + placeholder='현재 인원 / 모집 인원' + className={styles.recruitmentFieldInput} + /> + + +
+ ))} +
+ )} -
- {isPortfolioVisible ? : } - - 프로필 공개 +
+
+ + 공개 여부 + (필수) - +
+
+
+
+ + + +
+
+ +
+ {isPortfolioVisible ? : } + + 프로필 공개 + + +
-
-
- - +
+ + +
-
+ ); }; diff --git a/src/pages/request-assign/RequestAssignTechZone.tsx b/src/pages/request-assign/RequestAssignTechZone.tsx index 2c26a5a..4eb0af5 100644 --- a/src/pages/request-assign/RequestAssignTechZone.tsx +++ b/src/pages/request-assign/RequestAssignTechZone.tsx @@ -17,6 +17,7 @@ import { GetIdeaListRequest } from '../../types/registerType'; import DownButton from '../../assets/icons/categoryDownButton.svg?react'; import UpButton from '../../assets/icons/categoryUpButton.svg?react'; import LoadingPage from '../loading/LoadingPage'; +import { MetaTag } from '../../seoMetaTag'; const categoryMapReverse: Record = { '광고 · 홍보': 'ADVERTISING_PROMOTION', @@ -217,6 +218,12 @@ const RequestAssignTechZone = () => { return ( <> +
요청 과제 diff --git a/src/pages/request-assign/RequestRegisteredPage.tsx b/src/pages/request-assign/RequestRegisteredPage.tsx index 03fb6c3..a46e244 100644 --- a/src/pages/request-assign/RequestRegisteredPage.tsx +++ b/src/pages/request-assign/RequestRegisteredPage.tsx @@ -14,6 +14,7 @@ import { getUserIdFromToken } from '../../utils/auth'; import LoadingPage from '../loading/LoadingPage'; import ErrorPage from '../errorPage/ErrorPage'; import { Join } from '../join/Join'; +import { MetaTag } from '../../seoMetaTag'; const RequestRegisteredPage = () => { const { taskId } = useParams<{ taskId: string }>(); @@ -65,23 +66,32 @@ const RequestRegisteredPage = () => { const userId = getUserIdFromToken(); return ( -
- - + - - - - -
+
+ + + + + + +
+ ); }; export default RequestRegisteredPage; diff --git a/src/routes.tsx b/src/routes.tsx index 534b81c..b637315 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -195,7 +195,7 @@ export const routes = createBrowserRouter([ element: , }, { - path: 'collaboration/register', + path: '/collaboration/register', element: , }, { diff --git a/src/seoMetaTag.tsx b/src/seoMetaTag.tsx index 467b005..7d31309 100644 --- a/src/seoMetaTag.tsx +++ b/src/seoMetaTag.tsx @@ -50,7 +50,7 @@ export const MetaTag = (data: Props) => { />