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

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
3c1a482b41

+ 1 - 1
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -104,7 +104,7 @@ public interface TsfGoodsDao {
 	 * @author eskim
 	 * @date 2021. 2. 9
 	 */
-	Collection<GoodsCompose> getGoodsDealComposeList(Goods goods);
+	Collection<Goods> getGoodsDealComposeList(Goods goods);
 
 	/**
 	 * 상품 옵션1 목록

+ 1 - 1
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -290,7 +290,7 @@ public class TsfGoodsService {
 	 * @author eskim
 	 * @since 2021. 2. 9
 	 */
-	public Collection<GoodsCompose> getGoodsDealComposeList(Goods goods) {
+	public Collection<Goods> getGoodsDealComposeList(Goods goods) {
 		return goodsDao.getGoodsDealComposeList(goods);
 	}
 

+ 82 - 6
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -128,6 +128,7 @@ public class TsfGoodsController extends TsfBaseController {
 		// 조회색상이 없으면 메인컬러 설정
 		if (StringUtils.isEmpty(paramsGoods.getColorCd())) {
 			paramsGoods.setColorCd(goods.getMainColorCd());
+			paramsGoods.setOptCd1(goods.getMainColorCd());
 		}
 		paramsGoods.setSelfGoodsYn(goods.getSelfGoodsYn());
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType()) || TscConstants.GoodsType.SET.value().equals(goods.getGoodsType())) {
@@ -161,7 +162,6 @@ public class TsfGoodsController extends TsfBaseController {
 
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {	// 딜상품
 			// 딜 구성상품 정보
-			paramsGoods.setGoodsComposeSearchYn("Y");
 			mav.addObject("goodsDealComposeList", goodsService.getGoodsDealComposeList(paramsGoods));
 		} else {
 			if (TscConstants.GoodsType.NORMAL.value().equals(goods.getGoodsType())) {	// 일반상품
@@ -234,9 +234,9 @@ public class TsfGoodsController extends TsfBaseController {
 
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {
 			if ("Y".equals(mobileYn)) {
-				mav.setViewName("mob/goods/GoodsDealFormMob");
+				mav.setViewName("mob/goods/GoodsDealDetailFormMob");
 			} else {
-				mav.setViewName(super.getDeviceViewName("goods/GoodsDealForm"));
+				mav.setViewName(super.getDeviceViewName("goods/GoodsDealDetailForm"));
 			}
 		} else {
 			if ("Y".equals(mobileYn)) {
@@ -257,8 +257,7 @@ public class TsfGoodsController extends TsfBaseController {
 	 * @since 2021. 2. 09.
 	 */
 	private void setGoods(Goods goods) {
-		//goods.setFrontGb(TsfSession.getFrontGb());
-		goods.setFrontGb("true".equals(TsfSession.getAttribute("isApp")) ? "A" : TsfSession.getFrontGb());
+		goods.setFrontGb(TsfSession.getFrontGb());
 		goods.setIsApp(TsfSession.getAttribute("isApp"));	//앱여부 true
 		goods.setSiteCd(TscConstants.Site.STYLE24.value());
 		goods.setAfLinkCd(TsfSession.getAttribute("afLinkCd"));
@@ -272,7 +271,7 @@ public class TsfGoodsController extends TsfBaseController {
 			goods.setCustNo(TsfSession.getInfo().getCustNo());
 			goods.setCustGrade(TsfSession.getInfo().getCustGrade());
 		} else {
-			goods.setCustGb("G100_10");
+			goods.setCustGb(TsfSession.getCustGb());
 			goods.setCustNo(0);
 			goods.setCustGrade(""); //?  확인해보자
 		}
@@ -974,4 +973,81 @@ public class TsfGoodsController extends TsfBaseController {
 		return recentlyGoodsList;
 	}
 	
+	/**
+	 * 딜상품상세 -  구성상품 상세정보 레이어
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 24
+	 */
+	@PostMapping("/deal/detail/layer/{goodsCd}/{compsGoodsCd}")
+	public ModelAndView goodsDealDetailForm(@PathVariable String goodsCd, @PathVariable String compsGoodsCd) {
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		Goods paramsGoods = new Goods();
+		paramsGoods.setGoodsCd(goodsCd);
+		setGoods(paramsGoods);
+		// 1. 딜상품코드 적용
+		mav.addObject("goodsDealComposeList", goodsService.getGoodsDealComposeList(paramsGoods));
+		
+		// 2.구상상품코드 적용
+		paramsGoods.setGoodsCd(compsGoodsCd);
+		Goods goods = goodsService.getGoodsInfo(paramsGoods);
+		// 상품 기본정보
+		mav.addObject("goodsInfo", goods);
+		
+		GagaMap params = new GagaMap();
+		params.set("goodsCd", goodsCd);
+		params.set("compsGoodsCd", compsGoodsCd);
+		
+		mav.addObject("params", params);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsDealListForm"));
+		return mav;
+	}
+	
+	/**
+	 * 딜상품상세 -  ajax 구성상품 상세정보
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 24
+	 */
+	@PostMapping("/deal/detail/info/frame")
+	public ModelAndView goodsDealDetailInfoForm(Goods paramsGoods) {
+		ModelAndView mav = new ModelAndView();
+		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
+		setGoods(paramsGoods);
+		
+		Goods goods = goodsService.getGoodsInfo(paramsGoods);
+		// 상품 상세
+		goods = goodsService.getGoodsDesc(goods);
+
+		// 조회색상이 없으면 메인컬러 설정
+		if (StringUtils.isEmpty(paramsGoods.getColorCd())) {
+			paramsGoods.setColorCd(goods.getMainColorCd());
+			paramsGoods.setOptCd1(goods.getMainColorCd());
+		}
+		paramsGoods.setSelfGoodsYn(goods.getSelfGoodsYn());
+		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType()) || TscConstants.GoodsType.SET.value().equals(goods.getGoodsType())) {
+			paramsGoods.setColorCd("XX");
+		}
+		// 상품 기본정보
+		mav.addObject("goodsInfo", goods);
+		// 상품 이미지정보
+		mav.addObject("goodsImgList", goodsService.getGoodsImgList(paramsGoods));
+		// 상품 동영상정보
+		mav.addObject("goodsVideoList", goodsService.getVideoList(paramsGoods.getGoodsCd()));
+		// 상품 공지
+		mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
+		// 상품 고시정보
+		mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
+		// 상품 안전인증 정보
+		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
+
+		mav.addObject("params", paramsGoods);
+
+		mav.setViewName(super.getDeviceViewName("goods/GoodsDealDescForm"));
+		return mav;
+	}
+	
+	
 }

+ 0 - 6
src/main/java/com/style24/persistence/domain/GoodsCompose.java

@@ -38,12 +38,6 @@ public class GoodsCompose extends TscBaseDomain {
 	private String compsGoodsFullNm;
 	private String colorCd;
 
-//	private String optionTitle;
-//	private String optionNm;
-//	private String optionInfo;
-//	private String setDetail;
-//	private int level;
-
 	private String selfGoodsYn;
 	private String supplyCompCd;
 

+ 49 - 57
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -246,24 +246,25 @@
 	<!-- 상품 옵션1 목록 - 자사용 -->
 	<select id="getGoodsOption1List" parameterType="Goods" resultType="GoodsStock">
 		/* TsfGoods.getGoodsOption1List */
-		SELECT *
+		SELECT A.*
+		    , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = A.GOODS_CD AND COLOR_CD = IF(A.SELF_GOODS_YN ='Y', A.OPT_CD1, 'XX') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
 		FROM (
 		      SELECT G.GOODS_CD
 		           , G.SELF_GOODS_YN
-		           , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IF(G.SELF_GOODS_YN ='Y', O.OPT_CD1, 'XX') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
 		           , O.OPT_CD1
-		           , O.DISP_ORD
-		           , RANK() OVER(PARTITION BY O.GOODS_CD , O.OPT_CD1 ORDER BY O.DISP_ORD) ROWNUM
+		           , SUM(CASE WHEN O.SOLDOUT_YN = 'Y' THEN 0
+		                      WHEN VS.CURR_STOCK_QTY  <![CDATA[<=]]> 0 THEN 0
+		                      WHEN VS.CURR_STOCK_QTY - G.MIN_ORD_QTY >= 0 THEN VS.CURR_STOCK_QTY
+		                      ELSE 0 END) AS STOCK_QTY
 		      FROM TB_GOODS G
 		      INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
-		                             AND O.DISP_YN = 'Y' 
+		                             AND O.DISP_YN = 'Y'
+		       INNER JOIN VW_STOCK VS ON O.GOODS_CD = VS.GOODS_CD
+		                          AND O.OPT_CD = VS.OPT_CD
 		      WHERE G.GOODS_CD =  #{goodsCd}
 		      AND G.GOODS_TYPE = 'G056_N' -- 일반상품
-		      <if test='adminYn == null or adminYn != "Y"'>
-		      AND G.GOODS_STAT = 'G008_90'
-		      </if>
+		      GROUP BY G.GOODS_CD , G.SELF_GOODS_YN , VS.OPT_CD1
 		) A
-		WHERE ROWNUM = 1
 	</select>
 		
 	<!-- 상품 옵션2 목록  - 자사용-->
@@ -288,7 +289,7 @@
 		           , VS.CURR_STOCK_QTY AS STOCK_QTY
 		           , O.SOLDOUT_YN
 		           , O.DISP_ORD
-		           , (SELECT MIN_ORD_QTY FROM TB_GOODS WHERE GOODS_CD = O.GOODS_CD ) AS MIN_ORD_QTY
+		           , G.MIN_ORD_QTY
 		      FROM TB_GOODS G
 		      INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD
 		                             AND O.OPT_CD1 = #{optCd1}
@@ -296,9 +297,6 @@
 		      INNER JOIN VW_STOCK VS ON O.GOODS_CD = VS.GOODS_CD
 		                          AND O.OPT_CD = VS.OPT_CD
 		      WHERE G.GOODS_CD = #{goodsCd}
-		      <if test='adminYn == null or adminYn != "Y"'>
-		      AND G.GOODS_STAT = 'G008_90'
-		      </if>
 		     ) B
 		ORDER BY DISP_ORD
 	</select>
@@ -333,9 +331,6 @@
 		      INNER JOIN VW_STOCK VS ON O.GOODS_CD = VS.GOODS_CD
 		                          AND O.OPT_CD = VS.OPT_CD
 		      WHERE G.GOODS_CD = #{goodsCd}
-		      <if test='adminYn == null or adminYn != "Y"'>
-		      AND G.GOODS_STAT = 'G008_90'
-		      </if>
 		     ) B
 		ORDER BY DISP_ORD
 	</select>
@@ -388,55 +383,50 @@
 	</select>
 	
 	<!-- 딜상품 구성상품정보 조회 -->
-	<select id="getGoodsDealComposeList"  parameterType="Goods" resultType="GoodsCompose">
+	<select id="getGoodsDealComposeList"  parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getGoodsDealComposeList */
-		SELECT E.GOODS_CD
-		     , E.COMPS_GOODS_CD
-		     , E.DISP_ORD
-		     , E.COMPS_GOODS_OPT_NM
+		SELECT Z.* 
+		     , 100 - ROUND((CURR_PRICE / LIST_PRICE) * 100 ,0) AS DC_RATE 
+		     , CONCAT(IF(IFNULL(GOODS_GB,'') IN ('G073_11','G073_15', ''), '',IFNULL(CONCAT('[',FN_GET_CODE_NM('G073',GOODS_GB),']'),'') )
+		             ,IF(FOREIGN_BUY_YN='Y','[해외구매대행]','' )
+		             ,IF(PARALLEL_IMPORT_YN = 'Y','[병행수입]','')
+		             ,IF(ORDER_MADE_YN='Y','[주문제작]','')
+		             ,GOODS_NM ) AS GOODS_FULL_NM
+		FROM (
+		SELECT C.GOODS_CD
+		     , C.COMPS_GOODS_CD
+		     , C.DISP_ORD
+		     , G.GOODS_NM
+		     , G.GOODS_GB
+		     , G.FOREIGN_BUY_YN
+		     , G.PARALLEL_IMPORT_YN
+		     , G.ORDER_MADE_YN
 		     , G.LIST_PRICE
-		     , BP.CURR_PRICE
-		     , 100 - ROUND((BP.CURR_PRICE / G.LIST_PRICE) * 100 ,0) AS DC_RATE
-		     , G.DELV_FEE
-		     , G.MIN_ORD_AMT
-		     , G.MIN_ORD_QTY
-		     , G.MAX_ORD_QTY
-		     , G.DAY_MAX_ORD_QTY
-		     , (CASE WHEN #{frontGb} = 'P' THEN G.PNT_PRATE ELSE G.PNT_MRATE END) AS PNT_RATE
-		     , (CASE WHEN #{frontGb} = 'P' THEN G.PRE_PPNT_USABLE_YN ELSE G.PRE_MPNT_USABLE_YN END) AS PRE_PNT_USABLE_YN
-		     , G.BRAND_CD
-		     , (CASE WHEN B.DISP_NM_LANG = 'EN' THEN B.BRAND_ENM ELSE B.BRAND_KNM END) AS BRAND_NM
-		     , G.SUPPLY_COMP_CD
+		     , G.GOODS_STAT
+		     , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD, G.CURR_PRICE,#{custGb}) AS CURR_PRICE
+		     , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
-		     , (CASE WHEN G.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                                               ELSE CURR_STOCK_QTY
-		                                                               END) ,0)
-		                                                FROM  VW_STOCK
-		                                                WHERE GOODS_CD = G.GOODS_CD
-		                                                GROUP BY GOODS_CD )
-		            ELSE (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                      ELSE CURR_STOCK_QTY
-		                                      END) ,0)
-		                  FROM  VW_STOCK_COMPOSE
-		                  WHERE GOODS_CD= G.GOODS_CD
-		                  GROUP BY GOODS_CD )
-		            END) AS STOCK_QTY
-		FROM TB_GOODS G
-		INNER JOIN TB_GOODS_COMPOSE E ON G.GOODS_CD = E.COMPS_GOODS_CD 
-		                              AND E.GOODS_TYPE = 'D'
-		                              AND E.USE_YN = 'Y'
+		     , (SELECT IFNULL(MAX(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		                          ELSE CURR_STOCK_QTY
+		                          END) ,0)
+		        FROM  VW_STOCK
+		        WHERE GOODS_CD = G.GOODS_CD
+		        GROUP BY GOODS_CD 
+		        ) AS STOCK_QTY
+		FROM TB_GOODS_COMPOSE C
+		INNER JOIN TB_GOODS G ON C.COMPS_GOODS_CD = G.GOODS_CD  
 		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
 		                      AND B.USE_YN = 'Y'
 		INNER JOIN TB_SITE_BRAND SB ON B.BRAND_CD = SB.BRAND_CD
 		                            AND SB.USE_YN = 'Y'
 		                            AND SB.SITE_CD = #{siteCd}
-		INNER JOIN (SELECT GOODS_CD, 
-		            FN_GET_BENEFIT_PRICE(#{frontGb},GOODS_CD, CURR_PRICE,#{custGb}) AS CURR_PRICE 
-		            FROM TB_GOODS
-		            WHERE GOODS_CD = #{goodsCd}) BP ON G.GOODS_CD = BP.GOODS_CD
-		WHERE E.GOODS_CD = #{goodsCd}
-		AND G.SELF_MALL_YN = 'Y' -- 자사몰 노출
-		ORDER BY E.DISP_ORD
+		INNER JOIN TB_BRAND_GROUP D ON B.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		                            AND D.USE_YN = 'Y'
+		WHERE C.GOODS_CD = #{goodsCd}
+		AND C.GOODS_TYPE = 'G056_D'
+		AND C.USE_YN = 'Y'
+		ORDER BY C.DISP_ORD
+		) Z
 	</select>
 	
 	<!-- 구성 상품 정보 -->
@@ -822,6 +812,7 @@
 		             ,G.GOODS_NM ) AS COMPS_GOODS_FULL_NM
 		     , A.QTY
 		     , G.BRAND_CD
+		     , G.GOODS_STAT
 		     , G.MAIN_COLOR_CD AS COLOR_CD
 		     , G.ITEMKIND_CD
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
@@ -834,6 +825,7 @@
 		                            AND SB.USE_YN = 'Y'
 		                            AND SB.SITE_CD = #{siteCd}
 		WHERE A.GOODS_CD = #{goodsCd}
+		AND A.GOODS_TYPE = 'G056_S'
 		AND A.USE_YN = 'Y'
 		ORDER BY A.DISP_ORD
 	</select>

+ 226 - 0
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsDetailDescFormWeb.html
+ * @desc	: 딜 구상상품상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR		 DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.24   eskim	   최초 작성
+ *******************************************************************************
+ -->
+ <div class="cont_head">
+	<h3 class="sr-only">상품상세정보</h3>
+</div>
+<div class="cont_body" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<!-- 상품설명 노출 -->
+	<div class="descrp_box">
+		<div class="desc_simple"> <!-- 상품 간략설명-->
+			<span class="tit_desc" th:if="${goodsInfo.goodsTitle  != null  and !goodsInfo.goodsTitle.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTitle))}">사이드 밴딩으로 편안한 만능 슬랙스!</span>
+			<p class="ptxt01"th:if="${goodsInfo.goodsTitleDesc}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTitleDesc))}">
+				슬림핏에 사이드 밴딩으로 편안함을 더해준 슬랙스입니다. 
+			</p>
+		</div>
+		<div class="desc_character" th:if="${goodsInfo.goodsSpecialDesc != null  and !goodsInfo.goodsSpecialDesc.empty}"> <!-- 상품특징 -->
+			<span class="tit_desc">상품특징</span>
+			<p class="ptxt01" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsSpecialDesc))}">
+				- 지퍼플러 장식을 더해 완성도를 높여줌
+			</p>
+		</div>
+	</div>
+	<!-- //상품설명 노출 -->
+	<!-- 관리자 에디터입력 내용   공지 html -->
+		<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
+	<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
+		</th:block>
+	<!-- 관리자 에디터입력 내용   공지 html -->
+	<!-- 관리자 에디터입력 내용 노출  상단 html -->
+	<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
+		
+	<!-- 착용컷 노출 -->
+	<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1.') 
+										or #strings.contains(goodsImgList,'_M2.')
+										or #strings.contains(goodsImgList,'_M3.')
+										or #strings.contains(goodsImgList,'_M4.')
+										or #strings.contains(goodsImgList,'_M5.')}">
+		<span class="tit_view">OUTFIT VIEW</span>
+		<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
+		<div class="view">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1.') 
+																		or #strings.contains(goodsImg.sysImgNm,'_M2.')
+																		or #strings.contains(goodsImg.sysImgNm,'_M3.')
+																		or #strings.contains(goodsImg.sysImgNm,'_M4.')
+																		or #strings.contains(goodsImg.sysImgNm,'_M5.')}">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			</th:block>
+		</div>
+	</div>
+	
+	<!-- //착용컷 노출 -->
+	<!-- 상품컷 노출 -->
+	<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01.') 
+										or #strings.contains(goodsImgList,'_02.')
+										or #strings.contains(goodsImgList,'_D1.')
+										or #strings.contains(goodsImgList,'_D2.')
+										or #strings.contains(goodsImgList,'_D3.')
+										or #strings.contains(goodsImgList,'_D4.')
+										or #strings.contains(goodsImgList,'_D5.')}">
+		<span class="tit_view">PRODUCT VIEW</span>
+		<div class="view">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01.') 
+																		or #strings.contains(goodsImg.sysImgNm,'_02.')
+																		or #strings.contains(goodsImg.sysImgNm,'_D1.')
+																		or #strings.contains(goodsImg.sysImgNm,'_D2.')
+																		or #strings.contains(goodsImg.sysImgNm,'_D3.')
+																		or #strings.contains(goodsImg.sysImgNm,'_D4.')
+																		or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			</th:block>
+		</div>
+	</div>
+	<!-- //상품컷 노출 -->
+	<!-- 원단 노출 -->
+	<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_S1.')}">
+		<span class="tit_view">FABRIC</span>
+		<div class="view">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1.')}">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			</th:block>
+		</div>
+	</div>
+	<!-- //원단 노출 -->
+	<!-- 라벨 노출 -->
+	<div class="view_label_box" th:if="${#strings.contains(goodsImgList,'_L1.') 
+										or #strings.contains(goodsImgList,'_L2.')}">
+		<span class="tit_view">LABEL INFO</span>
+		<div class="view">
+			<span>
+				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1.') 
+																		or #strings.contains(goodsImg.sysImgNm,'_L2.')}">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+				</th:block>
+			</span>
+		</div>
+	</div>
+	<!-- //라벨 노출 -->
+	
+	<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01.')}">
+		<div class="view">
+			<th:block th:each="goodsImg, status : ${goodsImgList}" >
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+				</th:block>
+		</div>
+	</div>
+	
+		<th:block th:if="${goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" >
+	<!-- 상세 html 이 존재하면  -->
+	<div class="mdhtml_box" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></div>
+		</th:block>
+		
+	<!-- 관리자 에디터입력 내용 노출  하다단 html -->
+	<div class="mdhtml_box" th:if="${goodsInfo.goodsDownDesc != null  and !goodsInfo.goodsDownDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDownDesc))}"></div>
+		
+	<!-- 브랜드 노출 -->
+	<div class="brand_box">
+		<p class="name" th:text="${goodsInfo.brandGroupNm}">TBJ 티비제이</p>
+		<a href="javascript:void(0);" class="btn btn_default" th:onclick="cfnGoToBrandMain([[${goodsInfo.brandGroupNo}]])" ><span>브랜드 홈 바로가기</span></a>
+	</div>
+	<!-- //브랜드 노출 -->
+	<!-- 상품필수정보 노출 -->
+	<div class="required_box" >
+		<div class="area_infotbl" th:if="${goodsInfo.goodsType == 'G056_N' and goodsNotiList != null and !goodsNotiList.empty}">
+			<span class="title">상품고시정보</span>
+			<div class="tbl type1 mt30">
+				<table>
+					<tbody>
+						<tr  th:each="goodsNoti, status : ${goodsNotiList}" >
+							<th th:text="${goodsNoti.niItemNm}">스타일</th>
+							<td th:text="${goodsNoti.niContent}">F94U-MD01XA60F0</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+		<div class="area_infotbl" th:if="${goodsInfo.goodsType == 'G056_S' and goodsComposeList != null and !goodsComposeList.empty}">
+			<span class="title">상품고시정보</span>
+			<th:block th:each="goodsCompose, status : ${goodsComposeList}">
+			<div class="tbl type1 mt30">
+				<table>
+					<tbody>
+						<tr  th:each="goodsNoti, status : ${goodsCompose.goodsNotiList}" >
+							<th th:text="${goodsNoti.niItemNm}">스타일</th>
+							<td th:text="${goodsNoti.niContent}">F94U-MD01XA60F0</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+			</th:block>
+		</div>
+		<div class="area_kcl" th:if="${goodsSafeNo != null}">
+			<i class="ico ico_kcl"></i>
+			<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+				어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
+			</p>
+			<p class="normal" >
+				<th:block th:if="${not #strings.isEmpty(goodsSafeNo.isCertNum)}" >
+				 인증번호: :CB123A123-1234
+				<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
+				</th:block>
+				<th:block th:unless="${goodsSafeNo.isCertNum}">
+				해당사항 없음
+				</th:block>
+			</p>
+			<p class="t_info dot_info">
+				해당 인증정보는 판매자가 등록한 것으로 등록정보에 대한 일체의 책임은 판매자에게 있습니다.
+			</p>
+		</div>
+		<div class="area_infotbl">
+			<span class="title">상품기본정보</span>
+			<div class="tbl type1 mt30">
+				<table>
+					<tbody>
+						<tr>
+							<th>상품코드</th>
+							<td th:text="${goodsInfo.goodsCd}">14443216</td>
+						</tr>
+						<tr>
+							<th>상품구분</th>
+							<td th:text="${goodsInfo.goodsGbNm}">병행수입</td>
+						</tr>
+						<tr>
+							<th>브랜드</th>
+							<td th:text="${goodsInfo.brandGroupNm}">TBJ</td>
+						</tr>
+						<tr>
+							<th>상품명</th>
+							<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+						</tr>
+						<tr>
+							<th>제조자</th>
+							<td >한세엠케이(주)==============>노출필요성 확인</td>
+						</tr>
+						<tr>
+							<th>제조국</th>
+							<td th:text="${goodsInfo.originNm}">베트남</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+			<p class="t_info dot_info mt20">
+				주문제작 상품의 경우 주문 후 제작되어 판매되는 상품으로 제작 시점부터 반품/교환이 어려울 수 있습니다.
+			</p>
+		</div>
+	</div>
+	<!-- //상품필수정보 노출 -->
+	</div>
+	<div class="btn_more_box covered">
+		<button type="button" class="btn btn_default btn_md">
+			<span>상세정보 더보기</span>
+		</button>
+	</div>
+</html>

+ 619 - 0
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -0,0 +1,619 @@
+<!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  : GoodsDetailFormWeb.html
+ * @desc	: 딜 상품상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	     DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.02   eskim       최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js"></script>
+<div id="container" class="container pd deal" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="wrap">
+		<!-- 상품 대표설명 -->
+		<div class="content pd_detail">
+			<div class="cont_head">
+				<h3 class="sr-only">상품 대표설명</h3>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="item_detail">
+					<div class="area_pic">
+						<div class="thumb_nav_wrap"  th:if="${goodsImgList != null and !goodsImgList.empty}" >
+							<div class="thumbnav">
+									<div class="swiper-container">
+										<div class="swiper-wrapper">
+										<th:block th:each="goodsImg, status : ${goodsImgList}">
+											<div class="swiper-slide" th:classappend="${status.first}? 'on' : ''" 
+													th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+															or #strings.contains(goodsImg.sysImgNm,'_L1.')
+															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></div>
+										</th:block>	
+										</div>
+									</div>
+									<div class="swiper-button-next"></div>
+									<div class="swiper-button-prev"></div>
+								</div>
+						</div>
+						<div class="thumb_list_wrap"  th:if="${goodsImgList != null and !goodsImgList.empty}" >
+							<ul>
+								<th:block th:each="goodsImg, status : ${goodsImgList}">
+								<li th:id="${'navLocate'+ status.count}"  th:classappend="${status.first}? 'on' : ''" 
+									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+												or #strings.contains(goodsImg.sysImgNm,'_L1.')
+												or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></li>
+								</th:block>
+							</ul>
+						</div>
+					</div>
+					<form name="cartForm" id="cartForm" method="post">
+					<input type="hidden" name="mode">
+					<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
+					<input type="hidden" name="contentsLoc" th:value="${params.contentsLoc}" />
+					<input type="hidden" name="ithrCd"  th:value="${params.ithrCd}" />
+					<input type="hidden" name="planDtlSq" th:value="${params.planDtlSq}" />
+					<input type="hidden" name="adminYn" th:value="${params.adminYn}" />
+					<input type="hidden" name="optCd" />
+					<input type="hidden" name="optCd1" />
+					<input type="hidden" name="optCd2" />
+					<input type="hidden" name="addPrice" />
+					<input type="hidden" name="ordQty" />
+					<input type="hidden" name="stock" />
+					<input type="hidden" name="minOrdQty"/>
+					<input type="hidden" name="maxOrdQty"/>
+					<input type="hidden" name="goodsType" th:value="${goodsInfo.goodsType}"/>
+					<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
+					<div class="area_desc">
+						<div class="desc_wrap">
+							<div class="timer_box" style="display:none;">
+								<p>
+									<span class="tit">남은시간</span>
+									<span class="timer">
+										<em id="d-days">0</em>
+										<em id="d-hours">0</em>
+										<em id="d-minutes">0</em>
+										<em id="d-seconds">0</em>
+									</span>
+								</p>
+							</div>
+							<div class="descript_box">
+								<div class="desc_top">
+									<button type="button" class="itemShare">상품 공유하기</button>
+									<button type="button" class="itemLike">관심상품 추가</button>
+								</div>
+								<div class="desc_info">
+									<div class="title_blk">
+										<span class="comment" th:text="${goodsInfo.goodsTnm}">
+											#본사 직영 인기캐주얼 특가전
+										</span>
+										<span class="name" th:text="${goodsInfo.goodsFullNm}">
+											[NBA외] 본사 직영~ 봄 신상 야구모자/백팩 외 99종 무료배송!
+										</span>
+									</div>
+									<div class="price_blk">
+										<span class="sale_price">
+											<em>134,100</em>원 ~ 
+										</span>
+										<button type="button" id="btn_saleCoupon_pop" class="btn btn_primary btn_sm btn_coupon"  th:if="${goodsCouponList != null and !goodsCouponList.empty}" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]])"><span>쿠폰받기</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="benefit_box" th:if="${(cardInfoList != null and !cardInfoList.empty) or
+																(goodsCouponList != null and !goodsCouponList.empty)
+															}" >
+								<dl>
+									<div class="bnf_shopping" th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+										<dt>쇼핑혜택</dt>
+										<!------------ 색상 강조 텍스트 영역 <em class="c_primary"></em> 사용요청 ------------>
+										<dd>
+											<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+											<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
+											최대 <em class="c_primary" >
+												<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>
+											</em> 쿠폰 할인
+											</th:block>
+											</span> 
+											<span><em class="c_primary">99개</em> 이상 구매 시 <em class="c_primary">9,999,999원</em> 할인</span>
+											<span>미니언즈 우산 증정</span>
+											<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
+										</dd>
+									</div>
+									<div class="bnf_card" th:if="${cardInfoList != null and !cardInfoList.empty}">
+										<dt>카드혜택</dt>
+										<dd>
+											<th:block th:each="cardInfo, status : ${cardInfoList}">
+											<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb != '3'}"><th:block th:text="${cardInfo.prmtTargetNm}"></th:block> <em class="c_primary"><th:block th:text="${#numbers.formatInteger(cardInfo.dcVal, 0,'COMMA')+ cardInfo.dcWayNm}"></th:block></em> <th:block th:text="${cardInfo.prmtGbNm}"></span>
+											<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb == '3'}" th:text="${cardInfo.prmtNm}">프로모션명</span>
+											<span th:if="${cardInfo.prmtGb == 'B'}">신용카드 무이자 혜택</span>
+											</th:block>
+											<button type="button" id="btn_bnfCard_pop" class="btn_popup" onclick="cfCardInfo();return false;"><span>자세히</span></button>
+										</dd>
+									</div>
+								</dl>
+							</div>
+							<div class="option_box">
+								<div class="opt_select">
+									<form class="form_wrap">
+										<div class="form_field">
+											<div class="select_custom deal_opt_item">
+												<div class="combo">
+													<div class="select">
+														<div class="item_prod">
+															<div class="item_state">
+																<a href="javascript:void(0)" class="itemLink">
+																	<div class="itemPic">
+																		<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																	</div>
+																	<div class="itemName">선택</div>
+																</a>
+															</div>
+														</div>
+													</div>
+													<ul class="list">
+														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+														<li class="selected">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품1]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li> 
+														<li>
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품2]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+														<li>
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품3]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+														<li aria-disabled="true">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품4]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li><li aria-disabled="true" data-soldout="true">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품5]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+													</ul>
+												</div>
+											</div>
+										</div>
+										<div class="form_field">
+											<div class="select_custom deal_opt1" disabled>
+												<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 deal_opt2" 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>
+									</form>
+								</div>
+								<div class="opt_result">
+									<div class="result_item">
+										<div class="opt_header">
+											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+											<span class="item_option">다크그레이/XXL</span>
+										</div>
+										<div class="number_count">
+											<span class="minus"><em class="sr-only">감소</em></span>
+											<input type="text" name="" maxlength="3" style='ime-mode:disabled' value="1" />
+											<span class="plus"><em class="sr-only">추가</em></span>
+										</div>
+										<div class="item_price">
+											<p><em>99,999,999</em>원</p>
+										</div>
+										<button type="button" class="btn_delete_item"><span>삭제</span></button>
+									</div>
+									<div class="result_item">
+										<div class="opt_header">
+											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+											<span class="item_option">블루그레이/S</span>
+										</div>
+										<div class="number_count">
+											<span class="minus"><em class="sr-only">감소</em></span>
+											<input type="text" name="" maxlength="3" style='ime-mode:disabled' value="1" />
+											<span class="plus"><em class="sr-only">추가</em></span>
+										</div>
+										<div class="item_price">
+											<p><em>99,999,999</em>원</p>
+										</div>
+										<button type="button" class="btn_delete_item"><span>삭제</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="price_box">
+								<p class="number">
+									총&nbsp;<span id="goodsTotalQty">0</span>개
+								</p>
+								<p class="price">
+									<span>
+										<b id="goodsTotalPrice">0</b><em>원</em>
+									</span>
+								</p>
+							</div>
+							<div class="btn_box">
+								<div class="btn_group_block ui_row">
+									<div class="ui_col_6">
+										<button type="button" class="btn btn_dark btn_block" id="btnGoodsWish" onclick="fnAddCart('C');"><span>쇼핑백</span></button>
+									</div>
+									<div class="ui_col_6">
+										<button type="button" class="btn btn_primary btn_block" id="btnGoodsCart" onclick="fnAddCart('O');"><span>바로구매</span></button>
+									</div>
+								</div>
+								<div class="btn_group_block ui_row">
+									<div class="ui_col_12">
+										<button type="button" class="btn btn_dark btn_block" disabled><span>SOLD OUT</span></button>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+					</form>
+				</div>
+			</div>
+		</div>
+		<!-- 상품 대표설명 -->
+		
+		<th:block th:include="~{web/goods/GoodsIncludeFormWeb :: goodsDealComposeForm}"></th:block>
+		<!-- //***** 상품소개영역 ***** -->
+		<!-- 이 상품과 함께 본 상품 -->
+		<div class="content wide pd_clickother" id="goodsTogetherbArea">
+		</div>
+		<!-- // 이 상품과 함께 본 상품 -->
+	</div>
+</div>
+
+ 
+	<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	var cateNm = "";
+	
+	// 함께본 상품
+	var fnGoodsTogetherSearch = function(params) {
+		gagajf.ajaxSubmit("/goods/detail/together/frame", "html", "goodsTogetherbArea", params);
+	}
+	
+	$(document).ready( function() {
+		
+		$('.timer_box').css('display', 'none');
+		
+		var params = new Object();
+		params.goodsCd = [[${params.goodsCd}]];
+		params.viewDt = [[${params.viewDt}]];
+		params.preview = [[${params.preview}]];
+		params.adminYn = [[${params.adminYn}]];
+		params.goodsType = [[${params.goodsType}]];
+		params.supplyCompCd = [[${params.supplyCompCd}]];
+		params.brandGroupNm = [[${goodsInfo.brandGroupNm}]];
+		
+		// 함께본 상품(ajax html)
+		params.goodsOtherGb = "together";
+		params.ithrCd = "tmtb";
+		params.contentsLoc = "tmtb";
+		fnGoodsTogetherSearch(params);
+
+		if (!gagajf.isNull([[${goodsInfo.socialSq}]])){
+			$('.timer_box').css('display', 'block');
+			/* 행사 남은시간 */
+			function promotionTimer() {
+				var endTime = new Date([[${goodsInfo.socialEddt}]]); // 남은시간 지정	30 March 2021 9:56:00 GMT+0900	
+					endTime = (Date.parse(endTime) / 1000);
+	
+					var now = new Date();
+					now = (Date.parse(now) / 1000);
+	
+					var timeLeft = endTime - now;
+	
+					var days = Math.floor(timeLeft / 86400); 
+					var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+					var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+					var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+	
+					if (hours < '10') { hours = '0' + hours; }
+					if (minutes < '10') { minutes = '0' + minutes; }
+					if (seconds < '10') { seconds = '0' + seconds; }
+	
+					if (Number(days) > 0 ){
+						$('#d-days').html(days);	
+					}else{
+						$('#d-days').css('display','none');
+					}
+					$('#d-hours').html(hours);
+					$('#d-minutes').html(minutes);
+					$('#d-seconds').html(seconds);		
+			}
+			setInterval(function() { promotionTimer(); }, 1000);
+		}
+
+		//상품 대표설명 > 우측 상품정보 
+		/* 딜 옵션선택 후 다음 옵션 활성화 */
+		var detail_deal_option01 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt_item');
+		var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+		var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+		$('.pd_detail .opt_select .select_custom .combo .list > li').click(function(e) {
+			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
+			return false;
+		});
+
+		// 하단 우측 상품선택영역
+		/* 딜 옵션선택 후 다음 옵션 활성화 */
+		var desc_option01 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt_item');
+		var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
+		var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
+		$('.pd_desc_wrap .opt_select .select_custom .combo .list > li').click(function(e) {
+			$(this).parents('.form_field').next('.form_field').find('.select_custom').attr('disabled', false);
+			return false;
+		});			
+
+		// 상품선택 옵션 : 하단 상품정보 영역  
+		var tab_review_item = new sCombo('.tab_detail_cont .select_custom.deal_opt_item.forReview');
+		var tab_qna_item = new sCombo('.tab_detail_cont .select_custom.deal_opt_item.forQna');
+		var tab_exinfo_item = new sCombo('.tab_detail_cont .select_custom.deal_opt_item.forExinfo');
+
+		// 상품선택 옵션 : 상세정보 > 상품 > 팝업
+		var pop_desc_option01 = new sCombo('.pd_descrp_pop .select_custom.deal_opt_item');
+		var pop_desc_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
+		var pop_desc_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
+
+		/* 상품옵션변경 팝업 > 수량조절 */
+		//수량1개 이하 감소버튼 비활성화 
+		var valItemCount = $('.option_box .result_item .number_count input').val();
+		if ( valItemCount == 1 ) {
+			$(' .option_box .result_item .number_count .minus').addClass('min_val');
+		} 
+		//수량조절 이벤트
+		$(document).on('click','.option_box .result_item .number_count .minus',function(e){
+			var $input = $(this).parent().find('input');
+				var count = parseInt($input.val()) - 1;
+				count = count < 1 ? 1 : count;
+				$input.val(count);
+				$input.change();  
+			//수량1개 이하 감소버튼 비활성화			
+			if ($input.val() == 1) {
+				$(this).parent('.number_count').find('.minus').addClass('min_val');
+			} 
+				return false;
+		}).on('click','.option_box .result_item .number_count .plus',function(e){
+			var $input = $(this).parent().find('input');
+				$input.val(parseInt($input.val()) + 1);
+				$input.change();
+			//수량2개 이상부터 감소버튼 활성화 
+			$(this).parent('.number_count').find('.minus').removeClass('min_val');
+				return false;
+		}).on('keyup','.option_box .result_item .number_count input[type=text]',function(e){
+			//텍스트, 0 입력금지 
+			$(this).val($(this).val().replace(/[^1-9]/g,""));
+		});
+
+		//상품상세정보 더보기
+		$(document).on('click','.pd_descrp_pop .btn_more_box button',function(e){
+			$('.pd_descrp_pop .cont_body').toggleClass('on'); 
+			$(this).toggleClass('active');
+			$(this).parent('.btn_more_box').toggleClass('covered');
+			var descrpToggle = $(this).find('span');
+			$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
+			return false;
+		}); 
+
+		//상품상세정보 탭
+		$(document).on('click','.pd.deal .tab_detail_nav ul li',function(e){
+			$(this).addClass('active').siblings().removeClass('active');
+			$('.pd.deal .tab_detail_cont').hide();		
+			$('.pd.deal .tab_detail_cont').eq($(this).index()).show();
+			
+			//상품상세정보 호출
+			$('.pd_review .cont_body').load('pd_review_pop.html');
+			$('.pd_qnalist .cont_body').load('pd_qnalist_pop.html');
+			$('.pd_delivery .cont_body').load('pd_delivery_pop.html');
+			
+			return false;
+		});						
+					
+		//슬라이드 - 이 상품과 함께 본 상품 
+		var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
+			slidesPerView: 5,
+			spaceBetween: 20,
+			navigation: {
+				nextEl: '.pd_clickother .swiper-button-next',
+				prevEl: '.pd_clickother .swiper-button-prev',
+			},
+			pagination: {
+				el: '.pd_clickother .swiper-pagination',
+				clickable: true,
+			},
+		});
+
+		// 광고 스크립트용
+		var goodsNavigation = [[${goodsNavigation}]];
+		var cate1Nm = "";
+		var cate2Nm = "";
+		var cate3Nm = "";
+		var cate4Nm = "";
+		var cate5Nm = "";
+		if (!gagajf.isNull(goodsNavigation)) {
+			cate1Nm = goodsNavigation.cate1Nm;
+			cate2Nm = goodsNavigation.cate2Nm;
+			cate3Nm = goodsNavigation.cate3Nm;
+			cate4Nm = goodsNavigation.cate4Nm;
+			cate5Nm = goodsNavigation.cate3Nm;
+			
+			if (!gagajf.isNull(cate1Nm)) {
+				cateNm += cate1Nm;
+			}
+			if (!gagajf.isNull(cate2Nm)) {
+				cateNm += ' > ' + cate2Nm;
+			}
+			if (!gagajf.isNull(cate3Nm)) {
+				cateNm += ' > ' + cate3Nm;
+			}
+			if (!gagajf.isNull(cate4Nm)) {
+				cateNm += ' > ' + cate4Nm;
+			}
+			if (!gagajf.isNull(cate5Nm)) {
+				cateNm += ' > ' + cate5Nm;
+			}
+		}
+		// 광고 스크립트용
+		
+		var snsGoodsImg = _uploadGoodsUrl + [[${goodsInfo.sysImgNm}]];
+		var snsUrl = location.protocol + _PAGE_GOODS_DETAIL + params.goodsCd +'&colorCd =' + params.colorCd  ;
+		var snsGoodsFullNm = [[${goodsInfo.goodsFullNm}]];
+		
+		<!-- 페이스북 카카오스토리 연동 관련 메타태그 -->
+		$("meta[property='og:url']").attr('content', snsUrl);
+		$("meta[property='og:title']").attr('content', snsGoodsFullNm);
+		$("meta[property='og:description']").attr('content', snsGoodsFullNm);
+		$("meta[property='og:image']").attr('content', snsGoodsImg);
+
+		<!-- 트위터 관련 메타태그 -->
+		$("meta[name='twitter:url']").attr('content', snsUrl);
+		$("meta[name='twitter:title']").attr('content', snsGoodsFullNm);
+		$("meta[name='twitter:description']").attr('content', snsGoodsFullNm);
+		$("meta[name='twitter:image']").attr('content', snsGoodsImg);
+
+		// 추천솔류션 meta 설정
+		$("meta[property='eg:type']").attr('content',"product");
+		$("meta[property='eg:cuid']").attr('content',eglqueueCuid);
+		$("meta[property='eg:itemId']").attr('content', [[${goodsInfo.goodsCd}]] );
+		$("meta[property='eg:itemName']").attr('content',[[${goodsInfo.goodsFullNm}]] );
+		$("meta[property='eg:itemImage']").attr('content', snsGoodsImg);
+		$("meta[property='eg:itemUrl']").attr('content',snsUrl);
+		$("meta[property='eg:originalPrice']").attr('content',[[${goodsInfo.listPrice}]]);
+		$("meta[property='eg:salePrice']").attr('content',[[${goodsInfo.currPrice}]]);
+		$("meta[property='eg:category1']").attr('content',cate1Nm);
+		$("meta[property='eg:category2']").attr('content',cate2Nm);
+		$("meta[property='eg:category3']").attr('content',cate3Nm);
+		$("meta[property='eg:category4']").attr('content',cate4Nm);
+		$("meta[property='eg:category5']").attr('content',cate5Nm);
+		$("meta[property='eg:brandId']").attr('content',[[${goodsInfo.brandGroupNo}]]);
+		$("meta[property='eg:brandName']").attr('content',[[${goodsInfo.brandGroupNm}]]);
+		$("meta[property='eg:regDate']").attr('content',[[${goodsInfo.regDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+		$("meta[property='eg:updateDate']").attr('content',[[${goodsInfo.updDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+		$("meta[property='eg:stock']").attr('content',"");
+		$("meta[property='eg:state']").attr('content',[[${goodsInfo.goodsStatNm}]]);
+		$("meta[property='eg:description']").attr('content',null);
+		$("meta[property='eg:extraImage']").attr('content',null);
+		$("meta[property='eg:locale']").attr('content',"KR");
+		$("meta[property='eg:isNew']").attr('content',([[${goodsInfo.formalGb}]] == 'G009_10')? 'True' :'False');
+		$("meta[property='eg:etc1']").attr('content', [[${goodsInfo.selfGoodsYn}]]);
+	});
+	
+/*]]>*/
+</script>
+<!-- 광고 스크립트 -->
+<!-- <th:block th:replace="~{web/common/advertisements/GoodsDetailScriptsWeb :: scripts}"></th:block> -->
+<!-- //광고 스크립트 -->
+
+</th:block>
+
+</body>
+</html>

+ 211 - 0
src/main/webapp/WEB-INF/views/web/goods/GoodsDealListFormWeb.html

@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsDealListForm.html
+ * @desc	: 딜 구성상품 상세정보 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.24   eskim		최초 작성
+ *******************************************************************************
+ -->
+<div class="full_popup_wrap" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+	<h5 class="sr-only">개별상품 상세정보 안내</h5>
+	<div class="btn_close">
+		<a href="javascript:void(0)" onclick="cfCloseFullLayer('layer_goods_deal_detail');">닫기버튼</a>
+	</div>
+	<div class="full_pop_header">
+		<!-- 아이템선택 -->
+		<div class="form_field">
+			<div class="select_custom deal_opt_item">
+				<div class="combo">
+					<div class="select">
+						<div class="item_prod">
+							<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}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</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>
+					<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
+						<li class="selected" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]])">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+										</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>
+						</li> 
+					</ul>
+				</div>
+			</div>
+		</div>
+		<!-- //아이템선택 -->
+	</div>
+	<div class="full_pop_container" id="goodsDealDetail">
+		<!-- 개별상품 상세정보 팝업 내용 -->
+	</div>
+	<div class="full_pop_fix_r">
+		<div class="option_box">
+			<div class="opt_select">
+				<form class="form_wrap">
+					<div class="form_field">
+						<div class="select_custom deal_opt1">
+							<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 deal_opt2" 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>
+				</form>
+			</div>
+			<div class="opt_result">
+				<div class="result_item">
+					<div class="opt_header">
+						<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+						<span class="item_option">다크그레이/XXL</span>
+					</div>
+					<div class="number_count">
+						<span class="minus"><em class="sr-only">감소</em></span>
+						<input type="text" name="" maxlength="3" style='ime-mode:disabled' value="1" />
+						<span class="plus"><em class="sr-only">추가</em></span>
+					</div>
+					<div class="item_price">
+						<p><em>99,999,999</em>원</p>
+					</div>
+					<button type="button" class="btn_delete_item"><span>삭제</span></button>
+				</div>
+				<div class="result_item">
+					<div class="opt_header">
+						<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+						<span class="item_option">블루그레이/S</span>
+					</div>
+					<div class="number_count">
+						<span class="minus"><em class="sr-only">감소</em></span>
+						<input type="text" name="" maxlength="3" style='ime-mode:disabled' value="1" />
+						<span class="plus"><em class="sr-only">추가</em></span>
+					</div>
+					<div class="item_price">
+						<p><em>99,999,999</em>원</p>
+					</div>
+					<button type="button" class="btn_delete_item"><span>삭제</span></button>
+				</div>
+			</div>
+		</div>
+		<div class="price_box">
+			<p class="number">
+				총&nbsp;<span>99</span>개
+			</p>
+			<p class="price">
+				<span>
+					99,999,999<em>원</em>
+				</span>
+			</p>
+		</div>
+		<div class="btn_box">
+			<div class="btn_group_block ui_row">
+				<div class="ui_col_6">
+					<button id="btn_add_cart" class="btn btn_dark btn_block" ><span>쇼핑백</span></button>
+				</div>
+				<div class="ui_col_6">
+					<button class="btn btn_primary btn_block" id=""><span>바로구매</span></button>
+				</div>
+			</div>
+			<div class="btn_group_block ui_row">
+				<div class="ui_col_12">
+					<button class="btn btn_dark btn_block" id="" disabled><span>SOLD OUT</span></button>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	var pop_desc_option01 = new sCombo('.pd_descrp_pop .select_custom.deal_opt_item');
+	
+	// 구성 상품 상세 
+	var fnGoodsDealDetail = function(params) {
+		gagajf.ajaxSubmit("/goods/deal/detail/info/frame", "html", "goodsDealDetail", params);
+	}
+	
+	// 상품선택시
+	var fnGoodsDealDesc = function(goodsCd){debugger;
+		var params = new Object();
+		params.goodsCd = goodsCd;
+		fnGoodsDealDetail(params);  // ajax html
+	}
+	
+	$(document).ready( function() {
+
+		var params = new Object();
+		params.goodsCd = [[${params.compsGoodsCd}]];
+		fnGoodsDealDetail(params);  // ajax html
+	});
+	
+	
+/*]]>*/
+</script>
+
+ </html>

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

@@ -211,7 +211,9 @@
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 													<li class="selected" th:id="|selfGoodsOpt1${goodsCompose.compsGoodsCd}|" th:if=${optionStatus.first}>선택</li> 
-													<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])">
+													<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
+														th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}"
+														>
 														<div th:text="${goodsOption.optCd1}">상품옵션</div>
 														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
@@ -310,7 +312,7 @@
 								</th:block>
 								<th:block  th:unless="${goodsInfo.stockQty > 0}">
 									<div class="ui_col_12">
-										<button type="button" class="btn btn_dark btn_block" id="" disabled=""><span>SOLD OUT</span></button>
+										<button type="button" class="btn btn_dark btn_block" disabled=""><span>SOLD OUT</span></button>
 									</div>
 								</th:block>
 								</div>
@@ -1214,7 +1216,7 @@
 		
 		$('.timer_box').css('display', 'none');
 		
-		let params = new Object();
+		var params = new Object();
 		params.goodsCd = [[${params.goodsCd}]];
 		params.viewDt = [[${params.viewDt}]];
 		params.preview = [[${params.preview}]];
@@ -1381,8 +1383,7 @@
 			setInterval(function() { promotionTimer(); }, 1000);
 		}
 
-		/* 상품옵션변경 팝업 > 수량조절 */
-//		
+		
 		
 		//스타일링 추천 picker	
 		$(document).on('mouseenter','.pd_recommend .area_slider .item_picker button',function(e){

+ 420 - 0
src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html

@@ -73,4 +73,424 @@
 </div>
 </th:block>
 
+<!-- 딜 상품 상품소개영역 -->
+<th:block  th:fragment="goodsDealComposeForm">
+<!-- ***** 상품소개영역 ***** -->
+		<div class="content pd_desc_wrap">
+			<div class="cont_body">
+				<div class="item_descrp">
+					<div class="area_list">
+						<!-- 상품소개 탭 -->
+						<div class="tab_detail_nav">
+							<ul>
+								<li class="active"><a href="javascript:void(0)">상세정보</a></li>
+								<li><a href="javascript:void(0)">리뷰<em>(9,999+)</em></a></li>
+								<li><a href="javascript:void(0)">문의<em>(9,999+)</em></a></li>
+								<li><a href="javascript:void(0)">배송/교환/반품</em></a></li>
+							</ul>
+						</div>
+						<!-- //상품소개 탭 -->
+						<!-- 상품상세정보 -->
+						<div class="tab_detail_cont pd_dealitem" style="display:block;" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+							<div class="itemsGrp" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
+								<!--  반복 -->
+								<div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
+									<div class="item_state">
+										<a href="javascript:void(0);" class="itemLink" th:onclick="cfGoodsDeailDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
+											<div class="rank detail">
+												<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
+											</div>
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											</div>
+											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</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>
+						</div>
+						<!-- //상품상세정보 -->
+						<!-- 상품리뷰 리스트 -->
+						<div class="tab_detail_cont pd_review">
+							<div class="cont_head">
+								<h3 class="sr-only">상품리뷰 목록</h3>
+								<!-- 아이템선택 -->
+								<div class="form_field">
+									<div class="select_custom deal_opt_item forReview">
+										<div class="combo">
+											<div class="select">
+												<div class="item_prod">
+													<div class="item_state">
+														<a href="javascript:void(0)" class="itemLink">
+															<div class="itemPic">
+																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+															</div>
+															<div class="itemName">선택</div>
+														</a>
+													</div>
+												</div>
+											</div>
+											<ul class="list">
+												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+												<li class="selected">
+													<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>
+																<p class="itemPrice">134,100
+																	<span class="itemPrice_original">149,000</span>
+																	<span class="itemPercent">30%</span>
+																</p>
+															</a>
+														</div>
+													</div>
+												</li> 
+											</ul>
+										</div>
+									</div>
+								</div>
+								<!-- //아이템선택 -->
+							</div>
+							<div class="cont_body">
+								아이템별 상품리뷰 목록
+							</div>
+						</div>
+						<!-- //상품리뷰 리스트 -->
+						<!-- 상품문의 리스트 -->
+						<div class="tab_detail_cont pd_qnalist">
+							<div class="cont_head">
+								<h3 class="sr-only">상품문의 목록</h3>
+								<!-- 아이템선택 -->
+								<div class="form_field">
+									<div class="select_custom deal_opt_item forQna">
+										<div class="combo">
+											<div class="select">
+												<div class="item_prod">
+													<div class="item_state">
+														<a href="javascript:void(0)" class="itemLink">
+															<div class="itemPic">
+																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+															</div>
+															<div class="itemName">선택</div>
+														</a>
+													</div>
+												</div>
+											</div>
+											<ul class="list">
+												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+												<li class="selected">
+													<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>
+																<p class="itemPrice">134,100
+																	<span class="itemPrice_original">149,000</span>
+																	<span class="itemPercent">30%</span>
+																</p>
+															</a>
+														</div>
+													</div>
+												</li> 
+												
+											</ul>
+										</div>
+									</div>
+								</div>
+								<!-- //아이템선택 -->
+							</div>
+							<div class="cont_body">
+								아이템별 상품문의 목록
+							</div>
+						</div>
+						<!-- //상품문의 리스트 -->
+						<!-- 배송/교환/반품 정보 -->
+						<div class="tab_detail_cont pd_delivery">
+							<div class="cont_head">
+								<h3 class="sr-only">배송/교환/반품 정보</h3>
+								<!-- 아이템선택 -->
+								<div class="form_field">
+									<div class="select_custom deal_opt_item forExinfo">
+										<div class="combo">
+											<div class="select">
+												<div class="item_prod">
+													<div class="item_state">
+														<a href="javascript:void(0)" class="itemLink">
+															<div class="itemPic">
+																<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+															</div>
+															<div class="itemName">선택</div>
+														</a>
+													</div>
+												</div>
+											</div>
+											<ul class="list">
+												<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+												<li class="selected">
+													<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>
+																<p class="itemPrice">134,100
+																	<span class="itemPrice_original">149,000</span>
+																	<span class="itemPercent">30%</span>
+																</p>
+															</a>
+														</div>
+													</div>
+												</li> 
+											</ul>
+										</div>
+									</div>
+								</div>
+								<!-- //아이템선택 -->
+							</div>
+							<div class="cont_body">
+								아이템별 배송/교환/반품 정보
+							</div>
+						</div>
+						<!-- //배송/교환/반품 정보 -->
+					</div>
+					<div class="area_option">
+						<div class="opt_wrap">
+							<div class="option_box">
+								<div class="opt_select">
+									<form class="form_wrap">
+										<div class="form_field">
+											<div class="select_custom deal_opt_item">
+												<div class="combo">
+													<div class="select">
+														<div class="item_prod">
+															<div class="item_state">
+																<a href="javascript:void(0)" class="itemLink">
+																	<div class="itemPic">
+																		<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																	</div>
+																	<div class="itemName">선택</div>
+																</a>
+															</div>
+														</div>
+													</div>
+													<ul class="list">
+														<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" / 품절표기 data-soldout="true" 추가  -->
+														<li class="selected">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품1]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li> 
+														<li>
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품2]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+														<li>
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품3]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+														<li aria-disabled="true">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품4]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li><li aria-disabled="true" data-soldout="true">
+															<div class="item_prod">
+																<div class="item_state">
+																	<a href="javascript:void(0)" class="itemLink">
+																		<div class="itemPic">
+																			<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdDetail1.jpg">
+																		</div>
+																		<div class="itemName"><span class="tit_option">[상품5]</span>유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
+																		<p class="itemPrice">134,100
+																			<span class="itemPrice_original">149,000</span>
+																			<span class="itemPercent">30%</span>
+																		</p>
+																	</a>
+																</div>
+															</div>
+														</li>
+													</ul>
+												</div>
+											</div>
+										</div>
+										<div class="form_field">
+											<div class="select_custom deal_opt1" disabled="">
+												<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 deal_opt2" 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>
+									</form>
+								</div>
+								<div class="opt_result">
+									<div class="result_item">
+										<div class="opt_header">
+											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+											<span class="item_option">다크그레이/XXL</span>
+										</div>
+										<div class="number_count">
+											<span class="minus min_val"><em class="sr-only">감소</em></span>
+											<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
+											<span class="plus"><em class="sr-only">추가</em></span>
+										</div>
+										<div class="item_price">
+											<p><em>99,999,999</em>원</p>
+										</div>
+										<button type="button" class="btn_delete_item"><span>삭제</span></button>
+									</div>
+									<div class="result_item">
+										<div class="opt_header">
+											<span class="item_name">[상품1] 남성 테이퍼드핏 기모면 올밴딩 팬트</span>
+											<span class="item_option">블루그레이/S</span>
+										</div>
+										<div class="number_count">
+											<span class="minus min_val"><em class="sr-only">감소</em></span>
+											<input type="text" name="" maxlength="3" style="ime-mode:disabled" value="1">
+											<span class="plus"><em class="sr-only">추가</em></span>
+										</div>
+										<div class="item_price">
+											<p><em>99,999,999</em>원</p>
+										</div>
+										<button type="button" class="btn_delete_item"><span>삭제</span></button>
+									</div>
+								</div>
+							</div>
+							<div class="price_box">
+								<p class="number">
+									총&nbsp;<span>99</span>개
+								</p>
+								<p class="price">
+									<span>
+										99,999,999<em>원</em>
+									</span>
+								</p>
+							</div>
+							<div class="btn_box">
+								<div class="btn_group_block ui_row">
+									<div class="ui_col_6">
+										<button type="button" id="btn_add_cart" class="btn btn_dark btn_block"><span>쇼핑백</span></button>
+									</div>
+									<div class="ui_col_6">
+										<button type="button"  class="btn btn_primary btn_block" id=""><span>바로구매</span></button>
+									</div>
+								</div>
+								<div class="btn_group_block ui_row">
+									<div class="ui_col_12">
+										<button type="button" class="btn btn_dark btn_block" id="" disabled=""><span>SOLD OUT</span></button>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+		
+	
+/*]]>*/
+</script>
+
+		
+</th:block>
+
 </html>

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

@@ -34,7 +34,7 @@
 							<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=''">관심상품 추가</button>
 							<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '',[[${params.ithrCd}]],'[[${params.contentsLoc}]]','','pc_detail');" class="itemLink" >
 								<div class="itemPic">
-									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									
 								</div>
 								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>

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

@@ -25,7 +25,7 @@
 			<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}">
+						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 					</div>
 					<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 					<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -25,7 +25,7 @@
 			<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}">
+						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 					</div>
 					<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 					<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

+ 30 - 12
src/main/webapp/ux/pc/css/layout.css

@@ -290,7 +290,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .partners_pop .tbl.type2 table th, .partners_pop .tbl.type2 table td{font-size: 14px;}
 
 /* 퀵메뉴 */
-#quick_menu {position:fixed; bottom:0; right:-363px; z-index:90; padding-left: 60px; transition:all 0.3s;}
+#quick_menu {position:fixed; bottom:0; right:-363px; z-index:100; padding-left: 60px; transition:all 0.3s;}
 #quick_menu.active {right: 0;}
 #quick_menu:before {content:''; position: fixed; bottom: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,.5); display: none;}
 #quick_menu.active:before {display: block;}
@@ -2817,7 +2817,7 @@ dp_banner_slide03
 	.modal.od_pop .area_slider .swiper-scrollbar {background:#ddd}
 	.modal.od_pop .area_slider .swiper-scrollbar-drag {border-radius:0; background:#222;}
 	.modal.od_pop .area_slider .swiper-container-horizontal>.swiper-scrollbar {position:relative; left:auto; right:auto; bottom:auto; margin-top:60px; width:100%; height:2px; opacity: 1 !important;}
-	/* opt_modify_pop */
+	/* opt_modify_pop : 장바구니 옵션변경 팝업 */
 	.modal.opt_modify_pop {max-width:890px; max-height:890px;}
 	.modal.opt_modify_pop img {width:100%}
 	.modal.opt_modify_pop .modal-header {margin-bottom:20px;}
@@ -2864,7 +2864,7 @@ dp_banner_slide03
 	.modal.opt_modify_pop .area_order .opt_count .number_count .minus::after {content:''; background-position:0 0;}
 	.modal.opt_modify_pop .area_order .opt_count .number_count input[type='text'] {width:44px; height:40px; padding:0; text-align:center; color:#222; font-size:15px; font-weight:200; border:none;}
 	
-	/* moresale_pop */
+	/* moresale_pop : 다다익선 상품보기 팝업 */
 	.modal.moresale_pop .area_benefit {margin-bottom:30px; padding-top:4px; color:#fd4802; font-size:14px;}
 	.modal.moresale_pop .area_benefit::after {clear:both; display:block;}
 	.modal.moresale_pop .area_benefit .tag {float:left; width:55px; margin-top:-4px;}
@@ -2874,7 +2874,7 @@ dp_banner_slide03
 	.modal.moresale_pop .area_benefit p span:first-child::before {display:none;}
 
 	/**** od_odPayment_popup ****/
-	/* couponModify_pop */	
+	/* couponModify_pop : 쿠폰변경 팝업 */	
 	.modal.couponModify_pop {width:630px; padding-bottom:0;}
 	.modal.couponModify_pop .modal-body .pop_cont {max-height:600px;}
 	.modal.couponModify_pop .modal-footer {margin-top:0; margin-left:-60px; margin-right:-60px;}
@@ -2912,7 +2912,8 @@ dp_banner_slide03
 	.modal.couponModify_pop .area_cart_coupon .cart_coupon .txt span {font-weight:300;}
 	.modal.couponModify_pop .area_cart_coupon .cart_coupon .discount {margin-top:10px;  color:#fd4802; font-size:16px; font-weight:300;}
 	.modal.couponModify_pop .area_cart_coupon .cart_coupon .discount span {font-weight:500;}
-	/* adrsChange_pop */	
+
+	/* adrsChange_pop : 배송지 변경 팝업*/	
 	.modal.adrsChange_pop {width:600px;}
 	.modal.adrsChange_pop .modal-footer {margin-top:0; margin-left:-60px; margin-right:-60px; margin-bottom:-60px;}
 	.modal.adrsChange_pop .btn.btn_sm {min-width:70px; height:34px; padding-top:9px; font-size:14px; font-weight:300;}
@@ -2928,17 +2929,34 @@ dp_banner_slide03
 	.modal.adrsChange_pop .pop_cont .adrs_box dl > div dt {float:left;}
 	.modal.adrsChange_pop .pop_cont .adrs_box .icon_tag {display:inline-block; margin-top:-3px; vertical-align:top;}
 
-	.modal.adrsAdd_pop {}
+	/* adrsModify_pop : 배송지 수정 팝업*/	
+	.modal.adrsModify_pop {}
+
+	/* adrsAdd_pop : 배송지 추가 팝업 */	
+	.modal.adrsAdd_pop {width:600px;}
+	.modal.adrsAdd_pop h6 {margin-bottom:0; padding-bottom:20px; border-bottom:1px solid #222; color:#222; font-size:18px}
+	.modal.adrsAdd_pop .area_adrsinfo h6 {margin-bottom:20px}
+	.modal.adrsAdd_pop .area_adrsinfo {position:relative;}
+	.modal.adrsAdd_pop .area_adrsinfo .default_addrs {position:absolute; right:0; top:0;}
+	.modal.adrsAdd_pop .area_adrsinfo > .form_field {}
+	.modal.adrsAdd_pop .area_adrsinfo > .form_field {margin-top:10px}
+	.modal.adrsAdd_pop .area_adrsinfo > .form_field > div {display:table;}
+	.modal.adrsAdd_pop .area_adrsinfo > .form_field > div .input_wrap {display:table-cell;}
+	.modal.adrsAdd_pop .area_adrsinfo > .form_field > div .btn {display:table-cell; min-width:122px; height:42px; float:none; font-size:14px; font-weight:200;}
+	.modal.adrsAdd_pop .area_request {margin-top:60px}
+	.modal.adrsAdd_pop .area_request h6 {margin-bottom:30px}
+	.modal.adrsAdd_pop .btn_group_block {margin-top:60px;}
+	.modal.adrsAdd_pop .btn_group_block .btn.btn_block {width:220px; height:60px; margin:auto; font-size:18px; font-weight:300;}
 	.modal.rqstModify_pop {width:600px;}
 	.modal.rqstModify_pop .area_request {border-top:1px solid #222; padding-top:30px}
-	.modal.rqstModify_pop .area_request .form_field > div {margin-top:35px;}
-	.modal.rqstModify_pop .area_request .form_field > div:first-child {margin-top:0;}
-	.modal.rqstModify_pop .area_request .form_field > div label {color:#222; font-size:16px; font-weight:200; line-height:1;}
-	.modal.rqstModify_pop .area_request .info_box .input_wrap {margin-top:15px;}
-	.modal.rqstModify_pop .area_request .info_box .input_wrap p {position:relative; padding-left:10px; margin-top:15px; color:#888; font-size:14px; font-weight:200;}
-	.modal.rqstModify_pop .area_request .info_box .input_wrap p::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:2px; height:2px; background:#888;}
 	.modal.rqstModify_pop .btn_group_block {margin-top:60px;}
 	.modal.rqstModify_pop .btn_group_block .btn.btn_block {width:220px; height:60px; margin:auto; font-size:18px; font-weight:300;}
+	.modal .area_request .form_field > div {margin-top:35px;}
+	.modal .area_request .form_field > div:first-child {margin-top:0;}
+	.modal .area_request .form_field > div label {color:#222; font-size:16px; font-weight:200; line-height:1;}
+	.modal .area_request .info_box .input_wrap {margin-top:15px;}
+	.modal .area_request .info_box .input_wrap p {position:relative; padding-left:10px; margin-top:15px; color:#888; font-size:14px; font-weight:200;}
+	.modal .area_request .info_box .input_wrap p::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:2px; height:2px; background:#888;}
 
 
 	/* 간편결제 팝업 지울것 

+ 20 - 0
src/main/webapp/ux/style24_link.js

@@ -42,6 +42,7 @@ const _PAGE_GOODS_REVIEW_LAYER = _frontUrl + "/goods/review/layer/";								// 
 const _PAGE_GOODS_REVIEW_DETAIL_LAYER = _frontUrl + "/goods/review/detail/layer";					// 상품평- 상세(베스트, 포토)
 const _PAGE_GOODS_REVIEW_PHTO_LIST_LAYER = _frontUrl + "/goods/review/photo/layer/";				// 상품평- 포토/영상 리뷰 (list)
 const _PAGE_GOODS_CPN_DOWNLOAD = "/goods/coupon/download";											// 상품쿠폰다운로드
+const _PAGE_DEAL_GOODS_DETAIL_LAYER = _frontUrl + "/goods/deal/detail/layer/";						// 딜상품 상세레이어
 
 //== 장바구니 ==/
 const _PAGE_CART = _frontUrl + "/cart/list/form";								// 장바구니
@@ -675,6 +676,25 @@ function cfGoodsReview(goodsCd) {
 	cfOpenFullLayer(_PAGE_GOODS_REVIEW_LAYER + goodsCd, 'layer_goods_review',null , fnReviewLayerCollBack);
 }
 
+/**
+* @type   : function
+* @access : public
+* @desc   : 딜구성상품상세 full 팝업
+* <pre>
+*		cfGoodsDeailDetail();
+* </pre>
+*/
+function cfGoodsDeailDetail(goodsCd, compsGoodsCd) {
+	var Param = new Object();
+	var str = '<div class="pd_pop full_pop pd_descrp_pop" id="layer_goods_deal_detail"></div>';
+
+	if ($('#layer_goods_deal_detail').length == 0) {
+		$('body').append(str);
+	}
+
+	cfOpenFullLayer(_PAGE_DEAL_GOODS_DETAIL_LAYER + goodsCd +'/'+compsGoodsCd, 'layer_goods_deal_detail');
+}
+
 /**
  * @type   : function
  * @access : public