Przeglądaj źródła

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front into develop

jsshin 5 lat temu
rodzic
commit
1f0d962ebc
44 zmienionych plików z 1123 dodań i 502 usunięć
  1. 6 1
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  2. 6 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  3. 56 44
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  4. 4 1
      src/main/resources/config/application-locd.yml
  5. 4 0
      src/main/resources/config/application-run.yml
  6. 4 1
      src/main/resources/config/application-style.yml
  7. 4 1
      src/main/resources/config/application-tsit.yml
  8. 7 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  9. 1 1
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubBrandMob.html
  10. 6 6
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  11. 11 11
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  12. 2 2
      src/main/webapp/WEB-INF/views/mob/display/CategoryMainFormMob.html
  13. 4 4
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  14. 3 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  15. 102 3
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  16. 172 9
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  17. 14 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  18. 61 40
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  19. 32 0
      src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html
  20. 21 8
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  21. 18 8
      src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html
  22. 51 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  23. 35 35
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  24. 2 3
      src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html
  25. 6 6
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  26. 75 79
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  27. 2 2
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  28. 5 5
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  29. 3 0
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  30. 36 35
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  31. 4 28
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  32. 143 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  33. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  34. 56 60
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html
  35. 30 1
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html
  36. 2 3
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  37. 6 1
      src/main/webapp/WEB-INF/views/web/order/OrderListInfoWeb.html
  38. 5 3
      src/main/webapp/biz/goods.js
  39. 71 67
      src/main/webapp/ux/mo/css/common_m.css
  40. 15 9
      src/main/webapp/ux/mo/css/layout_m.css
  41. 2 1
      src/main/webapp/ux/mo/css/style24_m.css
  42. 16 0
      src/main/webapp/ux/mo/js/common_m.js
  43. 4 4
      src/main/webapp/ux/pc/css/common.css
  44. 15 14
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

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

@@ -1309,7 +1309,12 @@ public class TsfOrderService {
 			param.setOrdNo(ordNo);
 			param.setUpdNo(custNo);
 			coreOrderDao.updateNaverPayOrderNo(param);
-			result.put("npayOrderUrl", env.getProperty("naverPay.order.url"));
+			if(TscConstants.FrontGb.PC.value().equals(TsfSession.getFrontGb())) {
+				result.put("npayOrderUrl", env.getProperty("naverPay.order.pc.url"));
+			} else {
+				result.put("npayOrderUrl", env.getProperty("naverPay.order.mobile.url"));
+			}
+
 			result.put("orderkey", param.getNpayOrdNo());
 			result.put("resultNo", result.get("resultNo").toString());
 

+ 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");
@@ -1055,6 +1056,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;
@@ -1120,7 +1122,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);
@@ -1241,6 +1243,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 배송정책단위목록
@@ -1360,6 +1363,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;

+ 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>

+ 4 - 1
src/main/resources/config/application-locd.yml

@@ -87,10 +87,13 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id : istyle24
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url : https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url : https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 0
src/main/resources/config/application-run.yml

@@ -110,9 +110,13 @@ naverPay:
         mob : m.pay.naver.com
     shop.id: istyle2424
     button.key: 5DF64042-EF37-45F1-878E-67C7098135E6
+    button.pc.js.url: https://pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key: s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
+    order.pc.url: https://order.pay.naver.com/customer/buy/
+    order.mobile.url: https://m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 1
src/main/resources/config/application-style.yml

@@ -98,10 +98,13 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id: istyle24
     button.key: 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/
 
 # ERP (한세드림)
 erp:

+ 4 - 1
src/main/resources/config/application-tsit.yml

@@ -92,7 +92,10 @@ naverPay:
         mob : test-m.pay.naver.com
     shop.id : istyle24
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
     common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
     certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
-    order.url: https://test-order.pay.naver.com/customer/buy
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 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>

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

@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -330,7 +330,7 @@
 										<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>
@@ -424,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';

+ 11 - 11
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,7 +1082,8 @@
 					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});
 					// window.scrollTo(0, historyData.backScroll);
@@ -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>

+ 4 - 4
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>

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

@@ -358,6 +358,9 @@
 			}
 			
 		});
+	   
+	 	//210526_ 추가 : 이미지 style 속성 제거
+		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
 	});
   
 /*]]>*/

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

@@ -18,6 +18,8 @@
  -->
 <body>
 <th:block layout:fragment="content">
+<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+<form id="nPayForm" name="nPayForm"></form>
 <form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
 		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
@@ -176,9 +178,106 @@
 							<div class="opt_result">
 							</div>
 						</div>
-						<!-- 네이버결제 -->
-						<div class="npay_box">
-							네이버페이 영역
+						<div style="margin-top:10px;">
+							<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+								<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+								<script type="text/javascript" >
+									/*버튼설정*/
+									naver.NaverPayButton.apply({
+										BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+										TYPE                    : "MA",                      // 버튼 모음 종류 설정
+										COLOR                   : 1,                        // 버튼 모음의 색 설정
+										COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+										ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+										BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+										"":""
+									});
+
+									/*네이버구매하기*/
+									function buy_nc(url) {
+										// 자사 일반 상품 정보
+										let compsList = [];
+
+										$("#cartForm .result_item input[name=cea]").each(function() {
+											let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+											let goodsType = "[[${goodsInfo.goodsType}]]";
+											let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+											let optCd = $(this).attr("optcd");
+											let goodsQty = $(this).val();
+
+											if (!goodsCd) {
+												mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+												return false;
+											}
+
+											if (!goodsQty || goodsQty < 1) {
+												mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+												return false;
+											}
+
+											if (!optCd) {
+												mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+												return false;
+											}
+
+											var obj = new Object();
+											obj.cartGb = "N";
+											obj.goodsType = goodsType;
+											obj.goodsCd = goodsCd;
+											obj.optCd = optCd;
+											obj.goodsQty = goodsQty;
+											obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+											obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+											obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+											obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+											obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+											compsList.push(obj);
+										});
+
+										// 장바구니담기
+										cfnAddCart(compsList);
+
+										return false;
+									}
+
+									function buy_nc_req(cartSqArr) {
+										let data = {  cartSqArr : cartSqArr
+											, backUrl : location.href
+											, goodsUrl : _PAGE_GOODS_DETAIL
+										};
+										let jsonData = JSON.stringify(data);
+
+										$.ajax( {
+											type		: "POST",
+											url 		: "/pg/nPayReq",
+											dataType 	: 'json',
+											data		: jsonData,
+											beforeSend : function(xhr, settings) {
+												xhr.setRequestHeader("AJAX"			, "true");
+												xhr.setRequestHeader('Accept'		, 'application/json');
+												xhr.setRequestHeader('Content-Type'	, 'application/json');
+											},
+											error: function(xhr, status, error) {
+												mcxDialog.alert(status + '; ' + error);
+											},
+											success : function(result) {
+												if (result.state == "sucess") {
+													document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+													document.nPayForm.submit();
+												} else {
+													mcxDialog.alert(result.message);
+												}
+											}
+										});
+									}
+
+									<!-- 구매불가 -->
+									function not_buy_nc() {
+										mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+										return false;
+									}
+								</script>
+							</th:block>
 						</div>
 					</div>
 					<!-- 옵션선택팝업 -->

+ 172 - 9
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -18,6 +18,7 @@
  -->
 <body>
 <th:block layout:fragment="content">
+	<form id="nPayForm" name="nPayForm"></form>
 	<form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
 		<input type="hidden" name="goodsCd" th:value="${params.goodsCd}" />
@@ -955,15 +956,175 @@
 						</div>
 						</th:block>
 					</div>
-					<!-- 네이버결제 -->
-					<div class="npay_box"  style="display:none;">
-						<div class="np_head">
-							<div><img src="/images/mo/img_npay_txt.png" alt="NAVER 네이버 ID로 간편구매 네이버페이"></div>
-							<div><button><img src="/images/mo/btn_npay_txt.png" alt="Npay 구매"></button></div>
-						</div>
-						<div class="np_body">
-							<a href="#none"><em>[멥버십]</em>첫달 무료가입하고 추가 4%!</a>
-						</div>
+
+					<div style="margin-top:10px;">
+						<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+							<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+							<script type="text/javascript" >
+								/*버튼설정*/
+								naver.NaverPayButton.apply({
+									BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+									TYPE                    : "MA",                      // 버튼 모음 종류 설정
+									COLOR                   : 1,                        // 버튼 모음의 색 설정
+									COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+									ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+									BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+									"":""
+								});
+
+								/*네이버구매하기*/
+								function buy_nc(url) {
+									let goodsType = "[[${goodsInfo.goodsType}]]";
+									let selfGoodsYn = "[[${goodsInfo.selfGoodsYn}]]";
+
+									if(goodsType == "G056_N") {
+										if(selfGoodsYn == "Y") {
+											// 자사 일반 상품 정보
+											let goodsCd = "[[${goodsInfo.goodsCd}]]";
+											let optCd = $(".opt_size .form_field input[type=radio]:checked").attr("optcd");
+											let goodsQty = $(".opt_count .number_count input[name=cea]").val();
+
+											if (!goodsQty || goodsQty < 1) {
+												mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+												return false;
+											}
+
+											if (!optCd) {
+												mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+												return false;
+											}
+
+											let compsList = [];
+											let obj = new Object();
+											obj.goodsCd = goodsCd;
+											obj.optCd = optCd;
+											obj.goodsQty = goodsQty;
+											obj.goodsType = goodsType;
+											obj.cartGb = "N";
+											obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+											obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+											obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+											obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+											compsList.push(obj);
+
+											// 장바구니담기
+											cfnAddCart(compsList);
+										} else {
+											// 입점 일반 상품 정보
+											let goodsCd = "[[${goodsInfo.goodsCd}]]";
+											let compsList = [];
+
+											if (!goodsCd) {
+												mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+												return false;
+											}
+
+											$(".opt_result .number_count input[name=cea]").each(function() {
+												let optCd = $(this).attr("optcd");
+												let goodsQty = $(this).val();
+
+												if (!optCd) {
+													mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+													return false;
+												}
+
+												if (!goodsQty || goodsQty < 1) {
+													mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+													return false;
+												}
+
+												let obj = new Object();
+												obj.goodsCd = goodsCd;
+												obj.optCd = optCd;
+												obj.goodsQty = goodsQty;
+												obj.goodsType = goodsType;
+												obj.cartGb = "N";
+												obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+												obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+												obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+												obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+												compsList.push(obj);
+											});
+
+											// 장바구니담기
+											cfnAddCart(compsList);
+										}
+									} else {
+										// 세트 상품 정보
+										let goodsCd = "[[${goodsInfo.goodsCd}]]";
+										let cartGoodsList = [];
+
+										$(".option_result .opt_result .result_item").each(function() {
+											let compsList = [];
+											let goodsList = {
+												cartCompsList : new Array()
+											}
+
+											let goodsQty = $(this).find(".number_count input[name=cea]").val();
+											$(this).find(".bundle").each(function() {
+												var obj = new Object();
+												obj.cartGb = "N";
+												obj.goodsType = goodsType;
+												obj.goodsCd = goodsCd;
+												obj.itemCd = $(this).find("input[name=selOption]").attr("goodscd");
+												obj.optCd = $(this).find("input[name=selOption]").attr("optcd");
+												obj.goodsQty = goodsQty;
+												obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+												obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+												obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+												obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+												compsList.push(obj);
+											});
+
+											goodsList.cartCompsList = compsList;
+											cartGoodsList.push(goodsList);
+										});
+
+										// 장바구니담기
+										cfnAddCart(cartGoodsList);
+									}
+
+									return false;
+								}
+
+								function buy_nc_req(cartSqArr) {
+									let data = {  cartSqArr : cartSqArr
+										, backUrl : location.href
+										, goodsUrl : _PAGE_GOODS_DETAIL
+									};
+									let jsonData = JSON.stringify(data);
+
+									$.ajax( {
+										type		: "POST",
+										url 		: "/pg/nPayReq",
+										dataType 	: 'json',
+										data		: jsonData,
+										beforeSend : function(xhr, settings) {
+											xhr.setRequestHeader("AJAX"			, "true");
+											xhr.setRequestHeader('Accept'		, 'application/json');
+											xhr.setRequestHeader('Content-Type'	, 'application/json');
+										},
+										error: function(xhr, status, error) {
+											mcxDialog.alert(status + '; ' + error);
+										},
+										success : function(result) {
+											if (result.state == "sucess") {
+												document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+												document.nPayForm.submit();
+											} else {
+												mcxDialog.alert(result.message);
+											}
+										}
+									});
+								}
+
+								<!-- 구매불가 -->
+								function not_buy_nc() {
+									mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+									return false;
+								}
+							</script>
+						</th:block>
 					</div>
 				</div>
 				<!-- 옵션선택팝업 -->
@@ -2165,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>
@@ -683,7 +687,7 @@ var fnGetDailyDeliveryCheck = function (temp) {
 		}
 		
 		// TODO
-		var shotDelvObj 	= {"zipNo" : zipcode};
+		var shotDelvObj 	= {"recipZipcode" : zipcode};
 	
 		gagajf.ajaxJsonSubmit(
 			"/order/getDailyDeliveryCheck"
@@ -959,9 +963,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();
 						}
 					}
 				});
@@ -970,9 +974,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();
 				}
 
 				// 결재하기
@@ -1970,7 +1974,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);
 		}
 		
 		// 선택안함
@@ -2292,6 +2296,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());
@@ -2319,6 +2324,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) {
@@ -2355,7 +2368,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>

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

@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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';

+ 75 - 79
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,8 +314,10 @@
 
 		// 컨텐츠 호출
 		$(document).ready( function() {
-			if(!gagajf.isNull([[${brandGroupInfo.brandGroupNo}]])){
-				$(".br_header").css('background-color','#fff');
+			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원'];
@@ -404,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();
@@ -500,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){
@@ -548,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}]];
@@ -624,7 +626,7 @@
 			var cate2No = [[${cateInfo.cate2No}]];
 			var cate3No = [[${cateInfo.cate3No}]];
 			var cate4No = [[${cateInfo.cate4No}]];
-			
+
 			var navNm = "";
 			var formTitle = "";
 			let tag = '';
@@ -632,7 +634,7 @@
 			if(formalGb!='G009_20'){
 				formalGb = '';
 			}
-		
+
 			if(cate1 != null){
 				tag += '<li';
 				if (cate1.cate1No == cate1No) {
@@ -683,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) {
@@ -707,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) {
@@ -809,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) {
@@ -1034,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);
@@ -1076,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();
@@ -1128,9 +1128,9 @@
 			}
 		}
 
-		
+
 		/*]]>*/
-		
+
 		// 동영상 플레이어
 		// var iframe= document.createElement('iframe');
 		// iframe.setAttribute('allowFullScreen', '');
@@ -1170,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>

+ 5 - 5
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>

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

@@ -316,6 +316,9 @@
 			}
 			
 		});
+   //210526_ 추가 : 이미지 style 속성 제거
+	$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
+   	
 	});
 /*]]>*/
 </script>	

+ 36 - 35
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -20,6 +20,7 @@
 <th:block layout:fragment="content">
 <script src="/ux/pc/js/ion.rangeSlider.min.js"></script>
 <script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
+<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
 <form id="nPayForm" name="nPayForm"></form>
 <div id="container" class="container pd deal" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="wrap">
@@ -254,8 +255,8 @@
 
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
-									<script type="text/javascript" src="https://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
 									<script type="text/javascript" >
+										//<![CDATA[
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
 											BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
@@ -268,7 +269,7 @@
 										});
 
 										/*네이버구매하기*/
-										function buy_nc(url) {
+										function buy_nc() {
 											// 자사 일반 상품 정보
 											let compsList = [];
 
@@ -314,39 +315,6 @@
 											return false;
 										}
 
-										function buy_nc_req(cartSqArr) {
-											let data = {  cartSqArr : cartSqArr
-												, backUrl : location.href
-												, goodsUrl : _PAGE_GOODS_DETAIL
-											};
-											let jsonData = JSON.stringify(data);
-
-											$.ajax( {
-												type		: "POST",
-												url 		: "/pg/nPayReq",
-												dataType 	: 'json',
-												data		: jsonData,
-												beforeSend : function(xhr, settings) {
-													xhr.setRequestHeader("AJAX"			, "true");
-													xhr.setRequestHeader('Accept'		, 'application/json');
-													xhr.setRequestHeader('Content-Type'	, 'application/json');
-												},
-												error: function(xhr, status, error) {
-													mcxDialog.alert(status + '; ' + error);
-												},
-												success : function(result) {
-													if (result.state == "sucess") {
-														window.open('about:blank', 'popupView');
-														document.nPayForm.target = 'popupView';
-														document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
-														document.nPayForm.submit();
-													} else {
-														mcxDialog.alert(result.message);
-													}
-												}
-											});
-										}
-
 										<!-- 구매불가 -->
 										function not_buy_nc() {
 											mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
@@ -1178,6 +1146,39 @@
 		$('.tab_detail_cont.pd_review').find('.combo .list li').eq(selIdx).trigger("click");
 		
 	});
+
+function buy_nc_req(cartSqArr) {
+	let data = {  cartSqArr : cartSqArr
+		, backUrl : location.href
+		, goodsUrl : _PAGE_GOODS_DETAIL
+	};
+	let jsonData = JSON.stringify(data);
+
+	$.ajax( {
+		type		: "POST",
+		url 		: "/pg/nPayReq",
+		dataType 	: 'json',
+		data		: jsonData,
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+		},
+		error: function(xhr, status, error) {
+			mcxDialog.alert(status + '; ' + error);
+		},
+		success : function(result) {
+			if (result.state == "sucess") {
+				window.open('about:blank', 'popupView');
+				document.nPayForm.target = 'popupView';
+				document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
+				document.nPayForm.submit();
+			} else {
+				mcxDialog.alert(result.message);
+			}
+		}
+	});
+}
 	
 /*]]>*/
 </script>

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

@@ -372,7 +372,7 @@
 							</div>
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
-									<script type="text/javascript" src="https://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
+									<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
 									<script type="text/javascript" >
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
@@ -514,33 +514,6 @@
 											});
 										}
 
-										/*네이버찜*/
-										/*function wishlist_nc(url) {
-											// 네이버페이로 찜 정보를 등록하는 가맹점 페이지 팝업 창 생성.
-											// 해당 페이지에서 찜 정보 등록 후 네이버페이 찜 페이지로 이동.
-
-											var params = new Object();
-											params.ITEM_CD      = $('#goods_code').val();
-											params.ITEM_URL     = location.href;
-
-											var nPayWishUrl     = "/order/nPayWish.do";
-
-											/!*네이버페이 ajax*!/
-											jQuery.ajax({
-												type        : 'POST',
-												url         : '/order/nPayWish.do',
-												cache       : false,
-												data        : params,
-												async       : false,
-												error       : function() {
-												},
-												success     : function(result) {
-													url = url + "?SHOP_ID=interview_sisun&ITEM_ID=" + result.wishList;
-													window.open(url,"","scrollbars=yes,width=400,height=267");
-												}
-											});
-										}*/
-
 										<!-- 구매불가 -->
 										function not_buy_nc() {
 											mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
@@ -1807,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");

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

@@ -359,6 +359,77 @@
 						</th:block>
 						</div>
 					</div>
+					<div style="margin-top:10px;">
+						<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+							<script type="text/javascript" >
+								//<![CDATA[
+								/*버튼설정*/
+								naver.NaverPayButton.apply({
+									BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+									TYPE                    : "C",                      // 버튼 모음 종류 설정
+									COLOR                   : 1,                        // 버튼 모음의 색 설정
+									COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+									ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+									BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+									"":""
+								});
+
+								/*네이버구매하기*/
+								function buy_nc() {
+									// 자사 일반 상품 정보
+									let compsList = [];
+
+									$("#cartForm .result_item input[name=cea]").each(function() {
+										let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+										let goodsType = "[[${goodsInfo.goodsType}]]";
+										let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+										let optCd = $(this).attr("optcd");
+										let goodsQty = $(this).val();
+
+										if (!goodsCd) {
+											mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+											return false;
+										}
+
+										if (!goodsQty || goodsQty < 1) {
+											mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+											return false;
+										}
+
+										if (!optCd) {
+											mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+											return false;
+										}
+
+										var obj = new Object();
+										obj.cartGb = "N";
+										obj.goodsType = goodsType;
+										obj.goodsCd = goodsCd;
+										obj.optCd = optCd;
+										obj.goodsQty = goodsQty;
+										obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+										obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+										obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+										obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+										obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+										compsList.push(obj);
+									});
+
+									// 장바구니담기
+									cfnAddCart(compsList);
+
+									return false;
+								}
+
+								<!-- 구매불가 -->
+								function not_buy_nc() {
+									mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+									return false;
+								}
+								//]]>
+							</script>
+						</th:block>
+					</div>
 				</div>
 			</div>
 		</div>
@@ -454,7 +525,7 @@
 						</span>
 					</p>
 				</div>
-				<div class="btn_box">
+				<div class="btn_box" style="margin-bottom:0px;">
 					<div class="btn_group_block ui_row">
 					<th:block  th:if="${goodsInfo.stockQty > 0}">
 						<div class="ui_col_6">
@@ -471,6 +542,77 @@
 					</th:block>
 					</div>
 				</div>
+				<div style="margin-top:10px;">
+					<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+						<script type="text/javascript" >
+							//<![CDATA[
+							/*버튼설정*/
+							naver.NaverPayButton.apply({
+								BUTTON_KEY              : "[[${buttonKey}]]",       // 네이버페이에서 제공받은 버튼 인증 키 입력
+								TYPE                    : "C",                      // 버튼 모음 종류 설정
+								COLOR                   : 1,                        // 버튼 모음의 색 설정
+								COUNT                   : 1,                        // 버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
+								ENABLE                  : "Y",                      // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
+								BUY_BUTTON_HANDLER      : buy_nc,                   // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
+								"":""
+							});
+
+							/*네이버구매하기*/
+							function buy_nc() {
+								// 자사 일반 상품 정보
+								let compsList = [];
+
+								$("#cartForm .result_item input[name=cea]").each(function() {
+									let dealGoodsCd = "[[${goodsInfo.goodsCd}]]";
+									let goodsType = "[[${goodsInfo.goodsType}]]";
+									let goodsCd = $(this).parent().find("input[name=coption]").attr("goodscd");
+									let optCd = $(this).attr("optcd");
+									let goodsQty = $(this).val();
+
+									if (!goodsCd) {
+										mcxDialog.alert("상품정보가 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+										return false;
+									}
+
+									if (!goodsQty || goodsQty < 1) {
+										mcxDialog.alert("구매 수량을 확인해주세요.");      /*수량*/
+										return false;
+									}
+
+									if (!optCd) {
+										mcxDialog.alert("상품 옵션을 확인 할 수 없습니다. 새로고침 후 다시 시도해주세요.");   /*옵션*/
+										return false;
+									}
+
+									var obj = new Object();
+									obj.cartGb = "N";
+									obj.goodsType = goodsType;
+									obj.goodsCd = goodsCd;
+									obj.optCd = optCd;
+									obj.goodsQty = goodsQty;
+									obj.dealGoodsCd = $("#cartForm  input[name=goodsCd]").val();
+									obj.afLinkCd =$("#cartForm  input[name=afLinkCd]").val();
+									obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
+									obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
+									obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+									compsList.push(obj);
+								});
+
+								// 장바구니담기
+								cfnAddCart(compsList);
+
+								return false;
+							}
+
+							<!-- 구매불가 -->
+							function not_buy_nc() {
+								mcxDialog.alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
+								return false;
+							}
+							//]]>
+						</script>
+					</th:block>
+				</div>
 			</div>
 		</div>
 				

+ 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>

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

@@ -875,7 +875,7 @@ var fnReCheckFilterList = function (){
 	});
 }
 
-window.addEventListener('beforeunload', (event) => {
+/*window.addEventListener('beforeunload', (event) => {
 	console.log('addEventListener-1');
 	// 표준에 따라 기본 동작 방지
 	event.preventDefault();
@@ -886,12 +886,14 @@ window.addEventListener('beforeunload', (event) => {
 	console.log('addEventListener->'+scrollTop);
 	gagaInfiniteScroll.pageStatus.backScroll = scrollTop;
 
-});
+});*/
 
 var fnClickGoodsCd = function (goodsCd, mainColorCd){
 	// let scrollTop = document.documentElement.scrollTop;
 	// gagaInfiniteScroll.pageStatus.backScroll = scrollTop;
-	fnPushHistory();
+	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;
 }

+ 15 - 14
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.clear();
+		};
 	},
 	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');
 
 		// 인피니트 스크롤 이벤트에서 호출될 함수(데이터 가져오기 등)
@@ -119,10 +126,7 @@ var gagaInfiniteScroll = {
 			this.pageStatus.totalCount = historyData.totalCount;
 			this.pageStatus.backScroll = historyData.scroll;
 
-			console.log('historyData.backScroll:::'+historyData.scroll);
-			console.log('infiniteContainer:::'+$("#infiniteContainer").height());
 			gagaInfiniteScroll.draw(historyData.htm);
-			// gagaInfiniteScroll.draw(historyData.htm, historyData.scroll, 0);
 		};
 
 		$(window).on('scroll', function() {
@@ -162,12 +166,8 @@ var gagaInfiniteScroll = {
 						, gagaInfiniteScroll.pageStatus.backScroll
 					);
 				if (scrollTop && containerHeight) {
-					// console.log('here3');
 					// gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
 				} else {
-					// console.log('here4');
-					// gagaInfiniteScroll.obj.$window.scrollTop = scrollTop+1;
-					// gagaInfiniteScroll.obj.$window.scrollTop(scrollTop+1);
 					// gagaInfiniteScroll.obj.$window.scrollTop(gagaInfiniteScroll.obj.$window.scrollTop() + 1);
 				}
 			};
@@ -177,17 +177,18 @@ var gagaInfiniteScroll = {
 			// Append HTML
 			this.obj.$ajaxBox.append($addHtm);
 
-			console.log('scrollTop::'+scrollTop);
-			console.log('containerHeight::'+containerHeight);
-			if (scrollTop && containerHeight) { //&& containerHeight
-				// console.log('here5');
+			if (scrollTop && containerHeight) {
 				// gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
-				// gagaInfiniteScroll.obj.$window.scrollTop = scrollTop;
 			} else {
-				// console.log('here6');
 				// $(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';
 		}
 	},