Просмотр исходного кода

Merge branch 'develop' into jsshin

jsshin 5 лет назад
Родитель
Сommit
e8afb1c4e7
26 измененных файлов с 3101 добавлено и 1625 удалено
  1. 43 39
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  2. 116 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  3. 3 2
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  4. 86 16
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  5. 79 0
      src/main/java/com/style24/persistence/domain/Poll.java
  6. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  7. 114 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  8. 98 0
      src/main/webapp/WEB-INF/views/mob/goods/CardPrmtFormMob.html
  9. 186 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html
  10. 7 1422
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  11. 357 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  12. 160 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsInstockAlarmFormMob.html
  13. 119 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  14. 64 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaFormMob.html
  15. 95 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html
  16. 1026 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsSizeInfoFormMob.html
  17. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  18. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  19. 4 59
      src/main/webapp/WEB-INF/views/web/goods/GoodsInstockAlarmFormWeb.html
  20. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html
  21. 88 34
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  22. 18 16
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventMainFormWeb.html
  23. 356 0
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html
  24. 42 21
      src/main/webapp/ux/pc/css/layout.css
  25. 1 0
      src/main/webapp/ux/pc/css/main.css
  26. 33 11
      src/main/webapp/ux/style24_link.js

+ 43 - 39
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -1,10 +1,12 @@
 package com.style24.front.biz.dao;
 
 import java.util.Collection;
+import java.util.Map;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Plan;
+import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
 
 /**
@@ -98,45 +100,6 @@ public interface TsfPlanningDao {
 	 */
 	String getAfLinkAccessibleYn(Plan plan);
 
-//	/**
-//	 * 기획전 목록 + 상품
-//	 *
-//	 * @param
-//	 * @return
-//	 * @author bin2107
-//	 * @since 2021. 3. 26
-//	 */
-//	Collection<Plan> getPlanningList(Plan plan);
-//
-//	/**
-//	 * 기획전 목록 + 상품
-//	 *
-//	 * @param
-//	 * @return
-//	 * @author bin2107
-//	 * @since 2021. 3. 26
-//	 */
-//	Collection<Plan> getPlanningGoodsList(Plan plan);
-
-//	/**
-//	 * 기획전 목록
-//	 * @param
-//	 * @return
-//	 * @author sowon
-//	 * @date 2021. 3. 8
-//	 */
-//	Collection<Plan> getPlanList(Plan plan);
-//
-//	/**
-//	 * 기획전 상품 목록
-//	 *
-//	 * @param
-//	 * @return
-//	 * @author sowon
-//	 * @date 2021. 3. 8
-//	 */
-//	Collection<Plan> getPlanGoodsList(Plan plan);
-
 	/**
 	 * 기획전 접근 가능 등급 고객
 	 *
@@ -267,4 +230,45 @@ public interface TsfPlanningDao {
 	 * @date 2021. 3. 30
 	 */
 	Plan getShotDeliveryHtml(Plan plan);
+	
+	/**
+	 * 설문조사 정보
+	 *
+	 * @param plan
+	 * @return poll
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	Poll getPollQuestionInfo(Plan plan);
+	
+	/**
+	 * 설문조사 질문내용
+	 *
+	 * @param plan
+	 * @return poll
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	Collection<Poll> getPollQuestionList(Plan plan);
+	
+	/**
+	 * 설문조사 등록
+	 *
+	 * @param poll
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	void savePollCustAnswer(Poll poll);
+	
+	/**
+	 * 설문조사 중복카운트
+	 *
+	 * @param plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 4
+	 */
+	int getCustAnswerCount(Plan plan);
+	
 }

+ 116 - 0
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -1,6 +1,8 @@
 package com.style24.front.biz.service;
 
 import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,6 +14,7 @@ import com.style24.front.biz.dao.TsfPlanningDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Plan;
+import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
@@ -303,5 +306,118 @@ public class TsfPlanningService {
 	public Plan getShotDeliveryHtml(Plan plan) {
 		return planningDao.getShotDeliveryHtml(plan);
 	}
+	
+	/**
+	 * 설문조사 정보
+	 *
+	 * @param plan
+	 * @return poll
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	public Poll getPollQuestionInfo(Plan plan) {
+		return planningDao.getPollQuestionInfo(plan);
+	}
+	
+	/**
+	 * 설문조사 질문내용
+	 *
+	 * @param plan
+	 * @return poll
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	public Collection<Poll> getPollQuestionList(Plan plan) {
+		return planningDao.getPollQuestionList(plan);
+	}
+	
+	/**
+	 * 설문조사 등록
+	 *
+	 * @param poll
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 3
+	 */
+	public void savePollCustAnswer(Poll poll) {
+		poll.setCustNo(TsfSession.getInfo().getCustNo());
+		// 단수형
+		if(poll.getPollQsq_10()!=null && poll.getPollQsq_10()!="") {
+			String[] pollQsq_10 =poll.getPollQsq_10().split("/");
+			for (int i = 0; i < pollQsq_10.length; i++) {
+				String[] temp = pollQsq_10[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
+		
+		//복수형
+		if(poll.getPollQsq_20()!=null && poll.getPollQsq_20()!="") {
+			String[] pollQsq_20 =poll.getPollQsq_20().split("/");
+			for (int i = 0; i < pollQsq_20.length; i++) {
+				String[] temp = pollQsq_20[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq));
+					String dummy = temp[j+1].toString().replaceAll("[,]", "|");        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					
+					j++;
+				}
+			}
+		}
+		
+		//단답형
+		if(poll.getPollQsq_30()!=null && poll.getPollQsq_30()!="") {
+			String[] pollQsq_30 =poll.getPollQsq_30().split("/");
+			for (int i = 0; i < pollQsq_30.length; i++) {
+				String[] temp = pollQsq_30[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
+		
+		//서룰형
+		if(poll.getPollQsq_40()!=null && poll.getPollQsq_40()!="") {
+			String[] pollQsq_40 =poll.getPollQsq_40().split("/");
+			for (int i = 0; i < pollQsq_40.length; i++) {
+				String[] temp = pollQsq_40[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
+	}
+	
+	/**
+	 * 설문조사 중복카운트
+	 *
+	 * @param plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 4
+	 */
+	public int getCustAnswerCount(Plan plan) {
+		return planningDao.getCustAnswerCount(plan);
+	}
+
 
 }

+ 3 - 2
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -84,7 +84,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 	@Autowired
 	private TsfRendererService rendererService;
-	
+
 	@Autowired
 	private TsfWishlistService wishListService;
 
@@ -641,6 +641,7 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsInfo", goods);
 
 		// 자사 일반상품- 옵션2(사이즈) 정보
+		paramsGoods.setOptCd1(colorCd);
 		mav.addObject("goodsOption2List", goodsService.getGoodsOption2List(paramsGoods));
 
 		mav.setViewName(super.getDeviceViewName("goods/GoodsInstockAlarmForm"));
@@ -1230,7 +1231,7 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.setViewName(super.getDeviceViewName("goods/GoodsDetailReviewForm"));
 		return mav;
 	}
-	
+
 	/**
 	 * 퀵메뉴 위시리스트
 	 * @return

+ 86 - 16
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -1,6 +1,7 @@
 package com.style24.front.biz.web;
 
 import java.util.Collection;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,10 +26,12 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Plan;
+import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 
@@ -106,7 +109,7 @@ public class TsfPlanningController extends TsfBaseController {
 	}
 
 	/**
-	 * 기획전 상세화면
+	 * 기획전 / 이벤트 상세화면
 	 *
 	 * @return
 	 * @author sowon
@@ -139,11 +142,10 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setPlanSq(plan.getPlanSq());
 		review.setPlanSq(plan.getPlanSq());
 		coupon.setPlanSq(plan.getPlanSq());
-
-		//plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setFrontGb(TsfSession.getFrontGb());
 
 		Plan planInfo = planningService.getPlanDetailInfo(plan);
+		String planGb = planInfo.getPlanGb();
 		mav.addObject("planInfo", planInfo);
 
 		mav.addObject("planCount", planningService.getPlanAllCount(plan));
@@ -181,26 +183,28 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setTmplType("G082_52");
 		mav.addObject("goods4Info", planningService.getPlanGoodsDisplayList(plan));
 
-		// 다른기획전 보기 
+		if (planGb.equals("P")) {
+			// 다른기획전 보기 
+			mav.addObject("planList", planningService.getPlanningList(plan));
+			mav.addObject("listSize", planningService.getPlanningList(plan).size());
+		}
+		else{
+			// 다른이벤트 보기
+			mav.addObject("planList", planningService.getPlanEventList(plan));
+			mav.addObject("listSize", planningService.getPlanEventList(plan).size());
+		}
+		
 		
-		mav.addObject("planList", planningService.getPlanningList(plan));
 //
 //		mav.addObject("couponList", planningService.getPlusCouponList(plan));
 //
-//		// 기획전  코너 목록
+//		// 코너 목록
 		mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
+		mav.addObject("planCornerListLength", planningService.getPlanCornerList(plan).size());
 		
-		// 기획전 코너 상품
+		// 코너 상품
 		mav.addObject("planCornerGoodsList", planningService.getPlanningCornerGoodsList(plan));
-//
-//		// 특가세일 기준
-//		mav.addObject("specialPriceSaleRate", policyService.getSpecialPriceSaleDisplayRate(TsfConstants.SITE_CD));
-//
-//		if ("E".equals(planInfo.getPlanGb())) { // 기획전 일 떄
-//			if (planInfo.getPrivacyPolicy() != null && !planInfo.getPrivacyPolicy().equals("")) {
-//				mav.addObject("planQuestionList", planningService.getPlanQuestionList(plan));
-//			}
-//		}
+
 
 		// Popup Parameter
 		mav.addObject("preview", plan.getPreview());
@@ -315,6 +319,72 @@ public class TsfPlanningController extends TsfBaseController {
 		return planningService.getPlanEventList(plan);
 	}
 	
+	/**
+	 * 이벤트 설문조사 화면
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 2
+	 */
+	@PostMapping("/event/poll/form")
+	public ModelAndView planningEventPollSave(Plan plan) {
+		ModelAndView mav = new ModelAndView();
+		Poll poll = new Poll();
+		plan.setSiteCd(TscConstants.Site.STYLE24.value());
+		plan.setFrontGb(TsfSession.getFrontGb());
+		poll.setCustNo(TsfSession.getInfo().getCustNo());
+		mav.addObject("pollInfo", planningService.getPollQuestionInfo(plan));
+		mav.addObject("pollList", planningService.getPollQuestionList(plan));
+		mav.setViewName(super.getDeviceViewName("planning/PlanningEventPollForm"));
+		return mav;
+	}
+	
+	/**
+	 * 이벤트 설문조사 접근확인
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 3
+	 */
+	@PostMapping("/event/poll/access")
+	@ResponseBody
+	public GagaMap planningEventPollAccess(@RequestBody Plan plan) {
+		
+		GagaMap result = new GagaMap();
+		Poll poll = new Poll();
+		plan.setSiteCd(TscConstants.Site.STYLE24.value());
+		plan.setFrontGb(TsfSession.getFrontGb());
+		plan.setCustNo(TsfSession.getInfo().getCustNo());
+		
+		poll = planningService.getPollQuestionInfo(plan);
+		String partYn = poll.getDupPartiYn(); 
+		// 중복참여가 아닌경우
+		if(partYn.equals("N")) {
+			int count = planningService.getCustAnswerCount(plan);
+			if (count>0) {
+				result.set("msg","이미 응모하셨습니다.");
+				result.set("status","1");
+			}
+		}
+		return result;
+	}
+	
+	/**
+	 * 이벤트 설문조사 저장
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 2
+	 */
+	@PostMapping("/event/poll/save")
+	@ResponseBody
+	public GagaMap planningEventPollForm(@RequestBody Poll poll) {
+		GagaMap result = new GagaMap();
+		planningService.savePollCustAnswer(poll);
+		return result;
+	}
+	
+	
 	/**
 	 * 총알배송 메인 화면
 	 * 

+ 79 - 0
src/main/java/com/style24/persistence/domain/Poll.java

@@ -0,0 +1,79 @@
+package com.style24.persistence.domain;
+
+
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * poll관리 Domain
+ *
+ * @author sowon
+ * @since 2021. 02. 19
+ */
+
+@SuppressWarnings("serial")
+@Data
+public class Poll extends TscBaseDomain{
+	
+	// poll
+	private Integer pollSq;			// 투표일련번호
+	private Integer pollSqTemp;		// 신규투표일련번호
+	private String siteCd;			// 사이트 코드
+	private String pollTitle;		// 투표제목
+	private String pollContent;		// 투표내용
+	private String pollStdt;		// 투표시작일시
+	private String pollEddt;		// 투표종료일시
+	private String delYn;			// 삭제여부
+	private String dupPartiYn;		// 중복참여 여부
+	private String fstComYn;		// 선착순 여부
+    private int partiCnt;			// 선착순참여 여부
+	
+	// poll_question
+	private Integer pollQsq;		// 투표문항일련번호
+	private String pollQtitle;		// 투표문항제목
+	private String pollQtype;		// 문제유형 구분
+	private String pollQval1;		// 투표문항참고값1
+	private String pollQval2;		// 투표문항참고값2
+	private String pollQval3;		// 투표문항참고값3
+	private String pollQval4;		// 투표문항참고값4
+	private String pollQval5;		// 투표문항참고값5
+	private String pollQval6;		// 투표문항참고값6
+	private String pollQval7;		// 투표문항참고값7
+	private String pollQval8;		// 투표문항참고값8
+	private String pollQval9;		// 투표문항참고값9
+	private String pollQval10;		// 투표문항참고값10
+	private int dispOrd;		// 표시 순서
+	private String pollQtypeNm;	// 문제유형 이름
+	private String planNm;			// 이벤트명
+	//poll_answer
+	private Integer ansCustNo;		// 투표회원번호
+	private String dummy;			// 임시 (고객 답변)
+
+	// 검색
+	private String stDate;			// 시작일시
+	private String edDate;			// 종료일시
+
+	
+	private int voteCnt;		// 투표수
+	private int voteRate;		// 투표율
+	private int numbers;		// 투표율 구하기위한 변수선언 
+	private String name;			// 투표율 구하기위한 변수선언 
+	private String voterNm;			// 투표자명
+	private String voteDt;			// 투표일시
+	
+	private Integer custNo;			//고객번호
+	
+	
+	
+	private String pollQsq_10;
+    private String pollQsq_20; 
+    private String pollQsq_30; 
+    private String pollQsq_40;
+	
+
+}

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml

@@ -73,6 +73,7 @@
 				 , REG_DT
 				 , UPD_NO
 				 , UPD_DT
+				 , CASE WHEN DATE_FORMAT(now(),'%Y%m%d') <![CDATA[<=]]> DATE_FORMAT(USE_EXP_DATE,'%Y%m%d') THEN 'Y' ELSE 'N' END AS USE_YN
 		 FROM TB_CUST_GIFTCARD CG 
 		 WHERE 1=1 
 		  AND CUST_NO = #{custNo}

+ 114 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -396,6 +396,9 @@
 		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		        <if test="exceptPlanSq != null and exceptPlanSq != ''"> <!-- 제외할이벤트 -->
+		        AND    P.PLAN_SQ != #{exceptPlanSq}
+		        </if>
 		       ) Z
 		ORDER  BY NEW_YN DESC, END_DAYS
 	</select>
@@ -927,4 +930,115 @@
 		  AND PF.DISP_YN ='Y'
 		  AND P.SITE_CD = #{siteCd}
 	</select>
+	
+	
+	<!-- 설문조사 정보 -->
+	<select id="getPollQuestionInfo" parameterType="Plan" resultType="Poll">
+		/* TsfPlanning.getPollQuestionInfo */
+		 SELECT P.PLAN_SQ 
+		      ,P.PLAN_NM 
+		      ,P.PLAN_GB 
+		      ,P.POLL_SQ 
+		      ,TP.POLL_TITLE 
+		      ,DATE_FORMAT(TP.POLL_STDT,'%Y-%m-%d') AS POLL_STDT
+		      ,DATE_FORMAT(TP.POLL_EDDT,'%Y-%m-%d') AS POLL_EDDT
+		      ,TP.DUP_PARTI_YN 
+		      ,TP.FST_COM_YN 
+		      ,TP.PARTI_CNT 
+		      ,TP.POLL_CONTENT 
+		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ 
+		WHERE 1=1
+		  AND P.PLAN_SQ = 18
+		  AND P.SITE_CD = #{siteCd}
+		  AND P.OPEN_YN ='Y'
+		  AND P.DEL_YN ='N'
+		  AND TP.DEL_YN = 'N'
+		  AND NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT 
+		  AND NOW() BETWEEN TP.POLL_STDT AND TP.POLL_EDDT 
+		 <if test="frontGb != null and frontGb != ''">
+		  AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
+		</if>
+	</select>
+	
+	<!-- 설문조사 질문내용 -->
+	<select id="getPollQuestionList" parameterType="Plan" resultType="Poll">
+		/* TsfPlanning.getPollQuestionList */
+		SELECT  P.PLAN_SQ 
+		      ,P.PLAN_NM 
+		      ,P.POLL_SQ 
+		      ,TP.POLL_TITLE 
+		      ,TP.POLL_STDT 
+		      ,TP.POLL_EDDT 
+		      ,TP.DUP_PARTI_YN 
+		      ,TP.FST_COM_YN 
+		      ,TP.PARTI_CNT 
+		      ,TP.POLL_CONTENT 
+		      ,PQ.POLL_QSQ 
+			  ,PQ.POLL_QTITLE 
+			  ,PQ.POLL_QTYPE 
+			  ,PQ.POLL_QVAL1 
+			  ,PQ.POLL_QVAL2
+			  ,PQ.POLL_QVAL3 
+			  ,PQ.POLL_QVAL4 
+			  ,PQ.POLL_QVAL5 
+			  ,PQ.POLL_QVAL6 
+			  ,PQ.POLL_QVAL7 
+			  ,PQ.POLL_QVAL8 
+			  ,PQ.POLL_QVAL9
+			  ,PQ.POLL_QVAL10
+		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ AND P.POLL_SQ = TP.POLL_SQ
+		 		       INNER JOIN TB_POLL_QUESTION PQ ON TP.POLL_SQ = PQ.POLL_SQ AND TP.POLL_SQ = PQ.POLL_SQ
+		WHERE 1=1
+		 AND P.PLAN_SQ = #{planSq}
+		 AND P.SITE_CD =  #{siteCd}
+		 AND P.OPEN_YN ='Y'
+		 AND P.DEL_YN ='N'
+		 AND PQ.DEL_YN = 'N'
+		 AND TP.DEL_YN = 'N'
+		 AND NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT 
+		 AND NOW() BETWEEN TP.POLL_STDT AND TP.POLL_EDDT
+		 <if test="frontGb != null and frontGb != ''">
+		  AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
+		</if>
+		ORDER BY PQ.POLL_QSQ 	
+	</select>
+	
+	<!-- 고객설문조사 등록 -->
+	<insert id="savePollCustAnswer" parameterType="Poll">
+		/* TsfPlanning.savePollCustAnswer */
+		INSERT INTO TB_POLL_ANSWER
+		       (POLL_QSQ
+		       , ANS_CUST_NO
+		       , POLL_QTYPE
+		       , DUMMY
+		       , REG_NO
+		       , REG_DT
+		       )
+		VALUES
+		       (#{pollQsq}
+		       , #{custNo}
+		       , (SELECT POLL_QTYPE FROM TB_POLL_QUESTION WHERE POLL_QSQ = #{pollQsq})
+		       , #{dummy}
+		       , #{custNo}
+		       , CURRENT_TIMESTAMP
+		       )	
+	</insert>
+	
+	<!-- 설문자 중복 카운트 -->
+	<select id="getCustAnswerCount" parameterType="Plan" resultType="int">
+		/* TsfPlanning.getCustAnswerCount */
+		SELECT COUNT(PA.ANS_CUST_NO) AS COUNT
+		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ 
+		               INNER JOIN TB_POLL_QUESTION PQ ON TP.POLL_SQ = PQ.POLL_SQ
+                	   INNER JOIN TB_POLL_ANSWER PA ON PQ.POLL_QSQ = PA.POLL_QSQ 
+		WHERE 1=1
+		 AND P.PLAN_SQ = #{planSq}
+		 AND P.SITE_CD =  #{siteCd} /**P*/
+		 AND P.OPEN_YN ='Y'
+		 AND P.DEL_YN ='N'
+		 AND TP.DEL_YN = 'N'
+		 AND PA.ANS_CUST_NO = #{custNo}
+		 AND NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT 
+		 AND NOW() BETWEEN TP.POLL_STDT AND TP.POLL_EDDT	
+	</select>
 </mapper>

+ 98 - 0
src/main/webapp/WEB-INF/views/mob/goods/CardPrmtFormMob.html

@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CardPrmtFormWeb.html
+ * @desc    : 카드 혜택안내 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.02   eskim        최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="exampleFullLabel">카드혜택</h5>
+		</div>
+		<div class="modal-body" th:if="${cardInfoList != null and !cardInfoList.empty}">
+			<div class="pop_cont">
+				<th:block th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'A' }">
+				<div class="benefit_blk" th:if="${status.first}">
+					<h6>할인혜택</h6>
+					<div class="tbl type1" th:if="${status.first}">
+						<table th:if="${status.first}">
+							<colgroup  th:if="${status.first}">
+								<col width="85"  th:if="${status.first}">
+								<col width="*"  th:if="${status.first}">
+							</colgroup>
+							<tbody  th:if="${status.last}">
+								<tr >
+									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
+									<td>
+										<div class="info_card">
+											<th:block th:if="${cardInfo.dcGb == '3'}">
+											<p th:text="${cardInfo.prmtNm}">5% 즉시할인</p>
+											<p th:text="${cardInfo.note}">할인</p>
+											</th:block>
+											<th:block th:unless="${cardInfo.dcGb == '3'}">
+											<p th:text="${#numbers.formatInteger(cardInfo.dcVal, 0,'COMMA')+ cardInfo.dcWayNm + ' ' + cardInfo.prmtGbNm}">5% 즉시할인</p>
+											<p th:text="${cardInfo.minPayAmt + '만원 이상 구매 시 최대 ' + #numbers.formatInteger(cardInfo.maxDcAmt, 0,'COMMA') + '원 할인 '}">7만원 이상 구매 시 최대 5만원 할인</p>
+											</th:block>
+											<th:block th:if="${not #strings.isEmpty(cardInfo.linkUrl)}"><a th:href="${cardInfo.linkUrl}" target="_blank" class="link" >자세히보기</a></th:block>
+										</div>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				</th:block>
+				<th:block th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'B' }">
+				<div class="benefit_blk" th:if="${status.first}">
+					<h6>무이자 할부</h6>
+					<div class="tbl type1" th:if="${status.first}">
+						<table th:if="${status.first}">
+							<colgroup th:if="${status.first}">
+								<col width="85" th:if="${status.first}">
+								<col width="*" th:if="${status.first}">
+							</colgroup>
+							<tbody th:if="${status.first}">
+								<tr>
+									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
+									<td>
+										<div class="info_card">
+											<p th:text="${cardInfo.minNoItrt + '~' + cardInfo.maxNoItrt + '개월 무이자'}">2~6개월 무이자</p>
+											<p th:text="${cardInfo.minPayAmt + '만원 이상 구매 시'}">5만원 이상 구매 시</p>
+										</div>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				</th:block>
+				<th:block th:each="cardInfo, status : ${cardInfoList}" >
+				<div class="benefit_blk"  th:if="${cardInfo.prmtGb == 'B' and not #strings.isEmpty(cardInfo.note) and cardInfo.rownum ==  1}">
+					<th:block >
+					<h6>부분 무이자 할부</h6>
+					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(cardInfo.note))}"></th:block>
+					<div class="info_txt">
+						<ul>
+							<li>무이자할부는 행사기간 동안 실 결제금액 기준으로 가능</li>
+							<li>법인, 체크, 기프트 카드는 부분 무이자 할부 제외</li>
+						</ul>
+					</div>
+					</th:block>
+				</div>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>	
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_card_benefit')" class="close-modal">Close</a>
+</html>

+ 186 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsCouponFormMob.html

@@ -0,0 +1,186 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsCouponFormMob.html
+ * @desc    : 상품 쿠폰 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.11   eskim        최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document" th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="modalScrollLabel">할인쿠폰 받기</h5>
+		</div>
+		<div class="modal-body">
+		<form name="goodsCouponForm" id="goodsCouponForm" method="post">
+		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}"/>
+			<div class="pop_cont">
+				<ul class="coupon_list">
+					<li th:each="goodsCoupon, status : ${goodsCouponList}">
+						<div class="coupon" >
+							<div>
+								<p class="cp_name" th:text="${goodsCoupon.cpnNm}">
+									TBJ 시즌오프 20% 할인쿠폰
+								</p>
+								<p class="cp_cont">
+									<span th:if="${goodsCoupon.dcWay == 'G240_10'}"><em th:text="${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}">12,399,900</em>원</span>
+									<span th:unless="${goodsCoupon.dcWay == 'G240_10'}"><em th:text="|${goodsCoupon.dcVal}%|">40%</em></span>
+								</p>
+								<p class="cp_condition">
+									<th:block th:text="${#numbers.formatInteger(goodsCoupon.buyLimitAmt, 0,'COMMA')}"></th:block>원 이상 구매 시 최대 <th:block th:text="${#numbers.formatInteger(goodsCoupon.maxDcAmt, 0,'COMMA')}"></th:block>원 할인
+									<span>1인 최대 <th:block th:text="${(goodsCoupon.custPubLimitQty > 0) ? #numbers.formatInteger(goodsCoupon.custPubLimitQty, 0,'COMMA') +'장' : '무제한'}"></span>
+								</p>
+							</div>
+							<th:block th:if="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
+							<button type="button" class="btn btn_dark btn_block btn_coupon_down"   disabled="disabled"><span>받기완료</span></button>
+							</th:block>
+							<th:block th:unless="${goodsCoupon.custPubLimitQty > 0 and goodsCoupon.custPubLimitQty <= goodsCoupon.custCouponCnt}">
+							<button type="button" class="btn btn_dark btn_block btn_coupon_down" th:attr="cpnId=${goodsCoupon.cpnId}" th:id="${'coupon_'+goodsCoupon.cpnId}" onclick="fnGoodsCouponDown(this);"><span>쿠폰받기</span></button>
+							</th:block>
+						</div>
+					</li>
+				</ul>
+			</div>
+		</form>	
+		</div>
+		<div class="modal-footer">
+			<button type="button" class="btn btn_primary btn_all_cpdown" onclick="fnGoodsCouponDownAll();"><span>쿠폰 모두 받기</span></button>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_goods_coupon')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+	// 쿠폰 다운로드
+	var fnGoodsCouponDown = function(obj){
+	
+		if (!cfCheckLogin()) {
+			cfnGoToPage(_PAGE_LOGIN);
+			return false;
+		}
+		
+		let $obj = $(obj);
+		let cpnId = $obj.attr('cpnId');
+		let goodsCd = $('#goodsCouponForm input[name=goodsCd]').val();
+		
+		 gagajf.ajaxJsonSubmit(_PAGE_GOODS_CPN_DOWNLOAD, JSON.stringify({goodsCd: goodsCd, cpnId: cpnId}), fnGoodsCouponCallBack);
+		 
+	//쿠폰이 발급되었습니다
+	//죄송합니다. 쿠폰이 모두 소진되었습니다
+	//죄송합니다. 해당 쿠폰은 다운로드가 불가합니다.
+	}
+	
+	// 쿠폰다운로드 콜백
+	var fnGoodsCouponCallBack = function(result){
+		if (result.status == "200"){
+			let cpnId = result.params.cpnId;
+			if (result.goodsCouponList == null) return;
+			let list = result.goodsCouponList;
+
+			list.forEach(function(coupon){
+				if (coupon.cpnId == cpnId){
+					if (Number(coupon.custPubLimitQty) > 0){
+						if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
+							$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+						}
+					}
+					if (Number(coupon.TotPubLimitQty) > 0){
+						if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
+							$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+							$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+						}
+					}
+				}
+			});
+		}
+		jfCouponCheck();
+	}
+	
+	
+	// 쿠폰 전체 다운로드
+	var fnGoodsCouponDownAll = function(){
+		//00개 쿠폰이 발급되었습니다.
+		let couponDownAbleYn = "N";
+		let arrCpnId = [];
+		$('.btn_coupon_down').each(function(){
+			if (!$(this).attr('disabled')){
+				couponDownAbleYn = "Y";
+				arrCpnId.push($(this).attr('cpnId'));
+			}
+		});	
+		
+		if ("N" == couponDownAbleYn){
+			mcxDialog.alert("다운 받을 쿠폰이 없습니다.");
+			return false;
+		}
+		let goodsCd = $('#goodsCouponForm input[name=goodsCd]').val();
+		gagajf.ajaxJsonSubmit(_PAGE_GOODS_CPN_DOWNLOAD, JSON.stringify({goodsCd: goodsCd, arrCpnId: arrCpnId}), fnGoodsCouponDownAllBack);
+		
+	}
+	
+	// 쿠폰 전체 다운로드 콜백
+	var fnGoodsCouponDownAllBack = function(result){
+		if (result.status == "200"){
+			if (result.goodsCouponList == null) return;
+			let list = result.goodsCouponList;
+
+			list.forEach(function(coupon){
+				$('.btn_coupon_down').each(function(){
+					if (!$(this).attr('disabled')){
+						let cpnId = $(this).attr('cpnId');
+						if (coupon.cpnId == cpnId){
+							if (Number(coupon.custPubLimitQty) > 0){
+								if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
+									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+								}
+							}
+							if (Number(coupon.TotPubLimitQty) > 0){
+								if (Number(coupon.TotPubLimitQty) <= Number(coupon.CustCouponCnt)){
+									$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+									$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+								}
+							}
+						}
+					}
+				});	
+			});
+		}
+		jfCouponCheck();
+	}
+	
+	
+	var jfCouponCheck = function(){
+		let couponDownAbleYn = "N";
+		$('.btn_coupon_down').each(function(){
+			if (!$(this).attr('disabled')){
+				couponDownAbleYn = "Y";
+			}
+		});	
+		
+		if(couponDownAbleYn == "N"){
+			$('.btn_all_cpdown').addClass('btn_coupon_done');
+			$('.btn_all_cpdown').attr('disabled', true);
+			$('.btn_all_cpdown').find('span').text('쿠폰 모두 받기 완료');
+		}
+	}	
+	
+	$(document).ready(function() {
+		
+		jfCouponCheck();
+	});
+	
+	
+/*]]>*/
+</script>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 7 - 1422
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html


+ 357 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html

@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsDetailQnaFormMob.html
+ * @desc	: 상품 문의정보 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR		 DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.04   eskim	   최초 작성
+ *******************************************************************************
+ -->
+	<!-- 상품문의 리스트 내용 -->
+<div class="pd_qnalist">
+    <div class="info_txt">
+        <ul>
+            <li>상품에 대해 궁금한 점이 있으시다면 문의해주세요.</li>
+            <li>배송, 주문/결제, 취소/반품/교환/환불, 회원, 쿠폰/포인트, 이벤트 등의 자세한 문의사항은 고객센터 &gt; 1:1문의를 이용하여 주시기 바랍니다.</li>
+        </ul>              
+        <div class="btn_group_flex">
+            <div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_GOODS_QNA);"><span>고객센터 1:1문의</span></button></div>
+        </div>     
+    </div>
+    <div class="qna_list">
+        <!-- 나열조건결과 있을 때 노출 내용 -->
+        <div class="yesdata">
+            <div class="form_field check_secret">
+                <input id="except_secret" type="checkbox"><label for="except_secret"><span>비밀글제외</span></label>
+            </div>
+            <div class="ui_row">
+                <div class="foldGroup case2">
+                    <!-- list2 -->
+                    <ul>
+                        <li class="my_qna"><!-- 내가 쓴 글에 클래스 my_qna 추가 -->
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state done">답변완료</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"><i class="ico ico_myqna"></i><i class="ico ico_secret"></i></span>
+                                            </div>
+                                            <div class="lap2"><span>상품을 받았는데, 옷의 색상이 화면과 다릅니다. </span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                                <!-- 내 1대1문의 답변 -->
+                                <div class="fold_answer">
+                                    <div>
+                                        <div class="answer_body">
+                                            안녕하세요, 고객님. 스타일24 담당자 배수지 입니다. <br>
+                                            문의주신 해당 상품의 선물하기는 모바일에서만 사용이 가능합니다. <br>
+                                            이외 궁금하신 사항이 있으시면 1:1문의나 고객센터(1544-5336)로 문의 부탁 드립니다. <br>
+                                            고객 만족을 위해 더욱 더 노력하는 스타일24가 되겠습니다. <br>
+                                            좋은 하루 보내세요, 감사합니다.
+                                        </div>
+                                        <div class="answer_foot">
+                                            <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                            <button type="button" class="btn_delete"><span>삭제</span></button>
+                                        </div>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 답변 -->
+                            </div>
+                        </li>
+                        <li>
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state done">답변완료</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"></span>
+                                            </div>
+                                            <div class="lap2"><span>상품을 받았는데, 옷의 색상이 화면과 다릅니다. </span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                                <!-- 내 1대1문의 답변 -->
+                                <div class="fold_answer">
+                                    <div>
+                                        <div class="answer_body">
+                                            안녕하세요, 고객님. 스타일24 담당자 배수지 입니다. <br>
+                                            문의주신 해당 상품의 선물하기는 모바일에서만 사용이 가능합니다. <br>
+                                            이외 궁금하신 사항이 있으시면 1:1문의나 고객센터(1544-5336)로 문의 부탁 드립니다. <br>
+                                            고객 만족을 위해 더욱 더 노력하는 스타일24가 되겠습니다. <br>
+                                            좋은 하루 보내세요, 감사합니다.
+                                        </div>
+                                        <div class="answer_foot">
+                                            <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                            <button type="button" class="btn_delete"><span>삭제</span></button>
+                                        </div>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 답변 -->
+                            </div>
+                        </li>
+                        <li>
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state doing">처리중</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"></span>
+                                            </div>
+                                            <div class="lap2"><span>상품을 받았는데, 옷의 색상이 화면과 다릅니다. </span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                            </div>
+                        </li>		
+                        <li>
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state doing">처리중</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"></span>
+                                            </div>
+                                            <div class="lap2"><span>상품을 받았는데, 옷의 색상이 화면과 다릅니다. </span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                            </div>
+                        </li>	
+                        <li>
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state doing">처리중</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"></span>
+                                            </div>
+                                            <div class="lap2"><span>상품을 받았는데, 옷의 색상이 화면과 다릅니다. </span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                            </div>
+                        </li>
+                        <li>
+                            <div class="fold_head">
+                                <a href="javascript:void(0)">
+                                    <div>
+                                        <div class="fold_tit">
+                                            <div class="lap1">
+                                                <span class="fold_state done">답변완료</span> <!-- 답변완료 : done / 처리중 : doing -->
+                                                <span class="prod"><i class="ico ico_secret"></i></span>
+                                            </div>
+                                            <div class="lap2"><span>비밀글입니다.</span></div>
+                                        </div>
+                                        <span class="id">**nana</span><span class="data">2020.12.02</span>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="fold_cont">
+                                <!-- 내 1대1문의 내용 -->
+                                <div class="fold_detail">
+                                    <div>
+                                        <p>
+                                            PC에서 남성 분또 맨투맨 (T203TS120P)<br>
+                                            오렌지 컬러 선물하려고 하는데 선물을 할 수 없다고 나오네요.<br>
+                                            다른 컬러는 선물이 가능한 것 같은데 오렌지 컬러는 왜 안 되는건가요?<br>
+                                            바쁘시겠지만 확인 부탁드립니다.
+                                        </p>
+                                    </div>
+                                </div>
+                                <!-- //내 1대1문의 내용 -->
+                            </div>
+                        </li>	
+                    </ul>
+                    <!-- //list2 -->
+                </div>
+            </div>
+        </div>
+        <!-- //나열조건결과 있을 때 노출 내용 -->
+        <!-- 나열조건결과 없을 때 노출 내용 -->
+        <div class="nodata">
+            <div class="txt_box">
+                <p>
+                    등록된 상품문의가 없습니다.
+                </p>
+            </div>
+        </div>
+        <!-- //나열조건결과 없을 때 노출 내용 -->
+    </div>
+    <div class="btn_group_flex">
+        <div><button type="button" class="btn btn_dark" id="btn_pdQnaWrite_pop" th:onclick="cfGoodsQngCreate([[${goodsInfo.goodsCd}]] )"><span>상품 문의하기</span></button></div>
+    </div>
+</div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	var fnGetList = function() {
+
+		$('#goodsQnaForm  input[name="secretYn"]').val('');
+		if ($("#goodsQnaForm input:checkbox[name=except_secret]").is(':checked')){
+			$('#goodsQnaForm  input[name="secretYn"]').val('N');
+		}
+		// Initialize a pagination
+		gagaPaging.init('goodsQnaForm', fnGetListCallback, 'pageNav', 20);
+
+		// Load data
+		gagaPaging.load(1);
+	}
+	
+	var fnGetListCallback = function(result) {
+		$('#ulGoodsQna').html('');
+		$('#goodsQnaForm').find('.nodata').hide();
+		// 목록
+		if (result.dataList != null && result.dataList.length > 0) {
+			
+			$.each(result.dataList, function(idx, item) {
+				let tag = '<li class="';  // <!-- 내가 쓴 글에 클래스 my_qna 추가 -->
+				if (item.selfGb == 1){
+					tag += ' my_qna';	
+				}else if (item.secretYn == "Y"){
+					tag += ' secret_qna';
+				}
+				tag += ' ">\n';  // <!-- 내가 쓴 글에 클래스 my_qna 추가 -->
+				tag += '	<div class="fold_head">\n';
+				tag += '		<a href="javascript:void(0)">\n';
+				tag += '			<div>\n';
+				tag += '				<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
+				tag += '				<div class="fold_tit">\n';
+				tag += '					<span>' + item.questContent + '</span>\n';
+				if (item.selfGb == 1){
+				tag += '					<i class="ico ico_myqna"></i>\n';	//내가 쓴 글에 추가되는 아이콘
+				}
+				if (item.secretYn == "Y"){
+				tag += '					<i class="ico ico_secret"></i>\n';	//비밀글에 추가되는 아이콘
+				}
+				tag += '				</div>\n';
+				tag += '				<div class="data">\n';
+				tag += '					<span class="wr_id">'+ item.maskingCustId+'</span>\n';
+				tag += '					<span class="wr_data">' + item.questDt + '</span>\n';
+				tag += '				</div>\n';
+				tag += '			</div>\n';
+				tag += '		</a>\n';
+				tag += '	</div>\n';
+				tag += '	<div class="fold_cont" style="display: none;">\n';
+				tag += '		<div class="fold_detail">\n'; //문의 내용
+				tag += '			<div>\n';
+				tag += '				<p>' + item.questContent + '</p>\n';
+				tag += '			</div>\n';
+				tag += '		</div>\n';
+				
+				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
+					tag += '	<div class="fold_answer">\n'; //문의 답변
+					tag += '		<div class="answer_head">답변이 등록되었습니다.</div>\n';
+					tag += '		<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '		<span class="data">' + item.ansDt + '</span>\n';
+					tag += '	</div>\n';
+				}
+				
+				tag += '	</div>\n';
+				tag += '</li>\n';
+				
+				$('#ulGoodsQna').append(tag);
+			});
+		} else {
+			$('#goodsQnaForm').find('.nodata').show();
+			$('#goodsQnaForm').find('.ui_foot').hide();
+		}
+
+		// Create pagination
+		gagaPaging.createPagination(result.paging.pageable);
+	}
+	
+	$(document).ready(function() {
+	//	fnGetList();
+	});
+	
+/*]]>*/
+</script>	
+ </html>

+ 160 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsInstockAlarmFormMob.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsInstockAlarmFormWeb.html
+ * @desc    : 재입고알림 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.02   eskim        최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="pushRestockLabel">재입고 알림 신청</h5>
+		</div>
+		<div class="modal-body">
+			<form name="goodsInstockAlarmForm" id="goodsInstockAlarmForm" method="post">
+			<input type="hidden" name="goodsCd" th:value="${goodsInfo.goodsCd}"/>
+			<input type="hidden" name="optCd1" th:value="${goodsInfo.colorCd}"/>
+			<input type="hidden" name="optCd" />
+			<input type="hidden" name="optCd2" />
+			<div class="pop_cont">
+				<div class="item_blk">
+					<div class="item_prod" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+						<div class="item_state">
+							<a href="javascript:void(0);" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+								</div>
+								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
+								<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+								<p class="itemPrice"><th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"> 134,100</th:block>
+									<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</span>
+									<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+								</p>
+							</a>
+						</div>
+					</div>
+				</div>
+				<th:block th:if="${goodsInfo.selfGoodsYn =='Y' }">
+				<div class="select_blk" th:if="${goodsOption2List != null and !goodsOption2List.empty}" >
+					<h6>사이즈 선택</h6>
+					<div class="opt_size">
+						<div class="form_field">
+							<div th:each="goodsOption2, status : ${goodsOption2List}">
+								<th:block th:if="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" >
+								<input type="radio" name="opt" th:id="${'alarmSize'+goodsOption2.optCd}" th:value="${goodsOption2.optCd2}" th:attr="optCd=${goodsOption2.optCd}" >
+								<label th:for="${'alarmSize'+goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" >90</span></label>
+								</th:block>
+							</div>
+						</div>
+					</div>
+				</div>
+				</th:block>
+				<th:block th:if="${goodsInfo.selfGoodsYn =='N' }">
+				<div class="select_blk">
+					<h6>옵션 선택</h6>
+					<div class="opt_select">
+						<div class="opt_header">
+							<span class="title">옵션</span>
+							<button type="button" id="btn_infoSize_pop" class="btn_popup"><span>사이즈정보</span></button>
+						</div>
+						<div class="form_field">
+							<div class="select_custom item_opt3">
+								<div class="combo">
+									<div class="select">선택</div>
+									<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+										<li class="selected">선택</li> 
+										<li>상품옵션01</li>
+										<li>상품옵션02</li>
+										<li>상품옵션03</li>
+										<li aria-disabled="true">
+											<div>상품옵션05</div>
+											<div>120,000원</div>
+										</li>
+										<li>상품옵션06</li>
+										<li aria-disabled="true" data-soldout="true">
+											<div>상품옵션07</div>
+											<div>120,000원</div>
+										</li>
+									</ul>
+								</div>
+							</div>
+						</div>
+						<div class="form_field">
+							<div class="select_custom item_opt4" disabled>
+								<div class="combo">
+									<div class="select">선택</div>
+									<ul class="list">
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+										<li class="selected">선택</li> 
+										<li>상품옵션11</li>
+										<li>상품옵션12</li>
+										<li>상품옵션13</li>
+										<li aria-disabled="true">
+											<div>상품옵션15</div>
+											<div>120,000원</div>
+										</li>
+										<li>상품옵션16</li>
+										<li aria-disabled="true" data-soldout="true">
+											<div>상품옵션17</div>
+											<div>120,000원</div>
+										</li>
+									</ul>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				</th:block>
+			</div>
+			</form>
+		</div>
+		<div class="modal-footer">
+			<button type="button"  class="btn btn_dark" onclick="jfInstockAlarm();"><span>신청</span></button>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_instock_alarm')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	
+	var jfInstockAlarm = function(){
+	
+		let optCd2 = "";
+		let optCd = "";
+		$("#goodsInstockAlarmForm input:radio[name=opt]").each(function(){
+			if ($(this).is(':checked')){
+				optCd2 = $(this).val();
+				optCd = $(this).attr('optCd');
+			}
+		});
+
+		if (gagajf.isNull(optCd2)){
+			mcxDialog.alert("사이즈를 선택해주세요.");
+			return false;
+		}
+		$("#goodsInstockAlarmForm input[name=optCd]").val(optCd);
+		$("#goodsInstockAlarmForm input[name=optCd2]").val(optCd2);
+		
+		
+		gagajf.ajaxFormSubmit('/goods/instock/alarm/save'
+				, $('#goodsInstockAlarmForm')
+				, function() {
+					cfCloseLayer('layer_instock_alarm');
+				}
+		);
+	}
+/*]]>*/
+</script>
+
+</html>

+ 119 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html

@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsQnaDetailFormMob.html
+ * @desc    : 상품 문의 등록 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.04   eskim        최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="exampleFullLabel">상품 문의하기</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="info_txt">
+					<ul>
+						<li>배송, 주문/결제, 취소/반품/교환/환불, 회원, 쿠폰/포인트, 이벤트 등의 자세한 문의사항은 고객센터 &gt; 1:1문의를 이용하여 주시기 바랍니다.</li>
+						<li>상품문의에 부합하지 않는 광고, 이유없는 비방, 욕설 및 오해의 소지가 있는 문의건에 대해서는 사전 통보 없이 삭제 될 수 있습니다.</li>
+						<li>답변은 마이페이지 &gt; 상품 문의에서 확인 하실 수 있습니다.</li>
+					</ul>
+				</div>
+				<div class="form_field">
+					<div class="input_box">
+						<div class="lap">
+							<textarea class="doc_itemqna" name="" id="" cols="30" rows="10" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+							<p class="txt_cnt">
+								<span id="itemqna_cnt" class="itemqna_cnt"><em class="c_primary">0</em>/500자</span>
+							</p>   
+						</div>           
+						<div class="secret_box">
+							<input id="wr_secret" type="checkbox"><label for="wr_secret"><span>비밀글설정</span></label>
+						</div>
+					</div> 
+				</div>
+				<div class="push_box">
+					<dl>
+						<dt>알림톡 수신 여부</dt>
+						<dd>
+							<div class="form_field">
+								<div>
+									<input type="radio" name="rdi-push" id="rdi-push1" value="" checked="">
+									<label for="rdi-push1"><span>수신</span></label>
+								</div>
+								<div>
+									<input type="radio" name="rdi-push" id="rdi-push2" value="">
+									<label for="rdi-push2"><span>미수신</span></label>
+								</div>
+							</div>
+						</dd>
+					</dl>
+				</div>
+			</div>	
+		</div>	
+		<div class="modal-footer">
+			<div class="btn_group_flex">
+				<div><button type="button" class="btn btn_dark"><span>등록</span></button></div>
+			</div>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_goods_qna_reg')" class="close-modal">Close</a> 	
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+	// 상품문의 작성 > 글자수 체크
+	$('.pd_qnawrite_pop .doc_itemqna').keyup(function (e){
+		let contentQna = $(this).val();
+		$('#itemqna_cnt').html("(<em class='c_primary'>"+contentQna.length+"</em>/500자)");  
+		if (contentQna.length > 500){
+			alert("최대 500자까지 입력 가능합니다.");
+			$(this).val(contentQna.substring(0, 500));
+			$('#itemqna_cnt').html("(<em class='c_primary'>500</em>/500자)");
+		}
+	});
+	
+	// 저장
+	$('#btnGoodsQnaSave').on('click', function() {
+		
+		// 테스트용
+/* 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action')
+				, $('#goodsQnaDetailForm')
+				, function() {
+					mcxDialog.alert("상품 문의가 등록되었습니다. 빠른 시일 내에 답변드리겠습니다.");
+				}
+		); */
+		
+		// 입력 값 체크
+		if (gagajf.isNull($("#goodsQnaDetailForm  textarea[name=questContent]").val())){
+			mcxDialog.alert("문의내용을 입력해주세요.");
+			return false;
+		}
+		
+		mcxDialog.confirm("저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action')
+						, $('#goodsQnaDetailForm')
+						, function() {
+							mcxDialog.alert("상품 문의가 등록되었습니다. 빠른 시일 내에 답변드리겠습니다.");
+						}
+				);
+			}
+		});
+	
+	});
+
+/*]]>*/
+</script>
+ </html>

+ 64 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaFormMob.html

@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsQnaFormMob.html
+ * @desc	: 상품 문의 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.04   eskim		최초 작성
+ *******************************************************************************
+ -->
+ <div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<!-- 해당상품 -->
+			<div class="item_blk">
+				<div class="item_prod">
+					<div class="item_state">
+						<a href="#none" class="itemLink">
+							<div class="itemPic">
+								<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+							</div>
+							<p class="itemBrand">NBA</p>
+							<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+						</a>
+					</div>
+				</div>
+			</div>
+			<!-- //해당상품 -->
+		</div>
+		<div class="modal-body" id="goodsDealQna">
+			
+		</div>
+		<div class="modal-footer">
+			
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_goods_qna')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 구성 상품 상세 문의
+	var fnGoodsDetailQna = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+	}
+	
+	$(document).ready( function() {
+
+		// 상품평정보 
+		var params = new Object();
+		let goodsCd = [[${goodsInfo.goodsCd}]]
+		params.goodsCd = goodsCd;
+		fnGoodsDetailQna(params);  // ajax html
+		
+	});	
+/*]]>*/
+</script>
+
+ </html>

+ 95 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsShopBenefitFormMob.html
+ * @desc    : 쇼핑혜택 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.04   eskim        최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="exampleFullLabel">쇼핑혜택</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="benefit_blk" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (goodsInfo.prePntUsableYn == 'Y')}">
+					<h6>할인혜택</h6>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="50%">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr th:if="${(goodsInfo.prePntUsableYn == 'Y')}">
+									<th>즉시 할인</th>
+									<td th:text="|${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}원 할인|">50% 할인</td>
+								</tr>
+								<tr th:if="${(goodsCouponList != null and !goodsCouponList.empty)}">
+									<th>쿠폰할인</th>
+									<td th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">최대
+									<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
+									<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
+									 할인</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<div class="benefit_blk">
+					<h6>다다익선</h6>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="50%">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>9,999개 이상 구매 시</th>
+									<td>9,999,999원 할인</td>
+								</tr>
+								<tr>
+									<th>9,999개 이상 구매 시</th>
+									<td>20% 할인</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>	   
+				<div class="benefit_blk">
+					<h6>사은품</h6>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="50%">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>99,999,999원 이상 구매 시</th>
+									<td>미니언즈 우산 99개 증정</td>
+								</tr>
+								<tr>
+									<th>99,999,999원 이상 구매 시</th>
+									<td>미니언즈 우산 99개 증정 외 택1</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>					 
+			</div>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_shopping_benefit')" class="close-modal">Close</a> 	
+ </html>

+ 1026 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsSizeInfoFormMob.html

@@ -0,0 +1,1026 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsSizeInfoFormMob.html
+ * @desc    : 사이즈 안내 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.08   eskim        최초 작성
+ *******************************************************************************
+ -->
+ <div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="exampleFullLabel">사이즈 정보</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="tab_nav">
+					<ul>
+						<li class=""><a href="javascript:void(0)">실측 사이즈</a></li>
+						<li class=""><a href="javascript:void(0)">표준 사이즈</a></li>
+						<li class="active"><a href="javascript:void(0)">측정 사이즈</a></li>
+					</ul>
+				</div>
+				<div class="tab_cont_wrap">
+					<div class="tab_cont" style="display: none;">
+						<!-- 실측 사이즈 -->
+						<div class="size_head">
+							<span class="tit_sub">TBJ</span>
+							<span class="tit_header">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</span>
+						</div>
+						<div class="size_cont">
+							<div class="size_tbl_box">
+								<p class="size_unit">단위 : cm</p>
+								<div class="tbl type2">
+									<table>
+										<colgroup>
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+										</colgroup>
+										<thead>
+											<tr>
+												<th scope="col">&nbsp;</th>
+												<th scope="col">M</th>
+												<th scope="col">L</th>
+												<th scope="col">XL</th>
+												<th scope="col">XXL</th>
+											</tr>
+										</thead>
+										<tbody>
+											<tr>
+												<th scope="col">가슴둘레</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>
+											<tr>
+												<th scope="col">어깨너비</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>
+											<tr>
+												<th scope="col">팔길이</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>
+											<tr>
+												<th scope="col">총길이</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>
+										</tbody>
+									</table>
+								</div>
+							</div>
+						</div>
+						<!-- //실측 사이즈 -->
+					</div>
+					<div class="tab_cont" style="display: none;">
+						<!-- 표준 사이즈 카테고리 구분일때 -->
+						<div class="size_head">
+							<div class="category_open">상의</div>
+							<div class="category_box">
+								<div class="lap">
+									<div class="category_close">카테고리닫기</div>
+									<div class="category_list">
+										<!-- 표준 사이즈 > 카테고리 선택 -->
+										<div class="sub_tab_nav">
+											<ul>
+												<li class="active"><a href="javascript:void(0)">여성</a></li>
+												<li class=""><a href="javascript:void(0)">남성</a></li>
+												<li class=""><a href="javascript:void(0)">캐주얼</a></li>
+												<li class=""><a href="javascript:void(0)">유아동</a></li>
+												<li class=""><a href="javascript:void(0)">신발</a></li>
+												<li class=""><a href="javascript:void(0)">언더웨어</a></li>
+											</ul>
+										</div>
+										<!-- //표준 사이즈 > 카테고리 선택 -->
+									</div>
+								</div>
+							</div>
+						</div>
+						<div class="size_cont">
+							<div class="sub_tab_cont_wrap">
+								<!-- 표준 사이즈 > 카테고리 내용(여성) -->
+								<div class="sub_tab_cont" style="display: block;">
+									<div class="size_tbl_box">
+										<h6>여성 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>여성 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(여성) --> 
+								<!-- 표준 사이즈 > 카테고리 내용(남성) -->
+								<div class="sub_tab_cont" style="display: none;">
+									<div class="size_tbl_box">
+										<h6>남성 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>남성 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(남성) -->
+								<!-- 표준 사이즈 > 카테고리 내용(캐주얼) -->
+								<div class="sub_tab_cont" style="display: none;">
+									<div class="size_tbl_box">
+										<h6>캐주얼 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>캐주얼 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(캐주얼) -->
+								<!-- 표준 사이즈 > 카테고리 내용(유아동) -->
+								<div class="sub_tab_cont" style="display: none;">
+									<div class="size_tbl_box">
+										<h6>유아동 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>유아동 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(유아동) -->     
+								<!-- 표준 사이즈 > 카테고리 내용(신발) -->
+								<div class="sub_tab_cont" style="display: none;">
+									<div class="size_tbl_box">
+										<h6>신발 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>신발 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(신발) -->      
+								<!-- 표준 사이즈 > 카테고리 내용(언더웨어) -->
+								<div class="sub_tab_cont" style="display: none;">
+									<div class="size_tbl_box">
+										<h6>언더웨어 상의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+													<col width="20%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">XS/44/85</th>
+														<th scope="col">S/55/90</th>
+														<th scope="col">M/66/95</th>
+														<th scope="col">L/77/100</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">가슴둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr> 
+													<tr>
+														<th scope="col">신장</th>
+														<td>95</td>
+														<td>100</td>
+														<td>105</td>
+														<td>110</td>
+													</tr>                                               
+												</tbody>
+											</table>
+										</div>
+									</div>
+									<div class="size_tbl_box">
+										<h6>언더웨어 하의</h6>
+										<p class="size_unit">단위 : cm</p>
+										<div class="tbl type2">
+											<table>
+												<colgroup>
+													<col width="20%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+													<col width="10%">
+												</colgroup>
+												<thead>
+													<tr>
+														<th scope="col">&nbsp;</th>
+														<th scope="col">27</th>
+														<th scope="col">28</th>
+														<th scope="col">29</th>
+														<th scope="col">30</th>
+														<th scope="col">32</th>
+														<th scope="col">34</th>
+														<th scope="col">36</th>
+														<th scope="col">38</th>
+													</tr>
+												</thead>
+												<tbody>
+													<tr>
+														<th scope="col">허리둘레</th>
+														<td>69</td>
+														<td>71</td>
+														<td>74</td>
+														<td>76</td>
+														<td>81</td>
+														<td>86</td>
+														<td>91</td>
+														<td>97</td>
+													</tr>                                    
+												</tbody>
+											</table>
+										</div>
+									</div>
+								</div>    
+								<!-- //표준 사이즈 > 카테고리 내용(언더웨어) -->
+							</div>                                                               
+						</div>
+						<div class="size_footer">
+							<div class="info_txt">
+								<ul>
+									<li>본 사이즈 조견표는 표준 가이드로, 각 제품마다 다소간의 차이는 있을 수 있습니다.</li>
+									<li>보다 자세한 사이즈는 각 상품 별 상품설명을 참조해주시기 바랍니다.</li>
+								</ul>
+							</div>
+						</div>
+						<!-- //표준 사이즈 카테고리별 구분일때 -->
+						<!-- 표준 사이즈 브랜드별 구분일때 -->
+						<div class="size_head">
+							<span class="tit_header">
+								페르지노몬티 FERGINO MONTI
+							</span>
+						</div>
+						<div class="size_cont">
+							<div class="size_tbl_box">
+								<h6>남성 상의</h6>
+								<p class="size_unit">단위 : cm</p>
+								<div class="tbl type2">
+									<table>
+										<colgroup>
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+											<col width="20%">
+										</colgroup>
+										<thead>
+											<tr>
+												<th scope="col">&nbsp;</th>
+												<th scope="col">XS/44/85</th>
+												<th scope="col">S/55/90</th>
+												<th scope="col">M/66/95</th>
+												<th scope="col">L/77/100</th>
+											</tr>
+										</thead>
+										<tbody>
+											<tr>
+												<th scope="col">가슴둘레</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>
+											<tr>
+												<th scope="col">허리둘레</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr> 
+											<tr>
+												<th scope="col">신장</th>
+												<td>95</td>
+												<td>100</td>
+												<td>105</td>
+												<td>110</td>
+											</tr>                                               
+										</tbody>
+									</table>
+								</div>
+							</div>
+							<div class="size_tbl_box">
+								<h6>남성 하의</h6>
+								<p class="size_unit">단위 : cm</p>
+								<div class="tbl type2">
+									<table>
+										<colgroup>
+											<col width="20%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+											<col width="10%">
+										</colgroup>
+										<thead>
+											<tr>
+												<th scope="col">&nbsp;</th>
+												<th scope="col">27</th>
+												<th scope="col">28</th>
+												<th scope="col">29</th>
+												<th scope="col">30</th>
+												<th scope="col">32</th>
+												<th scope="col">34</th>
+												<th scope="col">36</th>
+												<th scope="col">38</th>
+											</tr>
+										</thead>
+										<tbody>
+											<tr>
+												<th scope="col">허리둘레</th>
+												<td>69</td>
+												<td>71</td>
+												<td>74</td>
+												<td>76</td>
+												<td>81</td>
+												<td>86</td>
+												<td>91</td>
+												<td>97</td>
+											</tr>                                    
+										</tbody>
+									</table>
+								</div>
+							</div>                                                      
+						</div>
+						<div class="size_footer">
+							<div class="info_txt">
+								<ul>
+									<li>본 사이즈 조견표는 표준 가이드로, 각 제품마다 다소간의 차이는 있을 수 있습니다.</li>
+									<li>보다 자세한 사이즈는 각 상품 별 상품설명을 참조해주시기 바랍니다.</li>
+								</ul>
+							</div>
+						</div>
+						<!-- //표준 사이즈 브랜드 구분일때 -->                            
+					</div>   
+					<div class="tab_cont" style="display: block;">
+						<!-- 측정 사이즈 -->
+						<div class="size_head">
+							<div class="category_open">상의</div>
+							<div class="category_box">
+								<div class="lap">
+									<div class="category_close">카테고리닫기</div>
+									<div class="category_list">
+										<!-- 측정 사이즈 > 카테고리 선택 -->
+										<div class="sub_tab_nav">
+											<ul>
+												<li class="active"><a href="javascript:void(0)">상의</a></li>
+												<li><a href="javascript:void(0)">하의</a></li>
+												<li><a href="javascript:void(0)">가방</a></li>
+												<li><a href="javascript:void(0)">신발</a></li>
+												<li><a href="javascript:void(0)">언더웨어</a></li>
+											</ul>
+										</div>
+										<!-- //측정 사이즈 > 카테고리 선택 -->
+									</div>
+								</div>
+							</div>
+						</div>
+						<div class="size_cont">
+							<div class="sub_tab_cont_wrap">
+								<!-- 측정 사이즈 > 카테고리 내용(상의) -->
+								<div class="sub_tab_cont">
+									<span class="img_sizeinfo">
+										<img src="/images/pc/info_size_top.jpg" alt="상의 측정 사이즈">
+									</span>
+									<dl>
+										<div>
+											<dt>가슴둘레</dt>
+											<dd>양쪽 겨드랑이 밑선 단면을 잰 길이x2</dd>
+										</div>
+										<div>
+											<dt>어깨너비</dt>
+											<dd>좌측어깨에서 우측어깨끝 봉제선 단면을 잰 길이 (어깨봉제선이 없을경우 어깨길이와 팔길이는 측정 안함)</dd>
+										</div>
+										<div>
+											<dt>팔길이</dt>
+											<dd>어깨 봉제선부터 소매 끝까지 잰 길</dd>
+										</div>
+										<div>
+											<dt>총길이</dt>
+											<dd>카라부분(혹은 후드)를 제외 한 지점부터 밑단 끝까지 잰 길이 (라운드티셔츠의 경우 목라인을 포함 해 네크라인부터 밑단 끝까지의 길이를 측정)</dd>
+										</div>
+									</dl>
+								</div>    
+								<!-- //측정 사이즈 > 카테고리 내용(상의) -->
+								<!-- 측정 사이즈 > 카테고리 내용(하의) -->
+								<div class="sub_tab_cont">
+									<span class="img_sizeinfo">
+										<img src="/images/pc/info_size_pants.jpg" alt="하의 측정 사이즈">
+									</span>
+									<dl>
+										<div>
+											<dt>허리둘레</dt>
+											<dd>허리선을 일자로 맞추고 한쪽의 허리끝단부터 반대편 끝까지 단면을 잰 길이x2</dd>
+										</div>
+										<div>
+											<dt>밑위</dt>
+											<dd>허리부터 가랑이 끝점까지 잰 길이</dd>
+										</div>
+										<div>
+											<dt>엉덩이둘레</dt>
+											<dd>밑위 중간부분 단면을 잰 길이x2</dd>
+										</div>
+										<div>
+											<dt>허벅지둘레</dt>
+											<dd>가랑이 부분부터 바깥쪽 허벅지 끝나는 지점까지의 단면을 잰 길이x2</dd>
+										</div>
+										<div>
+											<dt>총길이</dt>
+											<dd>허리끝선부터 바지밑단 끝선 까지 잰 길이</dd>
+										</div>
+									</dl>
+								</div>    
+								<!-- //측정 사이즈 > 카테고리 내용(하의) -->      
+								<!-- 측정 사이즈 > 카테고리 내용(가방) -->
+								<div class="sub_tab_cont">
+									<span class="img_sizeinfo">
+										<img src="/images/pc/info_size_bag.jpg" alt="가방 측정 사이즈">
+									</span>
+									<dl>
+										<div>
+											<dt>가로</dt>
+											<dd>가장 넓은 부분의 수평 길이</dd>
+										</div>
+										<div>
+											<dt>세로</dt>
+											<dd>바닥부터 가방의 가로 중앙지점까지 수직 길이</dd>
+										</div>
+										<div>
+											<dt>끈길이</dt>
+											<dd>가방 끝의 전체 길이(길이 조절이 가능한 경우 최소~최대 길이 표기)</dd>
+										</div>
+										<div>
+											<dt>손잡이높이</dt>
+											<dd>가방의 가로 가운데 지점부터 손잡이를 세웠을 때의 가장 높은 부분까지의 높이</dd>
+										</div>
+										<div>
+											<dt>끈폭</dt>
+											<dd>가방 끈의 수평폭</dd>
+										</div>
+										<div>
+											<dt>폭</dt>
+											<dd>가방 옆 부분의 두께</dd>
+										</div>
+									</dl>
+								</div> 
+								<!-- //측정 사이즈 > 카테고리 내용(가방) -->
+								<!-- 측정 사이즈 > 카테고리 내용(신발) -->
+								<div class="sub_tab_cont">
+									<span class="img_sizeinfo">
+										<img src="/images/pc/info_size_shoe.jpg" alt="신발 측정 사이즈">
+									</span>
+									<dl>
+										<div>
+											<dt>굽높이</dt>
+											<dd>설명 필요</dd>
+										</div>
+										<div>
+											<dt>볼너비</dt>
+											<dd>설명 필요</dd>
+										</div>
+										<div>
+											<dt>총길이</dt>
+											<dd>설명 필요</dd>
+										</div>
+									</dl>
+									<!--<div class="info_txt">
+										<ul>
+											<li>
+												국내 브랜드는 브랜드, 스타일마다 사이즈가 다르게 전개될 수 있으니, 개별 상품 상세페이지에 기재된 상세 사이즈안내를 참조하세요.
+											</li>
+										</ul>
+									</div>-->
+								</div> 
+								<!-- //측정 사이즈 > 카테고리 내용(신발) --> 
+								<!-- 측정 사이즈 > 카테고리 내용(언더웨어) -->
+								<div class="sub_tab_cont">
+									<span class="img_sizeinfo">
+										<img src="/images/pc/info_size_underwear.jpg" alt="속옷 측정 사이즈">
+									</span>
+									<dl>
+										<div>
+											<dt>밑가슴둘레</dt>
+											<dd>유방의 바로 밑을 수평으로 잰 길이</dd>
+										</div>
+										<div>
+											<dt>컵</dt>
+											<dd>밑가슴둘레와 가슴둘레의 차이</dd>
+										</div>
+										<div>
+											<dt>가슴둘레</dt>
+											<dd>유방을중심으로 수평으로 잰길이</dd>
+										</div>
+									</dl>
+								</div> 
+								<!-- //측정 사이즈 > 카테고리 내용(언더웨어) -->                                                                                    
+							</div>                                                               
+						</div>                            
+						<!-- //측정 사이즈 -->
+					</div>                         
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_size_info')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	$(document).ready( function() {
+		 //탭 - 사이즈정보 > 탭
+        $(document).on('click','#layer_size_info .tab_nav ul li',function(e){
+            $(this).addClass('active').siblings().removeClass('active');
+            $('#infoSizePop .tab_cont_wrap .tab_cont').hide();		
+            $('#infoSizePop .tab_cont_wrap .tab_cont').eq($(this).index()).show();
+            return false;
+        });
+
+        //탭 - 사이즈정보 > 서브탭
+		$(document).on('click','#layer_size_info .sub_tab_nav ul li',function(e){
+			var value=$(this).find("a").text();
+			var catTxt=$(".category_open").text();
+			console.log(value)
+            $(this).addClass('active').siblings().removeClass('active');
+            $(this).parents('.tab_cont').find('.sub_tab_cont').hide();
+            $(this).parents('.tab_cont').find('.sub_tab_cont').eq($(this).index()).show();
+			$(this).parents().parents().parents().parents().parents(".category_box").hide();
+			$(this).parents().parents().parents().parents().parents(".category_box").prev(".category_open").text(value);
+            return false;
+        });
+
+		//팝업 - 사이즈정보 > 서브탭 - 카테고리팝오픈
+        $(document).on('click','#layer_size_info .category_open',function(e){
+            $(this).siblings().show();
+            return false;
+        });
+		$(document).on('click','#layer_size_info .category_close',function(e){
+            $(this).parents().parents(".category_box").hide();
+            return false;
+        });
+	
+	});
+	/*]]>*/
+</script>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -168,7 +168,7 @@
 			<li>
 				<button type="button" id="quick03" class="quick_btn03" data-tab="quick03">
 					<img src="/images/pc/ico_qk_like.png" alt="위시리스트"/>
-					<span class="count">100</span>
+					<span class="count">0</span>
 				</button>
 			</li>
 			<li>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -1157,7 +1157,7 @@
 		}
 
 		let goodsType = [[${goodsInfo.goodsType}]];
-		if (soldout && goodsType == 'G056_N'&& $("#cartForm  input[name=goodsGoodsYn]").val() == 'Y') {
+		if (soldout && goodsType == 'G056_N'&& $("#cartForm  input[name=selfGoodsYn]").val() == 'Y') {
 			$(".info_restock").show();
 		}
 	}

+ 4 - 59
src/main/webapp/WEB-INF/views/web/goods/GoodsInstockAlarmFormWeb.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : GoodsInstockAlarmFormWeb.html
+ * @source  : GoodsInstockAlarmFormMob.html
  * @desc    : 재입고알림 팝업
  *============================================================================
  * STYLE24
@@ -11,7 +11,7 @@
  *============================================================================
  * VER  DATE         AUTHOR      DESCRIPTION
  * ===  ===========  ==========  =============================================
- * 1.0  2021.03.02   eskim        최초 작성
+ * 1.0  2021.04.04   eskim        최초 작성
  *******************************************************************************
  -->
 <div class="modal-dialog" role="document">
@@ -58,68 +58,13 @@
 					</div>
 				</div>
 				</th:block>
-				<th:block th:if="${goodsInfo.selfGoodsYn =='N' }">
-				<div class="select_blk">
-					<h6>옵션 선택</h6>
-					<div class="opt_select">
-						<div class="opt_header">
-							<span class="title">옵션</span>
-							<button type="button" id="btn_infoSize_pop" class="btn_popup"><span>사이즈정보</span></button>
-						</div>
-						<div class="form_field">
-							<div class="select_custom item_opt3">
-								<div class="combo">
-									<div class="select">선택</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-										<li class="selected">선택</li> 
-										<li>상품옵션01</li>
-										<li>상품옵션02</li>
-										<li>상품옵션03</li>
-										<li aria-disabled="true">
-											<div>상품옵션05</div>
-											<div>120,000원</div>
-										</li>
-										<li>상품옵션06</li>
-										<li aria-disabled="true" data-soldout="true">
-											<div>상품옵션07</div>
-											<div>120,000원</div>
-										</li>
-									</ul>
-								</div>
-							</div>
-						</div>
-						<div class="form_field">
-							<div class="select_custom item_opt4" disabled>
-								<div class="combo">
-									<div class="select">선택</div>
-									<ul class="list">
-										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
-										<li class="selected">선택</li> 
-										<li>상품옵션11</li>
-										<li>상품옵션12</li>
-										<li>상품옵션13</li>
-										<li aria-disabled="true">
-											<div>상품옵션15</div>
-											<div>120,000원</div>
-										</li>
-										<li>상품옵션16</li>
-										<li aria-disabled="true" data-soldout="true">
-											<div>상품옵션17</div>
-											<div>120,000원</div>
-										</li>
-									</ul>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-				</th:block>
 			</div>
 			</form>
 		</div>
 		<div class="modal-footer">
+			<div class="btn_group_flex">
 			<button type="button"  class="btn btn_dark" onclick="jfInstockAlarm();"><span>신청</span></button>
+			</div>
 		</div>
 	</div>
 </div>

+ 3 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -123,8 +123,8 @@
 	</div>
 <script th:inline="javascript">
 	let date = [[${date}]];
-	var year = date[0].year;
-	var month = date[0].month;
+	let year = date[0].year;
+	let month = date[0].month;
 
 	//동적으로 날짜 년도 append
 	function appendYear() {
@@ -270,7 +270,7 @@
 				let ownGiftcard = giftcardOwnList[i];
 
 				tmtbHtml2 += '<li>';
-				if (ownGiftcard.rmGfcdAmt == 0) {
+				if (ownGiftcard.rmGfcdAmt == 0 || ownGiftcard.useYn == 'N') {
 					tmtbHtml2 += '<div class="voucher disable">';
 				} else {
 					tmtbHtml2 += '<div class="voucher">';

+ 88 - 34
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -21,37 +21,48 @@
 <div id="container" class="container dp" th:with="frontUrl=${@environment.getProperty('domain.front')}, goodsView=${@environment.getProperty('upload.goods.view')}, planView=${@environment.getProperty('upload.image.view')}">
 		<div class="breadcrumb"> 
 			<ul>
-                <li class="bread_home"><a href="javascript:void(0);"
-						onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
-				<li class="bread_2depth"><a href="javascript:void(0);"
-					onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">기획전</a></li>
+                <li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+				<li class="bread_2depth" th:if="${planInfo.planGb == 'P'}" ><a href="javascript:void(0);"onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">기획전</a></li>
+				<li class="bread_2depth" th:if="${planInfo.planGb == 'E'}" ><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">이벤트/혜택</a></li>
 				<li class="bread_2depth" th:text="${planInfo.planNm}"></li>
 			</ul> 
 		</div>
 		<div class="wrap">
             <!-- 상단 프로모션 배너 -->
-            <div class="content wide dp_detail_visual">
-                <div class="cont_head">
-                    <div>
-                        <h3 th:text="${planInfo.planNm}"></h4>
-                        <div class="shareSet">
-                            <button class="btn_share" data-name="openShare">공유하기</button>
-                            <!-- toggle contents -->
-                            <div id="layerShare" class="setShare open">
-									<span>
-										<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainImg}');|"><span>카카오톡</span></button>
-										<button type="button" class="fb" th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|"><span>페이스북</span></button>
-										<button type="button" class="tw" th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|"><span>트위터</span></button>
-										<button type="button" class="url btn_copy"><span>URL</span></button>
-									</span>
+				<div class="content wide dp_detail_visual">
+					<div class="cont_head">
+						<div>
+							<h3 th:text="${planInfo.planNm}"></h3>
+							<div class="shareSet">
+								<button class="btn_share" data-name="openShare">공유하기</button>
+								<div class="shareWrap">
+									<div id="layerShare" class="setShare open">
+										<span>
+											<button type="button" class="kk"
+												th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainImg}');|">
+												<span>카카오톡</span>
+											</button>
+											<button type="button" class="fb"
+												th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+												<span>페이스북</span>
+											</button>
+											<button type="button" class="tw"
+												th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
+												<span>트위터</span>
+											</button>
+											<button type="button" class="url btn_copy">
+												<span>URL</span>
+											</button>
+										</span>
+									</div>
 								</div>
 							</div>
-                        </div>                            
-                    </div>
-                </div>
-                <div class="cont_body">
+						</div>
+					</div>
+				</div>
+				<div class="cont_body" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
                     <!-- 프로모션배너 type1 --> 
-                    <div class="promotion_visual type1" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"></div>
+                    <!-- <div class="promotion_visual type1" th:if="${fsrcInfoTop != null and planInfo.planGb == 'P'}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"></div> -->
                     <!-- <div class="promotion_visual type2" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"></div> -->           
                     <!-- 프로모션배너 type1 -->                    
                     <!-- 프로모션배너 type2 --> 
@@ -99,7 +110,7 @@
 			</th:block>
             
             <!-- 관련상품 리스트 -->
-			<div class="content sticky_nav_list">
+			<div class="content sticky_nav_list" th:if="${planCornerListLength>0}">
 				<div class="cont_head">
                     <div class="sticky_nav">
                         <ul>    
@@ -152,14 +163,17 @@
                     </div>
                 </div>
 		    </div>
+		  
             <!-- //관련상품 리스트 -->  
 
             <!-- 다른 기획전 보기 -->
-            <div class="content other_dp_slide">
+            <div class="content other_dp_slide" th:if="${listSize > 0}">
                 <div class="cont_head">
                     <div>
-                        <h4>다른 기획전 보기</h4>
-                        <a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">전체보기</a>
+                        <h4 th:if="${planInfo.planGb == 'P'}">다른 기획전 보기</h4>
+                        <h4 th:if="${planInfo.planGb == 'E'}">다른 이벤트 보기</h4>
+                        <a href="javascript:void(0);" th:if="${planInfo.planGb == 'P'}" onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">전체보기</a>
+                        <a href="javascript:void(0);" th:if="${planInfo.planGb == 'E'}" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">전체보기</a>
                     </div>
                 </div>
                 <div class="cont_body">
@@ -172,7 +186,6 @@
                                         <img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" alt="${PlanData.planNm}">
                                     </div>
                                     <div class="txt">
-                                        <!-- <span class="brand">BUCKAROO</span> -->
                                         <p class="tit" th:text="${PlanData.planNm}"></p>
                                     </div>
                                 </a>
@@ -186,10 +199,14 @@
             </div>
             <!-- //다른 기획전 보기 -->
         </div>
+        <form id="pollListForm" name="pollListForm" th:action="@{'/planning/event/poll/form'}" th:method="post">
+				<input type="hidden" name="planSq" th:value="${planInfo.planSq}"/>
+		</form>
 <div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
 
 </div>
 <script th:inline="javascript">
+
 let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
 let plan = [[${planInfo}]];
@@ -202,7 +219,7 @@ let _mall = [[${@environment.getProperty('domain.front')}]];
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 
-if(review != null || review != ''){
+if(review.length>0){
 	
 	var html = '';
 	
@@ -262,7 +279,7 @@ if(review != null || review != ''){
 	$("#G082_10").append(html);
 }
 
-if(image != null || image != ''){
+if(image.length>0){
 	var html = '';
 	
 	html += '<div class="cont_body">     ';
@@ -286,7 +303,7 @@ if(image != null || image != ''){
 	$("#G082_30").append(html);
 }
 
-if(goods1 != null || goods1 != ''){
+if(goods1.length>0){
 	var array = [];
 
 	for (var j = 0; j < template.length; j++) {
@@ -352,7 +369,7 @@ if(goods1 != null || goods1 != ''){
 	}
 }
 
-if(goods2 != null || goods2 != ''){
+if(goods2.length>0){
 	var array = [];
 
 	for (var j = 0; j < template.length; j++) {
@@ -421,7 +438,7 @@ if(goods2 != null || goods2 != ''){
 	}
 }
 
-if(goods4 != null || goods4 != ''){
+if(goods4.length>0){
 	var array = [];
 
 	for (var j = 0; j < template.length; j++) {
@@ -490,7 +507,7 @@ if(goods4 != null || goods4 != ''){
 	}
 }
 
-if(coupon != null || coupon != ''){
+if(coupon.length>0){
 	var html = '';
 	 
 	html += '<div class="cont_head">';
@@ -599,6 +616,43 @@ var fnPlanCouponCallBack = function(result){
 	// 화면 전환 필요		
 }
 
+// 설문조사 참여 버튼 클릭
+var fnJoinConfirm = function () {
+	let planSq = plan.planSq;
+	// 로그인 확인
+	if (!cfCheckLogin()) {
+		mcxDialog.alert("로그인 후 참여 가능합니다.");
+		return false;
+	}
+	
+	var data = {planSq : planSq};
+
+
+	var jsonData = JSON.stringify(data);
+
+	/* gagajf.ajaxJsonSubmit('/planning/event/poll/access', jsonData , function () {
+		document.pollListForm.submit();
+	});
+	 */
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/planning/event/poll/access',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			if (result.status == "1") {
+				mcxDialog.alert(result.msg);
+				return;
+			}
+			document.pollListForm.submit();
+		}
+	})
+		
+	
+
+}
+
 
 
 $(document).ready( function() {

+ 18 - 16
src/main/webapp/WEB-INF/views/web/planning/PlanningEventMainFormWeb.html

@@ -22,7 +22,7 @@
 	<div id="container" class="container ev">
 		<div class="breadcrumb">
 			<ul>
-				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li> 
 				<li class="bread_2depth">이벤트/혜택</li>
 			</ul>
 		</div>
@@ -72,6 +72,8 @@
 						</div>
 					</div>
 					<div class="area_thumb_list" id="divEventList" style="display:none;">
+					
+					</div>
 						<!-- 등록된 이벤트가 없을 때 노출 -->
 						<div class="nodata" id="divEventNoData" style="display:none;">
 							<div class="txt_box">
@@ -84,7 +86,6 @@
 							</div>
 						</div>	
 						<!-- //등록된 이벤트가 없을 때 노출 -->
-					</div>
 			    </div>
 		    </div>
         </div>	
@@ -109,30 +110,31 @@ let fnGetEventList = function() {
 					tag += '	<ul>';
 					$.each(result, function(idx, item) {
 						tag += '		<li>';
-						tag += '			<a href="">';
+						tag += '			<a onclick="cfnGoToPlanDetail(\'' + item.planSq + '\')">';
 						if (item.newYn == 'Y') {
 							tag += '				<div class="rank ranker"><span>NEW</span></div>\n';
 						}
-						tag += '				<div class="thumb">';
-						tag += '					<img src="' + _uploadImageUrl + item.mainImg + '" alt="">';
-						tag += '				</div>';
-						tag += '				<div class="txt">';
-						tag += '					<p class="title">'+item.planNm+'</p>';
-						tag += '					<p class="date">';
-						tag += '						<span>'+item.dispStdt+'</span> - <span>'+item.dispEddt+'</span>';
-						tag += '					</p>';
-						tag += '				</div>';
-						tag += '			</a>';
-						tag += '		</li>';
+						tag += '				<div class="thumb">\n';
+						tag += '					<img src="' + _uploadImageUrl + item.mainImg + '" alt="">\n';
+						tag += '				</div>\n';
+						tag += '				<div class="txt">\n';
+						tag += '					<p class="title">'+item.planNm+'</p>\n';
+						tag += '					<p class="date">\n';
+						tag += '						<span>'+item.dispStdt+'</span> - <span>'+item.dispEddt+'</span>\n';
+						tag += '					</p>\n';
+						tag += '				</div>\n';
+						tag += '			</a>\n';
+						tag += '		</li>\n';
 					});
-					tag += '	</ul>	';
-					tag += '</div>';
+					tag += '	</ul>\n	';
+					tag += '</div>\n';
 					
 					$('#divEventList').html(tag);
 					
 					$('#divEventNoData').hide();
 					$('#divEventList').show();
 				} else {
+					$('#eventTotCnt').html('<span>0</span>개의 이벤트');
 					$('#divEventNoData').show();
 					$('#divEventList').hide();
 				}

+ 356 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html

@@ -0,0 +1,356 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : PlanningEventPollFormWeb.html
+ * @desc    : 이벤트 > 설문조사 Page
+ *============================================================================
+ * Pastelmall
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.4.2  	 sowon     최초 작성
+ *******************************************************************************
+ -->
+ <body>
+<th:block layout:fragment="content">
+<!--  container -->
+	<div id="container" class="container ev">
+		<div class="breadcrumb">
+			<ul>
+				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+				<li class="bread_2depth"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">이벤트/혜택</a></li>
+				<li class="bread_2depth" th:text="${pollInfo.planNm}"></li>
+			</ul>
+		</div>
+		<div class="wrap">
+			<div class="content wide survey">
+				<div class="cont_head">
+					<div>
+						<h3 th:text="${pollInfo.pollTitle}"></h3>
+						<div class="period">
+							<span th:text="${pollInfo.pollStdt}"></span> ~ <span th:text="${pollInfo.pollEddt}"></span>
+						</div>
+						<!-- <div class="shareSet">
+                            <button class="btn_share" data-name="openShare">공유하기</button>
+                            toggle contents
+                            <div class="shareWrap">
+                                <div id="layerShare" class="setShare open">
+                                    <span>
+                                        <button type="button" onclick="('');" class="kk"><span>카카오톡</span></button>
+                                        <button type="button" onclick="('');" class="fb"><span>페이스북</span></button>
+                                        <button type="button" onclick="('');" class="tw"><span>트위터</span></button>
+                                        <button type="button" onclick="('');" class="url"><span>URL</span></button>
+                                    </span>
+                                </div>
+                            </div>
+                        </div> -->
+					</div>
+				</div>
+				<div class="cont_body">
+					<div class="survey_wrap">
+						<div class="survey_con">
+							<!-- <form class="form_wrap" name="pollListForm" th:action="@{'/planning/event/poll/save'}" th:method="post"> -->
+								<th:block th:each="pollData, pollStat : ${pollList}">
+									<div class="survey_row" th:classappend="${pollData.pollQtype == '30'? 'q4': ''}">
+										<h4><span class="question" th:text="'Q'+${pollStat.index+1}+'.'"></span>[[${pollData.pollQtitle}]]</h4>
+										<div class="answer">
+											<div class="form_field">
+												<th:block th:if="${pollData.pollQtype == '10'}">
+													<ul class="clear" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}">
+														<li th:if="${pollData.pollQval1 != null && pollData.pollQval1 != ''}">
+															<th:block th:if="${pollData.pollQval1 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-1-'+${pollData.pollQsq}" th:value="${pollData.pollQval1}" ><label th:for="'rdi-1-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval1}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval1 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-1-'+${pollData.pollQsq}" th:value="${pollData.pollQval1}" class="etc_radio"><label th:for="'rdi-1-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval1}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval2 != null && pollData.pollQval2 != ''}">
+															<th:block th:if="${pollData.pollQval2 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-2-'+${pollData.pollQsq}" th:value="${pollData.pollQval2}" ><label th:for="'rdi-2-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval2}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval2 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-2-'+${pollData.pollQsq}" th:value="${pollData.pollQval2}" class="etc_radio"><label th:for="'rdi-2-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval2}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval3 != null && pollData.pollQval3 != ''}">
+															<th:block th:if="${pollData.pollQval3 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-3-'+${pollData.pollQsq}" th:value="${pollData.pollQval3}" ><label th:for="'rdi-3-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval3}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval3 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-3-'+${pollData.pollQsq}" th:value="${pollData.pollQval3}" class="etc_radio"><label th:for="'rdi-3-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval3}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval4 != null && pollData.pollQval4 != ''}">
+															<th:block th:if="${pollData.pollQval4 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-4-'+${pollData.pollQsq}" th:value="${pollData.pollQval4}" ><label th:for="'rdi-4-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval4}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval4 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-4-'+${pollData.pollQsq}" th:value="${pollData.pollQval4}" class="etc_radio"><label th:for="'rdi-4-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval4}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval5 != null && pollData.pollQval5 != ''}">
+															<th:block th:if="${pollData.pollQval5 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-5-'+${pollData.pollQsq}" th:value="${pollData.pollQval5}" ><label th:for="'rdi-5-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval5}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval5 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-5-'+${pollData.pollQsq}" th:value="${pollData.pollQval5}" class="etc_radio"><label th:for="'rdi-5-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval5}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval6 != null && pollData.pollQval6 != ''}">
+															<th:block th:if="${pollData.pollQval6 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-6-'+${pollData.pollQsq}" th:value="${pollData.pollQval6}"><label th:for="'rdi-6-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval6}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval6 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-6-'+${pollData.pollQsq}" th:value="${pollData.pollQval6}" class="etc_radio"><label th:for="'rdi-6-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval6}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval7 != null && pollData.pollQval7 != ''}">
+															<th:block th:if="${pollData.pollQval7 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-7-'+${pollData.pollQsq}" th:value="${pollData.pollQval7}" ><label th:for="'rdi-7-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval7}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval7 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-7-'+${pollData.pollQsq}" th:value="${pollData.pollQval7}" class="etc_radio"><label th:for="'rdi-7-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval7}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval8 != null && pollData.pollQval8 != ''}">
+															<th:block th:if="${pollData.pollQval8 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-8-'+${pollData.pollQsq}" th:value="${pollData.pollQval8}"><label th:for="'rdi-8-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval8}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval8 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-8-'+${pollData.pollQsq}" th:value="${pollData.pollQval8}" class="etc_radio"><label th:for="'rdi-8-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval8}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval9 != null && pollData.pollQval9 != ''}">
+															<th:block th:if="${pollData.pollQval9 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-9-'+${pollData.pollQsq}" th:value="${pollData.pollQval9}" ><label th:for="'rdi-9-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval9}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval9 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-9-'+${pollData.pollQsq}" th:value="${pollData.pollQval9}"class="etc_radio"><label th:for="'rdi-9-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval9}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+														<li th:if="${pollData.pollQval10 != null && pollData.pollQval10 != ''}">
+															<th:block th:if="${pollData.pollQval10 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-10-'+${pollData.pollQsq}" th:value="${pollData.pollQval10}"><label th:for="'rdi-10-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval10}"></span></label>
+															</th:block>
+															<th:block th:unless="${pollData.pollQval10 != '기타'}">
+																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-10-'+${pollData.pollQsq}" th:value="${pollData.pollQval10}" class="etc_radio"><label th:for="'rdi-10-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval10}"></span></label>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+															</th:block>
+														</li>
+													</ul>
+												</th:block>
+												<th:block th:if="${pollData.pollQtype == '20'}">
+													<ul class="clear" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}">
+														<li th:if="${pollData.pollQval1 != null && pollData.pollQval1 != ''}">
+															<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-1-'+${pollData.pollQsq}" th:value="${pollData.pollQval1}"><label th:for="'chk-1-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval1}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval2 != null && pollData.pollQval2 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-2-'+${pollData.pollQsq}" th:value="${pollData.pollQval2}"><label th:for="'chk-2-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval2}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval3 != null && pollData.pollQval3 != ''}">
+																<input type="checkbox"  th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-3-'+${pollData.pollQsq}" th:value="${pollData.pollQval3}"><label th:for="'chk-3-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval3}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval4 != null && pollData.pollQval4 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-4-'+${pollData.pollQsq}" th:value="${pollData.pollQval4}"><label th:for="'chk-4-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval4}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval5 != null && pollData.pollQval5 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-5-'+${pollData.pollQsq}" th:value="${pollData.pollQval5}"><label th:for="'chk-5-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval5}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval6 != null && pollData.pollQval6 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-6-'+${pollData.pollQsq}" th:value="${pollData.pollQval6}"><label th:for="'chk-6-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval6}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval7 != null && pollData.pollQval7 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-7-'+${pollData.pollQsq}" th:value="${pollData.pollQval7}"><label th:for="'chk-7-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval7}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval8 != null && pollData.pollQval8 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-8-'+${pollData.pollQsq}" th:value="${pollData.pollQval8}"><label th:for="'chk-8-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval8}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval9 != null && pollData.pollQval9 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-9-'+${pollData.pollQsq}" th:value="${pollData.pollQval9}"><label th:for="'chk-9-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval9}"></span></label>
+														</li>
+														<li th:if="${pollData.pollQval10 != null && pollData.pollQval10 != ''}">
+																<input type="checkbox" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'chk-10-'+${pollData.pollQsq}" th:value="${pollData.pollQval10}"><label th:for="'chk-10-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval10}"></span></label>
+														</li>
+													</ul>
+												</th:block>
+												<th:block th:if="${pollData.pollQtype == '30'}">
+													<div class="input_wrap">
+														<input type="text" class="form_control" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}" />
+													</div>
+												</th:block>
+												<th:block th:if="${pollData.pollQtype == '40'}">
+													<div class="input_wrap">
+														<textarea class="doc_ans" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="${pollData.pollQsq+'_'+(pollStat.index+1)}" placeholder="1,000자 이내로 입력해 주세요." style="resize: none;"></textarea>
+														<p class="txt_cnt">
+															<span id="ans_cnt" class="ans_cnt">(<em class="c_primary">0</em>/1000자)</span>
+														</p>
+													</div> 
+												</th:block>
+											</div>
+										</div>
+									</div>
+								</th:block>
+								<div class="btn_wrap">
+									<button type="submit" class="btn btn_dark" onclick="fnSubmitPoll()">응답 완료</button>
+								</div>
+							<!-- </form> -->
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<!-- // container -->	
+
+<script th:inline="javascript">
+let pollList = [[${pollList}]];
+
+var fnSubmitPoll = function () {
+	//let pollQsq_20 = new Array();
+	let pollQsq_10 = '';
+	let pollQsq_20 = '';
+	let pollQsq_30 = '';
+	let pollQsq_40 = '';
+	
+	
+	// 유효성검사
+	for (let i = 0; i < pollList.length; i++) {
+		let type = pollList[i].pollQtype;
+		let pollQsq = pollList[i].pollQsq;
+		
+		
+		if(type == "10"){
+			if($('input:radio[name='+pollQsq+'_'+(i+1)+']').is(':checked')== false){
+				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
+				return;
+			}
+			if ($('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() == '기타') {
+				pollQsq_10 += pollQsq +'-'+$('input:text[name=etc_input_'+pollQsq+']').val() + '/';
+			}else{
+				pollQsq_10 += pollQsq +'-'+$('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() + '/';
+			}
+		}
+		if(type == "20"){
+			if($('input:checkbox[name='+pollQsq+'_'+(i+1)+']').is(':checked')== false){
+				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
+				return;
+			}else{
+				let chk = $('input:checkbox[name='+pollQsq+'_'+(i+1)+']:checked');
+				//pollQsq_20.push(pollQsq+ '-');
+				pollQsq_20 += pollQsq + '-' ;
+				for(let i=0; i< chk.length; i++){
+					//pollQsq_20.push(chk.eq(i).val());
+					pollQsq_20 += chk.eq(i).val();
+					if (i != chk.length-1) {
+						pollQsq_20 += ',';
+					}
+				}
+				pollQsq_20 += '/' ;
+			}
+		}
+		if(type == "30"){
+			if($('input:text[name='+pollQsq+'_'+(i+1)+']').val() == ''){
+				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
+				return;
+			}else{
+				pollQsq_30 += pollQsq +'-'+$('input:text[name='+pollQsq+'_'+(i+1)+']').val() + '/';
+			}
+		}
+		if(type == "40"){
+			if($('textarea[name='+pollQsq+'_'+(i+1)+']').val() == ''){
+				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
+				return;
+			}else{
+				//max1.set(pollQsq,$('textarea[name='+pollQsq+'_'+(i+1)+']').val());
+				pollQsq_40 += pollQsq +'-'+$('textarea[name='+pollQsq+'_'+(i+1)+']').val() + '/';
+			}
+		}
+	}
+	console.log(pollQsq_20);
+	var data = {pollQsq_10 : pollQsq_10,
+				pollQsq_20 : pollQsq_20,
+			    pollQsq_30 : pollQsq_30,
+			    pollQsq_40 : pollQsq_40};
+	
+
+	var jsonData = JSON.stringify(data);
+
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/planning/event/poll/save',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			mcxDialog.alertC('설문조사 이벤트 참여가 완료되었습니다.', {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_EVENT_MAIN);
+				}
+			});
+		}
+	})
+	
+
+	
+}
+$(document).ready( function() {
+	
+	//SNS 공유 버튼 토글 
+	$("button[data-name=openShare]").on("click", function(){
+		$(this).toggleClass("on").next(".shareWrap").toggleClass("on");
+		return false;
+	});
+	
+	//영역밖 클릭으로 SNS 공유토글 닫기
+	$("body").on('click', function(e) { 
+		if(!$(".shareWrap.on").parent().has(e.target).length) {
+			$("button[data-name=openShare]").removeClass("on");
+			$(".shareWrap").removeClass("on");
+		};
+	});   		
+
+	//글자 수 카운트
+	$('.doc_ans').keyup(function (e){
+		var content = $(this).val();
+		$('#ans_cnt').html("(<em class='c_primary'>"+content.length+"</em>/1000자)");  
+		if (content.length > 1000){
+			alert("최대 1000자까지 입력 가능합니다.");
+			$(this).val(content.substring(0, 1000));
+			$('#ans_cnt').html("(<em class='c_primary'>1000</em>/1000자)");
+		}
+	});
+
+
+	$('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
+		if ($('.etc_radio').is(':checked')) {
+			$('.etc_input').removeAttr('disabled');
+		} else {
+			$('.etc_input').attr('disabled', true);
+		}   
+	});		
+
+});
+
+
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 42 - 21
src/main/webapp/ux/pc/css/layout.css

@@ -1623,7 +1623,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.contactUs .ui_row.nodata {border-top:none;}
 	.contactUs .fold_cont .img_group .thumb_pic {background:#fff;}
 	.contactUs .fold_cont .img_group .thumb_pic img{position:absolute; left:50%; right:0; top:50%; bottom:auto; transform:translate(-50%, -50%); width:auto; height:auto; max-height:100%; max-width:100%; margin:auto 0; cursor:pointer;}
-
+	
 	/* cs_contactUs_my */
 	.cs .contactUs_my {}
 	.contactUs_my .blt_dot {position:relative; padding-left:10px}
@@ -3134,7 +3134,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	[class*="pd_descrp"] .btn_more_box .btn.active span::after {transform:rotate(-90deg);}
 	[class*="pd_descrp"] .btn_more_box .btn .ico {margin-left:20px; margin-right:0;}
 
-	.pd_relate {padding-left:70px !important; padding-right:70px !important;}
+	.pd_relate {padding-left:70px !important; padding-right:70px !important;} 
 	.pd_brand {padding-left:70px !important; padding-right:70px !important;}
 	.pd_clickother {padding-left:70px !important; padding-right:70px !important;}
 
@@ -4476,7 +4476,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.ev .btn_wrap {margin-top:60px; margin-bottom:0; text-align:center;}
 	.ev .btn_wrap .btn {min-width:220px; height:60px; font-size:18px; font-weight:300; line-height:normal;}
 	.ev .btn_wrap .btn.go_next span {display:inline-block; padding-right:20px; background:url('/images/pc/ico_bread_root_w.png') no-repeat 100% 50%;}
-
+	
 	.ev .form_field input[type="radio"] + label,
 	.ev .form_field input[type="checkbox"] + label {padding-left:30px; color:#222; font-size:16px; font-weight:200; line-height:1;}
 	.ev .form_field input[type="radio"] + label:before,
@@ -4551,7 +4551,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.ev .renew {}
 	.renew .announce_txt {margin-top:80px; padding-top:60px;}
 	.renew .announce_txt:before {content:''; position:absolute; top:0; left:-190px; right:-190px; height: 1px; background: #ddd;}
-
+	
 	/* ev_renew 설문조사 참여이벤트 write */
 	.ev .survey {margin-bottom:-160px}
 	.survey .input_wrap {width:100%;}
@@ -4568,7 +4568,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.survey .survey_wrap .survey_con .survey_row .answer ul {margin-top:-30px; margin-right:-60px}
 	.survey .survey_wrap .survey_con .survey_row .answer ul li {float:left; position:relative; margin-top:30px; margin-right:48px;}
 	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'].etc_input {margin-left:20px; width:300px !important; max-width:300px !important; height:52px;}
-	.survey .survey_wrap .survey_con .btn_wrap {margin-top:20px}
+	.survey .survey_wrap .survey_con .btn_wrap {margin-top:20px} 
 
 
 
@@ -4674,22 +4674,43 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.cmt_wrap .pageNav > li > span {background-color:transparent;}
 	.cmt_wrap .paging_wrap {margin-top: 50px; margin-bottom: 0; box-sizing:content-box;}
 
-	/* ev 다른 이벤트 보기 슬라이드 */
-	.ev .other_ev_slide {position: relative; margin:150px auto 0 !important; padding:0 140px;}
-	.ev .other_ev_slide .tit {position: relative; margin-bottom: 60px; text-align: center;}
-	.ev .other_ev_slide .tit h4 {font-size: 30px; font-weight: 500;}
-	.ev .other_ev_slide .tit a {position: absolute; top: 50%; right: 0; transform:translateY(-50%); padding-right: 20px; background: url(/images/pc/ico_more_lg.png) no-repeat right top 1px; font-size: 18px; color:#888;}
-	.ev .other_ev_slide .cont_body {position:relative;}
-	.ev .other_ev_slide .swiper-slide img {width: 100%; height:auto;}
-	.ev .other_ev_slide .swiper-slide .txt {}
-	.ev .other_ev_slide .swiper-slide .txt .subject {margin:20px 0 0; padding:0 7px; font-size: 18px; line-height: 1.5; font-weight: 300; color:#222; min-height:55px; max-height:55px; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; word-break: keep-all;}
-	.ev .other_ev_slide .swiper-button-next:after, 
-	.ev .other_ev_slide .swiper-button-prev:after {content:'';}
-	.ev .other_ev_slide .swiper-button-next {background: url('/images/pc/slide_next.png') no-repeat center; right:-70px; opacity:0.6;}
-	.ev .other_ev_slide .swiper-button-prev {background: url('/images/pc/slide_prev.png') no-repeat center; left:-70px; opacity:0.6;}
-
-
-
+	/* popup_고객등록 이미지 팝업1 */
+	.modal.contact_img_pop {width:700px; height:700px; max-width:none; max-height:none; padding:0px; box-sizing:border-box;}
+	.modal.contact_img_pop a.close-modal {right:0; top:-60px; background-image:url('/images/pc/ico_pop_cls02.png');}
+	.modal.contact_img_pop .modal-body .pop_cont {max-height:none;}
+	.modal.contact_img_pop .swiper-slide {}
+	.modal.contact_img_pop .swiper-slide .pop_img {position:relative; width:100%; height:0; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:contain;}
+	.modal.contact_img_pop .swiper-pagination {position:absolute; left:0; right:0; bottom:30px; width:100%; text-align:center;}
+	.modal.contact_img_pop .swiper-pagination .swiper-pagination-bullet {width:10px; height:10px; margin-left:10px; background:#ddd; opacity:1;}
+	.modal.contact_img_pop .swiper-pagination .swiper-pagination-bullet-active {background:#fd4802}
+	.modal.contact_img_pop .swiper-pagination .swiper-pagination-bullet:first-child {margin-left:0;} 
+	.modal.contact_img_pop .swiper-button-prev::after,
+	.modal.contact_img_pop .swiper-button-next::after {content: '';}
+	.modal.contact_img_pop .swiper-button-prev,
+	.modal.contact_img_pop .swiper-button-next {top:50%; transform:translateY(-50%); margin:0; display:inline-block; }
+	.modal.contact_img_pop .swiper-button-prev {left:-70px;}
+	.modal.contact_img_pop .swiper-button-next {right:-70px;}
+	.modal.contact_img_pop .swiper-button-prev:after {content:''; display:block; position:absolute; top:0px; left:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(-135deg); -webkit-transform:rotate(-135deg);}
+	.modal.contact_img_pop .swiper-button-next:after {content:''; display:block; position:absolute; top:0px; right:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(45deg); -webkit-transform:rotate(45deg);}
+
+	/* popup_고객등록 이미지 팝업2 */
+	.modal.thumb_img_pop {width:700px; height:700px; max-width:none; max-height:none; padding:0px; box-sizing:border-box;}
+	.modal.thumb_img_pop a.close-modal {right:0; top:-60px; background-image:url('/images/pc/ico_pop_cls02.png');}
+	.modal.thumb_img_pop .modal-body .pop_cont {max-height:none;}
+	.modal.thumb_img_pop .swiper-slide {}
+	.modal.thumb_img_pop .swiper-slide .pop_img {position:relative; width:100%; height:0; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:contain;}
+	.modal.thumb_img_pop .swiper-pagination {position:absolute; left:0; right:0; bottom:30px; width:100%; text-align:center;}
+	.modal.thumb_img_pop .swiper-pagination .swiper-pagination-bullet {width:10px; height:10px; margin-left:10px; background:#ddd; opacity:1;}
+	.modal.thumb_img_pop .swiper-pagination .swiper-pagination-bullet-active {background:#fd4802}
+	.modal.thumb_img_pop .swiper-pagination .swiper-pagination-bullet:first-child {margin-left:0;} 
+	.modal.thumb_img_pop .swiper-button-prev::after,
+	.modal.thumb_img_pop .swiper-button-next::after {content: '';}
+	.modal.thumb_img_pop .swiper-button-prev,
+	.modal.thumb_img_pop .swiper-button-next {top:50%; transform:translateY(-50%); margin:0; display:inline-block; }
+	.modal.thumb_img_pop .swiper-button-prev {left:-70px;}
+	.modal.thumb_img_pop .swiper-button-next {right:-70px;}
+	.modal.thumb_img_pop .swiper-button-prev:after {content:''; display:block; position:absolute; top:0px; left:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(-135deg); -webkit-transform:rotate(-135deg);}
+	.modal.thumb_img_pop .swiper-button-next:after {content:''; display:block; position:absolute; top:0px; right:0; width:34px; height:34px; border:2px solid #a7a7a7; border-width:2px 2px 0 0; transform:rotate(45deg); -webkit-transform:rotate(45deg);}
 
 	/* 이용약관,개인정보취급방침 */
 	.ps .cont_head > div h3{text-align: center;margin-bottom: 0;padding-bottom: 60px;font-size: 40px;line-height: 1;}

+ 1 - 0
src/main/webapp/ux/pc/css/main.css

@@ -66,6 +66,7 @@
 
 
 /* main */
+.container.main .wrap {position:relative; width:100%; min-width:auto; max-width:none; padding-left:0px; padding-right:0px;}
 .main {}
 .main .dpnone {display:none;}
 .main .swiper-pagination {margin:0; position:relative;}

+ 33 - 11
src/main/webapp/ux/style24_link.js

@@ -87,6 +87,7 @@ const _PAGE_SOCIAL_MAIN = _frontUrl + "/social/main/form";						// 소설(핫딜
 
 //== 이벤트 ==/
 const _PAGE_EVENT_MAIN = _frontUrl + "/planning/event/main/form"; 					// 이벤트 메인
+const _PAGE_EVENT_POLL = _frontUrl + "/planning/event/poll/form"; 					// 이벤트 > 설문조사
 
 //== 고객센터 ==/
 const _PAGE_FAQ = _frontUrl + "/callcenter/faq/form";									// 고객센터 > FAQ
@@ -426,7 +427,10 @@ function cfCloseLayer(tgt) {
 */
 function cfCardInfo() {
 	var str = '<div class="modal fade pd_pop bnf_card_pop" id="layer_card_benefit" tabindex="-1" role="dialog" aria-labelledby="bnfCardLabel" aria-hidden="true"></div>';
-
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop bnf_card_pop" id="layer_card_benefit" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true">';
+	}
+	
 	if ($('#layer_card_benefit').length == 0) {
 		$('body').append(str);
 	}
@@ -448,8 +452,11 @@ function cfGoodsCouponInfo(goodsCd, goodsType) {
 		cfnGoToPage(_PAGE_LOGIN);
 		return false;
 	}
-	
-	var str = '<div class="modal fade pd_pop salecoupon_pop" id="layer_goods_coupon" tabindex="-1" role="dialog" aria-labelledby="saleCouponLabel" aria-hidden="true"></div>';
+	var aria = "saleCouponLabel";
+	if ("P" != _frontGb){
+		aria = "modalScrollLabel";
+	}
+	var str = '<div class="modal fade pd_pop salecoupon_pop" id="layer_goods_coupon" tabindex="-1" role="dialog" aria-labelledby="'+aria+'" aria-hidden="true"></div>';
 
 	if ($('#layer_goods_coupon').length == 0) {
 		$('body').append(str);
@@ -469,6 +476,9 @@ function cfGoodsCouponInfo(goodsCd, goodsType) {
 */
 function cfGoodsShopBenefitInfo(goodsCd) {
 	var str = '<div class="modal fade pd_pop bnf_shopping_pop" id="layer_shopping_benefit" tabindex="-1" role="dialog" aria-labelledby="bnfShoppingLabel" aria-hidden="true"></div>';
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop bnf_shopping_pop" id="layer_shopping_benefit" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
 
 	if ($('#layer_shopping_benefit').length == 0) {
 		$('body').append(str);
@@ -487,7 +497,10 @@ function cfGoodsShopBenefitInfo(goodsCd) {
 */
 function cfGoodsSizeInfo(goodsCd, colorCd) {
 	var str = '<div class="modal fade pd_pop info_size_pop" id="layer_size_info" tabindex="-1" role="dialog" aria-labelledby="infoSizeLabel" aria-hidden="true"></div>';
-
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop info_size_pop" id="layer_size_info" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
+	
 	if ($('#layer_size_info').length == 0) {
 		$('body').append(str);
 	}
@@ -511,7 +524,9 @@ function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
 	}
 	
 	var str = '<div class="modal fade pd_pop push_restock_pop" id="layer_instock_alarm" tabindex="-1" role="dialog" aria-labelledby="pushRestockLabel" aria-hidden="true"></div>';
-
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop push_restock_pop" id="layer_instock_alarm" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
 	if ($('#layer_instock_alarm').length == 0) {
 		$('body').append(str);
 	}
@@ -614,18 +629,25 @@ function cfCloseFullLayer(tgt) {
 * @access : public
 * @desc   : 상품문의 full 팝업
 * <pre>
-*		cfGoodsQngReg();
+*		cfGoodsQng();
 * </pre>
 */
 function cfGoodsQng(goodsCd) {
 	var Param = new Object();
 	var str = '<div class="pd_pop full_pop pd_qnalist_pop" id="layer_goods_qna"></div>';
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop pd_qnalist_pop" id="layer_goods_qna" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
 
 	if ($('#layer_goods_qna').length == 0) {
 		$('body').append(str);
 	}
 
-	cfOpenFullLayer(_PAGE_GOODS_QNA_LAYER + goodsCd, 'layer_goods_qna');
+	if ("P" == _frontGb){
+		cfOpenFullLayer(_PAGE_GOODS_QNA_LAYER + goodsCd, 'layer_goods_qna');
+	}else{
+		cfOpenLayer(_PAGE_GOODS_QNA_LAYER + goodsCd, 'layer_goods_qna');
+	}
 }
 
 /**
@@ -645,7 +667,10 @@ function cfGoodsQngCreate(goodsCd) {
 	
 	var Param = new Object();
 	var str = '<div class="modal fade pd_pop pd_qnawrite_pop" id="layer_goods_qna_reg" tabindex="-1" role="dialog" aria-labelledby="pdQnaWriteLabel" aria-hidden="true"></div>';
-
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop pd_qnawrite_pop" id="layer_goods_qna_reg" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
+	
 	if ($('#layer_goods_qna_reg').length == 0) {
 		$('body').append(str);
 	}
@@ -779,9 +804,6 @@ function cfnPrivacyTrustLayer() {
 	cfOpenLayer(_PAGE_PRIVACY_TRUST_LAYER, 'trustPrivacyPop');
 }
 
-
-
-
 /**
  * @type   : function
  * @access : public

Некоторые файлы не были показаны из-за большого количества измененных файлов