瀏覽代碼

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

xodud lee 5 年之前
父節點
當前提交
6fc23ca937
共有 48 個文件被更改,包括 820 次插入483 次删除
  1. 16 0
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  2. 13 3
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  3. 6 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  4. 7 3
      src/main/java/com/style24/front/support/controller/TsfBaseController.java
  5. 6 5
      src/main/java/com/style24/front/support/startup/TsfEnvsetInfo.java
  6. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  7. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  8. 56 44
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  9. 7 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  10. 1 1
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubBrandMob.html
  11. 7 6
      src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html
  12. 21 19
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  13. 12 12
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  14. 2 2
      src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html
  15. 5 5
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  16. 16 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  17. 10 10
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  18. 16 3
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  19. 14 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  20. 61 40
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  21. 32 0
      src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html
  22. 21 8
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  23. 18 8
      src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html
  24. 51 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  25. 35 35
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  26. 2 3
      src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html
  27. 14 14
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  28. 76 77
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  29. 2 2
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  30. 1 0
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  31. 6 6
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  32. 16 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  33. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealListFormWeb.html
  34. 18 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  35. 3 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  36. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  37. 56 60
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html
  38. 30 1
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html
  39. 2 3
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  40. 6 1
      src/main/webapp/WEB-INF/views/web/order/OrderListInfoWeb.html
  41. 4 0
      src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html
  42. 18 3
      src/main/webapp/biz/goods.js
  43. 71 67
      src/main/webapp/ux/mo/css/common_m.css
  44. 15 9
      src/main/webapp/ux/mo/css/layout_m.css
  45. 2 1
      src/main/webapp/ux/mo/css/style24_m.css
  46. 16 0
      src/main/webapp/ux/mo/js/common_m.js
  47. 4 4
      src/main/webapp/ux/pc/css/common.css
  48. 20 6
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

+ 16 - 0
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -838,4 +838,20 @@ public class TsfCouponService {
 		return result;
 	}
 
+	/**
+	 * 회원가입 쿠폰 정보 조회
+	 *
+	 *
+	 * @return Coupon
+	 * @author jsshin
+	 * @since 2021. 05. 27
+	 */
+	public Coupon getJoinCouponInfo() {
+		Coupon coupon = new Coupon();
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setCustGrade(TscConstants.CustGrade.WELCOME.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		return couponDao.getJoinCoupon(coupon);
+	}
+
 }

+ 13 - 3
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -3,6 +3,8 @@ package com.style24.front.biz.web;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import com.style24.front.biz.service.TsfCouponService;
+import com.style24.persistence.domain.Coupon;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -55,6 +57,9 @@ public class TsfCustomerController extends TsfBaseController {
 	@Autowired
 	private TscKakaotalkService kakaotalkService;
 
+	@Autowired
+	private TsfCouponService couponService;
+
 	@Autowired
 	private NiceCertify niceCertify;
 
@@ -181,11 +186,13 @@ public class TsfCustomerController extends TsfBaseController {
 			customer.setRegNo(custInfo.getCustNo());
 			customer.setUpdNo(custInfo.getCustNo());
 			customer.setCustNo(custInfo.getCustNo());
-
+			customer.setCellPhnno(custInfo.getCellPhnno());
 			// 비밀번호 수정
 			customerService.saveCustomerPassword(customer);
 
-			// TODO: 2021.02.15 메일발송 서비스 붙여야함 - jsshin
+			if (StringUtils.isNotBlank(customer.getCellPhnno())) {
+				kakaotalkService.sendCustomerTempPassword(customer, customer.getCustNo());
+			}
 		}
 
 		result.setString("authMethod", customer.getAuthMethod()); // 인증방법
@@ -604,10 +611,12 @@ public class TsfCustomerController extends TsfBaseController {
 		boolean isJoin = customerService.saveJoinCustomer(customer);
 
 		if (isJoin) {
+			Coupon coupon = couponService.getJoinCouponInfo();
+
 			// 4.알림톡 발송
 			try {
 				if (StringUtils.isNotBlank(customer.getCellPhnno())) {
-					kakaotalkService.sendJoinCongrat(customer, customer.getCustNo());
+					kakaotalkService.sendJoinCongrat(customer, coupon, customer.getCustNo());
 				}
 			} catch (Exception e) {
 				log.error("error", e);
@@ -621,6 +630,7 @@ public class TsfCustomerController extends TsfBaseController {
 			} catch (Exception e) {
 				log.error("error", e);
 			}
+
 			customerService.getLogin(customer.getCustNo(), request);
 		}
 

+ 6 - 1
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -638,6 +638,7 @@ public class TsfOrderController extends TsfBaseController {
 			cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
 			
 			// 2.7 배송비쿠폰목록 조회
+			order.setCpnId(null); // 2021.0-5.27 null 처리
 			delvCpnList = coreOrderService.getDelvCpnList(order);
 			
 			delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
@@ -1060,6 +1061,7 @@ public class TsfOrderController extends TsfBaseController {
 		
 		mav.addObject("isLogin"				, TsfSession.isLogin());				// 로그인여부
 		mav.addObject("delvAddrSq"			, resultMap.get("delvAddrSq"));			// 배송지번호
+		mav.addObject("orderDetailList"		, resultMap.get("orderDetailList"));	// 주문상세목록
 		mav.setViewName(super.getDeviceViewName("order/OrderComplete"));
 		
 		return mav;
@@ -1125,7 +1127,7 @@ public class TsfOrderController extends TsfBaseController {
 	 */
 	@ResponseBody
 	@PostMapping(value = "/getDailyDeliveryCheck")
-	public int getDailyDeliveryCheck(Order order) {
+	public int getDailyDeliveryCheck(@RequestBody Order order) {
 		
 		// 1. 총알배송가능 지역, 총알배송 가능 시간 체크
 		int rtn = coreOrderService.getDailyDeliveryCheck(order);
@@ -1246,6 +1248,7 @@ public class TsfOrderController extends TsfBaseController {
 			GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
 			
 			// 2.2 배송비쿠폰목록 조회
+			order.setCpnId(null); // 2021.0-5.27 null 처리
 			delvCpnList = coreOrderService.getDelvCpnList(order);
 			
 			// 2.3 배송정책단위목록
@@ -1365,6 +1368,8 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("chgerNm"					, resultMap.get("chgerNm"));				// 변경신청인
 		mav.addObject("chgerPhnno"				, resultMap.get("chgerPhnno"));				// 변경신청핸드폰번호
 		mav.addObject("goodsNm"					, resultMap.get("goodsNm"));				// 상품명
+		mav.addObject("delvCnt"					, resultMap.get("delvCnt"));				// 업체명카운트
+		mav.addObject("delvFeeCdList"			, resultMap.get("delvFeeCdList"));			// 추가결제시 업체명 목록 조회
 		mav.setViewName(super.getDeviceViewName("order/OrderAddPaymentForm"));
 		
 		return mav;

+ 7 - 3
src/main/java/com/style24/front/support/controller/TsfBaseController.java

@@ -48,6 +48,9 @@ public class TsfBaseController {
 	@Autowired
 	private TscMessageByLocale message;
 
+	@Autowired
+	private TsfEnvsetInfo envsetInfo;
+
 	/**
 	 * Json data 형식 외의 모든 문자열의 앞, 뒤 공백 제거
 	 * Json data 형식의 모든 문자열의 앞, 뒤 공백 제거 시는 AdmStringTrim에서 처리 (@RequestBody annotation 이용 시)
@@ -104,8 +107,8 @@ public class TsfBaseController {
 	 */
 	@ModelAttribute("metaInfo")
 	public Meta getMetaInfo() {
-//		return TsfEnvsetInfo.getInstance().getMetaInfo();
-		return (new TsfEnvsetInfo()).getMetaInfo();
+		return envsetInfo.getMetaInfo();
+//		return (new TsfEnvsetInfo()).getMetaInfo();
 	}
 
 	/**
@@ -114,7 +117,8 @@ public class TsfBaseController {
 	 */
 	@ModelAttribute("allCateList")
 	public Collection<Cate1> getAllCateList() {
-		return (new TsfEnvsetInfo()).getAllCateList();
+//		return (new TsfEnvsetInfo()).getAllCateList();
+		return envsetInfo.getAllCateList();
 	}
 
 	@ModelAttribute("osType")

+ 6 - 5
src/main/java/com/style24/front/support/startup/TsfEnvsetInfo.java

@@ -67,11 +67,12 @@ public class TsfEnvsetInfo {
 	 * @return
 	 */
 	public Collection<Cate1> getAllCateList() {
-		if (allCateList == null) {
-			allCateList = displayService.getAllCategoryList(TsfConstants.CateGb.BYITEM.value());
-		}
-
-		return allCateList;
+//		if (allCateList == null) {
+//		allCateList = displayService.getAllCategoryList(TsfConstants.CateGb.BYITEM.value());
+//		}
+//
+//		return allCateList;
+		return displayService.getAllCategoryList(TsfConstants.CateGb.BYITEM.value());
 	}
 
 }

+ 2 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -168,8 +168,9 @@
 		            ELSE CP.DC_AVAL                                              END AS DC_VAL
 		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')
 		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S')              END AS AVAIL_STDT
-		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%m%d%H%i%S')
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(CONCAT(CURRENT_DATE + INTERVAL CP.AVAIL_DAYS DAY, ' 23:59:59'), '%Y%m%d%H%i%S')
 		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S')             END AS AVAIL_EDDT
+		     , CP.CPN_NM
 		FROM  TB_CUST_GRADE_POLICY CGP
 		INNER JOIN
 		      TB_COUPON CP

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

@@ -655,7 +655,7 @@
 		FROM   TB_CATE_FILTER
 		WHERE  SITE_CD = #{siteCd}
 		AND    CATE_GB = #{cateGb}
-		<if test='formalGb != null and formalGb = "G009_20"'>
+		<if test='formalGb != null and formalGb == "G009_20"'>
 		AND    FORMAL_GB = #{formalGb}
 		</if>
 		AND    BRAND_GROUP_NO = #{brandGroupNo}

+ 56 - 44
src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml

@@ -170,10 +170,10 @@
 	
 	<select id="getQuickWishList" parameterType="WishList" resultType="Goods">
 		/* TsfWishlist.getQuickWishList*/
-		SELECT Z.*
+SELECT Z.*
 		FROM
 		(
-		WITH TAB_PLAN_GOODS AS (
+		WITH TAB_GOODS AS (
 		    SELECT W.AF_LINK_CD 
 		          ,W.CONTENTS_LOC 
 		          ,W.CUST_NO 
@@ -207,7 +207,7 @@
 		    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
 		    AND    B.USE_YN = 'Y'
 		    AND    BG.USE_YN = 'Y'
-		    AND    W.CUST_NO =  #{custNo}
+		    AND    W.CUST_NO =   #{custNo} /**P*/
 		    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 		    GROUP BY W.AF_LINK_CD 
 		          ,W.CONTENTS_LOC 
@@ -227,62 +227,74 @@
 		         , G.MIN_ORD_QTY                                            /*최소주문수량*/  				
 		)
 		, TAB_GOODS_IMG AS (
-		    SELECT PG.GOODS_CD
+		    SELECT G.GOODS_CD
 		         , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
-		    FROM   TAB_PLAN_GOODS PG
+		    FROM   TAB_GOODS G
 		         , TB_GOODS_IMG GI
-		    WHERE  PG.GOODS_CD = GI.GOODS_CD
-		    AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
+		    WHERE  G.GOODS_CD = GI.GOODS_CD
+		    AND    G.MAIN_COLOR_CD = GI.COLOR_CD
 		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
-		    GROUP  BY PG.GOODS_CD
+		    GROUP  BY G.GOODS_CD
 		)
 		, TAB_STOCK AS (
-		   SELECT PG.GOODS_CD
-		         , SUM(case WHEN S.SOLDOUT_YN = 'Y' THEN 0
+		   SELECT G.GOODS_CD
+		         , SUM(CASE WHEN S.SOLDOUT_YN = 'Y' THEN 0
 		                    ELSE S.CURR_STOCK_QTY - S.BASE_STOCK_QTY END ) AS STOCK_QTY_SUM
 		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
-		    FROM   TAB_PLAN_GOODS PG
+		    FROM   TAB_GOODS G
 		         , VW_STOCK S
-		    WHERE  PG.GOODS_CD = S.GOODS_CD
-		    AND    PG.GOODS_TYPE = 'G056_N'
+		    WHERE  G.GOODS_CD = S.GOODS_CD
+		    AND    G.GOODS_TYPE = 'G056_N'
 		    AND    S.DISP_YN = 'Y' /*노출하는상품만*/
-		    GROUP  BY PG.GOODS_CD
+		    GROUP  BY G.GOODS_CD
 		    UNION ALL 
-		    SELECT PG.GOODS_CD
-		         , SUM(CASE WHEN S.SOLDOUT_YN = 'Y' THEN 0
-		                    ELSE S.CURR_STOCK_QTY - S.BASE_STOCK_QTY END ) AS STOCK_QTY_SUM
-		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
-		    FROM   TAB_PLAN_GOODS PG
-		         , VW_STOCK_COMPOSE S
-		    WHERE  PG.GOODS_CD = S.GOODS_CD
-		    AND    PG.GOODS_TYPE != 'G056_N'
-		    AND    S.DISP_YN = 'Y' /*노출하는상품만*/
-		    GROUP  BY PG.GOODS_CD		
+		   		    SELECT GOODS_CD
+		         , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
+		              ELSE CURR_STOCK_QTY END ) AS STOCK_QTY_SUM
+		         , GROUP_CONCAT(DISTINCT OPT_CD) AS OPT_CD
+		    FROM (
+		             SELECT G.GOODS_CD
+		                  , GC.COMPS_GOODS_CD
+		                  , S.OPT_CD
+		                  , S.SOLDOUT_YN
+		                  , S.CURR_STOCK_QTY - S.BASE_STOCK_QTY     AS CURR_STOCK_QTY
+		                  , RANK()
+		                     OVER (PARTITION BY G.GOODS_CD ,GC.COMPS_GOODS_CD ORDER BY S.SOLDOUT_YN, S.CURR_STOCK_QTY DESC , S.OPT_CD) AS NUMB
+		             FROM TAB_GOODS G
+		                , TB_GOODS_COMPOSE GC
+		                , VW_STOCK S
+		             WHERE 1 = 1
+		               AND G.GOODS_CD = GC.GOODS_CD
+		               AND GC.COMPS_GOODS_CD = S.GOODS_CD
+		               AND G.GOODS_TYPE IN ('G056_D','G056_S')
+		               AND S.DISP_YN = 'Y' /*노출하는상품만*/
+		         ) Z
+		    WHERE  NUMB = 1
+		    GROUP BY GOODS_CD
 		  )
 		    SELECT 
-		           PG.BRAND_GROUP_NM
-		         , PG.GOODS_CD
-		         , PG.MIN_ORD_QTY
-		         , PG.GOODS_TYPE
-		         , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
-		         , PG.GOODS_NM
-		         , PG.GOODS_TNM
-		         , PG.MAIN_COLOR_CD
-		         , PG.LIST_PRICE
-		         , PG.AF_LINK_CD 
-		         , PG.CONTENTS_LOC 
-		         , PG.CUST_NO 
-		         , PG.REG_DT
-		         , FN_GET_BENEFIT_PRICE( 'P' /**P*/,PG.GOODS_CD,PG.CURR_PRICE, 'G100_10' /**P*/)                     AS CURR_PRICE    /*현재판매가*/
+		           G.BRAND_GROUP_NM
+		         , G.GOODS_CD
+		         , G.MIN_ORD_QTY
+		         , G.GOODS_TYPE
+		         , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
+		         , G.GOODS_NM
+		         , G.GOODS_TNM
+		         , G.MAIN_COLOR_CD
+		         , G.LIST_PRICE
+		         , G.AF_LINK_CD 
+		         , G.CONTENTS_LOC 
+		         , G.CUST_NO 
+		         , G.REG_DT
+		         , FN_GET_BENEFIT_PRICE( 'P' ,G.GOODS_CD,G.CURR_PRICE, 'G100_10' )                     AS CURR_PRICE    /*현재판매가*/
 		         , GI.SYS_IMG_NM
 		         , S.STOCK_QTY_SUM
 		         , S.OPT_CD 
-		    	FROM   TAB_PLAN_GOODS PG
-		    INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
-		    LEFT OUTER JOIN TAB_STOCK S ON PG.GOODS_CD = S.GOODS_CD
+		         , (SELECT GROUP_CONCAT(COMPS_GOODS_CD)  FROM TB_GOODS_COMPOSE WHERE GOODS_CD = G.GOODS_CD) AS COMPS_GOODS_CD  
+		    	FROM   TAB_GOODS G
+		    INNER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		    LEFT OUTER JOIN TAB_STOCK S ON G.GOODS_CD = S.GOODS_CD
 		    )Z
-		ORDER BY Z.STOCK_QTY_SUM ASC,Z.REG_DT DESC
+		    ORDER BY FIELD(Z.STOCK_QTY_SUM, 1, 2 ,3 ,4 ,5) DESC ,Z.REG_DT DESC
 	</select>
-	
-
 </mapper>

+ 7 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -450,6 +450,13 @@ var cfnInitLayerPosition = function() {
 $("#daumZipcodePop_close").on("click", function(){
 	$("#daumZipcodePop").hide();
 });
+
+/* 210427_수정 : err 이미지 스크립트 */
+function noneImg(noneSrc){
+	$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
+	$(noneSrc).css({'opacity':'0'});
+	//$(noneSrc).attr("src", no_src);
+}
 /*]]>*/
 </script>
 

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubBrandMob.html

@@ -17,7 +17,7 @@
 <th:block th:fragment="gnb">
 	<a href="#mainCon" class="skipNav">본문바로가기</a>
 	<header class=""> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
-		<section class="htop" id="htopSub">
+		<section class="htop subs" id="htopSub">
 			<button class="btn_back" title="이전페이지로">
 				<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
 			</button>

+ 7 - 6
src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html

@@ -96,12 +96,13 @@
 	$(document).ready(function(){
 		if (_isApp === 'true') {
 			if (gagajf.isNull(maskingCustId)) {
-				document.location.href = "idsend://?id=" + [[${custNo}]] + "^link=";
-				if (_osType === 'A') {
-					window.style24.pushEnable('ON');
-				} else if (_osType === 'I') {
-					window.webkit.messageHandlers.pushEnable.postMessage({"status":"ON"});
-				}
+				$.get("idsend://?id=" + [[${custNo}]] + "^link=", function () {
+					if (_osType === 'A') {
+						window.style24.pushEnable('ON');
+					} else if (_osType === 'I') {
+						window.webkit.messageHandlers.pushEnable.postMessage({"status":"ON"});
+					}
+				});
 			}
 		}
 	});

+ 21 - 19
src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html

@@ -79,7 +79,7 @@
 
 				<th:block th:if="${contentsLoc=='007'}">
 					<!-- 뉴아이템 슬라이드 -->
-					<div class="inner" th:if="${brandMainLayoutData.goodsList != null}">
+					<div class="inner" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="new_item">
 							<p class="br_subtitle" th:text="${contentsTitle}"></p>
 							<div class="area_slider">
@@ -94,7 +94,7 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBMM007', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM007');">
 														<div class="itemPic">
-															<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+															<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 														<div class="itemName" th:text="${goodsData.goodsFullNm}"></div>
@@ -118,7 +118,7 @@
 
 				<th:block th:if="${contentsLoc=='006' || contentsLoc=='014'||contentsLoc=='015'||contentsLoc=='016'}">
 					<!-- 배너 슬라이드 -->
-					<div class="inner wide" th:if="${brandMainLayoutData.ContentsList!=null}">
+					<div class="inner wide" th:if="${brandMainLayoutData.ContentsList!=null and !brandMainLayoutData.ContentsList.empty}">
 						<div class="swiper-container br_second_slide">
 							<div class="swiper-wrapper">
 								<th:block th:each="ContentsData, ContentsStat : ${brandMainLayoutData.ContentsList}">
@@ -142,7 +142,7 @@
 
 				<th:block th:if="${contentsLoc=='008'}">
 					<!-- 베스트아이템 슬라이드 -->
-					<div class="inner" th:if="${brandMainLayoutData.goodsList != null}">
+					<div class="inner" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="pd_together best_item">
 							<p class="br_subtitle" th:text="${contentsTitle}">BEST ITEMS</p>
 							<div class="area_slider">
@@ -157,7 +157,7 @@
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM008');">
 															<div class="shape" th:classappend="${goodsStat.count==1}?'ranker'"><span th:text="${goodsStat.index+1}"></span></div>
 															<div class="itemPic">
-																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 															<div class="itemName"th:text="${goodsData.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
@@ -225,7 +225,7 @@
 
 				<th:block th:if="${contentsLoc=='009' or contentsLoc=='017' or contentsLoc=='018' or contentsLoc=='019'}">
 					<!-- 엠디픽 슬라이드 -->
-					<div class="inner" th:if="${brandMainLayoutData.goodsList != null}">
+					<div class="inner" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="pd_together md_item">
 							<p class="br_subtitle" th:text="${contentsTitle}"></p>
 							<div class="area_slider">
@@ -239,7 +239,7 @@
 														<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}]], '', '', [[${contentsLoc}]]);">
 															<div class="itemPic">
-																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 															<div class="itemName" th:text="${goodsData.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
@@ -265,7 +265,7 @@
 
 				<th:block th:if="${contentsLoc=='011'}">
 					<!-- 스페셜샵 슬라이드 -->
-					<div class="inner" th:if="${brandMainLayoutData.planningList != null}">
+					<div class="inner" th:if="${brandMainLayoutData.planningList != null and !brandMainLayoutData.planningList.empty}">
 						<div class="special_shop">
 							<p class="br_subtitle" th:text="${contentsTitle}"></p>
 							<div class="area_slider">
@@ -290,7 +290,7 @@
 																	<div class="item_state">
 																		<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${planningGoods.goodsCd}]], '', '', 'SBMM011');">
 																			<div class="itemPic">
-																				<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + planningGoods.sysImgNm}">
+																				<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + planningGoods.sysImgNm}" onerror="noneImg(this)">
 																			</div>
 																			<p class="itemBrand" th:text="${planningGoods.brandGroupNm}">BRAND NAME</p>
 																			<div class="itemName" th:text="${planningGoods.goodsNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
@@ -320,16 +320,17 @@
 					<div class="inner" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="brand_product">
 							<p class="br_subtitle" th:text="${contentsTitle}"></p>
+							<div class="itemsGrp">
 							<th:block th:each="goodsData, goodsStat : ${brandMainLayoutData.goodsList}">
-								<th:block th:if="${(goodsStat.index%2)==0 or goodsStat.first}">
-									<div class="itemsGrp">
-								</th:block>
+<!--								<th:block th:if="${(goodsStat.index%2)==0 or goodsStat.first}">-->
+
+<!--								</th:block>-->
 								<div class="item_prod">
 									<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='SBMM013', planDtlSq=''">관심상품 추가</button>
 										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBMM013');">
 											<div class="itemPic">
-												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 											</div>
 											<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 											<div class="itemName" th:text="${goodsData.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
@@ -353,10 +354,11 @@
 										</a>
 									</div>
 								</div>
-								<th:block th:if="${(goodsStat.index%2)== 1 or goodsStat.last}">
-									<th:block th:utext="'</div>'"></th:block>
-								</th:block>
+<!--								<th:block th:if="${(goodsStat.index%2)== 1 or goodsStat.last}">-->
+<!--									<th:block th:utext="'</div>'"></th:block>-->
+<!--								</th:block>-->
 							</th:block>
+							</div>
 
 							<div class="btn_group_flex">
 								<div>
@@ -369,7 +371,7 @@
 
 				<th:block th:if="${contentsLoc=='012'}">
 					<!-- 유튜브 슬라이드 -->
-					<div class="inner wide" th:if="${brandMainLayoutData.ContentsList != null}">
+					<div class="inner wide" th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
 						<div class="youtube">
 							<p class="br_subtitle" th:text="${contentsTitle}">STYLE24 TV</p>
 							<div class="swiper-container br_youtube_slide">
@@ -378,7 +380,7 @@
 										<div class="swiper-slide">
 											<div class="movbox">
 												<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar2+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${'http://v.kr.kollus.com/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
+												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${kollusMediaUrl+'/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
 											</div>
 										</div>
 									</th:block>
@@ -422,7 +424,7 @@
 		tag += '					<div class="item_state">\n';
 		tag += '						<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+obj7+'\',\'\',\'\')">\n';
 		tag += '							<div class="itemPic">\n';
-		tag += '								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="">\n';
+		tag += '								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="" onerror="noneImg(this)">\n';
 		tag += '							</div>\n';
 		tag += '							<p class="itemBrand">'+obj2+'</p>\n';
 		tag += '							<div class="itemName">'+obj3+'</div>\n';

+ 12 - 12
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -948,14 +948,14 @@
 		}
 
 		var fnGoodsListSearch = function (){
-			console.log('ya');
+			// debugger;
 			gagaInfiniteScroll.getHistory();
 		}
 
 		// 상품 검색
 		var fnGetInfiniteScrollDataList = function (pageNum){
 			$("#searchGoodsForm input[name=pageNo]").val(pageNum+1);
-			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml);
+			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml , true);
 		}
 
 		var fnDrawInfiniteScrollData = function (result){
@@ -1039,8 +1039,7 @@
 				$(this).attr('checked', true);
 			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
-				if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
-
+				// if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
 					historyData = JSON.parse(historyData);
@@ -1083,9 +1082,10 @@
 					fnSortingChange(this,historyData.sortingType,'back','Mob');
 				}else{
 					// fnCategoryGoodsInfiniteScrollInit();
-					console.log('here*'+historyData.scroll);
+					// console.log('here*'+historyData.scroll);
+					// debugger;
 					fnGoodsListSearch();
-					$('html, body').animate({scrollTop: historyData.backScroll});
+					// $('html, body').animate({scrollTop: historyData.backScroll});
 					// window.scrollTo(0, historyData.backScroll);
 				}
 			}else{
@@ -1140,7 +1140,7 @@
 			var tag = '';
 
 			tag += '<span>'+cateNm+'</span>\n';
-			tag += '<button class="dp_list_btn_gnbs" title="서브타이틀 메뉴 열기/닫기">\n';
+			tag += '<button class="btn_gnbs" title="서브타이틀 메뉴 열기/닫기">\n';
 			tag += '	<span><i></i></span>\n';
 			tag += '</button>\n';
 
@@ -1174,11 +1174,11 @@
 	<script>
 		//(진행 중)
 		/* 210427_수정 : err 이미지 스크립트 */
-		function noneImg(noneSrc){
-			$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
-			$(noneSrc).css({'opacity':'0'});
-			//$(noneSrc).attr("src", no_src);
-		}
+		// function noneImg(noneSrc){
+		// 	$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
+		// 	$(noneSrc).css({'opacity':'0'});
+		// 	//$(noneSrc).attr("src", no_src);
+		// }
 	</script>
 
 

+ 2 - 2
src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html

@@ -69,7 +69,7 @@
 											<div class="item_state">
 												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
 													<div class="itemPic">
-														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" >
+														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" onerror="noneImg(this)">
 														<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM001', planDtlSq=''">관심상품 추가</button>
 													</div>
 													<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
@@ -97,7 +97,7 @@
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
 												<div class="shape" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}"></span></div>
 												<div class=" itemPic">
-													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" >
+													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" onerror="noneImg(this)">
 													<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM002', planDtlSq=''">관심상품 추가</button>
 												</div>
 												<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>

+ 5 - 5
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -166,7 +166,7 @@
 																		<span><em class="number" th:text="${bestItemStat.count}">1</em></span>
 																	</div>
 																	<div class="itemPic">
-																		<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}">
+																		<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 																	</div>
 																	<p class="itemBrand" th:text="${bestItemData.brandGroupNm}">TBJ</p>
 																	<div class="itemName" th:text="${bestItemData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -260,7 +260,7 @@
 															<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM006', planDtlSq=''">관심상품 추가</button>
 															<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM006');">
 																<div class="itemPic">
-																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<p class="itemBrand" th:text="${goodsData.brandEnm}">TBJ</p>
 																<div class="itemName" th:text="${goodsData.goodsNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -328,7 +328,7 @@
 														<div class="item_state">
 															<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM007');">
 																<div class="itemPic">
-																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">35,900</p>
@@ -415,7 +415,7 @@
 																	<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM009', planDtlSq=''">관심상품 추가</button>
 																	<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM009');">
 																		<div class="itemPic">
-																			<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																			<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">TBJ</p>
 																		<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -715,7 +715,7 @@
 										<div class="swiper-slide" th:each="item, stat : ${mainData.ContentsList}">
 											<div class="movbox">
 												<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar2+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${'http://v.kr.kollus.com/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
+												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${kollusMediaUrl+'/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
 												<!--										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/hGjFwebN5ks" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>-->
 											</div>
 										</div>

+ 16 - 2
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html

@@ -44,9 +44,12 @@
 			<th:block th:each="goodsVideo, status : ${goodsVideoList}">
 			<div class="movblock">
 				<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
 				<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 				</th:block>
 				<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 				</th:block>
 			</div>
 			</th:block>
@@ -54,20 +57,28 @@
 			<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 			<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 			<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
 				<a th:href="${goodsBanner.strVar1}" target="_blank">
 				<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 				</a>
 			</th:block>
 			<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
 				<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 			</th:block>
 			</th:block>
 			</th:block>
 			
 			<!-- 관리자 에디터입력 내용 노출  상단 html -->
-			<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+			<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block>
+			</th:block >
 			
-			<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+			<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" >
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+			</th:block>
 		</div>	
 			
 		<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">	
@@ -347,6 +358,9 @@
 			}
 			
 		});
+	   
+	 	//210526_ 추가 : 이미지 style 속성 제거
+		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
 	});
   
 /*]]>*/

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

@@ -325,8 +325,8 @@
 																		</div>
 																		<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
 																		<p class="itemPrice">
-																			<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">89,000</span>
 																			<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')}">89,000</span>
 																			<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">10%</span>
 																		</p>
 																	</a>
@@ -440,9 +440,9 @@
 		let jsonData = JSON.stringify(data);
 		
 		$('.form_field .select_custom.item_opt1').attr('disabled', true);
-		$('.form_field .select_custom.item_opt1').find('.combo .select').html('옵션1선택');
+		$('.form_field .select_custom.item_opt1').find('.combo .select').html('선택');
 		$('.form_field .select_custom.item_opt2').attr('disabled', true);
-		$('.form_field .select_custom.item_opt2').find('.combo .select').html('옵션2선택');
+		$('.form_field .select_custom.item_opt2').find('.combo .select').html('선택');
 		
 		gagajf.ajaxJsonSubmit('/goods/detail/compsGoods/list', jsonData, function(result) {
 			if (result.dataList != null && result.dataList.length > 0) {
@@ -474,10 +474,10 @@
 					tagUp += '				<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
 					tagUp += '				<div class="itemName" ><span class="tit_option">[상품'+(idx+1)+']</span> '+ item.goodsFullNm +'</div>\n';
 					tagUp += '				<p class="itemPrice">\n';
+					tagUp += '					 '+item.currPrice.addComma()+'\n';
 					if (Number(item.listPrice) > Number(item.currPrice)){
 					tagUp += '					<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';	
 					}
-					tagUp += '					 '+item.currPrice.addComma()+'\n';
 					if (Number(item.dcRate) > 0){
 					tagUp += '					<span class="itemPercent">'+item.dcRate+'%</span>\n';	
 					}
@@ -517,9 +517,9 @@
 					};
 		let jsonData = JSON.stringify(data);
 		
-		$('.form_field .select_custom.item_opt1').find('.combo .select').html('옵션1선택');
+		$('.form_field .select_custom.item_opt1').find('.combo .select').html('선택');
 		$('.form_field .select_custom.item_opt2').attr('disabled', true);
-		$('.form_field .select_custom.item_opt2').find('.combo .select').html('옵션2선택');
+		$('.form_field .select_custom.item_opt2').find('.combo .select').html('선택');
 		
 		gagajf.ajaxJsonSubmit('/goods/detail/option1/list', jsonData, function(result) {
 			
@@ -538,7 +538,7 @@
 						//------
 						tag1 += '<div class="select_custom item_opt1">\n';	
 						tag1 += '<div class="combo">\n';
-						tag1 += '<div class="select">옵션1선택</div>\n';
+						tag1 += '<div class="select">선택</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
 						//tag1 += '<li class="selected" id="goodsOpt1">옵션1선택</li>\n';	
@@ -618,7 +618,7 @@
 						//------
 						tag1 += '<div class="select_custom item_opt2">\n';	
 						tag1 += '<div class="combo">\n';
-						tag1 += '<div class="select">옵션2선택</div>\n';
+						tag1 += '<div class="select">선택</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
 						//tag1 += '<li class="selected" id="goodsOpt2">옵션2</li>\n';	
@@ -756,9 +756,9 @@
 			//$('.pd_detail .opt_select .select_custom.deal_opt_item').find('.combo .select').html(dTag);
 			//var opt_selecter_item = new sCombo('.opt_select .select_custom.deal_opt_item');
 			$('.form_field .select_custom.item_opt1').attr('disabled', true);
-			$('.form_field .select_custom.item_opt1').find('.combo .select').html('옵션1선택');
+			$('.form_field .select_custom.item_opt1').find('.combo .select').html('선택');
 			$('.form_field .select_custom.item_opt2').attr('disabled', true);
-			$('.form_field .select_custom.item_opt2').find('.combo .select').html('옵션2선택');
+			$('.form_field .select_custom.item_opt2').find('.combo .select').html('선택');
 			
 			$('.pop_option_select').css("display", "none");
 			

+ 16 - 3
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -306,9 +306,11 @@
 					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
 					<div class="movblock">
 						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
 						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 						</th:block>
 						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
 						<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 						</th:block>
 					</div>
@@ -317,18 +319,27 @@
 					<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
 						<a th:href="${goodsBanner.strVar1}" target="_blank">
 						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 						</a>
 					</th:block>
 					<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
 						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 					</th:block>
 					</th:block>
 					</th:block>
-					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >
+					<div style="height:4rem"></div><!-- 여백용 html -->
+					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block>
+					</th:block >
 					
-					<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					
+					<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" >
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					</th:block>
 					
 				</div>
 					
@@ -1192,7 +1203,7 @@
 														<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}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
-															th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90' or goodsCompose.stockQty <= 0)? 'true':''}, data-soldout=${(goodsCompose.stockQty <= 0)? 'true':''}"
+															th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.stockQty <= 0)? 'true':''}"
 															><th:block th:text="${goodsOption.optCd1Nm}"></th:block>
 															<input type="hidden" name="opt" th:value="${goodsOption.goodsCd}" th:attr="optCd1=${goodsOption.optCd1},optCd1Nm=${goodsOption.optCd1Nm},optCd2=${goodsOption.optCd2},optCd=${goodsOption.optCd}"/>
 														</li>
@@ -2315,6 +2326,8 @@
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
+		//210526_ 추가 : 이미지 style 속성 제거
+		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
 		
 		var params = new Object();
 		params.goodsCd = [[${params.goodsCd}]];

+ 14 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -40,7 +40,7 @@
 							<!-- 굿즈_리뷰 -->
 							<div class="goods_section">
 								<div class="goods_detail">
-									<a href="">
+									<a th:onclick="cfnGoToGoodsDetail([[${ reviewInfo.goodsCd}]])" >
 										<div class="thumb_box">
 											<img th:src="${imageUrl + '/' + reviewInfo.sysImgNm}" alt="tmp_pdClickother1">
 										</div>
@@ -252,7 +252,7 @@
 												</th>
 												<td>
 													<div class="textarea_wrap">
-													<textarea class="doc_review" name="reviewContent" id="reviewContent" cols="30" rows="10"></textarea>
+													<textarea class="doc_review" name="reviewContent" id="reviewContent" cols="30" rows="10" maxlength="500"></textarea>
 													<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/500</p>
 													</div>
 												</td>
@@ -676,6 +676,18 @@ function handleOnInput(el, maxlength) {
 		}
 	}
 </script>
+<script>
+	//210524_ 추가 : textarea focus시 outline 색상 넣는 스크립트
+	$(function() {
+		$('.doc_review').focus(function(){
+			$(this).parent('.textarea_wrap').css('outline', '1px auto rgb(229, 151, 0)');
+		})
+		$('.doc_review').blur(function(){
+			$(this).parent('.textarea_wrap').css('outline', 'none');
+		})
+	});
+</script>
+	
 </th:block>
 
 </body>

+ 61 - 40
src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html

@@ -1,5 +1,5 @@
 <!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">
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/SubLayoutMob">
 <!--
  *******************************************************************************
  * @source  : OrderAddPaymentMob.html
@@ -47,19 +47,13 @@
 									<a href="javascript:void(0)">
 										<div>
 											<div class="fold_tit">
-												<th:block th:if="${chGb} == 'G680_20'">
-													<span pan>취소상품</span>
-												</th:block>
-												<th:block th:if="${chGb} == 'G680_30'">
-													<span pan>반품상품</span>
-												</th:block>
-												<th:block th:if="${chGb} == 'G680_40'">
-													<span pan>교환상품</span>
-												</th:block>
+												<span pan>교환/환불 상품</span>
 											</div>
 										</div>
 									</a>
 								</div>
+								
+								
 								<div class="fold_cont" style="display: none;">
 									<div class="od_item_box">
 										<div class="part_goods">
@@ -163,41 +157,65 @@
 						</div>
 					</div>
 					<div class="area_paymentinfo">
-						<div class="paymentinfo">
-							<div class="payinfo_blk_wrap">
-								<a href="javascript:void(0);">
-									구매조건 확인 및 결제대행 서비스 약관 동의
-									<span>보기</span>
-								</a>
-								<div class="payinfo_blk_parent">
-									<div class="payinfo_blk">
-										<a href="javascript:void(0);">
-											개인정보 제공에 대한 동의
-											<span>보기</span>
-										</a>
-										<div class="infotxt">
-											개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.개인정보제공에 대한 동의 내용입니다.
-										</div>
-									</div>
-									<div class="payinfo_blk">
-										<a href="javascript:void(0);">
-											결제대행 서비스 약관 동의
-											<span>보기</span>
-										</a>
-										<div class="infotxt">
-											결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.결제대행서비스 약관 동의 내용입니다.
+						<!-- @자사만,무통장,실시간있으면 미노출 -->
+						<!-- @입점이있으면  -->
+						<!-- 입점업체가 있을때 노출 -->
+						<th:block th:if="${delvCnt} > 0">
+							<div class="paymentinfo">
+								<div class="payinfo_blk_wrap">
+									<a href="javascript:void(0);">구매조건 확인 및 결제대행 서비스 약관 동의<span>보기</span></a>
+									<div class="payinfo_blk_parent">
+										<div class="payinfo_blk">
+											<a href="javascript:void(0);">개인정보 제공에 대한 동의<span>보기</span></a>
+											<div class="infotxt">
+												STYLE24는 다음과 같이 회원님의 개인정보를 제3자에게 제공합니다.
+													<table class="paymentinfo agree2">
+														<colgroup>
+															<col width="30%">
+															<col width="*">
+														</colgroup>
+														<tbody>
+															<tr>
+																<th>제공받는 자</th>
+																<td>
+																	<th:block th:each="delvFeeCd, i : ${delvFeeCdList}">
+																		<th:block th:unless="${delvFeeCd.delvFeeCd} == 'WMS'">
+																			<th:block th:if="${i.count == #lists.size(delvFeeCdList)}">
+																				<th:block th:text="|${delvFeeCd.supplyCompNm}|"></th:block>
+																			</th:block>
+																			<th:block th:if="${i.count < #lists.size(delvFeeCdList)}">
+																				<th:block th:text="|${delvFeeCd.supplyCompNm},|"></th:block>
+																			</th:block>
+																		</th:block>
+																	</th:block>
+																</td>
+															</tr>
+															<tr>
+																<th>제공하는 항목</th>
+																<td>성명, 주소, 연락처</td>
+															</tr>
+															<tr>
+																<th>제공 목적</th>
+																<td>주문상품의 배송, 고객상담 및 불만처리</td>
+															</tr>
+															<tr>
+																<th>보유 및 이용기간</th>
+																<td>이용목적 달성 시 까지</td>
+															</tr>
+														</tbody>
+													</table>
+											</div>
 										</div>
 									</div>
 								</div>
 							</div>
-							
-						</div>
-						
-						<div class="agree_payment">
-							위 주문내역을 확인 하였으며, 회원 본인은 <br> 결제에 동의합니다.
-						</div>
+						</th:block>
+					</div>
+					
+					<div class="agree_payment">
+						위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다. (전자상거래법 제 8조 제2항)
 					</div>
-				</div> 
+				</div>
 	
 				<!-- //결제 정보 -->
 				<div class="inner wide">
@@ -264,6 +282,9 @@ $("#btn_payment").on("click", function(){
 </script>
 <script type="text/javascript">
 $(document).ready( function() {
+	// 1. 타이틀설정
+	$("#htopTitle").text("추가결제");
+	
 	//TabWrap, TabIndex
 	$(document).on('click', '.tabIndex li a', function() {
 		var $this = $(this),

+ 32 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html

@@ -517,6 +517,38 @@ var fnGoToOrderDetail = function(param) {
 }
 
 </script>
+
+<!-- 2021.05.27 주문완료 로그스크립트 삽입 -->
+<script th:inline="javascript">
+var orderDetailList 	= [[${orderDetailList}]]; // 주문상세목록
+
+window._eglqueue = window._eglqueue || [];
+
+/* STAR LOOP: 구매한 모든 상품에 대해 */
+for (i=0 ; i<orderDetailList.length ; i++) {
+	var goodsCd 	= orderDetailList[i].goodsCd;
+	var currPrice 	= orderDetailList[i].currPrice;
+	var ordQty 		= orderDetailList[i].ordQty;
+	_eglqueue.push(['addVar', 'orderItems', {itemId:goodsCd, price:currPrice, quantity:ordQty}]);
+}
+/* END LOOP */
+
+window._eglqueue = window._eglqueue || [];
+
+_eglqueue.push(['setVar'	, 'cuid'		, eglqueueCuid]);
+_eglqueue.push(['setVar'	, 'orderId'		, [[${orderInfo.ordNo}]]]);
+_eglqueue.push(['setVar'	, 'orderPrice'	, [[${realOrdSumAmt}]]]);
+_eglqueue.push(['setVar'	, 'userId'		, [[${orderInfo.custId}]]]); // optional
+_eglqueue.push(['track'		, 'order']);
+
+(function (s, x) {
+s = document.createElement('script'); s.type = 'text/javascript';
+s.async = true; s.defer = true; s.src = (('https:' == document.location.protocol) ? 'https' : 'http') + '://logger.eigene.io/js/logger.min.js';
+x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
+})();
+</script>
+<!-- //2021.05.27 주문완료 로그스크립트 삽입 -->
+
 </th:block>
 </body>
 </html>

+ 21 - 8
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -226,7 +226,11 @@
 											</div>
 											<div>
 												<dt>할인금액</dt>
-												<dd><div><span class="dcSumAmt"></span>원</div></dd>
+												<dd>
+													<div class="c_primary"> <!-- 210526_ 추가 : [.c_primary] 클래스 추가시 #fd4802 색상 변경. -->
+														<span class="dcSumAmt"></span>원
+													</div>
+												</dd>
 											</div>
 											<div>
 												<dt>배송비</dt>
@@ -689,7 +693,7 @@ var fnGetDailyDeliveryCheck = function (temp) {
 		}
 		
 		// TODO
-		var shotDelvObj 	= {"zipNo" : zipcode};
+		var shotDelvObj 	= {"recipZipcode" : zipcode};
 	
 		gagajf.ajaxJsonSubmit(
 			"/order/getDailyDeliveryCheck"
@@ -965,9 +969,9 @@ var paymentInfoSet = function() {
 						$("#orderForm .area_paymentinfo .agree1").hide();
 						
 						if (delvCnt > 0) {
-							$("#orderForm .area_paymentinfo .paymentinfo").show();
+							$("#orderForm .area_paymentinfo .paymentinfo.agree2").show();
 						} else {
-							$("#orderForm .area_paymentinfo .paymentinfo").hide();
+							$("#orderForm .area_paymentinfo .paymentinfo.agree2").hide();
 						}
 					}
 				});
@@ -976,9 +980,9 @@ var paymentInfoSet = function() {
 				$("#orderForm .area_paymethod .agree_insurance").hide();
 				$("#orderForm .area_paymentinfo .agree1").hide();
 				if (delvCnt > 0) {
-					$("#orderForm .area_paymentinfo .paymentinfo").show();
+					$("#orderForm .area_paymentinfo .paymentinfo.agree2").show();
 				} else {
-					$("#orderForm .area_paymentinfo .paymentinfo").hide();
+					$("#orderForm .area_paymentinfo .paymentinfo.agree2").hide();
 				}
 
 				// 결재하기
@@ -1976,7 +1980,7 @@ var custCpnApply = function(obj, idx, cpnType) {
 				$('#orderForm .'+payType).attr("disabled", false);
 			});
 		} else {
-			$("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
+			// $("#orderForm input[name=rdi-paynormal]").attr("disabled", false);
 		}
 		
 		// 선택안함
@@ -2298,6 +2302,7 @@ var custCpnSumAmtCal = function() {
 	
 	// 포인트, 상품권 금액 분배
 	$("#orderAmtForm .cartSq").each(function(){
+		var cartSq			= $(this).text();
 		var pntPrate		= parseInt($(this).parent().find(".pntPrate").text());
 		var pntMrate		= parseInt($(this).parent().find(".pntMrate").text());
 		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
@@ -2325,6 +2330,14 @@ var custCpnSumAmtCal = function() {
 		// 2021.05.11 최종할인금액으로 적립포인트 적용
 		savePntAmt1			= parseInt(realOrdAmt2 * (pntPrate/100));
 		
+		// 2021.05.27 적립포인트 설정
+		$("#orderForm #orderListInfo .orderListSavePntDcAmt").each(function(){
+			var orderListCartSq = $(this).parent().find("input[name=cartSq]").val();
+			if (orderListCartSq == cartSq) {
+				$(this).text(savePntAmt1.addComma());
+			}
+		});
+		
 		// 선포인트사용여부 
 		if (prePntDcAmtYn == "Y") {
 			if (prePntDcAmt1 < 1) {
@@ -2361,7 +2374,7 @@ var custCpnSumAmtCal = function() {
 	$("#orderForm .realOrdAmt").text(realOrdSumAmt.addComma()); 		// 총 결제 예정 금액
 	$("#orderForm .orgGoodsSumAmt").text(orgGoodsSumAmt.addComma());
 	$("#orderForm #btn_payment span").text(realOrdSumAmt.addComma());	// 총 결제 예정 금액
-	$("#orderForm .dcSumAmt").text(totDcSumAmt.addComma());				// 할인금액합계
+	$("#orderForm .dcSumAmt").text(getZeroMinusDelAmt(totDcSumAmt));	// 할인금액합계
 	
 	var tempSavePnt			= savePntSumAmt - prePntDcAmt;
 	

+ 18 - 8
src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html

@@ -55,12 +55,12 @@
 									</th:block>
 								</th:block>
 								<!-- 주문 접수 -->
-								<th:block th:each="goods, i : ${delvAllCart}">
+								<th:block th:each="goods, i : ${delvAllCart}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 									<div class="goods_section">
 										<div class="goods_detail">
 											<a href="">
 												<div class="thumb_box">
-													<img src="/images/mo/thumb/tmp_pdClickother1.jpg" alt="tmp_pdClickother1">
+													<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
 												</div>
 												<div class="info_box">
 													<div class="od_name">
@@ -69,12 +69,22 @@
 													</div>
 													<div class="od_opt" >
 														<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
-															<em th:text="${colorNm}"></em>
-															<em th:text="${goods.optCd2Arr[index.index]}"></em>
+															<th:block th:if="${goods.goodsType} == 'G056_S'">
+																<em th:text="${goods.itemNmArr[index.index]}"></em>
+																<em th:text="${colorNm}"></em>
+																<em th:text="${goods.optCd2Arr[index.index]}"></em>
+															</th:block>
+															<th:block th:unless="${goods.goodsType} == 'G056_S'">
+																<em th:text="${colorNm}"></em>
+																<em th:text="${goods.optCd2Arr[index.index]}"></em>
+															</th:block>
 														</div>
 													</div>
 													<div class="od_point">
-														<p class="point"><span th:text="${#numbers.formatInteger(goods.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+														<p class="point">
+															<input type="hidden" name="cartSq" th:value="${goods.cartSq}">
+															<span class="orderListSavePntDcAmt" th:text="${#numbers.formatInteger(goods.savePntAmt, 1, 'COMMA')}"></span>P 적립예정
+														</p>
 													</div>
 												</div>
 											</a>
@@ -94,9 +104,9 @@
 											</p>
 										</div>
 										<th:block th:if="${goods.delvResDt}">
-											<p class="info_reserv">
-												<i class="ico ico_calender"></i><span th:text="${goods.delvResDt}"></span> 배송예정상품
-											</p>
+											<div class="goods_txt reserv">
+												<span th:text="${goods.delvResDt}"></span> 배송예정
+											</div>
 										</th:block>
 									</div>
 								</th:block>

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

@@ -1198,7 +1198,14 @@
 								tag += '			</a>';	
 								tag += '			<div class="hover_con">';
 								if (item.stockQtySum>0) {
-									tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
+									if (item.goodsType == 'G056_N') {
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
+									}else if(item.goodsType == 'G056_D'){ // 딜상품
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" onclick="wishDealGoods()"><span>쇼핑백 담기</span></button>';
+									}else{
+										tag += '			<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" compsGoodsCd=\''+item.compsGoodsCd+'\' goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardSetAdd(this)"><span>쇼핑백 담기</span></button>';
+									}
+									
 								}
 								tag += '			</div>';	    
 								tag += '		</div>';	    
@@ -1221,6 +1228,12 @@
 			});
 	}
 	
+	// 딜상품일 경우 alert
+	var wishDealGoods = function() {
+		mcxDialog.alert("해당 상품은 옵션 선택 후 쇼핑백 담기가 가능합니다.");
+		return;
+	}
+	
 	// 위시리스트 해제
 	let fnWishDelete = function(obj) {
 		cfnPutWishList(obj);
@@ -1250,6 +1263,36 @@
 		}
 	}
 	
+	var wishCardSetAdd = function (obj) {
+		let cartGoodsList = [];
+		var optCdArr = $(obj).attr("optCd").split(",");
+		var compsGoodsCdArr = $(obj).attr("compsGoodsCd").split(",");
+
+		let compsList = [];
+		let goodsList = {
+		cartCompsList : new Array()
+		}
+
+		for(let j = 0 ; j <  optCdArr.length ; j++) { 
+			let temp = new Object;
+			temp.goodsCd = $(obj).attr("goodsCd");
+			temp.optCd = optCdArr[j];
+			temp.goodsQty = $(obj).attr("minOrdQty");
+			temp.goodsType = "G056_S";
+			temp.itemCd =  compsGoodsCdArr[j];
+			temp.cartGb = "C";
+			temp.afLinkCd = $(obj).attr("afLinkCd");
+			temp.ithrCd = "";
+			temp.contentsLoc = "";
+			temp.planDtlSq = "";
+			compsList.push(temp);
+		}  
+
+		goodsList.cartCompsList = compsList;
+		cartGoodsList.push(goodsList);
+		cfnAddCart(cartGoodsList);
+	}
+	
 	// 쿠폰리스트
 	let issueCouponBtn = function() {
 		if (!cfCheckLogin()) {
@@ -1726,6 +1769,13 @@ var cfnInitLayerPosition = function() {
 $("#daumZipcodePop_close").on("click", function(){
 	$("#daumZipcodePop").hide();
 });
+
+/* 210427_수정 : err 이미지 스크립트 */
+function noneImg(noneSrc){
+	$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
+	$(noneSrc).css({'opacity':'0'});
+	//$(noneSrc).attr("src", no_src);
+}
 /*]]>*/
 </script>
 

+ 35 - 35
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -869,30 +869,30 @@
 									tag +=' 	<button class="btn_toggle_bnr">열기</button>';
 								}
 								tag +='</div>';
-								//if(item.strVar8=='Y'){
-								//	tag+='<div class="close_bnr_area">';
-								//	tag+=' 	<form class="form_wrap">';
-								//	tag+=' 		<div class="form_field">';
-								//	tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-								//	tag+=' 		</div>';
-								//	tag+=' 	</form>';
-								//	tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-								//	tag+='</div>';
-								//}
+								if(item.strVar8=='Y'){
+									tag+='<div class="close_bnr_area">';
+									tag+=' 	<form class="form_wrap">';
+									tag+=' 		<div class="form_field">';
+									tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+									tag+=' 		</div>';
+									tag+=' 	</form>';
+									tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+									tag+='</div>';
+								}
 							}else if(item.contentsType == 'IMG'){
 								tag+='<div class="bnrtype_img" style="background-color:#'+item.strVar5+';">';
 								tag+=' 	<a href="'+item.strVar1+'" target="">';
 								tag+=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt=""/>';
 								tag+=' 	</a>';
 								tag+='</div>';
-								//tag+='<div class="close_bnr_area">';
-								//tag+=' 	<form class="form_wrap">';
-								//tag+=' 		<div class="form_field">';
-								//tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-								//tag+=' 		</div>';
-								//tag+=' 	</form>';
-								//tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-								//tag+='</div>';
+								tag+='<div class="close_bnr_area">';
+								tag+=' 	<form class="form_wrap">';
+								tag+=' 		<div class="form_field">';
+								tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+								tag+=' 		</div>';
+								tag+=' 	</form>';
+								tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+								tag+='</div>';
 							}else{
 								tag+='<div class="bnrtype_text" style="background-color:#fd4801;">';
 								tag+=' 	<a href="'+item.strVar1+'" target="">';
@@ -901,25 +901,25 @@
 								tag+=' 		</div>';
 								tag+=' 	</a>';
 								tag+='</div>';
-								//tag+='<div class="close_bnr_area">';
-								//tag+=' 	<form class="form_wrap">';
-								//tag+=' 		<div class="form_field">';
-								//tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-								//tag+=' 		</div>';
-								//tag+=' 	</form>';
-								//tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
-								//tag+='</div>';
-							}
-							tag+='<div class="close_bnr_area">';
-							tag+=' 	<form class="form_wrap">';
-							tag+=' 		<div class="form_field">';
-							tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
-							tag+=' 		</div>';
-							tag+=' 	</form>';
-							if(item.contentsType != 'OPEN' || (item.contentsType == 'OPEN' && item.strVar8=='Y')){
+								tag+='<div class="close_bnr_area">';
+								tag+=' 	<form class="form_wrap">';
+								tag+=' 		<div class="form_field">';
+								tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+								tag+=' 		</div>';
+								tag+=' 	</form>';
 								tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+								tag+='</div>';
 							}
-							tag+='</div>';
+							// tag+='<div class="close_bnr_area">';
+							// tag+=' 	<form class="form_wrap">';
+							// tag+=' 		<div class="form_field">';
+							// tag+=' 			<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label>';
+							// tag+=' 		</div>';
+							// tag+=' 	</form>';
+							// if(item.contentsType != 'OPEN' || (item.contentsType == 'OPEN' && item.strVar8=='Y')){
+							// 	tag+=' 	<button id="btn_close_bnr" class="btn_close" onclick="fnGnbTobBannerClose(1);"><span>닫기</span></button>';
+							// }
+							// tag+='</div>';
 
 							if(bannerYn=="Y"){
 								$('#divTopbanner').html(tag);

+ 2 - 3
src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html

@@ -20,14 +20,14 @@
 <th:block th:if="${brandGroupInfo == null }">
 	<header id="header" th:replace="~{web/common/fragments/GnbWeb :: gnb}"></header>
 </th:block>
-<th:block th:if="${brandGroupInfo != null }">
+<th:block th:unless="${brandGroupInfo == null }">
 	<header id="header" th:replace="~{web/common/fragments/BrandGnbWeb :: gnb}"></header>
 </th:block>
 <!--// GNB -->
 
 <!-- CONTENT AREA -->
 <th:block layout:fragment="content"></th:block>
-<!-- // CONTENT AREA -->
+<!-- // CONTENT AREA-->
 
 <!-- Footer -->
 <footer id="footer" th:replace="~{web/common/fragments/FooterWeb :: footer}"></footer>
@@ -42,7 +42,6 @@
 		}else{
 			$("#container").css('backgroundColor','#fff');
 		}
-
 	});
 /*]]>*/
 </script>

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

@@ -25,7 +25,7 @@
 			<th:block th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
 				<th:block th:if="${contentsLoc=='004'}">
 					<!-- 1. 비주얼 슬라이드 -->
-					<div class="content wide main_visual brand_visual">
+					<div class="content wide main_visual brand_visual" th:if="${brandMainLayoutData.ContentsList != null}">
 						<div class="cont_head dpnone">
 							<p class="t_c">비주얼 슬라이드</p>
 						</div>
@@ -91,7 +91,7 @@
 
 				<!-- new_item -->
 				<th:block th:if="${contentsLoc=='007'}">
-					<div class="content new_item" th:if="${brandMainLayoutData.goodsList != null}">
+					<div class="content new_item" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
 						</div>
@@ -105,7 +105,7 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBM007', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM007');">
 														<div class=" itemPic">
-															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 														<div class=" itemName" th:text="${goodsData.goodsFullNm}"></div>
@@ -128,7 +128,7 @@
 				<!-- 가로 긴 배너 슬라이드 -->
 				<!-- 브랜드 배너 -->
 				<th:block th:if="${contentsLoc=='006' || contentsLoc=='014'||contentsLoc=='015'||contentsLoc=='016'}">
-					<div class="content wide main_1stage">
+					<div class="content wide main_1stage" th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
 						<div class="cont_head dpnone">
 							<p class="t_c">배너 슬라이드</p>
 						</div>
@@ -161,7 +161,7 @@
 
 				<!-- best_item -->
 				<th:block th:if="${contentsLoc=='008'}">
-					<div class="content best_item" th:if="${brandMainLayoutData.goodsList != null}">
+					<div class="content best_item" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
 						</div>
@@ -176,7 +176,7 @@
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM008');">
 														<div class="shape" th:classappend="${goodsStat.count==1}?'ranker'"><span th:text="${goodsStat.index+1}"></span></div>
 														<div class="itemPic">
-															<img alt="BLACK-a" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+															<img alt="BLACK-a" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 														<div class="itemName" th:text="${goodsData.goodsFullNm}"></div>
@@ -238,7 +238,7 @@
 
 				<!-- MD’s PICK -->
 				<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="content md_item" th:if="${brandMainLayoutData.goodsList != null and !brandMainLayoutData.goodsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
 						</div>
@@ -251,7 +251,7 @@
 											<div class="item_state">
 												<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}">
+														<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
 													</div>
 													<p class=" itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
@@ -278,7 +278,7 @@
 
 				<!-- special_shop -->
 				<th:block th:if="${contentsLoc=='011'}">
-					<div class="content wide special_shop" th:if="${brandMainLayoutData.planningList != null}">
+					<div class="content wide special_shop" th:if="${brandMainLayoutData.planningList != null and !brandMainLayoutData.planningList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
 						</div>
@@ -315,7 +315,7 @@
 																<div class="item_state">
 																	<a href="javascript:void(0);" class=" itemLink" th:onclick="cfnGoToGoodsDetail([[${planningGoods.goodsCd}]], '', '', 'SBM011');">
 																		<div class="itemPic">
-																			<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + planningGoods.sysImgNm}">
+																			<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + planningGoods.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<div class="itemName" th:text="${planningGoods.goodsNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																		<p class="itemPrice">[[${#numbers.formatInteger(planningGoods.currPrice,0,'COMMA')} + 원]]
@@ -352,7 +352,7 @@
 											<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SBM013', planDtlSq=''">관심상품 추가</button>
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM013');">
 												<div class="itemPic">
-													<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+													<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 												</div>
 												<p class=" itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 												<div class="itemName" th:text="${goodsData.goodsFullNm}"></div>
@@ -386,7 +386,7 @@
 
 				<!-- main_tv -->
 				<th:block th:if="${contentsLoc=='012'}">
-					<div class="content wide main_tv" th:if="${brandMainLayoutData.ContentsList != null}">
+					<div class="content wide main_tv" th:if="${brandMainLayoutData.ContentsList != null and !brandMainLayoutData.ContentsList.empty}">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}">TBJ`S TV</p>
 						</div>
@@ -398,7 +398,7 @@
 											<div class="swiper-slide">
 												<div class="movbox">
 													<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar2+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-													<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${'http://v.kr.kollus.com/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
+													<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${kollusMediaUrl+'/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
 												</div>
 											</div>
 										</th:block>
@@ -467,7 +467,7 @@ var fnGoodsPopup = function(obj1,obj2,obj3,obj4,obj5,obj6,obj7){
 	tag += '						<div class="item_state">\n';
 	tag += '							<div class="itemLink">\n';
 	tag += '								<div class="itemPic">\n';
-	tag += '									<img alt="BLACK-a" class=" vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" onerror="this.src=\'/images/pc/thumb/bg_item_none.png\'">\n';
+	tag += '									<img alt="BLACK-a" class=" vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260"  onerror="noneImg(this)">\n'; //onerror="this.src='/images/pc/thumb/bg_item_none.png'"
 	tag += '								</div>\n';
 	tag += '								<p class="itemBrand">'+obj2+'</p>\n';
 	tag += '								<div class="itemName">'+obj3+'</div>\n';

+ 76 - 77
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -306,7 +306,7 @@
 		var custom_values = [];
 		var custom_values02  = [];
 		var currUrl = document.location.href;
-		var brandGroupInfo =  [[${brandGroupInfo}]];
+		let brandGroupInfo =  [[${brandGroupInfo}]];
 		var brandGroupNm = '';
 		if(!gagajf.isNull(brandGroupInfo)){
 			brandGroupNm = brandGroupInfo.brandGroupNm;
@@ -314,6 +314,11 @@
 
 		// 컨텐츠 호출
 		$(document).ready( function() {
+			if(!gagajf.isNull(brandGroupInfo)){
+				if(!gagajf.isNull(brandGroupInfo.brandGroupNo)){
+					$(".br_header").css('background-color','#fff');
+				}
+			}
 			//가격 슬라이드
 			//var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
 			let priceLen;
@@ -401,7 +406,7 @@
 			});*/
 
 			fnCreateCategoryList();
-			
+
 			if ($('#sizeLi1').find('label').length == 0) $('#sizeLi1').hide();
 			if ($('#sizeLi2').find('label').length == 0) $('#sizeLi2').hide();
 			if ($('#sizeLi3').find('label').length == 0) $('#sizeLi3').hide();
@@ -497,7 +502,7 @@
 		// 상품 검색
 		var fnGetInfiniteScrollDataList = function (pageNum){
 			$("#searchGoodsForm input[name=pageNo]").val(pageNum+1);
-			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml);
+			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml, true);
 		}
 
 		var fnDrawInfiniteScrollData = function (result){
@@ -545,74 +550,74 @@
 			}else{
 				actionUrl = '/display/brand/cate/list?brandGroupNo=' + [[${cateInfo.brandGroupNo}]];
 			}
-			
+
 			$.getJSON(actionUrl
-				, function(result, status) {
-					//if (status == 'success') {
-					if (result.length > 0) {
-						let formalGb = [[${cateInfo.formalGb}]];
-						if(formalGb == 'G009_10'){
-							formalGb = '';
-						}
-						let cateGb = 'G032_101';
-						let navNm = '';
-						$('#ulAllCate').html('');
-						if(brandGroupNo>0) {
-							$("#brandNm").show();
-							$("#brandNm").text(brandGroupNm);
-							$("#navNm").hide();
-							$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\''+brandGroupNo+'\',\''+cateGb+'\');" class="on">전체</a></li>\n');
-							navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
-						}else{
-							if(formalGb=='G009_20'){
+					, function(result, status) {
+						//if (status == 'success') {
+						if (result.length > 0) {
+							let formalGb = [[${cateInfo.formalGb}]];
+							if(formalGb == 'G009_10'){
+								formalGb = '';
+							}
+							let cateGb = 'G032_101';
+							let navNm = '';
+							$('#ulAllCate').html('');
+							if(brandGroupNo>0) {
+								$("#brandNm").show();
+								$("#brandNm").text(brandGroupNm);
 								$("#navNm").hide();
-								$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\',\'\',\'\',\'\',\'\',\'\',\''+formalGb+'\');">전체</a></li>\n');
-								navNm += '<li class="bread_2depth" id="navNm">아울렛</li><li class="bread_2depth" id="navNm1">전체</li>';
+								$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\''+brandGroupNo+'\',\''+cateGb+'\');" class="on">전체</a></li>\n');
+								navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
 							}else{
-								$("#navNm").hide();
-								// $('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\');">전체</a></li>\n');
-								// navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
+								if(formalGb=='G009_20'){
+									$("#navNm").hide();
+									$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\',\'\',\'\',\'\',\'\',\'\',\''+formalGb+'\');">전체</a></li>\n');
+									navNm += '<li class="bread_2depth" id="navNm">아울렛</li><li class="bread_2depth" id="navNm1">전체</li>';
+								}else{
+									$("#navNm").hide();
+									// $('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\');">전체</a></li>\n');
+									// navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
+								}
 							}
-						}
 
-						if(gagajf.isNull($("#searchGoodsForm").find("[name=cate1No]").val())){
-							$("#navArea").append(navNm);
-							$("#formTitle").text('전체');
-						}
+							if(gagajf.isNull($("#searchGoodsForm").find("[name=cate1No]").val())){
+								$("#navArea").append(navNm);
+								$("#formTitle").text('전체');
+							}
 
-						let allCate = [[${cateList}]];
-						if(brandGroupNo > 0){
-							$.each(result, function(idx, item) {
-								$.each(allCate, function(brandCateIdx, brandCateItem) {
-									if (item.cate1No == brandCateItem.cate1No) {
-										$('#ulAllCate').append(fnGetBrandCategoryList(item));
-									}
-								});
-							});
-						}else{
-							if(formalGb == 'G009_20'){
+							let allCate = [[${cateList}]];
+							if(brandGroupNo > 0){
 								$.each(result, function(idx, item) {
-									$.each(allCate, function(allCateIdx, allCateItem) {
-										if (item.cate1No == allCateItem.cate1No) {
-											$('#ulAllCate').append(fnGetCategoryList(item));
+									$.each(allCate, function(brandCateIdx, brandCateItem) {
+										if (item.cate1No == brandCateItem.cate1No) {
+											$('#ulAllCate').append(fnGetBrandCategoryList(item));
 										}
 									});
 								});
 							}else{
-								$.each(result, function(idx, item) {
-									$.each(allCate, function(allCateIdx, allCateItem) {
-										if (item.cate1No == allCateItem.cate1No) {
-											$('#ulAllCate').append(fnGetCategoryList(item));
-										}
+								if(formalGb == 'G009_20'){
+									$.each(result, function(idx, item) {
+										$.each(allCate, function(allCateIdx, allCateItem) {
+											if (item.cate1No == allCateItem.cate1No) {
+												$('#ulAllCate').append(fnGetCategoryList(item));
+											}
+										});
 									});
-								});
+								}else{
+									$.each(result, function(idx, item) {
+										$.each(allCate, function(allCateIdx, allCateItem) {
+											if (item.cate1No == allCateItem.cate1No) {
+												$('#ulAllCate').append(fnGetCategoryList(item));
+											}
+										});
+									});
+								}
 							}
 						}
-					}
-					//}
-				});
+						//}
+					});
 		}
-		
+
 		let fnGetBrandCategoryList = function (cate1){
 			var brandGroupNo = [[${cateInfo.brandGroupNo}]];
 			var cateGb =  [[${cateInfo.cateGb}]];
@@ -621,7 +626,7 @@
 			var cate2No = [[${cateInfo.cate2No}]];
 			var cate3No = [[${cateInfo.cate3No}]];
 			var cate4No = [[${cateInfo.cate4No}]];
-			
+
 			var navNm = "";
 			var formTitle = "";
 			let tag = '';
@@ -629,7 +634,7 @@
 			if(formalGb!='G009_20'){
 				formalGb = '';
 			}
-		
+
 			if(cate1 != null){
 				tag += '<li';
 				if (cate1.cate1No == cate1No) {
@@ -680,7 +685,7 @@
 							$("#navArea").append(navNm);
 						}
 						tag += '	onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
-						
+
 						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
 							tag += '<div class="sub_cate"';
 							if (cate2.cate2No == cate2No) {
@@ -704,7 +709,7 @@
 									navNm = '<li class="bread_2depth" id="navNm2">' + cate2.cate2Nm + '</li><li class="bread_2depth" id="navNm3">' + cate3.cate3Nm + '</li>';
 								}
 								tag += ' onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ',' + cate2.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>';
-								
+
 								if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
 									tag += '<div class="sub_cate"';
 									if (cate3.cate3No == cate3No) {
@@ -806,7 +811,7 @@
 				}else{
 					tag += '	onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ');" >' + cate1.cate1Nm + '</a>\n';
 				}
-				
+
 				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 					tag += '<div class="sub_cate"';
 					if (cate1.cate1No == cate1No) {
@@ -1031,7 +1036,7 @@
 				}
 			});
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
-				// if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
+				if( history.scrollRestoration ) window.history.scrollRestoration = 'manual';
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
 					// console.log('historyData>>'+historyData);
@@ -1073,13 +1078,11 @@
 					$(".fillter").show();
 				}else{
 					$(".fillter").show();
-					// fnCategoryGoodsInfiniteScrollInit();
-					// $('html, body').animate({scrollTop: historyData.scroll}, 'slow');
 					fnGoodsListSearch();
 					fnSetPriceFilter();
 					fnImgOnoff();
-					console.log('here*++ '+historyData.scroll);
-					$('html, body').animate({scrollTop: historyData.backScroll});
+					// console.log('here*++ '+historyData.scroll);
+					// $('html, body').animate({scrollTop: historyData.backScroll});
 				}
 			}else{
 				fnCategoryGoodsInfiniteScrollInit();
@@ -1125,9 +1128,9 @@
 			}
 		}
 
-		
+
 		/*]]>*/
-		
+
 		// 동영상 플레이어
 		// var iframe= document.createElement('iframe');
 		// iframe.setAttribute('allowFullScreen', '');
@@ -1167,16 +1170,12 @@
 
 	<script>
 		//(진행 중)
-		$(document).ready( function() {
-			
-		});
-		
 		/* 210427_수정 : err 이미지 스크립트 */
-		function noneImg(noneSrc){
-			$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
-			$(noneSrc).css({'opacity':'0'});
-			//$(noneSrc).attr("src", no_src);
-		}
+		// function noneImg(noneSrc){
+		// 	$(noneSrc).parents('.itemPic').css({'background':'url(/images/pc/thumb/bg_item_none.png)'});
+		// 	$(noneSrc).css({'opacity':'0'});
+		// 	//$(noneSrc).attr("src", no_src);
+		// }
 	</script>
 	
 

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

@@ -94,7 +94,7 @@
 											<button type="button" class="itemLike" th:classappend="${item.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${item.goodsCd}, ithrCd='', contentsLoc='SCM001', planDtlSq=''">관심상품 추가</button>
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
 												<div class=" itemPic">
-													<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+													<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}" onerror="noneImg(this)"/>
 												</div>
 												<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
 												<div class="itemName" th:text="${item.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
@@ -127,7 +127,7 @@
 										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
 											<div class="rank" th:classappend="${status.count==1}?'ranker'"><span th:text="${status.index+1}">1</span></div>
 											<div class="itemPic">
-												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}" onerror="noneImg(this)"/>
 											</div>
 											<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
 											<div class="itemName" th:text="${item.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>

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

@@ -221,6 +221,7 @@
 		if(lookbookGb=='BL'){
 			$("#brandBox").hide();
 			$("#navHome").attr('onclick', 'cfnGoToBrandMain('+brandCd+');');
+			$(".br_header").css('background-color','#fff');
 		}else{
 			$("#navHome").attr('href', '/');
 			fnGetBrandList();

+ 6 - 6
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -121,7 +121,7 @@
 													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM003', planDtlSq=''">관심상품 추가</button>
 													<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM003');">
 														<div class=" itemPic">
-															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 														<div class=" itemName" th:text="${goodsData.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
@@ -171,7 +171,7 @@
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${bestItemData.goodsCd}]], '', '', 'SMM004');">
 															<div class="shape" th:classappend="${bestItemStat.count==1}?'ranker'"><span th:text="${bestItemStat.count}"></span></div>
 															<div class="itemPic">
-																<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" >
+																<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class=" itemBrand" th:text="${bestItemData.brandGroupNm}">BRAND NAME</p>
 															<div class=" itemName" th:text="${bestItemData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -324,7 +324,7 @@
 														<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM006', planDtlSq=''">관심상품 추가</button>
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM006');">
 															<div class="itemPic">
-																<img alt="" class="pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																<img alt="" class="pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 															<div class="itemName" th:text="${goodsData.goodsNm}">여성 체인 프린트 큐롯 스커트 프린트 큐롯 스커트</div>
@@ -403,7 +403,7 @@
 															<button type="button" class="itemLike" tabindex="0" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM007', planDtlSq=''">관심상품 추가</button>
 															<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM007');">
 																<div class="itemPic">
-																	<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																	<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">80,100
@@ -492,7 +492,7 @@
 																	<button type="button" class="itemLike" tabindex="0" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM009', planDtlSq=''">관심상품 추가</button>
 																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM009');">
 																		<div class="itemPic">
-																			<img alt="" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																			<img alt="" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 																		<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
@@ -534,7 +534,7 @@
 										<div class="swiper-slide">
 											<div class="movbox">
 												<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar2+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${'http://v.kr.kollus.com/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
+												<iframe th:if="${item.strVar1=='M'}" class="pd_mov"  th:src="${kollusMediaUrl+'/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
 											</div>
 										</div>
 									</th:block>

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

@@ -44,9 +44,11 @@
 		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
 		<div class="movblock">
 			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+			<div style="height:100px"></div><!-- 여백용 html -->
 			<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 			</th:block>
 			<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+			<div style="height:100px"></div><!-- 여백용 html -->
 			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 			</th:block>
 		</div>
@@ -55,20 +57,28 @@
 		<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 		<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 		<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<div style="height:100px"></div><!-- 여백용 html -->
 			<a th:href="${goodsBanner.strVar1}" target="_blank">
 			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 			</a>
 		</th:block>
 		<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<div style="height:100px"></div><!-- 여백용 html -->
 			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 		</th:block>
 		</th:block>
 		</th:block>
 		
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
-		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >
+		<div style="height:100px"></div><!-- 여백용 html -->
+		<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block>
+		</th:block >
 		
-		<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+		<th:block th:if="${goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" >
+		<div style="height:100px"></div><!-- 여백용 html -->
+		<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+		</th:block>
 	</div>	
 			
 	<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
@@ -151,7 +161,7 @@
 	<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+'?RS=720'}" alt="">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 				</th:block>
 		</div>
 	</div>
@@ -306,6 +316,9 @@
 			}
 			
 		});
+   //210526_ 추가 : 이미지 style 속성 제거
+	$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
+   	
 	});
 /*]]>*/
 </script>	

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

@@ -42,7 +42,7 @@
 						</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':''}">
+						<li class="selected" th:each="goodsInfo, status : ${goodsDealComposeList}" >
 							<div class="item_prod">
 								<div class="item_state">
 									<a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]])">

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

@@ -265,7 +265,7 @@
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 													<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
-														th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90' or goodsCompose.stockQty <= 0)? 'true':''}, data-soldout=${(goodsCompose.stockQty <= 0)? 'true':''}"
+														th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90' or goodsOption.stockQty <= 0)? 'true':''}, data-soldout=${(goodsOption.stockQty <= 0)? 'true':''}"
 														>
 														<div th:text="${goodsOption.optCd1Nm}">상품옵션</div>
 														<div th:if="${goodsOption.addPrice > 0}" th:text="|+${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
@@ -636,11 +636,12 @@
 					<!-- 관리자 에디터입력 내용   공지 html -->
 					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
 					<div class="movblock">
+					 	<div style="height:100px"></div><!-- 여백용 html -->
 						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 						</th:block>
 						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
 						</th:block>
 					</div>
 					</th:block>
@@ -648,20 +649,28 @@
 					<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+						 <div style="height:100px"></div><!-- 여백용 html -->
 						<a th:href="${goodsBanner.strVar1}" target="_blank">
 						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 						</a>
 					</th:block>
 					<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					 	<div style="height:100px"></div><!-- 여백용 html -->
 						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 					</th:block>
 					</th:block>
 					</th:block>
 					
 					<!-- 관리자 에디터입력 내용 노출  상단 html -->
-					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" >
+						<div style="height:100px"></div><!-- 여백용 html -->
+						<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block> 
+					</th:block >
 					
-					<th:block th:if="${ goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					<th:block th:if="${ goodsInfo.tobeFormYn == 'N' and goodsInfo.goodsDesc != null  and !goodsInfo.goodsDesc.empty}" >
+						<div style="height:100px"></div><!-- 여백용 html -->
+						<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}"></th:block>
+					</th:block>
 				</div>	
 					
 				<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
@@ -746,7 +755,7 @@
 				<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+'?RS=720'}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 							</th:block>
 					</div>
 				</div>
@@ -1771,6 +1780,9 @@
 		
 		$('.timer_box').css('display', 'none');
 		
+		//210526_ 추가 : 이미지 style 속성 제거
+		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
+		
 		//공유 버튼 토글 
 		$("button[data-name=openShare]").on("click", function(){
 			$(this).toggleClass("on").next(".shareWrap").toggleClass("on");

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

@@ -285,7 +285,7 @@
 											<ul class="list" th:if="${goodsDealComposeList  != null and !goodsDealComposeList.empty}">
 												<th:block th:each="goodsInfo, status : ${goodsDealComposeList}" th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'true':''}, data-soldout=${(goodsInfo.stockQty <= 0)? 'true':''}">
 												<li  th:onclick="fnOption1('Down', [[${goodsInfo.compsGoodsCd}]], [[${goodsInfo.currPrice}]] , [[${goodsInfo.selfGoodsYn}]]);"
-														th:attr="aria-disabled=${(goodsInfo.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsInfo.goodsStat != 'G008_90')? 'true':''}">
+														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">
@@ -726,10 +726,10 @@
 		params.goodsCd = goodsCd;
 		params.adminYn = "Y";
 		fnGoodsDealDetail2(params);  // ajax html
-		if (soldout == "N"){
+		//if (soldout == "N"){
 			// 옵션1 처리
 			fnOption1("layer", goodsCd, currPrice, selfGoodsYn);
-		}
+		//}
 		
 	}
 	

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html

@@ -58,7 +58,7 @@
 											<div class="order_desc">
 												<div class="goods_box">
 													<div class="gd_item">	
-														<a href="">
+														<a th:onclick="cfnGoToGoodsDetail([[${ reviewInfo.goodsCd}]])" >
 															<span class="thumb">
 																<img th:src="${imageUrl + '/' + reviewInfo.sysImgNm +'?RS=550'}" width="100%" alt="">
 															</span>

+ 56 - 60
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html

@@ -67,69 +67,65 @@
 										</div>
 									</div>
 								</div>
+								
 								<div class="area_paymentinfo">
-									<div class="paymentinfo">
-										<!-- 210421_수정 : 테이블 추가. -->
-										<div class="payinfo_blk">
-											<a href="javascript:void(0)">
-												개인정보 제공에 대한 동의
-												<span>보기</span>
-											</a>
-											<div class="infotxt">
-												STYLE24는 다음과 같이 회원님의 개인정보를 제3자에게 제공합니다.
-												<table>
-													<colgroup>
-														<col width="25%">
-														<col width="*">
-														<col width="25%">
-														<col width="25%">
-													</colgroup>
-													<thead>
-														<tr>
-															<th>제공받는 자</th>
-															<th>제공하는 항목</th>
-															<th>제공 목적</th>
-															<th>보유 및 이용기간</th>
-														</tr>
-													</thead> 
-													<tbody>
-														<tr>
-															<td>
-																서울보증보험㈜, ㈜유세이프
-															</td>
-															<td>
-																구매자명, 구매자 생년월일,
-																구매자 성별, 구매자 연락처
-																(일반전화 및 핸드폰), 구매자
-																이메일, 주문번호,
-																배송지 정보, 주문 금액
-															</td>
-															<td>
-																쇼핑몰보증보험 가입 및 보험가입 제반 사항
-															</td>
-															<td>
-																개별서비스 제공기간
-															</td>
-														</tr>
-														<tr>
-															<td>
-																더비오유컴퍼니 주식회사
-															</td>
-															<td>
-																성명, 주소, 연락처
-															</td>
-															<td>
-																주문상품의 배송, 고객상담 및 불만처리
-															</td>
-															<td>
-																이용목적 달성 시 까지
-															</td>
-														</tr>
-													</tbody>
-												</table>
+									<!-- 입점업체가 있을때 노출 -->
+									<th:block th:if="${delvCnt} > 0">
+										<div class="paymentinfo">
+											<!-- 210421_수정 : 테이블 추가. -->
+											<div class="payinfo_blk">
+												<a href="javascript:void(0)">
+													개인정보 제공에 대한 동의
+													<span>보기</span>
+												</a>
+												<div class="infotxt">
+													STYLE24는 다음과 같이 회원님의 개인정보를 제3자에게 제공합니다.
+													<table>
+														<colgroup>
+															<col width="25%">
+															<col width="*">
+															<col width="25%">
+															<col width="25%">
+														</colgroup>
+														<thead>
+															<tr>
+																<th>제공받는 자</th>
+																<th>제공하는 항목</th>
+																<th>제공 목적</th>
+																<th>보유 및 이용기간</th>
+															</tr>
+														</thead> 
+														<tbody>
+															<tr>
+																<td>
+																	<th:block th:each="delvFeeCd, i : ${delvFeeCdList}">
+																		<th:block th:unless="${delvFeeCd.delvFeeCd} == 'WMS'">
+																			<th:block th:if="${i.count == #lists.size(delvFeeCdList)}">
+																				<th:block th:text="|${delvFeeCd.supplyCompNm}|"></th:block>
+																			</th:block>
+																			<th:block th:if="${i.count < #lists.size(delvFeeCdList)}">
+																				<th:block th:text="|${delvFeeCd.supplyCompNm},|"></th:block>
+																			</th:block>
+																		</th:block>
+																	</th:block>
+																</td>
+																<td>
+																	성명, 주소, 연락처
+																</td>
+																<td>
+																	주문상품의 배송, 고객상담 및 불만처리
+																</td>
+																<td>
+																	이용목적 달성 시 까지
+																</td>
+															</tr>
+														</tbody>
+													</table>
+												</div>
 											</div>
 										</div>
-									</div>
+									</th:block>
+									<!-- //입점업체가 있을때 노출 -->
 									<div class="agree_payment">
 										위 주문내역을 확인 하였으며, 회원 본인은 결제에 동의합니다. (전자상거래법 제 8조 제2항) <!-- 210421_수정 : 텍스트 수정. -->
 									</div>

+ 30 - 1
src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html

@@ -416,14 +416,43 @@ var delvMemoSet = function(delvMemoObj) {
 	$("#delvMemo").text(delvMemo);
 }
 
-//주문상세보기 버튼 클릭 이벤트 처리
+// 주문상세보기 버튼 클릭 이벤트 처리
 var fnGoToOrderDetail = function(param) {
 	let ordNo = $(param).attr('ordNo');
 	cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
 }
+</script>
+
+<!-- 2021.05.27 주문완료 로그스크립트 삽입 -->
+<script th:inline="javascript">
+var orderDetailList 	= [[${orderDetailList}]]; // 주문상세목록
+
+window._eglqueue = window._eglqueue || [];
+
+/* STAR LOOP: 구매한 모든 상품에 대해 */
+for (i=0 ; i<orderDetailList.length ; i++) {
+	var goodsCd 	= orderDetailList[i].goodsCd;
+	var currPrice 	= orderDetailList[i].currPrice;
+	var ordQty 		= orderDetailList[i].ordQty;
+	_eglqueue.push(['addVar', 'orderItems', {itemId:goodsCd, price:currPrice, quantity:ordQty}]);
+}
+/* END LOOP */
+
+window._eglqueue = window._eglqueue || [];
 
+_eglqueue.push(['setVar'	, 'cuid'		, eglqueueCuid]);
+_eglqueue.push(['setVar'	, 'orderId'		, [[${orderInfo.ordNo}]]]);
+_eglqueue.push(['setVar'	, 'orderPrice'	, [[${realOrdSumAmt}]]]);
+_eglqueue.push(['setVar'	, 'userId'		, [[${orderInfo.custId}]]]); // optional
+_eglqueue.push(['track'		, 'order']);
 
+(function (s, x) {
+s = document.createElement('script'); s.type = 'text/javascript';
+s.async = true; s.defer = true; s.src = (('https:' == document.location.protocol) ? 'https' : 'http') + '://logger.eigene.io/js/logger.min.js';
+x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
+})();
 </script>
+<!-- //2021.05.27 주문완료 로그스크립트 삽입 -->
 
 
 

+ 2 - 3
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -693,9 +693,8 @@ var fnGetDailyDeliveryCheck = function (temp) {
 			//alert("배송지정보가 없습니다. 기본 총알배송 가능지역으로 설정 합니다.");
 			zipcode = "04320"; // 기본 서울역 우편번호로 설정
 		}
-		
-		// TODO
-		var shotDelvObj 	= {"zipNo" : zipcode};
+
+		var shotDelvObj 	= {"recipZipcode" : zipcode};
 	
 		gagajf.ajaxJsonSubmit(
 			"/order/getDailyDeliveryCheck"

+ 6 - 1
src/main/webapp/WEB-INF/views/web/order/OrderListInfoWeb.html

@@ -53,7 +53,12 @@
 									<div class="brand" th:text="${goods.brandGroupNm}"></div>
 									<div class="name" th:text="${goods.goodsNm}"></div>									
 									<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
-										<span th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></span> 
+										<th:block th:if="${goods.goodsType} == 'G056_S'">
+											<span th:text="${goods.itemNmArr[index.index]}+'/'+${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></span>
+										</th:block>
+										<th:block th:unless="${goods.goodsType} == 'G056_S'">
+											<span th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></span>
+										</th:block>  
 									</div>
 									<div class="option">
 										<span>수량:<em th:text="${goods.goodsQty}"></em>개</span>

+ 4 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html

@@ -187,6 +187,10 @@
 	
 	$(document).ready(function() {
 		fnGetPlanningList([[${cateNo}]],[[${brandGroupNo}]]);
+		if(!gagajf.isNull([[${brandGroupNo}]])){
+			$(".br_header").css('background-color','#fff');
+		}
+
 	});
 /*]]>*/
 </script>

+ 18 - 3
src/main/webapp/biz/goods.js

@@ -153,7 +153,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="https://www.youtube.com/embed/'+videoUrl+'?autoplay=1&mute=1"></iframe>';
 				//tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/164MyIiv?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
 			}else{
-				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="'+_kollusMediaUrl+'/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
 			}
 		}
 		tag += '		<img class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'" data-img="'+goodsUrl+'/'+item.sysImgNm2+'" onerror="noneImg(this)">';
@@ -875,10 +875,25 @@ var fnReCheckFilterList = function (){
 	});
 }
 
-var fnClickGoodsCd = function (goodsCd, mainColorCd){
+/*window.addEventListener('beforeunload', (event) => {
+	console.log('addEventListener-1');
+	// 표준에 따라 기본 동작 방지
+	event.preventDefault();
+	// Chrome에서는 returnValue 설정이 필요함
+	// event.returnValue = '';
+	console.log('addEventListener-2');
 	let scrollTop = document.documentElement.scrollTop;
+	console.log('addEventListener->'+scrollTop);
 	gagaInfiniteScroll.pageStatus.backScroll = scrollTop;
-	fnPushHistory();
+
+});*/
+
+var fnClickGoodsCd = function (goodsCd, mainColorCd){
+	// let scrollTop = document.documentElement.scrollTop;
+	// gagaInfiniteScroll.pageStatus.backScroll = scrollTop;
+	let scrollpos = $(window).scrollTop();
+	localStorage.setItem('scrollpos', scrollpos);
+	// fnPushHistory();
 	cfnGoToGoodsDetail(goodsCd, mainColorCd);
 }
 

+ 71 - 67
src/main/webapp/ux/mo/css/common_m.css

@@ -70,7 +70,7 @@
 #load {width: 100%;height: 100%;top: 0;left: 0;position: fixed;display: block;text-align: center;opacity: 0.8;background: #ffffff;background-image: url('/images/mo/movloading.gif');background-repeat: no-repeat;background-position: 50% 50%;background-size: 3.7rem 2.4rem;z-index: 99999;}
 /* Basic setting */
 html {-webkit-text-size-adjust: 100%;-ms-text-size-adjust: 100%;}
-body {margin: 0;}
+body {margin: 0; -webkit-overflow-scrolling: touch;}
 article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary,address {display: block;}
 address {font-style: normal;}
 a {color: inherit;background-color: transparent;text-decoration: none;}
@@ -653,7 +653,7 @@ top: 9px;border-color: transparent transparent #888888 transparent;}
 /* Page setup */
 html {font-family: 'LATO', 'Noto Sans kr', sans-serif;font-weight: 300;color: #222;font-size: 10px;line-height: 1.4;letter-spacing: -.025em;word-break: keep-all;}
 
-body.gnb_on {height: 100vh;overflow: hidden;}
+body.gnb_on {height: 100vh;overflow: hidden !important;}
 .app {height: 100vh;font-size: 1.4rem;}
 .skipNav {overflow: hidden;position: absolute;left: -9999px;width: 0;height: 1px;margin: 0;padding: 0;}
 
@@ -662,14 +662,14 @@ body.gnb_on {height: 100vh;overflow: hidden;}
 .inner::after {content: '';display: block;clear: both;}
 .inner.bg_gray {background-color: #f5f5f5 !important;}
 .inner.bg_beige {background-color: #ffeee7 !important;}
-.inner.bg_dark {background-color: #222222 !important;}
+.inner.bg_dark {background-color: #222222 !important;margin-bottom: -3rem;}
 .inner.bg_dark .titWrap>* {color: #ffffff !important;}
 .inner.bg_dark .titWrap a H2{color: #ffffff !important;}
 
 /* header, htop, btn_gnb, header.main, hmenu, bng, bnb */
 header {
-  position: fixed;left: 0;top: 0;width: 100%;z-index: 80;
-  /*position: sticky;*/left: 0;top: 0;width: 100%;transition: top 0.3s;/* background-color: #fff; */
+  position: fixed;left: 0;top: 0; width: 100%;z-index: 80;
+  /*position: sticky;*/width: 100%;transition: top 0.3s;/* background-color: #fff; */ transform: translate3d(0,0,0);
 } /* 210526_ main.container 여백 때문에 sticky 속성 주석. */
 header::after{content: '';display: block;clear: both;}
 header .htop {position: relative;height: 55px;-webkit-box-sizing: border-box;box-sizing: border-box;/*border: rgba(0, 0, 0, 0.1) solid 1px;*/ border-bottom: 1px solid rgba(0, 0, 0, 0.0); background-color: #fff;}
@@ -869,15 +869,16 @@ body.header-show .app .gnb{top: 50px;}
 .app .gnb.expand .btn-expand::after {background: url(/images/mo/ico_btn_narrow.png) center bottom/1.8rem 2.0rem no-repeat;}
 
 main.container{margin-top: 0; overflow: hidden;}
+main.container.mb {margin-top: -5.5rem;}
 main.container .inner:last-child{padding-bottom: 6.0rem; margin-bottom: 0;}
 
 /* 페이지별 헤더 세팅 */
-section.content {margin-top: 5.5rem;}
-section.main, section.ev_list, section.dp_exhibition, section.dp_lookbook, section.dp_outlets, section.dp_submain, section.dp_hotdeal, section.br_main, section.dp_best {margin-top: 11.1rem;}
-section.main.scr, section.ev_list.scr, section.dp_exhibition.scr, section.dp_lookbook.scr, section.dp_outlets.scr, section.dp_submain.scr, section.dp_hotdeal.scr, section.br_main.scr, section.dp_best.scr {margin-top: 5.5rem;}
+main.app-only section.sett, main.app-only section.notice, section.content {margin-top: 5.5rem;}
+section.main, section.ev_list, section.dp_exhibition, section.dp_lookbook, section.dp_outlets, section.dp_submain, section.dp_hotdeal, section.br_main, section.dp_best, section.br_lookbook {margin-top: 11rem;}
+section.main.scr, section.ev_list.scr, section.dp_exhibition.scr, section.dp_lookbook.scr, section.dp_outlets.scr, section.dp_submain.scr, section.dp_hotdeal.scr, section.br_main.scr, section.dp_best.scr, section.br_lookbook.scr {margin-top: 5.5rem;}
 
 /* .tabbar */
-.tabbar{-webkit-transform: translate(0, 55px);-ms-transform: translate(0, 55px);-moz-transform: translate(0, 55px); transform: translate(0, 55px);transition-duration: 0.3s; position: fixed;width: 100%;bottom: 0;background-color: #f8f8f8;z-index: 20; padding-bottom: constant(safe-area-inset-bottom);padding-bottom: env(safe-area-inset-bottom);}
+.tabbar{-webkit-transform: translate(0, 80px);-ms-transform: translate(0, 80px);-moz-transform: translate(0, 80px); transform: translate(0, 80px);transition-duration: 0.25s; position: fixed;width: 100%;bottom: 0;background-color: #f8f8f8;z-index: 20; padding-bottom: constant(safe-area-inset-bottom);padding-bottom: env(safe-area-inset-bottom);}
 .tabbar.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0);}
 .tabbar .tabbar-inner{display: -webkit-box;display: -moz-box;display: -webkit-flex;display: -ms-flexbox;display: flex; -webkit-box-pack: justify;-moz-box-pack: justify;-ms-flex-pack: justify;-webkit-justify-content: space-between;justify-content: space-between; padding: 10px 20px;}
 .tabbar .tabbar-inner [class*=btn-]{display: block;width: 2.50rem; height: 2.2666rem; font-size: 0;position: relative;background: url(/images/mo/ico_tabbar.png) no-repeat center;background-size: 18.0rem 2.16rem;}
@@ -932,7 +933,7 @@ section.main.scr, section.ev_list.scr, section.dp_exhibition.scr, section.dp_loo
 
 /* footer */
 footer{background-color: #f1f1f1;}
-footer .btn_top{position: fixed; bottom: 8%; right: 2.0rem; opacity: 0; background-color: rgba(0, 0, 0, 0.4); width: 4.1rem; height: 4.0rem; font-size: 0; z-index: 50; background:url(/images/mo/mo_btn_top.png) no-repeat;}
+footer .btn_top{position: fixed; bottom: 9%; right: 2.0rem; opacity: 0; background-color: rgba(0, 0, 0, 0.4); width: 4.1rem; height: 4.0rem; font-size: 0; z-index: 50; background:url(/images/mo/mo_btn_top.png) no-repeat;}
 footer .btn_top span{display: block;width: 2.4rem;height: 2.4rem;margin: 0 auto;position: relative;opacity: 1;color: #222222;font-size: 1.1rem;font-weight: 600;line-height: 3.4rem;letter-spacing: -0.025em;}
 footer .f1{background-color: #f1f1f1;padding: 0 0 4.5rem; position: relative;}
 footer .f1 .inner{padding: 0 2.0rem 2.0rem;}
@@ -1005,6 +1006,8 @@ footer .collapse .infos.on{padding: 0px 0px 20px 0; height: auto;}
 .cnb ul > li button.on{background-color: #3d3d3d; color: #fff;}
 
 /* page nav */
+.pnb {margin-top: 5.5rem;}
+.pnb + section {margin-top: 0;}
 .pnb ul{border-bottom: #e5e5e5 solid 1px;}
 .pnb ul::after{content: ''; display: block; clear: both;}
 .pnb ul > li{float: left; width: auto; padding: 0 1.6rem;}
@@ -1393,7 +1396,8 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .dialog-mobile .dialog-cancel-button {
 	color: #000;
 	background: #fff;
-	border:1px solid #999;
+	border:0;
+	border-top:1px solid #dddddd;
 	/* min-width:10.0rem; */
 }
 .dialog-mobile .dialog-sure-button{
@@ -1854,59 +1858,59 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .mgc {margin:0 auto;}
 .mt0 {margin-top:0 !important;}
 .ml0 {margin-left:0 !important;}
-.ml5 {margin-left:5px !important;}
-.ml10{margin-left:10px !important;}
-.ml15 {margin-left:15px !important;}
-.ml20 {margin-left:20px !important;}
-.ml30 {margin-left:30px !important;}
-.mr0{margin-right:0px !important;}
-.mr20 {margin-right:20px !important;}
-.mt5 {margin-top:5px !important;}
-.mt10 {margin-top:10px !important;}
-.mt15 {margin-top:15px !important;}
-.mt20 {margin-top:20px !important;}
-.mt30 {margin-top:30px !important;}
-.mt35 {margin-top:35px !important;}
-.mt40 {margin-top:40px !important;}
-.mt45 {margin-top:45px !important;}
-.mt50 {margin-top:50px !important;}
-.mt60 {margin-top:60px !important;}
-.mt100 {margin-top:100px !important;}
+.ml5 {margin-left:0.5rem !important;}
+.ml10{margin-left:1.0rem !important;}
+.ml15 {margin-left:1.5rem !important;}
+.ml20 {margin-left:2.0rem !important;}
+.ml30 {margin-left:3.0rem !important;}
+.mr0{margin-right:0 !important;}
+.mr20 {margin-right:2.0rem !important;}
+.mt5 {margin-top:0.5.0rem !important;}
+.mt10 {margin-top:1.0rem !important;}
+.mt15 {margin-top:1.5.0rem !important;}
+.mt20 {margin-top:2.0rem !important;}
+.mt30 {margin-top:3.0rem !important;}
+.mt35 {margin-top:3.5rem !important;}
+.mt40 {margin-top:4.0rem !important;}
+.mt45 {margin-top:4.5rem !important;}
+.mt50 {margin-top:5.0rem !important;}
+.mt60 {margin-top:6.0rem !important;}
+.mt100 {margin-top:10.0rem !important;}
 .mb0 {margin-bottom:0 !important}
-.mb5 {margin-bottom:5px !important}
-.mb10 {margin-bottom:10px !important;}
-.mb15 {margin-bottom:15px !important;}
-.mb20 {margin-bottom:20px !important;}
-.mb30 {margin-bottom:30px !important;}
-.mb40 {margin-bottom:40px !important;}
-.mb50 {margin-bottom:50px !important;}
-.mb60 {margin-bottom:60px !important;}
-.mb100 {margin-bottom:100px !important;}
-.mr5 {margin-right:5px !important;}
-.mr10 {margin-right:10px !important;}
-.mr15 {margin-right:15px !important;}
-.ml10 {margin-left:10px !important;}
-.ml35 {margin-left:35px !important;}
-.mtm3 {margin-top:-3px !important;}
-.mtm10 {margin-top:-10px !important;}
-.mtm20 {margin-top:-20px !important;}
-.mbm10 {margin-bottom:-10px !important;}
-.mbm30{margin-bottom:-30px !important;}
+.mb5 {margin-bottom:0.5rem !important}
+.mb10 {margin-bottom:1.0rem !important;}
+.mb15 {margin-bottom:1.5rem !important;}
+.mb20 {margin-bottom:2.0rem !important;}
+.mb30 {margin-bottom:3.0rem !important;}
+.mb40 {margin-bottom:4.0rem !important;}
+.mb50 {margin-bottom:5.0rem !important;}
+.mb60 {margin-bottom:6.0rem !important;}
+.mb100 {margin-bottom:10.0rem !important;}
+.mr5 {margin-right:0.5rem !important;}
+.mr10 {margin-right:1.0rem !important;}
+.mr15 {margin-right:1.5rem !important;}
+.ml10 {margin-left:1.0rem !important;}
+.ml35 {margin-left:3.5rem !important;}
+.mtm3 {margin-top:-0.3rem !important;}
+.mtm10 {margin-top:-1.0rem !important;}
+.mtm20 {margin-top:-2.0rem !important;}
+.mbm10 {margin-bottom:-1.0rem !important;}
+.mbm30{margin-bottom:-3.0rem !important;}
 .pt0 {padding-top:0 !important;}
-.pt10 {padding-top:10px !important;}
-.pt20 {padding-top:20px !important;}
-.pt30 {padding-top:20px !important;}
-.pt40 {padding-top:40px !important;}
-.pt100 {padding-top:100px !important;}
+.pt10 {padding-top:1.0rem !important;}
+.pt20 {padding-top:2.0rem !important;}
+.pt30 {padding-top:2.0rem !important;}
+.pt40 {padding-top:4.0rem !important;}
+.pt100 {padding-top:10.0rem !important;}
 .pl0 {padding-left:0 !important;}
-.pl10 {padding-left:10px !important;}
-.pr20 {padding-right:20px !important;}
-.pb10 {padding-bottom:10px !important;}
-.pb20 {padding-bottom:20px !important;}
-.pb30 {padding-bottom:30px !important;}
-.pb40 {padding-bottom:40px !important;}
-.pb50 {padding-bottom:50px !important;}
-.pb100 {padding-bottom:100px !important;}
+.pl10 {padding-left:1.0rem !important;}
+.pr20 {padding-right:2.0rem !important;}
+.pb10 {padding-bottom:1.0rem !important;}
+.pb20 {padding-bottom:2.0rem !important;}
+.pb30 {padding-bottom:3.0rem !important;}
+.pb40 {padding-bottom:4.0rem !important;}
+.pb50 {padding-bottom:5.0rem !important;}
+.pb100 {padding-bottom:10.0rem !important;}
 
 .shape.ranker {background: #fd4802;}
 .shape.ranker::after {
@@ -1914,25 +1918,25 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
   border-right:0px solid #fd4802 !important;
 }
 .shape{
-  background: #222222;width: 3rem;max-width: 3rem;min-height: 4rem;display: block;position: absolute;top: 0;left: 0;z-index: 9;
+  background: #222222;width: 3rem;max-width: 3rem;min-height: 4rem;display: block;position: absolute;top: 0;left: 0;z-index: 9;border-radius: 0 0 0.2rem 0;
 }
 .shape:after{
-  content: "";top: 0;right: -10px;position: absolute;
-  border-left: 10px solid #222222;border-bottom: 10px solid transparent;border-right: 0px solid #0183fd;
+  content: "";top: 0;right: -0.94rem;position: absolute;
+  border-left: 1.0rem solid #222222;border-bottom: 1.0rem solid transparent;border-right: 0px solid #0183fd;
   height: 3rem;width: 0;padding: 0px 0px 0px 0px;
 }
 .shape span{
-  color: #ffffff;text-align: center;text-indent: 10px;font-size: 1.1rem;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 40px;z-index: 2;
+  color: #ffffff;text-align: center;text-indent: 1.0rem;font-size: 1.1rem;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 40px;z-index: 2;
   /* line-height: 1; */
   /* letter-spacing: -25em; */
   /* display: -webkit-box; */
   /* z-index: 99999; */
 }
 .shape.dealdetail{
-  width: 100%;max-width: 40px;
+  width: 100%;max-width: 4.0rem;
 }
 .shape.dealdetail span{
-  line-height: 1;text-align: center;width: 100%;display: inline-block;text-indent: 0;margin-left: 5px;
+  line-height: 1;text-align: center;width: 100%;display: inline-block;text-indent: 0;margin-left: 0.5rem;
 }
 
 

+ 15 - 9
src/main/webapp/ux/mo/css/layout_m.css

@@ -414,8 +414,8 @@
 /* .item_prod .itemLike.active::before {opacity: 1;} */
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background-color: #f9f9f9;}
-/*.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 {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; }
+.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;}
@@ -470,6 +470,7 @@
 .pd_detail .pd_info > .inner:after, .pd_detail > .inner:after{content: '';width: 100%;height: 1.2rem;padding: 0;background: #f5f5f5;position: absolute;bottom: -1.2rem;left: 0;right: auto;}
 .pd_detail > .inner:last-child::after{content: '';width: 100%;height: 0rem;}
 .pd_detail .pd_info > .inner:last-child {margin-bottom: 1.2rem;padding-bottom: 3rem;}
+.pd_detail .pd_desc_wrap .tab_detail_cont.pd_review {margin-bottom:-1.2rem}
 /* 1 */
 .pd_detail{background-color:#f5f5f5;}
 .pd_detail .pd_info > .inner,
@@ -823,6 +824,7 @@
 .product_floormenu .prd_buy > .cantbuying{display:none;}
 .product_floormenu.soldout .prd_buy > .buying{display:none;}
 .product_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
+.product_floormenu.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0);}
 
 /* 토스트팝업 > 구매하기 */
 .container.btPop_full.pd_open::after, 
@@ -854,7 +856,7 @@
 
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */
 .pd .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select{min-height: 4.5rem;}
-.pd .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select::before{content: '옵션을 선택해주세요';display: inline-block;width: 100%;height: 0;position: absolute;left: 1rem; color:#333333}
+.pd .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select::before{content: '';display: inline-block;width: 100%;height: 0;position: absolute;left: 1rem; color:#333333}
 .pd_pop.Purchase_pop .pop_option_select{display:none; position:absolute; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:500; background: #fff; height:100%;}
 .pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:auto; max-height:100%; background-color:#fff;}
 .pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:3.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
@@ -866,8 +868,9 @@
 .pd_pop.Purchase_pop .pop_option_select .text_excluding{margin-top:-1rem; padding:1.2rem; background-color:#383838; font-size:1.3rem; color:#fff; text-align:center;}
 .pd_pop.Purchase_pop .select_custom .combo .select{font-size:1.4rem; height:auto; text-overflow: ellipsis; word-wrap: normal; overflow: hidden; padding-right: 4rem;}
 .pd.deal .pd_detail .pd_pop.Purchase_pop .select_custom .combo .select{color: #777777;text-overflow: ellipsis;white-space: nowrap;word-wrap: normal;overflow: hidden;padding-right: 4rem;padding-left: 5rem; min-height:4.5rem;}
+.pd.deal .pd_detail .pd_pop.Purchase_pop .option_box .select_custom .combo .select{padding-left:1.5rem; color: #333333;}
 .pd.deal .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom .combo .select::before{content: '상품';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem; color:#333333;}
-.pd.deal .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select::before{content: '옵션을 선택해주세요';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem; color:#333333}
+.pd.deal .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(1) .select_custom.option_open .combo .select::before{content: '';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem; color:#333333}
 .pd.deal .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(2) .select_custom .combo .select::before{content: '옵션1';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem; color:#333333}
 .pd.deal .pd_detail .pd_pop.Purchase_pop .form_field:nth-child(3) .select_custom .combo .select::before{content: '옵션2';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem; color:#333333}
 .pd.deal .pd_detail .select_custom .select .item_prod .item_state .itemLink .itemName{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:100%;overflow:hidden; color:#777;}
@@ -1071,6 +1074,8 @@
 .modal.pd_pop.info_size_pop .tbl.type2 table td{color:#000; font-weight:300; font-size:1.3rem;}
 .modal.pd_pop.info_size_pop .tbl.type2 table thead tr{background:#f5f5f5;}
 
+.modal.pd_pop.info_size_pop .tbl.scroll_tbl {position: relative;}
+.modal.pd_pop.info_size_pop .tbl.scroll_tbl::before {content:''; position: absolute; top: 0; right: 0; width: 2rem; height: 100%; background:linear-gradient(to right,  rgba(255,255,255,0) 0%,rgba(255,255,255,0.2) 1%,rgba(255,255,255,0.5) 36%,rgba(255,255,255,1) 100%); z-index: 5;}
 .modal.pd_pop.info_size_pop .tbl.scroll_tbl::after {content:''; clear:both; display: block;}
 .modal.pd_pop.info_size_pop .tbl.scroll_tbl .head_t {float:left; width: 25% !important; display: block;}
 .modal.pd_pop.info_size_pop .tbl.scroll_tbl .head_t td {font-size: 1.4rem; font-weight: 400;}
@@ -1094,7 +1099,7 @@
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; width:7.0rem; height:10.5rem; padding:0; margin-bottom:0; z-index:2;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; margin:0; width : calc(100% - 10%)}
 /*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-left:0;}*/
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 5%)}
+.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 5%)}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice {margin:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap{position: relative;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap .itemPercent {position:relative;}
@@ -1555,7 +1560,7 @@
 .deal_list_select .list .item_prod .itemLink{position: relative; display:table-cell; width: 100%; height:102px; padding-left:88px; padding-right:1rem; box-sizing:border-box; vertical-align: middle;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding:0; margin-bottom:0; width:68px; height:102px; z-index:2;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemBrand {display:block; padding-right: 4rem; font-size:1rem; color:#888888; font-weight:300;}
-.deal_list_select .list .item_prod .item_state .itemLink .itemName {display:block; margin:0.5rem 0 0.8rem; font-size:1.3rem; max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word;}
+.deal_list_select .list .item_prod .item_state .itemLink .itemName {display:block; margin:0.5rem 0 0.8rem; font-size:1.3rem; height:3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemText{margin-top:0.5rem; font-size:1.1rem; color:#888888; font-weight:300;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemPrice{margin-right:0; margin-left:0;}
 .deal_list_select .list .item_prod .item_state.active:after{border-color:#fd4802;}
@@ -1587,7 +1592,7 @@
 .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding: 0; width:40px; height:60px; z-index:2;}
 /*.item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 20%);overflow:hidden;}*/
 .item_blk .item_prod .item_state .itemLink .itemBrand {min-width:88%;}
-.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:calc(100% - 5%);}
+.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:calc(100% - 5%);}
 .item_blk .item_prod .item_state .itemLink .itemPrice{margin-left:0; margin-right:0;}
 /*select_custom > item_prod*/
 .select_custom .select .item_prod{margin:0; padding-right:0; overflow:hidden;pointer-events: none;}
@@ -2269,7 +2274,7 @@
 .br .br_main .itemsGrp .item_prod:nth-child(2){margin-top:0rem;}
 .br .br_main .itemsGrp:after{display:block; content:''; clear:both;}
 .br .br_main .swiper-pagination{margin:0; bottom:auto;}
-.br .pnb_mo{position:relative;}
+.br .pnb_mo{position:relative; display: none;}
 .br .pnb_mo > ul{display:flex; padding:0 0.8rem; height:5rem; line-height:5rem; background-color:#222222;}
 .br .pnb_mo > ul > li > a{font-size:1.6rem; color:#686868; font-weight:500; padding:0 1.2rem;}
 .br .pnb_mo > ul > li > a.on{color:#fff}
@@ -2394,6 +2399,7 @@
 .br .brand_si{margin-top:0.1rem;}
 .br .brand_si .swiper-wrapper{height:0;}
 .br .brand_si .swiper-wrapper .swiper-slide:nth-child(odd){border-bottom:0rem none;}
+.br_search_wrap {margin-top: 5.5rem;}
 .br_search_wrap .swiper-pagination{margin:0;}
 .br_search_wrap .swiper-container { width: 100%; height: 21.4rem; margin-left: auto; margin-right: auto; }
 .br_search_wrap .swiper-slide { text-align: center; font-size: 1.8rem; background: #fff; height: calc((100% - 30px) / 2); /* Center slide text vertically--> */ display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; }
@@ -2436,7 +2442,7 @@
 .modal.pop_full.sch .modal-header {border-bottom: 0;}
 .modal.pop_full.sch .modal-body {padding:0;}
 .sch {font-size: 1.4rem;}
-.sch .sch_result{background-color:#f5f5f5;}
+.sch .sch_result{background-color:#f5f5f5; margin-top: 5.5rem;}
 .sch .sch_result .inner{background-color:#fff; margin-bottom: 1.2rem; padding:1.3rem 2.0rem;}
 .sch .sch_result .inner.wide {padding:1.3rem 0;}
 .sch .sch_result .sch_title { width: 100%; height: 4.3rem; margin: 0 0; border-bottom: 0.2rem solid black; position: relative;}

+ 2 - 1
src/main/webapp/ux/mo/css/style24_m.css

@@ -1453,6 +1453,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my_delivery .blocker:before {display: none;}
 .my_delivery .modal .modal-body {margin-bottom: 4.5rem;}
 .my_delivery .modal .modal-footer {position: fixed; left: 0; bottom: 0; width: 100%;}
+.my .my_delivery .inner {padding: 0;}
 .my .my_delivery .inner > .btn_group {position: fixed; left: 0; bottom: 0; width: 100%; z-index: 99; transition:all 0.3s;}
 .my .my_delivery .inner > .btn_group.active {transform: translate(0, -4.3rem);}
 .my .my_delivery .inner:last-child {padding-bottom: 0;}
@@ -2479,7 +2480,7 @@ main.container .shopping_bag .inner:last-child {padding-bottom: 0;}
 
 /* od_gift_1 */
 main.container .od_gift .inner:last-child {padding-bottom: 0;}
-.od_gift .gift_banner {background: linear-gradient(120deg, rgba(255,120,0,1) 50%, rgba(253,72,2,1) 100%); text-align: center; padding:6rem 0; margin:-1.2rem 0;}
+.od_gift .gift_banner {background: linear-gradient(120deg, rgba(255,120,0,1) 50%, rgba(253,72,2,1) 100%); text-align: center; padding:6rem 0; margin:-6.7rem 0 -1.2rem;}
 .od_gift .gift_banner img {width: 13.1rem;}
 .od_gift .gift_banner p {color:#fff; margin-top: 1.5rem;}
 .od_gift .gift_banner.timeout {background: #f5f5f5;}

+ 16 - 0
src/main/webapp/ux/mo/js/common_m.js

@@ -313,11 +313,13 @@ $(document).ready(function () {
                     $("header").css('display', 'none');
                     $("header").css('position', 'fixed');
                     $(".tabbar").removeClass("fixed");
+                    $(".product_floormenu").removeClass("fixed");
                 //스크롤 내릴때
                 } else {
                     $("header").css('display', 'block');
                     $("header").css('position', 'fixed');
                     $(".tabbar").addClass("fixed");
+                    $(".product_floormenu").addClass("fixed");
                 }
                 lastScrollTop = commonSt;
             //경우2 : htopMian + gnb
@@ -332,6 +334,7 @@ $(document).ready(function () {
                     $("#gnb").css('position', 'fixed');
                     $("#gnb").css('top', '0');
                     $(".tabbar").removeClass("fixed");
+                    $(".product_floormenu").removeClass("fixed");
                     $("section.content, section.main, .bnrtype_banner").addClass('scr');
                 //스크롤 내릴때
                 } else {
@@ -341,6 +344,17 @@ $(document).ready(function () {
                     $("#gnb").css('position', 'fixed');
                     $("#gnb").css('top', '55px');
                     $(".tabbar").addClass("fixed");
+                    $(".product_floormenu").addClass("fixed");
+                    $("section.content, section.main, .bnrtype_banner").removeClass('scr');
+                }
+                if(commonSt < 170){
+                    $("header").css('display', 'block');
+                    $("header").css('position', 'fixed');
+                    $("#gnb").css('display', 'block');
+                    $("#gnb").css('position', 'fixed');
+                    $("#gnb").css('top', '55px');
+                    $(".tabbar").addClass("fixed");
+                    $(".product_floormenu").addClass("fixed");
                     $("section.content, section.main, .bnrtype_banner").removeClass('scr');
                 }
                 lastScrollTop = commonSt;
@@ -352,9 +366,11 @@ $(document).ready(function () {
                 //스크롤 올릴때
                 if (commonSt > lastScrollTop) {
                     $(".tabbar").removeClass("fixed");
+                    $(".product_floormenu").removeClass("fixed");
                 //스크롤 내릴때
                 } else {
                     $(".tabbar").addClass("fixed");
+                    $(".product_floormenu").addClass("fixed");
                 }
                 lastScrollTop = commonSt;
             }

+ 4 - 4
src/main/webapp/ux/pc/css/common.css

@@ -798,8 +798,8 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemLike.likeit::before {opacity: 1;}
 
 .itemLink {z-index:20;position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;background-color: #f9f9f9;}
-.itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0;background-color: rgb(0, 0, 0);z-index: 999;}
+.itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;}
+.itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);z-index: 999;}
 .itemPic .pd_img,
 .itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .itemPic .pd_mov {z-index: 2;height: 100%;}
@@ -867,10 +867,10 @@ content: "〉";font-size: 12px;padding-left: 8px;
     border-right:0px solid #fd4802 !important;
 }
 .shape{
-    background: #222222;width: 40px;max-width: 40px;min-height: 50px;display: block;position: absolute;top: 0;left: 0;z-index: 9;
+    background: #222222;width: 40px;max-width: 40px;min-height: 50px;display: block;position: absolute;top: 0;left: 0;z-index: 9;border-radius: 0 0 2px 0;
 }
 .shape:after{
-    content: "";top: 0;right: -10px;position: absolute;
+    content: "";top: 0;right: -9px;position: absolute;
     border-left: 10px solid #222222;border-bottom: 10px solid transparent;border-right: 0px solid #0183fd;
     height: 40px;width: 0;padding: 0px 0px 0px 0px;
 }

+ 20 - 6
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

@@ -76,6 +76,13 @@ var gagaInfiniteScroll = {
 				this.getDataList();
 			};
 		}
+
+		// 히스토리백 스크롤 위치
+		let pos = localStorage.getItem('scrollpos');
+		if ( pos != null && $(window).scrollTop() < pos ) {
+			$("html, body").scrollTop(pos);
+			localStorage.removeItem('scrollpos');
+		};
 	},
 	getDataList : function() {
 		/*if (this.pageStatus.loadAlign == 'prev') {
@@ -83,7 +90,7 @@ var gagaInfiniteScroll = {
 		} else if (this.pageStatus.loadAlign == 'next') {
 			this.obj.$ajaxBoxOuter.append($(this.obj.$loadingBar));
 		};*/
-
+		// debugger;
 		$(".wrap-loading").removeClass('display-none');
 
 		// 인피니트 스크롤 이벤트에서 호출될 함수(데이터 가져오기 등)
@@ -98,6 +105,7 @@ var gagaInfiniteScroll = {
 			historyData = {};
 		}
 
+		console.log(historyData);
 		if (historyData.pageNum === undefined || historyData.pageNum === '' || historyData.htm === undefined || historyData.htm == '') {
 			this.pageStatus.loadPage = 0;
 			this.pageStatus.pageNum[0] = 0;
@@ -116,7 +124,7 @@ var gagaInfiniteScroll = {
 			this.pageStatus.filterHtml = historyData.filterHtml;
 			this.pageStatus.filterStatHtml = historyData.filterStatHtml;
 			this.pageStatus.totalCount = historyData.totalCount;
-			this.pageStatus.backScroll = historyData.backScroll;
+			this.pageStatus.backScroll = historyData.scroll;
 
 			gagaInfiniteScroll.draw(historyData.htm);
 		};
@@ -158,9 +166,9 @@ var gagaInfiniteScroll = {
 						, gagaInfiniteScroll.pageStatus.backScroll
 					);
 				if (scrollTop && containerHeight) {
-					gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+					// gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
 				} else {
-					gagaInfiniteScroll.obj.$window.scrollTop(gagaInfiniteScroll.obj.$window.scrollTop() + 1);
+					// gagaInfiniteScroll.obj.$window.scrollTop(gagaInfiniteScroll.obj.$window.scrollTop() + 1);
 				}
 			};
 
@@ -170,11 +178,17 @@ var gagaInfiniteScroll = {
 			this.obj.$ajaxBox.append($addHtm);
 
 			if (scrollTop && containerHeight) {
-				gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+				// gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
 			} else {
-				$(window).scrollTop($(window).scrollTop() + 1);
+				// $(window).scrollTop($(window).scrollTop() + 1);
 			}
 
+			// 히스토리백 스크롤 위치
+			let pos = localStorage.getItem('scrollpos');
+			if ( pos != null && $(window).scrollTop() < pos ) {
+				$("html, body").scrollTop(pos);
+				// localStorage.clear();
+			};
 			this.pageStatus.loadAlign = 'not';
 		}
 	},