Skip to content

On-Basic/ADM_PRODUCT_ADD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

152 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 

Contributors