Skip to content

원티드 프리온보딩 온베이직팀 1주차 과제 - 상품 등록 페이지

Notifications You must be signed in to change notification settings

On-Basic/ADM_PRODUCT_ADD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

상품 등록 관리 페이지

프로젝트 소개

상품 등록 어드민 페이지

팀원 소개

🏃 민지연
🏃‍ 박서윤
🏃‍ 양다혜
🏃‍ 박서영 (팀장)

배포 주소

배포 사이트 바로가기

과제 구현 목록

1 노출 및 판매 기간 설정 (박서윤)

☑️ 제한 없음을 default값으로 지정

☑️ 설정한 노출기간이 만료된 경우, 자동으로 '미노출' 상태로 변경

☑️ 달력 및 시간 지정 컴포넌트 제공

☑️ 30분 단위로 시간 지정

☑️ 현재 시간을 기준으로 지난 시간으로 startDate 설정 제한

☑️ 기간 시작 시간을 기준으로 그 이전의 시간으로 endDate 설정 제한

2. 상품 등록 (양다혜)

☑️ 카테고리 목록에서 제공된 카테고리 생성

☑️ 상품명, 상품 코드, 상품 구성 소개 정보 입력

☑️ 상품 썸네일 이미지 선택(이미지는 1개만 선택 가능)

☑️ 상품 대표 이미지 선택(여러장 선택 가능)

☑️ 이미지 파일명 출력 및 선택 삭제

3. 상품 옵션 (박서영)

☑️ 옵션은 옵션 세트 추가를 통해 등록할 수 있음

☑️ 옵션 세트 및 옵션 세트 내 옵션은 여러 개 생성할 수 있음

☑️ 옵션 세트 내 이미지는 1개만 지정 가능하며, 옵션은 여러 개 생성할 수 있음

☑️ 관리자는 해당 옵션에 추가 옵션 상품을 등록할 수 있음

☑️ 옵션 1개당 여러개의 추가 옵션 상품을 등록할 수 있음

☑️ [추가 옵션 상품 등록] 버튼 TAP 시, 추가옵션 등록 SELL 추가됨

☑️ 상품 정상가 : 상품의 정상가를 입력할 수 있음

☑️ 상품 판매가 : 상품의 판매가를 입력할 수 있음

4. 상품소개 이미지, 구매자 추천 이미지 섹션, 상품 정보 고시 (민지연)

☑️ 정보고시 form 의 갯수 count로 관리(default 값은 1)

☑️ 정보고시 form 추가 기능, 추가 될 때마다 생성 순서 숫자 count +1

☑️ 정보고시 form 삭제 기능, 삭제 될 때마다 생성 순서 숫자 count -1

☑️ 리팩토링 추가(update : 3/21) : 정보고시 form 삭제 기능 고유한 id 값으로 컨트롤하여 form count 순서대로 배치할 수 있도록 구현

☑️ form input의 title, placeholder 를 mock data로 관리 및 실시간 업데이트 기능 구현

☑️ [항목 추가 버튼]을 누르면 [항목 옵션]이 추가되고 'title' 및 '내용' 입력 가능

☑️ [항복 삭제 버튼]을 누르면 해당 [항목 옵션] 만 삭제 가능

☑️ 정보고시 form 내 입력된 모든 값(항목추가옵션 포함)은 해당하는 form 데이터 형태로 실시간 업데이트 가능

상품 정보 고시 입력 값 예시

[
	{
	"count":1,
	"id": 0.24015770352295784,
	"name":"제품명 내용",
	"origin":"원산지 내용",
	"ranking":"등급 내용",
	"keep":"보관 내용",
	"type":"식품 유형 내용",
	"추가항목제목1":"추가항목내용1",
	"추가항목제목2":"추가항목내용2"
	}
]

공통 컴포넌트

민지연

☑️ Radio

  • 사용하고자 하는 컴포넌트에 content, select, onChange를 받아 onChange로 event가 실행되면 select가 되도록 기능

  • '제한 없음'을 default값으로 지정하여 자동으로 select 값 유지

☑️ Toggle

  • boolean state 값을 받아 true, false로 state를 관리되도록 기능

박서영

☑️ Contentwrap : 기능별 섹션 레이아웃

☑️ Button : font-color, background, border, text 등 인자를 받아 커스텀할 수 있는 버튼 컴포넌트

☑️ Input : width, text, desc 등 인자를 받아 커스텀할 수 있는 Input 컴포넌트


양다혜

☑️ InsertImage : 이미지 첨부 컴포넌트(isMultiple값의 true, false로 하나의 사진 또는 여러개의 사진을 구분, 이미지 선택 시 우측에 파일명 출력되고 배열에 저장, X버튼 클릭시 삭제)

☑️ InsertImagePreview : 이미지 프리뷰 컴포넌트(이미지 선택시 미리보기로 이미지 출력, X버튼 클릭시 삭제, 파일명과 src값 저장)

기능별 영상

1 노출 및 판매 기간 설정 (박서윤)

ezgif com-gif-maker

2. 상품 등록 (양다혜)

  • ezgif com-gif-maker (1)

3. 상품 옵션 (박서영)

  • 옵션 세트 추가

    옵션세트추가
  • 옵션 세트 내 옵션 추가

    옵션세트내옵션추가
  • 추가 옵션 추가

    추가옵션등록
  • 이미지 프리뷰 첨부

    이미지첨부

4. 상품 정보 고시 (민지연)

  • 상품 정보 고시 (전체 form 추가/삭제, 정보고시 생성 순서 숫자 표기)

    ezgif com-gif-maker (6)
  • 상품 정보 고시 (input 입력값 받기)

    ezgif com-gif-maker (7)
  • 상품 정보 고시 (항목 옵션 추가/삭제)

    ezgif com-gif-maker (8)
  • 상품옵션 toggle

    상품 옵션 toggle
  • 상품소개이미지, 구매자추천이미지

    상품소개이미지, 구매자추천이미지

과제 후기

🙋‍♀️ 박서윤

원활한 협업을 위해서 환경 셋팅에 들이는 시간을 아까워하지 않아야함을 다시 한번 느낄 수 있었으며, 효율적인 협업을 위한 핵심적인 방법 중 하나는, 충분한 협의를 통해 공통된 모듈을 분리하고, 어떻게 task를 맡을지를 확실히 분담해 중복되는 개발 작업이 이루어지지 않도록 하고, 불필요한 작업 시간을 줄이도록 하는 것임을 체득할 수 있었던 협업 프로젝트였다.

🙋‍♀️ 양다혜

협업에 익숙치 않았었는데, 소통의 중요성을 느끼며 협업하는 법을 배울 수 있었다. 마음이 급하더라도 초기 세팅과 프로젝트 구조 설계에 충분한 시간을 쓰는 것은 충분히 가치있는 일이라는 것을 경험하였다. 또한 간단하게 보였던 것도 고려할 점이 많고 재사용을 위한 설계가 중요하다는 것을 깨달았다.

🙋‍♀️ 박서영

테스크 분석 및 분리, 공용 컴포넌트 제작, 깃헙 이슈를 통한 프로젝트 관리, 데이터 명세 등 사전에 충분한 협의를 통해 체계적으로 계획을 세웠던 프로젝트였다. 불필요하게 낭비되는 코드를 줄이고 건설적으로 코드를 설계할 수 있어서 공부가 많이 되었다.

🙋‍♀️ 민지연

프로젝트 회고

프로젝트 구조 설명

.
├── App.css
├── App.js
├── components
│   ├── common
│   │   ├── Button.jsx
│   │   ├── Input.jsx
│   │   ├── InsertImage.jsx
│   │   ├── InsertImagePreview.jsx
│   │   ├── Radio.jsx
│   │   ├── Toggle.jsx
│   │   ├── datepicker
│   │   └── index.js
│   ├── infoNotice
│   │   ├── InfoNotice.jsx
│   │   └── infoNoticeForm
│   ├── layout
│   │   ├── Contentwrap.jsx
│   │   ├── navbar
│   │   └── sidebar
│   ├── productExpoSalesPeriod
│   │   ├── ExposurePeriodSet.jsx
│   │   └── SalesPeriodSet.jsx
│   ├── productInfo
│   │   └── ProductInfo.jsx
│   ├── productOrderSet
│   │   ├── ProductOrderStart.jsx
│   │   └── ProductPickUp.jsx
│   ├── productPreOrderReservation
│   │   └── PreOrderReservetionSet.jsx
│   └── productoption
│       ├── Optionset.jsx
│       ├── Suboption.jsx
│       └── index.js
├── hooks
│   ├── SubmitForm.jsx
│   ├── useForm.js
│   └── validate.js
├── index.css
├── index.js
├── logo.svg
├── pages
│   ├── admin.jsx
│   └── adminSection
│       ├── ExpoSalesPeriodSet.jsx
│       ├── addoption.jsx
│       ├── pagesInfoNotice.jsx
│       ├── productInfo.jsx
│       └── productorder.jsx
└── style
    ├── globalstyle.js
    └── theme.js

데이터 post 명세

{
  "product": {
      "exposuredeadline": String,
      "salesdeadline": String,
      "categories": Array<string>,
      "filtertags": Array<string>,
      "title": String,
      "desc": String,
      "code": String,
      "thumbnamil" : String,
      "representativeimages": Array<string>,
      "stock": Number,
      "option + ${index}": {
              "image": String,
              "optiontit": String,
              "regularprice" : Number,
              "sellingprice" : Number,
              "stock" : String,
              "taxation" : String,
              "addoption + ${index}": {
                  "optiontit" : String,
                  "regularprice" : Number
                  }
        }
      "introimages": Array<string>,
      "recommandedimages": Array<string>,
      "informationnotice" : {
          "productname": String,
          "origin": String,
          "ranking" : String,
          "custody" : String,
          "foodcode" : String,
          "key" : String,
        }
    "deliverydesignation" : String,
    "pickup" : String,
    "preorderdelivery" : String,
    "mileage" : String,
    "thankyoucard" : String
		}
}

설치 및 시작하는 법

프로젝트 클론

$ git clone https://github.com/On-Basic/ADM_PRODUCT_ADD.git

패키지 설치

$ yarn

서버 실행

$ yarn start

About

원티드 프리온보딩 온베이직팀 1주차 과제 - 상품 등록 페이지

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •