Переглянути джерело

Merge remote-tracking branch 'origin/develop' into order

card007 5 роки тому
батько
коміт
df25897ad3
21 змінених файлів з 1444 додано та 126 видалено
  1. 2 1
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 5 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  3. 2 19
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  4. 16 15
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  5. 434 0
      src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html
  6. 301 0
      src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html
  7. 15 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  8. 30 10
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  9. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  10. 392 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  11. 137 34
      src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html
  12. 2 2
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  13. 0 1
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  14. 16 0
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  15. 34 16
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  16. 26 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  17. 4 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  18. 2 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsInstockAlarmFormWeb.html
  19. 3 3
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  20. 17 1
      src/main/webapp/biz/goods.js
  21. 5 10
      src/main/webapp/ux/mo/css/layout_m.css

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

@@ -13,7 +13,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.thymeleaf.util.StringUtils;
 
-import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.dao.TscEnvsetDao;
 import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderService;
@@ -30,6 +29,8 @@ import com.style24.persistence.domain.Order;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 장바구니 Service
  *

+ 5 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -548,12 +548,15 @@
 		             , CASE WHEN GQDS.GOODS_CD IS NULL AND G.SELF_GOODS_YN = 'Y' THEN 'SHOT'
 		                    WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
 		                    ELSE DFP.DELV_FEE_CD END AS CART_DELV_FEE_CD
-		             , CASE WHEN STOCK.ORD_CAN_YN = 'Y' AND (SELECT  CASE WHEN Z.CNT1 = 0 THEN 'Y' ELSE CASE WHEN CNT2 > 0 THEN 'Y'
-		                                                                                                     ELSE 'N' END END
+		             , CASE WHEN STOCK.ORD_CAN_YN = 'Y' AND (SELECT  CASE WHEN MAX(Z.CNT1) IS NULL THEN 'Y' ELSE CASE WHEN CNT2 > 0 THEN 'Y'
+		                                                                                                              ELSE 'N' END END
 		                                                     FROM    (SELECT COUNT(1) AS CNT1
 		                                                                   , CASE WHEN GOG.CUST_GRADE = CT.CUST_GRADE THEN 1
 		                                                                          ELSE 0 END AS CNT2
 		                                                              FROM   TB_GOODS_ORDER_GRADE GOG
+		                                                              GROUP  BY GOODS_CD, CUST_GRADE
+		                                                              UNION  ALL
+		                                                              SELECT NULL, NULL
 		                                                              WHERE  GOG.GOODS_CD = C.GOODS_CD) Z ) = 'Y' AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT THEN 'Y'
 		                    ELSE 'N' END AS ORD_CAN_YN
 		             , CASE WHEN C.CUST_NO > 0 AND (SELECT IFNULL(SUM(OD.ORD_QTY), 0)

+ 2 - 19
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -250,25 +250,8 @@
 		        </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
-		        AND    IFNULL((SELECT DISP_EDDT
-		                       FROM   TB_PLAN
-		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
-		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
-		                                             ELSE
-		                                                 NULL
-		                                        END
-		                      ),STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		                     ) <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		        AND    IFNULL((SELECT DISP_STDT
-		                       FROM   TB_PLAN
-		                       WHERE  PLAN_SQ = CASE WHEN INSTR(A.STR_VAR1,'/planning/detail/form') > 0 AND INSTR(A.STR_VAR1,'planSq=') > 0 THEN
-		                                                 (SUBSTR(A.STR_VAR1,INSTR(A.STR_VAR1,'planSq=') + 7,LENGTH(A.STR_VAR1) + 1))
-		                                             ELSE
-		                                                 NULL
-		                                        END
-		                      ),STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		                     ) <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
-		        ORDER  BY CONTENTS_LOC, DISP_ORD, PRE_CONTENTS_SQ
+		        AND    A.DISP_STDT <![CDATA[<=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
+		        AND    A.DISP_EDDT <![CDATA[>=]]> STR_TO_DATE(#{viewDt},'%Y%m%d%H%i%S')
 		            </when>
 		            <otherwise>
 		        AND    A.DISP_STDT <![CDATA[<=]]> NOW()

+ 16 - 15
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1126,10 +1126,12 @@
 		     ORDER BY A.FREEGIFT_SQ, B.FREEGIFT_SECTION_SQ
 		 )
 		 , TAB_FREEGOODS AS (
-		     SELECT B.ALL_YN
-		          , C.FREEGIFT_SQ
-		          , C.FREEGIFT_SECTION_SQ
+		     SELECT B.FREEGIFT_SQ
+		          , B.FREEGIFT_SECTION_SQ
 		          , C.FREEGIFT_VAL_SQ
+		          , B.ALL_YN     -- 모두지급
+		          , B.SECTION_GB -- G810_10|수량, G810_11|금액
+		          , B.SECTION_VAL
 		          , F.GOODS_NM
 		          , C.ITEM_QTY
 		          , CASE WHEN B.ALL_YN = 'Y' THEN 1
@@ -1146,25 +1148,24 @@
 		 )
 		SELECT Z.*
 		FROM (
-		    SELECT  F.FREEGIFT_SQ
-		          , F.FREEGIFT_SECTION_SQ
-		          , F.ALL_YN     -- 모두지급
-		          , F.SECTION_GB -- G810_10|수량, G810_11|금액
-		          , F.SECTION_VAL
+		    SELECT  FG.FREEGIFT_SQ
+		          , FG.FREEGIFT_SECTION_SQ
+		          , FG.ALL_YN     -- 모두지급
+		          , FG.SECTION_GB -- G810_10|수량, G810_11|금액
+		          , FG.SECTION_VAL
 		          , FG.GOODS_NM
+		          , FG.ITEM_QTY
 		          , GROUP_CONCAT(CONCAT(FG.GOODS_NM,':',FG.ITEM_QTY)) AS FREE_GOODS
 		          -- , RANK() OVER (PARTITION BY F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ ORDER BY  FG.FREEGIFT_VAL_SQ ) AS RNUM
-		    FROM TAB_FREEGIFT F
-		    INNER JOIN TAB_FREEGOODS FG ON F.FREEGIFT_SQ = FG.FREEGIFT_SQ
-		                                AND F.FREEGIFT_SECTION_SQ = F.FREEGIFT_SECTION_SQ
-		                                AND FG.ROWNUM = 1
-		    GROUP BY  F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ , F.ALL_YN , F.SECTION_GB , F.SECTION_VAL
-		    ORDER BY F.FREEGIFT_SQ, F.FREEGIFT_SECTION_SQ
+		    FROM TAB_FREEGOODS FG
+		     WHERE FG.ROWNUM = 1
+		    GROUP BY  FG.FREEGIFT_SQ , FG.FREEGIFT_SECTION_SQ , FG.ALL_YN , FG.SECTION_GB , FG.SECTION_VAL
+		    ORDER BY FG.FREEGIFT_SQ, FG.FREEGIFT_SECTION_SQ
 		) Z
 		WHERE 1 = 1
 		<if test="maxRownum != null and maxRownum > 0">
 		LIMIT #{maxRownum}
-		</if> 
+		</if>
 	</select>
 	
 	<!-- 상품의 사은품 목록 -->

+ 434 - 0
src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html

@@ -0,0 +1,434 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : LookbookDetailFormMob.html
+ * @desc    : 룩북 상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.09   bin2107     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<main role="" id="" class="container br">
+
+		<!-- ★ 컨텐츠 시작 -->
+		<section class="content br_lookbook" th:if="${lookbookDetailList != null}">
+			<div class="inner">
+				<h2 class="collection_title" th:text="${lookbookInfo.title}">2020 F/W COLLECTION</h2>
+			</div>
+			<div class="inner wide">
+				<div class="recommendedArea">
+					<!-- 상품이미지pic -->
+					<div class="area_slider pic_img">
+						<div class="swiper-container">
+							<div class="swiper-wrapper">
+								<th:block th:each="item, stat : ${lookbookDetailList}">
+									<div class="swiper-slide">
+										<div class="page">
+											<div class="pic">
+												<span class="thumb" th:style="${'background-image:url('+@environment.getProperty('domain.image')+item.sysFileNm+')'}"></span>
+												<!-- 상품피커 -->
+												<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
+													<div class="item_picker" th:style="${'left:'+goodsItem.xlim+'%; top:'+goodsItem.ylim+'%;'}">
+														<button type="button" th:onclick="fnLookbookGoodsPopup([[${goodsItem.sysImgNm}]],[[${goodsItem.brandGroupNm}]],[[${goodsItem.goodsFullNm}]],[[${goodsItem.listPrice}]],[[${goodsItem.currPrice}]],[[${goodsItem.dcRate}]],[[${goodsItem.goodsCd}]],[[${goodsItem.stockQty}]],[[${goodsItem.soldoutYn}]])"><span class="ico ico_picker"></span></button>
+													</div>
+												</th:block>
+												<!-- //상품피커 -->
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+					<!-- //상품이미지pic -->
+					<div class="lb_text" th:if="${lookbookDetailList != null}">
+						<th:block th:each="item, stat : ${lookbookDetailList}">
+							<div class="text_cont" th:text="${item.imgDesc}">
+							</div>
+						</th:block>
+						<button class="btn btnText"><p>더보기</p><span></span></button>
+					</div>
+				</div>
+			</div>
+			<div class="inner" th:if="${lookbookDetailList != null}">
+				<div class="br_inlookbook">
+					<th:block th:each="item, stat : ${lookbookDetailList}">
+						<p class="title ioTit"><em>룩북 속 상품</em>(<th:block th:text="${#lists.size(item.lookbookGoodsList)}"></th:block>)</p>
+					</th:block>
+
+					<div class="area_slider">
+						<!-- 겉 상품 -->
+						<div class="items_outside">
+							<th:block th:each="item, stat : ${lookbookDetailList}">
+								<div class="itemsOut" th:id="${'itemsList'+stat.count}">
+									<div class="swiper-container items_inside swiper-container-initialized swiper-container-horizontal">
+										<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
+											<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
+												<div class="swiper-slide swiper-slide-active" style="width: 210.333px; margin-right: 20px;">
+													<div class="item_prod" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'unable' : ''"
+														 th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
+														<div class="item_state">
+															<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
+																<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
+															</th:block>
+															<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+																<a href="javascript:void(0);" class="itemLink" >
+															</th:block>
+															<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+																<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]])">
+															</th:block>
+																<div class="itemPic">
+																	<img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsItem.sysImgNm}">
+																</div>
+																<p class="itemBrand" th:text="${goodsItem.brandGroupNm}">BRAND NAME1</p>
+																<div class="itemName" th:text="${goodsItem.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+																<p class="itemPrice">[[${#numbers.formatInteger(goodsItem.currPrice,0,'COMMA')} + 원]]
+																	<span class="itemPrice_original" th:if="${goodsItem.currPrice != goodsItem.listPrice}" th:text="${#numbers.formatInteger(goodsItem.listPrice,3,'COMMA')}">89,000</span>
+																	<span class="itemPercent" th:if="${goodsItem.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsItem.dcRate,0,0)}%|">10%</span>
+																</p>
+															</a>
+														</div>
+													</div>
+												</div>
+											</th:block>
+										</div>
+										<div class="swiper-scrollbar" style="opacity: 0; transition-duration: 400ms;">
+											<div class="swiper-scrollbar-drag" style="transition-duration: 0ms;"></div>
+										</div>
+										<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
+									</div>
+								</div>
+							</th:block>
+							<!-- 룩북1 해당 아이템 -->
+						</div>
+						<!-- 겉 상품 종료 -->
+					</div>
+					<!-- 05.06_ 추가 : .ioTit , .ioBtn -->
+					<th:block th:each="item, stat : ${lookbookDetailList}">
+						<button class="btn ioBtn" th:onclick="fnAddCartLookBookGoods1(this,[[${stat.count}]]);">모두 쇼핑백 담기</button>
+					</th:block>
+				</div>
+			</div>
+			<div class="inner" th:if="${otherLookbookList}">
+				<!-- 다른룩북보기 슬라이드 -->
+				<div class="br_otherbrand">
+					<h3 class="br_subtitle">다른 룩북 보기</h3>
+					<div class="area_slider">
+						<div class="swiper-container">
+							<div class="swiper-wrapper">
+								<th:block th:if="${otherLookbookList}" th:each="oneData, status : ${otherLookbookList}">
+									<div class="swiper-slide">
+										<a th:href="|javascript:cfnGoToLookbookDetail('${oneData.lookbookSq}','${oneData.brandCd}')|">
+											<div class="thumb">
+												<img th:src="${@environment.getProperty('domain.image')+oneData.sysFileNm}" alt="">
+											</div>
+											<div class="txt">
+												<p class="tt" th:text="${oneData.title}"></p>
+											</div>
+										</a>
+									</div>
+								</th:block>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- //다른룩북보기 슬라이드 -->
+			</div>
+		</section>
+		<!-- ★ 컨텐츠 종료 -->
+
+		<!-- 픽커모달 -->
+		<div class="modal fade" id="reco_pop" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+<!--			<div class="modal-dialog" role="document">-->
+<!--				<div class="modal-content">-->
+<!--					<div class="modal-header">-->
+<!--						<h5 class="modal-title"><span class="sr_only">제품정보</span></h5>-->
+<!--					</div>-->
+<!--					<div class="modal-body">-->
+<!--						<div class="itemsGrp rowtype">-->
+<!--							<div class="item_prod">-->
+<!--								<div class="item_state">-->
+<!--									<a href="#none" class="itemLink">-->
+<!--										<div class="itemPic">-->
+<!--											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">-->
+<!--										</div>-->
+<!--										<p class="itemBrand">BRAND NAME</p>-->
+<!--										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>-->
+<!--										<p class="itemPrice">-->
+<!--											80,100-->
+<!--										</p>-->
+<!--									</a>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--						</div>-->
+<!--					</div>-->
+<!--				</div>-->
+<!--			</div>-->
+<!--			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>-->
+		</div>
+		<!-- //픽커모달 -->
+
+	</main>
+
+	<script th:inline="javascript">
+	/*<![CDATA[*/
+	var lookbookGb = [[${lookbookInfo.lookbookGb}]];
+	var brandCd = [[${lookbookInfo.brandCd}]];
+	var goodsImgUrl = [[${@environment.getProperty('upload.goods.view')}]];
+
+	var fnLookbookGoodsPopup = function(obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8,obj9){
+		$("#reco_pop .modal-dialog").remove();
+		tag = '';
+
+		tag +='<div class="modal-dialog" role="document">\n';
+		tag +='	<div class="modal-content">\n';
+		tag +='		<div class="modal-header">\n';
+		tag +='			<h5 class="modal-title"><span class="sr_only">제품정보</span></h5>\n';
+		tag +='		</div>\n';
+		tag +='		<div class="modal-body">\n';
+		tag +='			<div class="itemsGrp rowtype">\n';
+		tag +='				<div class="item_prod ';
+		if(obj9 == 'Y'){
+			tag += ' sold_out';
+		}
+		tag +='">\n';
+		tag +='					<div class="item_state">\n';
+		tag +='						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\''+obj7+'\',\'\',\'\')" class="itemLink">\n';
+		tag +='							<div class="itemPic">\n';
+		tag +='								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="">\n';
+		tag +='							</div>\n';
+		tag +='							<p class="itemBrand">'+obj2+'</p>\n';
+		tag +='							<div class="itemName">'+obj3+'</div>\n';
+		tag +='							<p class="itemPrice">'+obj5.addComma()+'</p>\n';
+		tag +='						</a>\n';
+		tag +='					</div>\n';
+		tag +='				</div>\n';
+		tag +='			</div>\n';
+		tag +='		</div>\n';
+		tag +='	</div>\n';
+		tag +='</div>\n';
+		tag +='<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>\n';
+
+		$("#reco_pop").append(tag);
+		$('#reco_pop').modal("show");
+	}
+
+	var fnAddCartLookBookGoods1 = function (obj, idx){
+		let $obj = $(obj);
+		let $target = $('.br_inlookbook #itemsList'+idx).find('.item_prod');
+		let goodsSize = $target.length;
+		let btnType = "C";
+		let params = [];
+		let goodsIdx = 0;
+
+		$target.each(function(){
+			goodsIdx ++;
+			if ($(this).hasClass('unable')) {
+
+			}else{
+				// 옵션확인
+				let goodsCnt = $(this).find('input[name=lookbookGoodsOptCd]').length;
+				if(goodsCnt == 1){
+					let arrOpt = $(this).find('input[name=lookbookGoodsOptCd]').val();
+					let arrOptInfo = arrOpt.split(':');
+
+					let obj = new Object();
+					obj.goodsCd = $(this).attr("goodsCd");
+					obj.optCd = arrOptInfo[1];
+					obj.goodsQty = $(this).attr("minOrdQty");
+					obj.goodsType = $(this).attr("goodsType");
+					obj.cartGb = btnType;
+					obj.afLinkCd = '';
+					obj.ithrCd = $(this).attr("ithrCd");
+					obj.contentsLoc = $(this).attr("contentsLoc");
+					obj.planDtlSq = '';
+					obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					if (goodsIdx == goodsSize){
+						obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					}
+					params.push(obj);
+
+					// 장바구니담기
+					cfnAddCart(params);
+				}else{
+					let $goods = $(this);
+					let cartGoodsList = [];
+					let compsList = [];
+					let goodsList = {
+						cartCompsList : new Array()
+					}
+
+					let arrInfo = $(this).find('input[name=lookbookGoodsOptCd]').val().split(',');	// 상품코드단위
+
+
+					$.each(arrInfo, function(idx, item) {
+						let arrOptInfo = item.split(':');
+
+						let obj = new Object();
+						obj.cartGb = btnType;
+						obj.goodsType = $goods.attr("goodsType");
+						obj.goodsCd = $goods.attr("goodsCd");
+						obj.itemCd =arrOptInfo[0];
+						obj.optCd = arrOptInfo[1];
+						obj.goodsQty = $goods.attr("minOrdQty");
+						obj.afLinkCd = '';
+						obj.ithrCd =  $goods.attr("ithrCd");
+						obj.contentsLoc = $goods.attr("contentsLoc");
+						obj.planDtlSq = ''
+						obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						if (goodsIdx == goodsSize){
+							obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						}
+						compsList.push(obj);
+
+					});
+
+					goodsList.cartCompsList = compsList;
+					cartGoodsList.push(goodsList);
+
+					// 장바구니담기
+					cfnAddCart(cartGoodsList);
+				}
+			}
+		});
+	}
+
+	$(document).ready(function(){
+		//setHtop();
+
+		var spc = $('.swiper-pagination-current');
+		var spt = $('.swiper-pagination-total');
+		setInterval(function(){
+			for(var i=0; i<spc.length; i++){
+				if(spc[i].innerText.length < 2){
+					var itNum = spc[i].innerText.toString();
+					spc[i].innerText = 0+itNum;
+				}
+			}
+			for(var i=0; i<spt.length; i++){
+				if(spt[i].innerText.length < 2){
+					var itNum2 = spt[i].innerText.toString();
+					spt[i].innerText = 0+itNum2;
+				}
+			}
+		}, 10);
+
+		$(document).on('click','.item_picker',function(e){
+			$("#reco_pop").modal("show");
+			$("body").addClass("recoPop");
+			return false;
+		});
+		$(document).on('click','#reco_pop .close-modal',function(e){
+			$("body").removeClass("recoPop");
+			return false;
+		});
+	});
+
+	function setHtop() {
+		if($('header').hasClass('main')) {
+			$('#htopMain').show();
+			$('#htopSub').hide();
+		} else {
+			$('#htopMain').hide();
+			$('#gnb').hide();
+			$('#htopSub').show();
+		}
+	}
+
+	// 룩북 슬라이드
+	var rcmdPicimgSwiper = new Swiper('.recommendedArea .area_slider .swiper-container', {
+		loop: true,
+		slidesPerView: 1,
+		spaceBetween: 0,
+		pagination: {
+			el: '.swiper-pagination',
+			type: 'fraction',
+		},
+		//210414_자동롤링 추가
+		//autoplay : {
+		//	delay : 3000,   // 시간 설정
+		//},
+		on: {
+			slideChange:function(){
+				// 05.06_ 추가 : .ioTit , .ioBtn
+				$('.text_cont').removeClass('active');
+				$('.ioTit').removeClass('active');
+				$('.itemsOut').removeClass('active');
+				$('.ioBtn').removeClass('active');
+				$('.text_cont').eq(this.realIndex).addClass('active');
+				$('.ioTit').eq(this.realIndex).addClass('active');
+				$('.itemsOut').eq(this.realIndex).addClass('active');
+				$('.ioBtn').eq(this.realIndex).addClass('active');
+			}
+		},
+	});
+
+	//룩북 속 상품
+	var inLookbookSwiper = new Swiper('.br_inlookbook .area_slider .swiper-container', {
+		slidesPerView: 3,
+		spaceBetween: 26,
+		observer: true,
+		observeParents: true,
+		//pagination: {
+		//	el: '.swiper-pagination',
+		//	type: 'fraction',
+		//},
+	});
+
+	//다른 룩북 보기
+	var otherBrandSwiper = new Swiper('.br_otherbrand .area_slider .swiper-container', {
+		slidesPerView: 2,
+		spaceBetween: 8,
+		//pagination: {
+		//	el: '.swiper-pagination',
+		//	type: 'fraction',
+		//},
+	});
+
+	// 더보기
+	var count = 0;
+	function view_fold(){
+		document.querySelector(".lb_text button").onclick = function () {
+			if(count === 0) {
+				//document.querySelector(".lb_text .text_cont").style.height = "auto";
+				$('.lb_text .text_cont').css('height', 'auto');
+				document.querySelector(".lb_text .btnText p").innerText="접기";
+				document.querySelector(".lb_text .btnText span").style.background="url(/images/mo/br_arrow_up.png)";
+				count = 1;
+			} else {
+				//document.querySelector(".lb_text .text_cont").style.height = "3.4rem";
+				$('.lb_text .text_cont').css('height', '3.4rem');
+				document.querySelector(".lb_text .btnText p").innerText="더보기";
+				document.querySelector(".lb_text .btnText span").style.background="url(/images/mo/br_arrow_down.png)";
+				count = 0;
+			}
+		}
+	}
+	view_fold();
+	/*]]>*/
+</script>
+
+<script>
+	// 픽커모달
+	$(document).ready(function () {
+
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 301 - 0
src/main/webapp/WEB-INF/views/mob/display/LookbookMainFormMob.html

@@ -0,0 +1,301 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : LookbookMainFormMob.html
+ * @desc    : 룩북리스트 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.09   bin2107     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<main role="" id="" class="container dp">
+
+		<section class="content dp_lookbook">
+			<div class="inner">
+				<!-- 상품리스트 -->
+				<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
+					<div class="count_wrap">
+						<div>
+							<p><span>9999</span>개의 상품</p>
+						</div>
+						<div>
+							<ul class="dp_util">
+								<li>
+									<div class="open_categori">
+										<!-- 210415_select > a태그로 변경 -->
+										<a id="filter">브랜드선택
+											<!--<option value="hide">브랜드선택</option>
+                                            <option value="Test_SELECT_OPTION_1" rel="icon-temperature">브랜드1</option>
+                                            <option value="Test_SELECT_OPTION_2">브랜드2</option>
+                                            <option value="Test_SELECT_OPTION_3">브랜드3</option>-->
+										</a>
+									</div>
+								</li>
+							</ul>
+						</div>
+					</div>
+					<div class="list_defult">
+						<div>
+							<p>등록된 룩북이 없습니다.</p>
+						</div>
+						<button type="button" class="btn btn_default"><span>홈으로 가기</span></button>
+					</div>
+					<div class="lookbookGrp">
+						<div class="swiper_filter brand">
+							<div class="cate_wrap">
+								<a href="javascript:;">전체</a>
+								<a href="javascript:;">티셔츠/셔츠</a>
+								<a href="javascript:;">니트/가디건/베스트</a>
+								<a href="javascript:;">원피스/스커트</a>
+								<a href="javascript:;">팬츠/데님/레깅스</a>
+								<a href="javascript:;">가죽/모피</a>
+								<a href="javascript:;">여성 잡화</a>
+								<a href="javascript:;">언더웨어</a>
+								<a href="javascript:;">세트</a>
+								<a href="javascript:;">니트/가디건/베스트</a>
+								<a href="javascript:;">원피스/스커트</a>
+								<a href="javascript:;">가죽/모피</a>
+								<a href="javascript:;">여성 잡화</a>
+							</div>
+							<div class="btnbox"><a href="#none" class="reset">새로고침</a></div>
+						</div>
+						<ul class="event_con">
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+							<li>
+								<a href="">
+									<div class="ev_img">
+										<img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+									</div>
+									<div class="ev_txt">
+										<p class="brand">TBJ 외</p>
+										<p class="tit">2020 F/W COLLECTION 2020</p>
+									</div>
+								</a>
+							</li>
+						</ul>
+					</div>
+					<div class="list_last">마지막페이지 입니다.</div>
+				</div>
+				<!-- //상품리스트 -->
+			</div>
+		</section>
+
+		<!-- 카테고리 -->
+		<div class="category_box lookbook">
+			<div class="lap">
+				<div class="category_close">카테고리닫기</div>
+				<div class="category_list">
+					<!-- 카테고리 선택 -->
+					<div class="selcet_list">
+						<ul>
+							<li class="active"><a href="javascript:void(0)">전체</a></li>
+							<li><a href="javascript:void(0)">BUCKAROO</a></li>
+							<li><a href="javascript:void(0)">TBJ</a></li>
+							<li><a href="javascript:void(0)">ANDEW</a></li>
+							<li><a href="javascript:void(0)">FRJ</a></li>
+							<li><a href="javascript:void(0)">LPGA골프</a></li>
+						</ul>
+					</div>
+					<!-- 카테고리 선택 -->
+				</div>
+				<div class="category_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
+					<div>
+						<button class="reset"><span>초기화</span></button>
+					</div>
+					<div>
+						<button class="apply"><span>적용</span></button>
+					</div>
+				</div>
+			</div>
+		</div>
+		<!-- //카테고리 -->
+
+		<!-- 210415_최신상품순 리스트 팝업 추가 -->
+		<div id="odDatePop" class="popup_box odDatePop">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head sr-only">
+					<h2 class="">기간 선택 팝업</h2>
+				</div>
+				<div class="popup_con">
+					<div class="button_list clear">
+						<button type="button" class="on"><span>전체</span></button>
+						<button type="button"><span>BUCKAROO</span></button>
+						<button type="button"><span>TBJ</span></button>
+						<button type="button"><span>ANDEW</span></button>
+						<button type="button"><span>FRJ</span></button>
+					</div>
+				</div>
+			</div>
+			<div class="brand_floormenu"><!--  ☞☞ 제품이 품절되면 soldout클래스 추가 -->
+				<div class="share_like">
+					<button class="refresh">초기화</button>
+					<!--<button class="like">위시리스트</button>-->
+				</div>
+				<div class="prd_buy">
+					<button class="buying btPop_auto" id="btn_purchase">적용</button>
+					<button class="cantbuying">SOLD OUT</button>
+				</div>
+			</div>
+		</div>
+	</main>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	$(document).ready(function(){
+
+		$(document).on('click','.sub_category .more_btn',function(){
+			$(this).toggleClass('on');
+			$('.sub_category .cate_wrap').toggleClass('on');
+			if($(this).hasClass('on')){
+				$(this).find('span').text('접기');
+			}else{
+				$(this).find('span').text('더보기');
+			}
+		});
+
+
+		//카테고리
+		function category(){
+			var categoryOpen=$(".open_categori .select_dress");
+			var categoryClose=$(".category_box .category_close");
+			var categoryPop=$(".category_box");
+
+			categoryOpen.on("click",function(){
+				categoryPop.show();
+				categoryPop.addClass("active");
+				$("body").css({"overflow":"hidden"});
+			});
+
+			categoryClose.on("click",function(){
+				categoryPop.hide();
+				$("body").css({"overflow":"visible"});
+			});
+		}
+		category();
+
+		// 210415_팝업관련 추가
+		//기간 선택 팝업
+		$(document).on("click", ".open_categori", function(){
+			$('#odDatePop').show().addClass("active");
+			$("body").css({"overflow":"hidden"});
+		});
+		//팝업_닫기
+		$('.popup_close').on("click",function(){
+			$('.popup_box').hide().removeClass('active');
+			$("body").css({"overflow":"visible"});
+		});
+		// 210415_팝업 테두리 선택 추가
+		$(document).ready(function(){
+			$(document).on('click','.popup_box .button_list button',function(){
+				//$('.popup_box .button_list button').removeClass('on');
+				$(this).toggleClass('on');
+			})
+		});
+		$(document).on('click','.popup_box .button_list button',function(){
+			$(this).parents('.popup_box').show().addClass('active');
+			//$("body").css({"overflow":"visible"});
+		});
+		$(document).on('click','.brand_floormenu .refresh',function(){
+			$('.popup_box .button_list button').removeClass('on');
+		});
+		$(document).on('click','.popup_box .buying',function(){
+			$(this).parents('.popup_box').hide().removeClass('active');
+			$("body").css({"overflow":"visible"});
+		});
+
+	});
+	/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -292,4 +292,19 @@
 		<!-- //상품필수정보 노출 -->
 	</div>
 </div>
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+// 상품상세 asis html  이지미 경로 수정
+   $(document).ready( function() {
+   	 $(".pd_descrp_pop .cont_body").find('img').each(function() {
+			let tmpImgSrc = $(this).attr('src');
+			if (tmpImgSrc.indexOf('Upload') == 1 ){  // /Upload
+				$(this).attr('src' , tmpImgSrc.replace('/Upload', _imgUrl+"/Local"));
+			}
+			
+		});
+	});
+/*]]>*/
+</script>	
 </html>

+ 30 - 10
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -815,7 +815,7 @@
 								<th:block th:if="${goodsInfo.selfGoodsYn =='N' }"> <!--  입점상품 -->
 								<div class="nomOption">
 									<div class="form_wrap">
-										<div class="form_field">
+										<div class="form_field" th:id="${'form_field1_'+goodsInfo.goodsCd}">
 											<div class="select_custom item_opt1 item_opt1_1"  th:classappend="${goodsInfo.goodsCd}" th:attr="id=${goodsInfo.goodsCd}">
 												<div class="combo">
 													<div class="select">선택</div>
@@ -833,7 +833,7 @@
 												</div>
 											</div>
 										</div>
-										<div class="form_field"> 
+										<div class="form_field" th:id="${'form_field2_'+goodsInfo.goodsCd}"> 
 											<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled th:attr="qty=${goodsInfo.minOrdQty}">
 												<div class="combo">
 													<div class="select">선택</div>
@@ -851,7 +851,7 @@
 								<th:block th:if="${goodsInfo.goodsType =='G056_S' }">	<!-- 세트상품 -->
 								<div class="setOption" th:if="${goodsComposeList != null and !goodsComposeList.empty}" >
 									<div class="form_wrap"  th:each="goodsCompose, status : ${goodsComposeList}">
-										<div class="form_field">
+										<div class="form_field" th:id="${'form_field1_'+goodsCompose.compsGoodsCd}">
 											<p class="title" th:text="${goodsCompose.compsGoodsFullNm}">슬림핏</p>
 											<div class="select_custom item_opt1" th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" th:attr="id=${goodsCompose.compsGoodsCd}, qty=${goodsCompose.qty}"
 																				th:if="${goodsCompose.goodsOption1List != null and !goodsCompose.goodsOption1List.empty}" >
@@ -870,7 +870,7 @@
 												</div>
 											</div>
 										</div>
-										<div class="form_field">
+										<div class="form_field" th:id="${'form_field2_'+goodsCompose.compsGoodsCd}">
 											<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}" disabled>
 												<div class="combo">
 													<div class="select">선택</div>
@@ -1261,8 +1261,9 @@
 				$.each(result.dataList, function(idx, item) {
 					if (idx == 0){
 						
-						$('.form_field .select_custom.item_opt1.' +item.goodsCd ).attr('disabled', false)
+						//$('.form_field .select_custom.item_opt1.' +item.goodsCd ).attr('disabled', false)
 						//------
+						tag += '<div class="select_custom item_opt1 item_opt1_'+ridx+ ' '+goodsCd+'">\n';
 						tag += '<div class="combo">\n';
 						tag += '<div class="select">선택</div>\n';
 						tag += '<ul class="list" style="display: none;">\n';
@@ -1282,6 +1283,7 @@
 					//------
 					tag += '</ul>\n';
 					tag += '</div>\n';
+					tag += '</div>\n';
 					//------	
 				}
 
@@ -1300,8 +1302,11 @@
 				}else{
 					$obj = $('.pop_option_select .select_custom.item_opt1.item_opt1_1');
 				}	
-				$obj.html('');
-				$obj.append(tag);
+			//	$obj.html('');
+			//	$obj.append(tag);
+				$obj.remove();
+				$('#form_field1_'+ goodsCd).append(tag);
+				
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
 						var opt_selecter01_1 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');	
@@ -1385,9 +1390,11 @@
 						//$obj = $('#goodsOpt2'+item.goodsCd);
 						//$obj = $('.form_field .select_custom.item_opt2.item_opt2_1');
 						
-						$obj.html('');
-						$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
+					//	$obj.html('');
+						$obj.remove();
+					//	$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
 						//------
+						tag += '<div class="select_custom item_opt2 item_opt2_'+ridx+ ' '+goodsCd+'">\n';	
 						tag += '<div class="combo">\n';
 						tag += '<div class="select">선택</div>\n';
 						tag += '<ul class="list">\n';
@@ -1416,10 +1423,12 @@
 					//------
 					tag += '</ul>\n';
 					tag += '</div>\n';
+					tag += '</div>\n';
 					//------	
 				}
 				
-				$obj.append(tag);
+			//	$obj.append(tag);
+				$('#form_field2_'+ goodsCd).append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
 						var opt_selecter02_1 = new sCombo('.pop_option_select .select_custom.item_opt2.item_opt2_1');	
@@ -2070,6 +2079,17 @@
 		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
 	});
 	
+	 // 상품상세 asis html  이지미 경로 수정
+    window.onload = function(){
+   	 $(".pd_descrp .cont_body").find('img').each(function() {
+			let tmpImgSrc = $(this).attr('src');
+			if (tmpImgSrc.indexOf('Upload') == 1 ){  // /Upload
+				$(this).attr('src' , tmpImgSrc.replace('/Upload', _imgUrl+"/Local"));
+			}
+			
+		});
+	}
+	 
 	 $('.Purchase_pop .btPop_close').click(function(){
 			$('html, body').css({'overflow': 'visible', 'height': '100%'});
 			$('.container').removeClass('btPop_open');

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

@@ -78,7 +78,7 @@
 	$('.pd_qnawrite_pop .doc_itemqna').keyup(function (e){
 		let contentQna = $(this).val();
 		$('.itemqna_cnt').html("(<em class='c_primary'>"+contentQna.length+"</em>/500자)");
-		debugger;
+		
 		if (contentQna.length > 500){
 			alert("최대 500자까지 입력 가능합니다.");
 			$(this).val(contentQna.substring(0, 500));

+ 392 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -0,0 +1,392 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : SocialMainFormMob.html
+ * @desc    : 핫딜(소셜) Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.12   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+		<main role="" id="" class="container dp">
+
+			<section class="content dp_Bulletship">
+				<div class="inner wide">
+                    <div class="Bulletship_head">
+                        <img src="/images/mo/thumb/bullet_bg1.png" alt="오늘 사서 오늘 입자 AM 10시까지 주문하면 당일 도착 대상지역 서울, 경기, 인천 외 일부 지역 제외">
+                    </div>
+                    <div class="Bulletship_body">
+                        <div class="inner">
+                            <div class="ico-area">
+                                <img src="/images/mo/ico_bulltet-house.png" alt="지붕이 그려진 아이콘입니다">
+                            </div>
+                            <div class="txt-area">
+								 <!-- 배송가능지역 -->
+								 <p class="bulltetship-time">오전10시 이전 주문 당일도착</p>
+								 <p class="bulltetship-check"><span class="c_primary">총알배송이 가능한 지역</span>인지<br> 확인해보세요!</p>
+							 
+								 <div class="btn_group_flex">
+									 <div>
+										 <button class="btn btn_default" id="btn_bulletship_pop">
+											 <span>내 배송지 확인하기</span>
+										 </button>
+									 </div>
+								 </div>
+								 <p class="bulltetship-disc ptxt01">서울·경기·인천 중 일부지역은 총알배송이 불가합니다.</p>
+								 <!-- // 배송가능지역 -->
+                            </div>  
+                        </div>
+                    </div>
+                    <div class="Bulletship_foot">
+                        <div class="inner custom-inner">
+                            <ul class="clear">
+                                <li>
+                                    <div class="img-box">
+                                        <img src="/images/mo/ico_bulltet-order.png" alt="택배차가 그려진 아이콘입니다">
+                                    </div>
+                                    <div class="txt-box">
+                                        <span class="tit">주문/도착</span>
+                                        <p class="disc">오전 10시 전 주문완료하면 <br>당일 밤 12시까지 도착</p>
+                                    </div>
+                                </li>
+                                <li>
+                                    <div class="img-box">
+                                        <img src="/images/mo/ico_bulltet-delivery.png" alt="달력이 그려진 아이콘입니다">
+                                    </div>
+                                    <div class="txt-box">
+                                        <span class="tit">배송일</span>
+                                        <p class="disc">월, 화, 수, 목, 금 <br class="mo-only">(영업일 기준, 공휴일 휴무)</p>
+                                    </div>
+                                </li>
+                                <li>
+                                    <div class="img-box">
+                                        <img src="/images/mo/ico_bulltet-object.png" alt="쇼핑백이 그려진 아이콘입니다">
+                                    </div>
+                                    <div class="txt-box">
+                                        <span class="tit">대상상품</span>
+                                        <p class="disc ptxt01">한세 패밀리 브랜드 <br class="mo-only">(스타일24 직배송 한정)</p>
+                                    </div>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+
+					<!-- 210415_드롭박스 위치수정 -->
+					<div class="items_option">
+						<div class="open_categori">
+							<a id="filter">모이몰른
+								<!-- 210415_select > a태그로 변경 -->
+								<!--<option value="hide">모이몰른</option>
+								<option value="Test_SELECT_OPTION_1" rel="icon-temperature">모이몰른</option>
+								<option value="Test_SELECT_OPTION_2">모이몰른</option>
+								<option value="Test_SELECT_OPTION_3">모이몰른</option>-->
+							</a> 
+						</div>
+					</div>
+                </div>
+				<div class="inner">
+					<div class="delivery_item">
+						<h2 class="dp_subtitle dp_another_st">모이몰른</h2>
+						<div class="item_list">
+							<div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="inner">
+					<div class="delivery_item">
+						<h2 class="dp_subtitle">컬리수</h2>
+						<div class="item_list">
+							<div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike">관심상품 추가</button>
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img class="vLHTC pd_img" src="/images/mo/thumb/prod1.jpg" alt="">
+											</div>
+											<p class="itemBrand">BRAND NAME</p>
+											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<div class="itemcolorchip">
+												<span class="chip_color35" value="ABM">BEIGE</span>
+												<span class="chip_color54" value="BDS">BLACK</span>
+												<span class="chip_color40" value="YBR">WHITE</span>
+											</div>
+											<p class="itemBadge">
+												<span class="badge13">베스트 </span>
+											</p>
+											<div class="itemComment">#주문 폭주 상품</div>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</section>
+
+			<!-- 배송검색팝업 -->
+			<div class="modal fade dp_pop bulletShip_pop" id="bulletShipPop" tabindex="-1" role="dialog" aria-labelledby="modalScrollLabel" aria-hidden="true">
+				<div class="modal-dialog" role="document">
+					<div class="modal-content">
+						<div class="modal-header">
+							<h5 class="modal-title" id="modalScrollLabel"><span class="sr-only">배송팝업</span></h5>
+						</div>
+						<div class="modal-body">
+							<div class="pop_cont"></div>
+						</div>
+						<div class="modal-footer">
+							<button type="button" id="" class="btn btn_dark"><span>계속 쇼핑하기</span></button>
+						</div>
+					</div>
+				</div>
+			</div>
+			<!-- //배송검색팝업 -->
+
+			<!-- 카테고리 -->
+			<div class="category_box brand">
+				<div class="lap">
+					<div class="category_close">카테고리닫기</div>
+					<div class="category_list">
+						<!-- 카테고리 선택 -->
+						<div class="selcet_list">
+							<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>
+								<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>
+			<!-- //카테고리 -->
+
+			<!-- 210415_최신상품순 리스트 팝업 추가 -->
+            <div id="odDatePop" class="popup_box odDatePop">
+                <div class="lap">
+                    <div class="popup_close">카테고리닫기</div>
+                    <div class="popup_head sr-only">
+                        <h2 class="">기간 선택 팝업</h2>
+                    </div>
+                    <div class="popup_con">
+                        <div class="button_list clear">
+                            <button type="button" class="on"><span>모이몰른</span></button>
+                            <button type="button"><span>모이몰른</span></button>
+                            <button type="button"><span>모이몰른</span></button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</main>
+
+<script th:inline="javascript">
+
+</script>
+</th:block>
+
+</body>
+</html>

+ 137 - 34
src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html

@@ -20,6 +20,17 @@
 <th:block layout:fragment="content">
 <main role="" id="" class="container dp">
 			<section class="content dp_hotdeal">
+				<div class="nodata" style="display: none;">
+					<div class="txt_box">
+						<p>진행하는 핫딜이 없습니다.</p>
+					</div>
+					<div class="btn_box">
+						<button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);">
+							<span>홈으로 가기</span>
+						</button>
+					</div>
+				</div>
+			<th:block th:if="${socialInfo != null}">
 				<div class="inner wide">
                     <div class="hotdeal">
                         <div id="countdown">
@@ -33,48 +44,35 @@
                 <div class="inner">
                     <div class="list_content">
 						<div class="itemsGrp rowtype"><!-- itemsGrp rank hot deal --> <!-- rowtype 추가시 가로형태로 출력 -->
-						<th:block th:each="SocialData, SocialStat : ${socialGoods}">
-							<div class="item_prod" th:class="${SocialData.stockQtySum == 0 ? 'item_prod sold_out' : 'item_prod'}">
-								<div class="item_state">
-									<button type="button" th:class="${SocialData.likeIt == 'likeit'}? 'itemLike likeit' : 'itemLike'" onclick="cfnPutWishList(this);" th:attr="goodsCd=${SocialData.goodsCd}, ithrCd='', contentsLoc='', planDtlSq=''">관심상품 추가</button>
-									 <a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${SocialData.goodsCd}]])" >
-										<div class="shape ranker"><span>특가</span></div>
-										<div class="itemPic">
-											<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + SocialData.sysImgNm}">
-										</div>
-										<p class="itemBrand" th:text="${SocialData.brandGroupNm}"></p>
-										<div class="itemName" th:text="${SocialData.goodsNm}"></div>
-										<p class="itemPrice">
-											<span class="itemPrice_original" th:text="${#numbers.formatInteger(SocialData.listPrice,0,'COMMA')}"></span>
-											 [[${#numbers.formatInteger(SocialData.currPrice,0,'COMMA')} + 원]]
-											<span class="itemPercent"  th:text="${#numbers.formatDecimal(SocialData.dcRate,1,0)} + '%'"></span>
-										</p>
-										<div class="itemcolorchip">
-											<span class="chip_color35" value="ABM">BEIGE</span>
-											<span class="chip_color54" value="BDS">BLACK</span>
-											<span class="chip_color40" value="YBR">WHITE</span>
+								<section id="infiniteContainer">
+										<div id="listBoxOuter">
+											<ul id="listBox">
+											</ul>
 										</div>
-										<p class="itemBadge">
-											<span class="badge13">베스트 </span>
-										</p>
-										<div class="itemComment" th:if="${SocialData.goodsTnm!=null}" th:text="${SocialData.goodsTnm}"></div>
-										<div class="itemEt">
-											<div class="shopBag">
-												<button class="btn btn_default" onclick="socialAddCart(this)" th:attr="goodsCd=${SocialData.goodsCd}, minOrdQty=${SocialData.minOrdQty}, goodsType=${SocialData.goodsType}, optCd=${SocialData.optCd}"><span>쇼핑백담기</span></button>
-											</div>
-									    </div>
-									</a>
-								</div>
+								</section>
+							<div class="last_page" id="divLastPage" style="display: none;">
+							 	<span>마지막 페이지입니다.</span>
 							</div>
-							</th:block>
 						</div>
                     </div>
 				</div>
+			</th:block>
 			</section>
 		</main>
-
+<form id="socialForm" name="socialForm" action="#" th:action="@{'/social/list'}">
+	<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+	<input type="hidden" name="pageSize" value ="10"/>
+</form>
+<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
+<!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
 <script th:inline="javascript">
-var socialInfo = [[${socialInfo}]];
+let socialInfo = [[${socialInfo}]];
+let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
+
+
+//$(function() { gagaInfiniteScroll.getHistory(); });
+
 var socialAddCart = function (obj) {
 	let btnType = "C";
 	let params = [];
@@ -97,8 +95,113 @@ var socialAddCart = function (obj) {
 	} 
 }
 
+let fnGetSocialList = function(result) {
+	var html = '';
+	$.each(result.dataList, function(idx, item) {
+		html += '<div class="item_prod">';
+		if (item.stockQtySum == 0) {
+			html += '    <div class="item_state sold_out"> ';
+		}else{
+			html += '    <div class="item_state"> ';
+		}
+		if (item.likeIt == 'likeit') {
+			html += '        <button type="button" class="itemLike active" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}else{
+			html += '        <button type="button" class="itemLike" onclick="cfnPutWishList(this);" onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}
+		html += '		<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
+		html += '			<div class="shape ranker"><span>특가</span></div>';
+		html += '			<div class="itemPic">';
+		html += '				<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '			</div>';
+		html += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
+		html += '			<div class="itemName">'+item.goodsNm+'</div>';
+		html += '			<p class="itemPrice">';
+		if (item.currPrice != item.listPrice) {
+			html += '                <span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+		}
+		html += item.currPrice.addComma();
+		if (item.dcRate != 0) {
+			html += '                <span class=" itemPercent">'+item.dcRate.addComma()+'%</span>';
+		}
+		html += '			</p>';
+		if(item.goodsTnm != null){
+			html += '           <div class="itemComment">'+item.goodsTnm+'</div>';
+		}
+		html += '			<div class="itemEt">';
+		html += '				<div class="shopBag">';
+		html += '					<button class="btn btn_default" onclick="socialAddCart(this)" goodsCd=\''+item.goodsCd+'\', minOrdQty=\''+item.minOrdQty+'\', goodsType=\''+item.goodsType+'\', optCd=\''+item.optCd+'\'"><span>쇼핑백담기</span></button>';
+		html += '				</div>';
+		html += '			</div>';
+		html += '		</a>';
+		html += '	</div>';
+		html += '</div>';
+
+	});
+	return html;
+}
+
+
+
+var fnSocialListSearch = function() {
+	fnSocialInfiniteScrollInit();
+	gagaInfiniteScroll.getHistory();
+}
+// 인피니트 스크롤 초기화
+var fnSocialInfiniteScrollInit = function(){
+	sessionStorage.removeItem(document.location.href);
+	//History 초기화
+	$("#listBox").html("");
+} 
+
+//인피니트 스크롤 초기화
+/* var fnSocialInfiniteScrollInit = function(){
+	// sessionStorage.removeItem(document.location.href);
+	History.replaceState(null, null);
+	gagaInfiniteScroll.pageStatus = {
+			  pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
+			, loadPage : 0      // 로드할 페이지
+			, loadAlign : 'not' // 로드 상태(prev, next, not)
+			, historyScroll : 0 //
+			, nowPage : null    // 현재 페이지
+			, pageUrl : {       // page url
+			}
+	}
+	//History 초기화
+	$("#listBox").html("");;
+} */
+
+//인피니트 스크롤 이벤트 발생 시 데이터 가져오기
+var fnGetInfiniteScrollDataList = function(pageNum) {
+	$("#socialForm input[name=pageNo]").val(pageNum+1);
+	gagajf.ajaxFormSubmit("/social/list",document.socialForm, gagaInfiniteScroll.jsonToHtml);
+}
+
+var fnDrawInfiniteScrollData = function (result, pageNum){
+	let totalCnt = result.totalCnt;
+	gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
+	
+	if (result.dataList != null && result.dataList.length > 0) {
+		$(".nodata").hide();		
+		let lastPage = result.paging.pageable.pageNo;
+		let endRow = result.endRow - result.paging.pageable.pageSize;
+		
+		var htm = fnGetSocialList(result, lastPage, endRow);
+		gagaInfiniteScroll.draw(htm);
+	}else{
+		if($("#socialForm input[name=pageNo]").val()==1){
+			$(".nodata").show();		
+		}
+		$("#divLastPage").show();
+		gagaInfiniteScroll.draw('not');
+		
+	}
+}
+
+
 
 $(function(){
+	fnSocialListSearch();
     /* 핫딜 countDown */
     function hotdealTimer() {
         var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정

+ 2 - 2
src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html

@@ -233,7 +233,7 @@
 				</th:block>
 
 				<!-- MD’s PICK -->
-				<th:block th:if="${contentsLoc=='009'}">
+				<th:block th:if="${contentsLoc=='009' or contentsLoc=='017' or contentsLoc=='018' or contentsLoc=='019'}">
 					<div class="content md_item" th:if="${brandMainLayoutData.goodsList != null}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
@@ -245,7 +245,7 @@
 									<div class="swiper-slide">
 										<div class="item_prod sUiXc">
 											<div class="item_state">
-												<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBM009', planDtlSq=''">관심상품 추가</button>
+												<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM009');">
 													<div class="itemPic">
 														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">

+ 0 - 1
src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html

@@ -94,7 +94,6 @@
 														<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
 															<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]])">
 														</th:block>
-														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]]);">
 															<div class="itemPic">
 																<img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsItem.sysImgNm}">
 															</div>

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

@@ -247,4 +247,20 @@
 		<span>상세정보 더보기</span>
 	</button>
 </div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+// 상품상세 asis html  이지미 경로 수정
+   $(document).ready( function() {
+   	 $(".pd_descrp_pop .cont_body").find('img').each(function() {
+			let tmpImgSrc = $(this).attr('src');
+			if (tmpImgSrc.indexOf('Upload') == 1 ){  // /Upload
+				$(this).attr('src' , tmpImgSrc.replace('/Upload', _imgUrl+"/Local"));
+			}
+			
+		});
+	});
+/*]]>*/
+</script>	
 </html>

+ 34 - 16
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -199,7 +199,7 @@
 											</div>
 										</div>
 									</div>
-									<div class="form_field">
+									<div class="form_field" id="form_field1_Up">
 										<div class="select_custom deal_opt1" disabled>
 											<div class="combo">
 												<div class="select">옵션1선택</div>
@@ -209,7 +209,7 @@
 											</div>
 										</div>
 									</div>
-									<div class="form_field">
+									<div class="form_field" id="form_field2_Up">
 										<div class="select_custom deal_opt2" disabled>
 											<div class="combo">
 												<div class="select">옵션2선택</div>
@@ -325,16 +325,20 @@
 					if (idx == 0){
 						if (flag == "layer"){
 							$objUp = $('.pd_descrp_pop .opt_select .select_custom.deal_opt1');
-							$objUp.html('');
+					//		$objUp.html('');
+							$objUp.remove();
 						}else if (flag == "Up"){
 							$objUp = $('.pd_detail .opt_select .select_custom.deal_opt1');
-							$objUp.html('');
+					//		$objUp.html('');
+							$objUp.remove();
 						}else{
 							$objDown = $('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
-							$objDown.html('');
+					//		$objDown.html('');
+							$objDown.remove();
 						}
-						$('.form_field .select_custom.deal_opt1').attr('disabled', false);
+					//	$('.form_field .select_custom.deal_opt1').attr('disabled', false);
 						//------
+						tag1 += '<div class="select_custom deal_opt1">\n';	
 						tag1 += '<div class="combo">\n';
 						tag1 += '<div class="select">옵션1선택</div>\n';
 						tag1 += '<ul class="list">\n';
@@ -366,21 +370,26 @@
 					//------
 					tagUpS += '</ul>\n';
 					tagUpS += '</div>\n';
+					tagUpS += '</div>\n';
 					tagDownS += '</ul>\n';
 					tagDownS += '</div>\n';
+					tagDownS += '</div>\n';
 					//------	
 				}
 				
 				if (flag == "layer"){
-					$objUp.prepend(tagUpS);
+				//	$objUp.prepend(tagUpS);
+					$('#form_field1_'+flag).append(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt1');
 					//$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
-					$objUp.prepend(tagUpS);
+				//	$objUp.prepend(tagUpS);
+					$('#form_field1_'+flag).append(tagUpS);
 					var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
 					//$('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else{
-					$objDown.prepend(tagDownS);
+				//	$objDown.prepend(tagDownS);
+					$('#form_field1_'+flag).append(tagDownS);
 					var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
 					//$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}
@@ -439,17 +448,21 @@
 					if (idx == 0){
 						if (flag == "layer"){
 							$objUp = $('.pd_descrp_pop .opt_select .select_custom.deal_opt2');
-							$objUp.html('');
+					//		$objUp.html('');
+							$objUp.remove();
 						}else if (flag == "Up"){
 							$objUp = $('.pd_detail .opt_select .select_custom.deal_opt2');
-							$objUp.html('');
+					//		$objUp.html('');
+							$objUp.remove();
 						}else{
 							$objDown = $('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
-							$objDown.html('');
+					//		$objDown.html('');
+							$objDown.remove();
 							
 						}
-						$('.form_field .select_custom.deal_opt2').attr('disabled', false);	
+						//$('.form_field .select_custom.deal_opt2').attr('disabled', false);	
 						//------
+						tag1 += '<div class="select_custom deal_opt2">\n';	
 						tag1 += '<div class="combo">\n';
 						tag1 += '<div class="select">옵션2선택</div>\n';
 						tag1 += '<ul class="list">\n';
@@ -481,21 +494,26 @@
 					//------
 					tagUpS += '</ul>\n';
 					tagUpS += '</div>\n';
+					tagUpS += '</div>\n';
 					tagDownS += '</ul>\n';
 					tagDownS += '</div>\n';
+					tagDownS += '</div>\n';
 					//------	
 				}
 				
 				if (flag == "layer"){
-					$objUp.prepend(tagUpS);
+				//	$objUp.prepend(tagUpS);
+					$('#form_field2_'+flag).append(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt2');
 					//$('.pd_descrp_pop .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
-					$objUp.prepend(tagUpS);
+				//	$objUp.prepend(tagUpS);
+					$('#form_field2_'+flag).append(tagUpS);
 					var detail_deal_option03 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt2');
 					//$('.pd_detail .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}else{
-					$objDown.prepend(tagDownS);
+				//	$objDown.prepend(tagDownS);
+					$('#form_field2_'+flag).append(tagDownS);
 					var desc_option03 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt2');
 					//$('.pd_desc_wrap .opt_select .select_custom.deal_opt2').find('.combo .select').trigger('click');
 				}

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

@@ -275,7 +275,7 @@
 											</div>
 										</div>
 									</div>
-									<div class="form_field">
+									<div class="form_field" th:id="${'form_field2_'+goodsCompose.compsGoodsCd}">
 										<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}"  disabled>
 											<div class="combo">
 												<div class="select">옵션2선택</div>
@@ -312,7 +312,7 @@
 											</div>
 										</div>
 									</div>
-									<div class="form_field">
+									<div class="form_field" th:id="${'form_field2_'+goodsInfo.goodsCd}">
 										<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
 											<div class="combo">
 												<div class="select">옵션2선택</div>
@@ -1311,9 +1311,11 @@
 						//$obj = $('#goodsOpt2'+item.goodsCd);
 						//$obj = $('.form_field .select_custom.item_opt2.item_opt2_1');
 						
-						$obj.html('');
-						$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
+					//	$obj.html('');
+						$obj.remove();
+					//	$('.form_field .select_custom.item_opt2.' +item.goodsCd ).attr('disabled', false)
 						//------
+						tag += '<div class="select_custom item_opt2 item_opt2_'+ridx+ ' '+goodsCd+'">\n';	
 						tag += '<div class="combo">\n';
 						tag += '<div class="select">옵션2선택</div>\n';
 						tag += '<ul class="list">\n';
@@ -1340,11 +1342,12 @@
 					//------
 					tag += '</ul>\n';
 					tag += '</div>\n';
+					tag += '</div>\n';
 					//------	
 				}
 				
-				
-				$obj.append(tag);
+				$('#form_field2_'+ goodsCd).append(tag);
+				//$obj.append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
 						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');
@@ -1466,6 +1469,8 @@
 		
 		$('.timer_box').css('display', 'none');
 		
+		
+		
 		//공유 버튼 토글 
 		$("button[data-name=openShare]").on("click", function(){
 			$(this).toggleClass("on").next(".shareWrap").toggleClass("on");
@@ -1743,6 +1748,8 @@
 		
 		// ep 쿠폰확인
 		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
+		
+		
 	});
 	
 	// 상품평 레이어 호출후 콜백에서 호출하므로 여기에 있어야함
@@ -1802,6 +1809,19 @@
              // 이 부분에 적절한 fail-over 코드를 추가하여 주십시요.
          }
      }
+     
+     // 상품상세 asis html  이지미 경로 수정
+     window.onload = function(){
+    	 $(".pd_descrp .cont_body").find('img').each(function() {
+ 			let tmpImgSrc = $(this).attr('src');
+ 			if (tmpImgSrc.indexOf('Upload') == 1 ){  // /Upload
+ 				$(this).attr('src' , tmpImgSrc.replace('/Upload', _imgUrl+"/Local"));
+ 			}
+ 			
+ 		});
+ 	}
+     
+     
 /*]]>*/
 </script>
 

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

@@ -311,7 +311,7 @@
 										</div>
 									</div>
 								</div>
-								<div class="form_field">
+								<div class="form_field" id="form_field1_Down">
 									<div class="select_custom deal_opt1" disabled>
 										<div class="combo">
 											<div class="select">옵션1선택</div>
@@ -321,7 +321,7 @@
 										</div>
 									</div>
 								</div>
-								<div class="form_field">
+								<div class="form_field" id="form_field2_Down">
 									<div class="select_custom deal_opt2" disabled>
 										<div class="combo">
 											<div class="select">옵션2선택</div>
@@ -423,7 +423,7 @@
 			<div class="full_pop_fix_r">
 				<div class="option_box">
 					<div class="opt_select">
-						<div class="form_field">
+						<div class="form_field" id="form_field1_layer">
 							<div class="select_custom deal_opt1" disabled>
 								<div class="combo">
 									<div class="select">옵션1</div>
@@ -433,7 +433,7 @@
 								</div>
 							</div>
 						</div>
-						<div class="form_field">
+						<div class="form_field"  id="form_field2_layer">
 							<div class="select_custom deal_opt2" disabled>
 								<div class="combo">
 									<div class="select">옵션2선택</div>

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

@@ -95,7 +95,8 @@
 		gagajf.ajaxFormSubmit('/goods/instock/alarm/save'
 				, $('#goodsInstockAlarmForm')
 				, function() {
-					cfCloseLayer('layer_instock_alarm');
+					//cfCloseLayer('layer_instock_alarm');
+					$.modal.close();
 				}
 		);
 	}

+ 3 - 3
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -37,7 +37,7 @@
 						</button>
 					</div>
 				</div>
-				<th:block th:if="${socialInfo != null}">
+			<th:block th:if="${socialInfo != null}">
 			<div class="content wide dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
 				<div class="cont_body">
                     <div class="hotdeal">
@@ -74,7 +74,7 @@
 	<input type="hidden" name="pageSize" value ="10"/>
 </form>
 <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
-	<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
+<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
 let socialInfo = [[${socialInfo}]];
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
@@ -108,7 +108,7 @@ let fnGetSocialList = function(result) {
 
 	$.each(result.dataList, function(idx, item) {
 		
-		html += ' <div class="item_prod"class="item_prod">';
+		html += ' <div class="item_prod">';
 		if (item.stockQtySum == 0) {
 			html += '    <div class="item_state sold_out"> ';
 		}else{

+ 17 - 1
src/main/webapp/biz/goods.js

@@ -175,7 +175,23 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		}
 
 		tag += '<div class="item_prod">';
-		tag += '	<div class="item_state" data-id="'+item.soldoutYn+'">';
+		tag += '	<div class="item_state';
+		if(!gagajf.isNull(item.sizes)){
+			var sizeArr = item.sizes.split(",");
+			let soldOutCnt = 0;
+			for(let i=0; i<sizeArr.length; i++){
+				var sizeInfo = sizeArr[i].split(":");
+				var sizeVal = sizeInfo[0];
+				var soldOutYn = sizeInfo[1];
+				if(soldOutYn=='Y'){
+					soldOutCnt++;
+				}
+			}
+			if(sizeArr.length==soldOutCnt){
+				tag += ' soldout';
+			}
+		}
+		tag += '">';
 		tag += '		<button type="button" class="itemLike';
 		if(item.likeIt == 'likeit'){
 			tag += ' likeit';

+ 5 - 10
src/main/webapp/ux/mo/css/layout_m.css

@@ -369,7 +369,10 @@
 /* 슬라이드아이템*/
 .item_prod {display: inline-block;font-size: 0px;vertical-align: top;color: rgb(31, 31, 31);position: relative;letter-spacing: -0.025em;}
 .item_prod .item_state {position: relative; padding:0; box-sizing: border-box;}
-.item_prod .itemLike {position: absolute;top:1rem;right:1rem;font-size: 0px;z-index: 2;width: 1.7rem;height: 1.7rem; background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position:0px 0px;background-repeat: no-repeat;}
+.item_prod .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 2.0rem; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 12; z-index: 20; text-align: center;}
+.item_prod .item_state.AD .itemPic:before {content:'AD'; position: absolute; bottom: 0.666rem; right: 0.666rem; font-size: 1rem; font-weight: 300; letter-spacing: -0.025em; color:#888888; width: auto; height: auto; line-height: 1rem; z-index: 21; text-align: right;}
+
+.item_prod .itemLike {position: absolute;top:1rem;right:1rem;font-size: 0px;z-index: 19;width: 1.7rem;height: 1.7rem; background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position:0px 0px;background-repeat: no-repeat;}
 .item_prod .itemLike::before, 
 .item_prod .itemLike::after {content: "";position: absolute;top: 0px;right: 0px;width: 100%;height: 100%; background-repeat: no-repeat;background-position: right top;background-size: contain;opacity: 0;transition: opacity 200ms ease 0s;}
 .item_prod .itemLike::before {background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position:-1.7rem 0px;background-repeat: no-repeat;}
@@ -382,6 +385,7 @@
 .item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background-color: #fff;}
 /*.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}*/
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
+.item_prod .itemPic .pd_mov {position: absolute;width: 100%;height: 100%;top: 50%;left: 0px;transform: translateY(-50%);z-index: 2;}
 .item_prod .itemBrand {display: inline-block; margin: 0px 0.5rem 0.3rem; font-size: 1rem;font-weight: 300;color: rgb(137, 137, 137); text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:10rem;overflow:hidden;}
 .item_prod .itemComment{margin: 0.8rem 0.5rem 0px;line-height: 1; font-size: 1.1rem;font-weight: 300;color: #fd4802;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
 .item_prod .itemName {margin: 0px 0.5rem 0.8rem; font-size: 1.1rem; font-weight:300; color: rgb(31, 31, 31); max-height: 3rem; position: relative; overflow: hidden; white-space: normal; overflow-wrap: break-word; display: block; letter-spacing: -0.025rem;}
@@ -967,15 +971,6 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .pd_pop.Purchase_pop .btn_box button.cart{background-color:#222222;}
 .pd_pop.Purchase_pop .btn_box button.buyNow{background-color:#fd4801;}
 .pd_pop.Purchase_pop .npay_box{margin-top:2.8rem; margin-bottom:2.5rem; border-top:2px solid #222; height:7.4rem;}
-.pd_pop.Purchase_pop .npay_box .np_head{display:table; padding:1rem 0; width:100%;}
-.pd_pop.Purchase_pop .npay_box .np_head > div{display:table-cell; vertical-align:middle;}
-.pd_pop.Purchase_pop .npay_box .np_head > div:first-child{width:10rem; padding-right:2rem; box-sizing:border-box;}
-.pd_pop.Purchase_pop .npay_box .np_head > div button{background-color:#59c451; display:block; width:100%; text-align:center; height:4rem;}
-.pd_pop.Purchase_pop .npay_box .np_head > div button img{height:1.7rem;}
-.pd_pop.Purchase_pop .npay_box .np_body{padding:0.5rem 0; border-top:1px solid #e9ebed;}
-.pd_pop.Purchase_pop .npay_box .np_body > a{position:relative; display:block; font-size:1.1rem; color:#5d5d5d;}
-.pd_pop.Purchase_pop .npay_box .np_body > a em{color:#59c451; font-weight:500;}
-.pd_pop.Purchase_pop .npay_box .np_body > a:after{display:block; content:''; position:absolute; right:0; top:50%; width:0.6rem; height:1rem; background:url(/images/mo/arrow_npay.png) center center no-repeat; background-size:contain; -webkit-transform:translateY(-50%); transform:translateY(-50%);}
 .pd_pop.Purchase_pop .form_wrap .form_field{display: block; margin-bottom:1rem;}
 
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */