Explorar el Código

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

card007 hace 5 años
padre
commit
8fe8671f5d
Se han modificado 90 ficheros con 5972 adiciones y 1427 borrados
  1. 10 0
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  2. 10 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  3. 19 13
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  4. 16 1
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 27 14
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  6. 11 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  7. 6 6
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  8. 40 30
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  9. 1 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  10. 4 3
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  11. 40 8
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  12. 32 4
      src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java
  13. 12 0
      src/main/java/com/style24/front/support/security/session/TsfSession.java
  14. 1 0
      src/main/java/com/style24/persistence/domain/Cart.java
  15. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  16. 2 2
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  17. 12 0
      src/main/java/com/style24/persistence/domain/Login.java
  18. 7 0
      src/main/java/com/style24/persistence/domain/Plan.java
  19. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  20. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  21. 226 33
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  22. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  23. 2 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfLogin.xml
  24. 30 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  25. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  26. 85 60
      src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml
  27. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  28. 1 3
      src/main/resources/config/application-tsit.yml
  29. 389 0
      src/main/webapp/WEB-INF/views/mob/cart/CartChangeOptionPopupMob.html
  30. 1226 0
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  31. 101 11
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  32. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDeliveryFormMob.html
  33. 28 37
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  34. 14 23
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  35. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  36. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  37. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsInstockAlarmFormMob.html
  38. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsOtherFormMob.html
  39. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaFormMob.html
  40. 168 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html
  41. 113 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html
  42. 262 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  43. 112 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageWishListFormMob.html
  44. 134 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html
  45. 6 6
      src/main/webapp/WEB-INF/views/web/cart/CartChangeOptionPopupWeb.html
  46. 37 28
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  47. 1 1
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  48. 93 15
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  49. 9 5
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  50. 706 291
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  51. 52 5
      src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html
  52. 1 9
      src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html
  53. 8 1
      src/main/webapp/WEB-INF/views/web/customer/JoinCompleteFormWeb.html
  54. 32 8
      src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html
  55. 1 2
      src/main/webapp/WEB-INF/views/web/customer/PrivacyTrustLayerFormWeb.html
  56. 8 6
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  57. 90 168
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  58. 2 2
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  59. 333 8
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  60. 0 0
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  61. 3 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  62. 4 23
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  63. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealListFormWeb.html
  64. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDeliveryFormWeb.html
  65. 30 18
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  66. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailReviewFormWeb.html
  67. 12 12
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  68. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsInstockAlarmFormWeb.html
  69. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsOtherFormWeb.html
  70. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsQnaFormWeb.html
  71. 5 5
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewDetailFormWeb.html
  72. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewFormWeb.html
  73. 3 10
      src/main/webapp/WEB-INF/views/web/goods/GoodsReviewPhotoFormWeb.html
  74. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageWishListFormWeb.html
  75. 8 4
      src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html
  76. 174 28
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  77. 25 22
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  78. 1 1
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventMainFormWeb.html
  79. 1 0
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  80. 363 0
      src/main/webapp/biz/goodsSession.js
  81. 12 4
      src/main/webapp/ux/mo/css/common_m.css
  82. 25 13
      src/main/webapp/ux/mo/css/layout_m.css
  83. 84 45
      src/main/webapp/ux/mo/css/style24_m.css
  84. 97 58
      src/main/webapp/ux/mo/js/common_m.js
  85. 333 333
      src/main/webapp/ux/pc/css/common.css
  86. 10 6
      src/main/webapp/ux/pc/css/layout.css
  87. 5 4
      src/main/webapp/ux/pc/js/common-ui.js
  88. 205 0
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scroll.js
  89. 0 4
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js
  90. 26 7
      src/main/webapp/ux/style24_link.js

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -16,6 +16,7 @@ import com.style24.persistence.domain.GnbTab;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
 import com.style24.persistence.domain.GoodsSearch;
+import com.style24.persistence.domain.Goods;
 
 /**
  * 전시 Dao
@@ -171,4 +172,13 @@ public interface TsfDisplayDao {
 	 * @date 2021. 4. 7
 	 */
 	int getCategoryGoodsCount(GoodsSearch goodsSearch);
+
+	/**
+	 * 카테고리 별 상품 리스트
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 8
+	 */
+	Collection<Goods> getCategoryGoodsList(GoodsSearch goodsSearch);
 }

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -342,4 +342,14 @@ public interface TsfPlanningDao {
 	 */
 	Collection<Plan> getCustAttendEntryList(Plan plan);
 	
+	/**
+	 * 기획전/이벤트 댓글
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 8
+	 */
+	Collection<Plan> getReplyList(Plan plan);
+	
 }

+ 19 - 13
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -79,8 +79,6 @@ public class TsfCartService {
 			cartGb    = params.iterator().next().getCartCompsList().iterator().next().getCartGb();
 		}
 
-		log.info("CHECK GOODS_TYPE ::::: {}", goodsType);
-
 		// 장바구니 상품 및 재고 가능 여부 체크
 		if(TscConstants.GoodsType.SET.value().equals(goodsType)) {
 			for (Cart goodsParams : params) {
@@ -152,32 +150,23 @@ public class TsfCartService {
 
 				goods = goodsService.getGoodsInfo(goods);
 
-				log.info("CHECK :::::::::::::::: 0 ::::::::::::::::::::::");
-
 				if (goods == null) {
-					log.info("CHECK :::::::::::::::: 1 ::::::::::::::::::::::");
 					result.put("message", "상품 정보가 존재하지 않습니다.");
 					return result;
 				} else if (TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat())) {
-					log.info("CHECK :::::::::::::::: 2 ::::::::::::::::::::::");
 					result.put("message", "품절입니다");
 					return result;
 				} else if (!TscConstants.GoodsStat.SOLDOUT.value().equals(goods.getGoodsStat()) && !TscConstants.GoodsStat.APPR.value().equals(goods.getGoodsStat())) {
-					log.info("CHECK :::::::::::::::: 3 ::::::::::::::::::::::");
 					result.put("message", "판매중인 상품이 아닙니다.");
 					return result;
 				} else if (param.getGoodsQty() > goods.getMaxOrdQty()) {
-					log.info("CHECK :::::::::::::::: 4 ::::::::::::::::::::::");
 					result.put("message", goods.getGoodsNm() + " 상품의 최대 구매 수량은 " + goods.getMaxOrdQty() + " 입니다.");
 					return result;
 				} else if (param.getGoodsQty() < goods.getMinOrdQty()) {
-					log.info("CHECK :::::::::::::::: 5 ::::::::::::::::::::::");
 					result.put("message", goods.getGoodsNm() + " 상품의 최소 구매 수량은 " + goods.getMinOrdQty() + " 입니다.");
 					return result;
 				}
 
-				log.info("CHECK :::::::::::::::: 6 ::::::::::::::::::::::");
-
 				// 상품 재고 확인
 				GoodsStock checkParam = new GoodsStock();
 				checkParam.setGoodsCd(param.getGoodsCd());
@@ -213,6 +202,7 @@ public class TsfCartService {
 		result.put("goodsType", goodsType);
 		result.put("cartGb", cartGb);
 		result.put("message", "SUCCESS");
+		result.put("custNo", login.getCustNo());
 
 		return result;
 	}
@@ -236,9 +226,10 @@ public class TsfCartService {
 
 		cart.setJsessionId(TscSession.getSessionId());
 
-		// 장바구니 보유 CART_SQ 쿼리
+		List<String> sendCartSqList = new ArrayList<String>();
 		for (Cart carts : params) {
 			int i = 1;
+			// 장바구니 보유 CART_SQ 쿼리
 			Collection<Cart> cartInfos = carts.getCartCompsList();
 			sb = new StringBuilder();
 			for(Cart param : cartInfos) {
@@ -296,7 +287,7 @@ public class TsfCartService {
 				cartDao.insertCartHst(cart);                    // 장바구니 이력 정보 저장
 
 				cartSqs.add(cart.getCartSq());
-				TsfSession.setAttribute("cartSqArr", cart.getCartSq()+"");
+				sendCartSqList.add(cart.getCartSq() + "");
 
 				for (Cart param : cartInfos) {
 					param.setCartSq(cart.getCartSq());
@@ -309,6 +300,20 @@ public class TsfCartService {
 				}
 			}
 		}
+
+		// 상품상세 > 바로구매 로그인 후 구매 클릭시 주문서로 송부할 장바구니번호
+		StringBuilder cartSqComma = new StringBuilder();
+
+		int i = 0;
+		for(String cartSq : sendCartSqList) {
+			if(i > 0) {
+				cartSqComma.append(",");
+			}
+			cartSqComma.append(cartSq);
+			i++;
+		}
+
+		TsfSession.setAttribute("cartSqArr", cartSqComma.toString());
 	}
 
 	@Transactional("shopTxnManager")
@@ -874,6 +879,7 @@ public class TsfCartService {
 		/* cart.add(cartDao.selectCartGoodsInfo(param)); */
 
 		// 장바구니 상품 마스터 정보 조회
+		param.setFrontGb(TsfSession.getFrontGb());
 		Cart cart = cartDao.selectCartGoodsInfo(param);
 		if(cart == null) {
 			throw new IllegalArgumentException("장바구니 상품 정보가 없습니다.<br/>새로고침 후 다시 시도해주세요.");

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

@@ -75,7 +75,7 @@ public class TsfCustomerService {
 	 * @since 2021. 02. 08
 	 */
 	public Customer getCustomerFindId(Customer customer) {
-		TscSession.setAttribute("maskingYn","Y");
+		TsfSession.setAttribute("maskingYn","Y");
 		customer.setSiteCd(TscConstants.Site.STYLE24.value());
 		customer.encryptData(); // 데이터 암호하
 		return customerDao.getCusomterActiveAndDormant(customer);
@@ -972,6 +972,7 @@ public class TsfCustomerService {
 		params.setSiteCd(customer.getSiteCd());
 		Collection<CustGrade> custGradePolicy = customerDao.getCustGradePolicy(params);
 		result.set("custGradePolicy", custGradePolicy);
+
 		CustGrade expctCustGrade;
 		for (CustGrade grade : custGradePolicy) {
 			grade.setCustNo(customer.getCustNo());
@@ -983,4 +984,18 @@ public class TsfCustomerService {
 		}
 		return result;
 	}
+
+	public GagaMap downloadCustGradeCoupon(Integer custNo) {
+		GagaMap result = new GagaMap();
+		Customer custInfo = getCustomerFindByCustNo(custNo);
+		// TB_CUST_GRADE_POLICY
+
+		// 1. 등급정책 정보
+		// 1.1 WELCOME 첫번째 쿠폰은 무시
+		// 1.2 두번쨰 쿠폰은 저장
+		// 1.3 세번째 쿠폰은 생일 쿠폰이여서 생일 판단 후 등록
+
+
+		return result;
+	}
 }

+ 27 - 14
src/main/java/com/style24/front/biz/service/TsfDisplayService.java

@@ -20,9 +20,10 @@ import com.style24.persistence.domain.Cate4;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.GnbTab;
+import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Popup;
-import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -75,7 +76,7 @@ public class TsfDisplayService {
 	 * @author gagamel
 	 * @date 2021. 3. 11
 	 */
-	@Cacheable(value = "commonGnb", key = "'gnbTab-'.concat(#gnbTab.gtabGb)")
+//	@Cacheable(value = "commonGnb", key = "'gnbTab-'.concat(#gnbTab.gtabGb)")
 	public Collection<GnbTab> getGnbTabList(GnbTab gnbTab) {
 		return displayDao.getGnbTabList(gnbTab);
 	}
@@ -269,7 +270,7 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 3. 16
 	 */
-	public Collection<MainLayout> getMainLayout(MainLayout mainLayout){
+	public Collection<MainLayout> getMainLayout(MainLayout mainLayout) {
 		return displayDao.getMainLayout(mainLayout);
 	}
 
@@ -280,10 +281,10 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 3. 16
 	 */
-	public Cate4Srch getCate4srch(Cate4Srch cate4Srch){
+	public Cate4Srch getCate4srch(Cate4Srch cate4Srch) {
 		return displayDao.getCate4srch(cate4Srch);
 	}
-	
+
 	/**
 	 * 팝업 목록
 	 *
@@ -295,7 +296,7 @@ public class TsfDisplayService {
 	public Collection<Popup> getPopupList(Popup popup) {
 		popup.setSiteCd(TscConstants.Site.STYLE24.value());
 		return displayDao.getPopupList(popup);
-	} 
+	}
 
 	/**
 	 * 몰메인 MD PICK 목록
@@ -304,21 +305,21 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 3. 30
 	 */
-	public Collection<Contents> getContentsForGoods(Contents contents){
+	public Collection<Contents> getContentsForGoods(Contents contents) {
 		Collection<Contents> contentsList = displayDao.getContentsList(contents);
 		Cate4Srch tempContents = new Cate4Srch();
-		for(Contents data : contentsList){
+		for (Contents data : contentsList) {
 			tempContents.setContentsLoc(data.getContentsLoc());
 			tempContents.setDispOrd(data.getDispOrd());
 			tempContents.setMaxRow(20);
 			tempContents.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
-			if("SMM007".equals(data.getContentsLoc())){
+			if ("SMM007".equals(data.getContentsLoc())) {
 				data.setBannerList(displayDao.getContentsBannerList(data));
 			}
 			data.setGoodsList(goodsDao.getContentsCategoryGoodsList(tempContents));
 		}
 
-		log.info("getContentsForGoods contentsList.size()::{}",contentsList.size());
+		log.info("getContentsForGoods contentsList.size()::{}", contentsList.size());
 
 		return contentsList;
 
@@ -331,7 +332,7 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 4. 5
 	 */
-	public Collection<GoodsSearch> getCategoryFilter(Cate4Srch cate4Srch, String filterGb){
+	public Collection<GoodsSearch> getCategoryFilter(Cate4Srch cate4Srch, String filterGb) {
 		cate4Srch.setFilterGb(filterGb);
 		return displayDao.getCategoryFilter(cate4Srch);
 	}
@@ -343,7 +344,7 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 4. 7
 	 */
-	public Collection<GoodsSearch> getCategoryFilterBenefit(Cate4Srch cate4Srch){
+	public Collection<GoodsSearch> getCategoryFilterBenefit(Cate4Srch cate4Srch) {
 		return displayDao.getCategoryFilterBenefit(cate4Srch);
 	}
 
@@ -354,8 +355,20 @@ public class TsfDisplayService {
 	 * @author bin2107
 	 * @date 2021. 4. 7
 	 */
-	public int getCategoryGoodsCount(GoodsSearch goodsSearch){
-	return displayDao.getCategoryGoodsCount(goodsSearch);
+	public int getCategoryGoodsCount(GoodsSearch goodsSearch) {
+		return displayDao.getCategoryGoodsCount(goodsSearch);
+	}
+
+	/**
+	 * 카테고리 별 상품 리스트
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 8
+	 */
+	public Collection<Goods> getCategoryGoodsList(GoodsSearch goodsSearch) {
+		Collection<Goods> goodsList = displayDao.getCategoryGoodsList(goodsSearch);
+		return goodsList;
 	}
 
 }

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

@@ -510,5 +510,16 @@ public class TsfPlanningService {
 		return planningDao.getCustAttendEntryList(plan);
 	}
 
+	/**
+	 * 기획전/이벤트 댓글
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 8
+	 */
+	public Collection<Plan> getReplyList(Plan plan){
+		return planningDao.getReplyList(plan);
+	}
 
 }

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

@@ -21,7 +21,6 @@ import org.springframework.web.servlet.ModelAndView;
 import com.style24.core.biz.service.TscClauseService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.core.support.session.TscSession;
 import com.style24.front.biz.service.TsfCustomerService;
 import com.style24.front.biz.service.TsfKakaoService;
 import com.style24.front.biz.thirdparty.NiceCertify;
@@ -223,7 +222,7 @@ public class TsfCustomerController extends TsfBaseController {
 		Customer custInfo = customerService.getCustomerFindId(params);
 		if (custInfo != null) {
 			isFind = true;
-			TscSession.setAttribute("custNo", String.valueOf(custInfo.getCustNo()));
+			TsfSession.setAttribute("custNo", String.valueOf(custInfo.getCustNo()));
 		}
 
 		result.setString("authMethod", customer.getAuthMethod()); // 인증방법
@@ -244,7 +243,7 @@ public class TsfCustomerController extends TsfBaseController {
 		String custNo = "";
 
 		if ("find".equals(pageGb)) { //비밀번호 찾기 사용
-			custNo = TscSession.getAttribute("custNo");
+			custNo = TsfSession.getAttribute("custNo");
 		}
 
 		if ("temp".equals(pageGb)) { // 비밀번호 변경 캠페인, 임시비밀번호로 로그인시 사용, 마이페이지 내정보 관리-비밀번호 수정
@@ -286,7 +285,7 @@ public class TsfCustomerController extends TsfBaseController {
 		if (TsfSession.isLogin()) {
 			custNo = String.valueOf(TsfSession.getInfo().getCustNo());
 		} else {
-			custNo = TscSession.getAttribute("custNo");
+			custNo = TsfSession.getAttribute("custNo");
 		}
 
 		if (StringUtils.isBlank(custNo)) {
@@ -539,7 +538,7 @@ public class TsfCustomerController extends TsfBaseController {
 		result.setBoolean("isFind", false);
 		result.setString("cellPhnno", customer.getCellPhnno());
 
-		TscSession.setAttribute("encData", customer.getEncData());
+		TsfSession.setAttribute("encData", customer.getEncData());
 
 		return result;
 	}
@@ -560,7 +559,7 @@ public class TsfCustomerController extends TsfBaseController {
 		GagaMap result = new GagaMap();
 
 		// 1.세션에 인코딩된 데이터를 가져온다.
-		String encData = TscSession.getAttribute("encData");
+		String encData = TsfSession.getAttribute("encData");
 		customer.setEncData(encData);
 		session.removeAttribute("encData");
 
@@ -880,6 +879,7 @@ public class TsfCustomerController extends TsfBaseController {
 	@PostMapping("/privacy/trust/layer")
 	public ModelAndView getMarketingLayerForm() {
 		ModelAndView mav = new ModelAndView();
+		mav.addObject("clause", clauseService.getClause(TscConstants.Site.STYLE24.value(), "G057_43"));
 		mav.setViewName(super.getDeviceViewName("customer/PrivacyTrustLayerForm"));
 		return mav;
 	}

+ 40 - 30
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -7,14 +7,13 @@ import java.util.HashMap;
 
 import javax.servlet.http.HttpServletResponse;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.style24.core.support.env.TscConstants;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -22,6 +21,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.core.biz.service.TscEnvsetService;
 import com.style24.core.biz.service.TscLookbookService;
+import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
@@ -35,15 +35,17 @@ import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.GnbTab;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.Lookbook;
 import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Popup;
 import com.style24.persistence.domain.Social;
-import com.style24.persistence.domain.GoodsSearch;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 전시 Controller
  * 
@@ -131,18 +133,18 @@ public class TsfDisplayController extends TsfBaseController {
 				}
 			}
 
-			if(contentsLoc.equals("SMM006")){
+			if (contentsLoc.equals("SMM006")) {
 				Social social = new Social();
 				social.setSiteCd("G000_10");
 				social.setFrontGb(TsfSession.getFrontGb());
 				mainLayout.setSocialInfo(socialService.getSocialForGoods(social));
 			}
 
-			if(contentsLoc.equals("SMM007")){
+			if (contentsLoc.equals("SMM007")) {
 				mainLayout.setBrandPickList(displayService.getContentsForGoods(contents));
 			}
 
-			if(contentsLoc.equals("SMM009")){
+			if (contentsLoc.equals("SMM009")) {
 				mainLayout.setMdPickList(displayService.getContentsForGoods(contents));
 			}
 
@@ -293,12 +295,12 @@ public class TsfDisplayController extends TsfBaseController {
 			}
 			brandMainLayoutList.add(brandMain);
 		}
-		
-		mav.addObject("preview", paramMap.get("preview") );
+
+		mav.addObject("preview", paramMap.get("preview"));
 		mav.addObject("viewDt", paramMap.get("viewDt"));
 		mav.addObject("viewPage", "G037_31");
 		mav.addObject("popupCateNo", paramMap.get("brandGroupNo"));
-		
+
 		//log.info("brandMainLayoutList::{}", brandMainLayoutList);
 		mav.addObject("brandMainLayoutList", brandMainLayoutList);
 		mav.setViewName(super.getDeviceViewName("display/BrandMainForm"));
@@ -347,11 +349,11 @@ public class TsfDisplayController extends TsfBaseController {
 		cate.setMaxRow(20);
 		mav.addObject("bestGoodsList", goodsService.getContentsCategoryGoodsList(cate));
 
-		mav.addObject("preview", cate.getPreview() );
+		mav.addObject("preview", cate.getPreview());
 		mav.addObject("viewDt", cate.getViewDt());
 		mav.addObject("viewPage", "G037_30");
 		mav.addObject("popupCateNo", cate.getCate1No());
-		
+
 		mav.addObject("params", cate);
 
 		return mav;
@@ -400,8 +402,8 @@ public class TsfDisplayController extends TsfBaseController {
 		Collection<Lookbook> lookbookList = coreLookbookService.getLookbookListForGoods(lookbook);
 		String brandNm = "";
 		String lookbookTitle = "";
-		if(lookbookList != null){
-			for(Lookbook lbInfo : lookbookList){
+		if (lookbookList != null) {
+			for (Lookbook lbInfo : lookbookList) {
 				brandNm = lbInfo.getBrandNm();
 				lookbookTitle = lbInfo.getTitle();
 			}
@@ -455,28 +457,27 @@ public class TsfDisplayController extends TsfBaseController {
 		cate4Srch.setFormalGb("G009_10");
 		cate4Srch.setFrontGb(TsfSession.getFrontGb());
 		cate4Srch.setCustGb(TsfSession.getCustGb());
-		if(cate4Srch.getBrandGroupNo()==null || cate4Srch.getBrandGroupNo().equals("")){
+		if (cate4Srch.getBrandGroupNo() == null) {
 			cate4Srch.setBrandGroupNo(0);
 		}
-		if(cate4Srch.getCate4No()!=null && !cate4Srch.getCate4No().equals("")){
+		if (cate4Srch.getCate4No() != null && !cate4Srch.getCate4No().equals("")) {
 			cate4Srch.setCateNo(cate4Srch.getCate4No());
-		} else if(cate4Srch.getCate3No()!=null && !cate4Srch.getCate3No().equals("")){
+		} else if (cate4Srch.getCate3No() != null && !cate4Srch.getCate3No().equals("")) {
 			cate4Srch.setCateNo(cate4Srch.getCate3No());
-		} else if(cate4Srch.getCate2No()!=null && !cate4Srch.getCate2No().equals("")){
+		} else if (cate4Srch.getCate2No() != null && !cate4Srch.getCate2No().equals("")) {
 			cate4Srch.setCateNo(cate4Srch.getCate2No());
-		} else if(cate4Srch.getCate1No()!=null && !cate4Srch.getCate1No().equals("")){
+		} else if (cate4Srch.getCate1No() != null && !cate4Srch.getCate1No().equals("")) {
 			cate4Srch.setCateNo(cate4Srch.getCate1No());
 		}
 
-		log.info("categoryGoodsListForm cate4Srch::::{}",cate4Srch);
+		log.info("categoryGoodsListForm cate4Srch::::{}", cate4Srch);
 		mav.addObject("filterBrandList", displayService.getCategoryFilter(cate4Srch, "BRAND"));
 		mav.addObject("filterSizeList", displayService.getCategoryFilter(cate4Srch, "SIZE"));
 		mav.addObject("filterPriceList", displayService.getCategoryFilter(cate4Srch, "PRICE"));
 		mav.addObject("filterAgeList", displayService.getCategoryFilter(cate4Srch, "AGE"));
 		mav.addObject("filterSeasonList", displayService.getCategoryFilter(cate4Srch, "SEASON"));
 		mav.addObject("filterColorList", displayService.getCategoryFilter(cate4Srch, "COLOR"));
-		mav.addObject("filterBenefitList", displayService.getCategoryFilter(cate4Srch, "BENEFIT"));
-		//mav.addObject("filterBenefitList", displayService.getCategoryFilterBenefit(cate4Srch));
+		mav.addObject("filterBenefitList", displayService.getCategoryFilterBenefit(cate4Srch));
 		mav.addObject("cateInfo", cate4Srch);
 
 		return mav;
@@ -491,30 +492,39 @@ public class TsfDisplayController extends TsfBaseController {
 	 */
 	@PostMapping("/category/goods/list")
 	@ResponseBody
-	public GagaMap getGoodsList(GoodsSearch goodsSearch){
+	public GagaMap getGoodsList(@RequestBody GoodsSearch goodsSearch) {
 		GagaMap result = new GagaMap();
+		log.info("getGoodsListgetGoodsListgetGoodsList::::{}", goodsSearch);
 		TscPageRequest pageable = new TscPageRequest((goodsSearch.getPageNo() > 0 ? goodsSearch.getPageNo() - 1 : 0), goodsSearch.getPageSize(), goodsSearch.getPageUnit());
 
 		goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
 		goodsSearch.setFormalGb("G009_10");
 		goodsSearch.setFrontGb(TsfSession.getFrontGb());
 		goodsSearch.setCustGb(TsfSession.getCustGb());
-		if(goodsSearch.getBrandGroupNo()==null || goodsSearch.getBrandGroupNo().equals("")){
+
+		if (goodsSearch.getBrandGroupNo() == null || goodsSearch.getBrandGroupNo().equals("")) {
 			goodsSearch.setBrandGroupNo(0);
 		}
-		if(goodsSearch.getCate4No()!=null && !goodsSearch.getCate4No().equals("")){
+
+		if (goodsSearch.getCate4No() != null && !goodsSearch.getCate4No().equals("")) {
 			goodsSearch.setCateNo(goodsSearch.getCate4No());
-		} else if(goodsSearch.getCate3No()!=null && !goodsSearch.getCate3No().equals("")){
+		} else if (goodsSearch.getCate3No() != null && !goodsSearch.getCate3No().equals("")) {
 			goodsSearch.setCateNo(goodsSearch.getCate3No());
-		} else if(goodsSearch.getCate2No()!=null && !goodsSearch.getCate2No().equals("")){
+		} else if (goodsSearch.getCate2No() != null && !goodsSearch.getCate2No().equals("")) {
 			goodsSearch.setCateNo(goodsSearch.getCate2No());
-		} else if(goodsSearch.getCate1No()!=null && !goodsSearch.getCate1No().equals("")){
+		} else if (goodsSearch.getCate1No() != null && !goodsSearch.getCate1No().equals("")) {
 			goodsSearch.setCateNo(goodsSearch.getCate1No());
 		}
 
 		int totalCnt = displayService.getCategoryGoodsCount(goodsSearch);
-		log.info("totalCnt::::::::::{}",totalCnt);
-		pageable.setTotalCount(0);
+		log.info("totalCnt::::::::::{}", totalCnt);
+		pageable.setTotalCount(totalCnt);
+		goodsSearch.setPageable(pageable);
+		log.info("getEndRow:::::{}",pageable.getEndRow());
+		result.set("paging", goodsSearch);
+		result.set("totalCnt", totalCnt);
+		result.set("endRow", pageable.getEndRow());
+		result.set("dataList", displayService.getCategoryGoodsList(goodsSearch));
 		return result;
 	}
 }

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

@@ -773,7 +773,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		TscPageRequest pageable = new TscPageRequest((review.getPageNo() > 0 ? review.getPageNo() - 1 : 0), review.getPageSize(), review.getPageUnit());
 		pageable.setTotalCount(reviewService.getReviewTotalCount(review));
-		review.setPageable(pageable);
+		review.setPageable(pageable);	
 
 		if (TsfSession.isLogin()) {
 			review.setCustNo(TsfSession.getInfo().getCustNo());

+ 4 - 3
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -1189,7 +1190,7 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 24
 	 */
 	@GetMapping("/review/form")
-	public ModelAndView mypageReviewForm(Review review) {
+	public ModelAndView mypageReviewForm(Review review, Device device) {
 		ModelAndView mav = new ModelAndView();
 		
 		review.setCustNo(TsfSession.getInfo().getCustNo());
@@ -1286,7 +1287,7 @@ public class TsfMypageController extends TsfBaseController {
 	 */
 	@GetMapping("/review/create/form/{ordNo}/{ordDtlNo}/{goodsCd}/{reviewStat}")
 	public ModelAndView mypageReviewCreateForm(@PathVariable(value = "ordNo") Integer ordNo,@PathVariable(value = "ordDtlNo") Integer ordDtlNo
-			,@PathVariable(value = "goodsCd") String goodsCd, @PathVariable(value = "reviewStat") String reviewStat) {
+			,@PathVariable(value = "goodsCd") String goodsCd, @PathVariable(value = "reviewStat") String reviewStat, Device device) {
 		Review review = new Review();
 		ModelAndView mav = new ModelAndView();
 		
@@ -1355,7 +1356,7 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 29
 	 */
 	@GetMapping("/wish/list/form")
-	public ModelAndView mypageWishListForm(WishList wishList) {
+	public ModelAndView mypageWishListForm(WishList wishList, Device device) {
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("mypage/MypageWishListForm"));
 		wishList.setSiteCd(TscConstants.Site.STYLE24.value());
 		wishList.setFrontGb(TsfSession.getFrontGb());

+ 40 - 8
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -1,5 +1,6 @@
 package com.style24.front.biz.web;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
 
@@ -27,13 +28,14 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
+import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 
@@ -185,13 +187,11 @@ public class TsfPlanningController extends TsfBaseController {
 		plan.setTmplType("G082_51");
 		mav.addObject("goods2Info", planningService.getPlanGoodsDisplayList(plan));
 
-		//상품4열 전시
+		// 상품4열 전시
 		plan.setTmplType("G082_52");
 		mav.addObject("goods4Info", planningService.getPlanGoodsDisplayList(plan));
-
-//		mav.addObject("couponList", planningService.getPlusCouponList(plan));
-//
-//		// 코너 목록
+		
+		// 코너 목록
 		mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
 		mav.addObject("planCornerListLength", planningService.getPlanCornerList(plan).size());
 		
@@ -231,6 +231,26 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 기획전/이벤트 댓글 리스트
+	 *
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 04. 08
+	 */
+	@GetMapping("/reply/list")
+	@ResponseBody
+	public GagaMap getReplyList(@RequestParam(value="planSq")Integer planSq) {
+		GagaMap result = new GagaMap();
+		Plan plan = new Plan();
+		plan.setPlanSq(planSq);
+		
+		result.set("replyList",planningService.getReplyList(plan));
+		result.set("custNo",TsfSession.getInfo().getCustNo());
+		return result;
+	}
+
+	
 	/**
 	 * 기획전 쿠폰 상세보기 모달
 	 *
@@ -325,7 +345,7 @@ public class TsfPlanningController extends TsfBaseController {
 	 */
 	@GetMapping("/event/main/list")
 	@ResponseBody
-	public Collection<Plan> getPlanningEventMainList(Plan plan) {
+	public Collection<Plan> getPlanningEventMainList(Plan plan, Device device) {
 		plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setFrontGb(TsfSession.getFrontGb());
 		plan.setCustGb(TsfSession.getCustGb());
@@ -476,7 +496,7 @@ public class TsfPlanningController extends TsfBaseController {
 			customer.setCustNo(TsfSession.getInfo().getCustNo());
 			customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
 
-			mav.addObject("exptCustGrdeMap", customerService.getExpectedCustGrde(customer));
+			mav.addObject("exptCustGradeMap", customerService.getExpectedCustGrde(customer));
 			mav.addObject("customerInfo", coreCustomerService.getCustomerInfo(customer));
 		}
 
@@ -484,6 +504,18 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 회원등급 쿠폰 다운로드
+	 *
+	 * @return GagaMap
+	 * @author jsshin
+	 * @since 2021. 04. 08
+	 */
+	@GetMapping("/event/custgrade/coupon/down")
+	public GagaMap downCustGradeCoupon() {
+		return customerService.downloadCustGradeCoupon(TsfSession.getInfo().getCustNo());
+	}
+
 	
 	/**
 	 * 출석체크

+ 32 - 4
src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java

@@ -11,6 +11,7 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 
@@ -48,16 +49,21 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		"/customer/dormant/certify/complete/form",	// 휴면해제
 		"/customer/certification/form"				// 본인인증화면
 	};
-	private static final int CHANG_PWD_CAMPAIGN_DAY = 90; // 비밀번호 변경 캠페인일자
+	private static final int CHANG_PWD_CAMPAIGN_DAY = 90;	// 비밀번호 변경 캠페인일자
 
 	private static final String CHANG_TEMP_PWD = "Y";	//임시비밀번호여부
 
+	private static final String GOODS_DETAIL_FORM = "/goods/detail/form";	// 주문상세 URL
+
 	@Autowired
 	private TsfLoginService loginService;
 
 	@Autowired
 	private TsfCartService cartService;
 
+	@Value("${has-ssl}")
+	private String hasSsl;
+
 	@Override
 	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
 		// 로그인 상세 정보
@@ -76,9 +82,14 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		// 로그인이력 생성
 		loginService.createLoginHistory(custNo);
 
+		// 장바구니 번호
+		String cartSqArr = TsfSession.getAttribute("cartSqArr");
+
 		// 세션 생성
 		this.createSession(request, loginDetails);
 
+		boolean isSslServer = Boolean.parseBoolean(hasSsl);
+
 		// 자동로그인용 RememberMe 쿠키 및 토큰 생성
 		if (request.getParameter("rememberMe") != null && request.getParameter(TsfConstants.REMEMBER_ME_PARAMETER).equals("true")) {
 			Date expiry = new Date(System.currentTimeMillis() + (1000 * TsfConstants.REMEMBER_ME_LIMIT));
@@ -86,7 +97,11 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 			String remembermeToken = Base64.getEncoder().encodeToString((TsfConstants.REMEMBER_ME_KEY + ":" + md5HexToken).getBytes());
 
 			// RememberMe 쿠키 생성
-			GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_remember-me", remembermeToken, TsfConstants.REMEMBER_ME_LIMIT);
+			if (isSslServer) {
+				GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_remember-me", remembermeToken, TsfConstants.REMEMBER_ME_LIMIT);
+			} else {
+				GagaCookieUtil.setCookie(response, TsfConstants.CK_PREFIX + "_remember-me", remembermeToken, TsfConstants.REMEMBER_ME_LIMIT);
+			}
 
 			// 로그인유지토큰 생성
 			loginService.createPersistentToken(custNo, remembermeToken, expiry);
@@ -118,14 +133,27 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 
 		// 비밀번호 변경 캠페인 일자
 		if (loginDetails.getLoginInfo().getPwdChgDay() >= CHANG_PWD_CAMPAIGN_DAY) {
-			returnUrl ="/customer/password/campaign/form";
+			returnUrl = "/customer/password/campaign/form";
 		}
 
 		// 임시비밀번호로 로그인 한 경우
 		if (CHANG_TEMP_PWD.equals(loginDetails.getLoginInfo().getTempPasswdYn())) {
-			returnUrl ="/customer/password/change/form?pageGb=temp";
+			returnUrl = "/customer/password/change/form?pageGb=temp";
 		}
 
+		// 상품상세 바로구매 > 로그인 한 경우
+		if (returnUrl.indexOf(GOODS_DETAIL_FORM) > -1)  {
+			if (StringUtils.isNotBlank(cartSqArr)) {
+				returnUrl = "/order/form?cartSqArr="+ cartSqArr;
+			}
+		}
+
+		if (isSslServer) {
+			// 로그인 성공 쿠키로 저장 (마케팅 스크립트용)
+			GagaCookieUtil.setSecureCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1*60);
+		} else {
+			GagaCookieUtil.setCookie(response, TsfConstants.CK_PREFIX + "_login_success", "Y", 1*60);
+		}
 
 		GagaMap result = new GagaMap();
 		result.setString("status", "OK");

+ 12 - 0
src/main/java/com/style24/front/support/security/session/TsfSession.java

@@ -114,4 +114,16 @@ public class TsfSession extends GagaSession {
 		return "";
 	}
 
+	/**
+	 * 세션 값 삭제
+	 * @param name - 명칭
+	 */
+	public static void removeAtrribute(String name) {
+		HttpServletRequest request = getHttpServletRequest();
+		HttpSession session = request.getSession();
+		if (session != null && session.getAttribute(name) != null) {
+			session.removeAttribute(name);
+		}
+	}
+
 }

+ 1 - 0
src/main/java/com/style24/persistence/domain/Cart.java

@@ -58,6 +58,7 @@ public class Cart extends TscBaseDomain {
 	// 상품 정보
 	private int currStockQty;		// 기준 재고
 	private int qty;				// 구성 상품 기준 재고 수량
+	private int currPrice;			// 상품판매가
 	private String goodsType;		// 상품 타입
 	private String compsGoodsCd;	// 세트 구성상품 코드
 	private String itemCdSql;		// 상품 조회 쿼리문

+ 1 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -150,6 +150,7 @@ public class Goods extends TscBaseDomain {
 	private int weight;				// 몸무게
 	private Integer reviewSq;
 	private String goodsStatNm;
+	private String regDtMonth;
 
 	private String sizeGb;		// 사이즈구분(T:상의, B:하의, S:신발)
 

+ 2 - 2
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -59,8 +59,8 @@ public class GoodsSearch extends TscBaseDomain {
     private String  filterNm;
 
     private TscPageRequest pageable;				// 페이징
-    private int pageNo;
-    private int pageSize;
+    private int pageNo = 1;
+    private int pageSize = 50;
     private int pageUnit = 10;
     private String sortGb;
 

+ 12 - 0
src/main/java/com/style24/persistence/domain/Login.java

@@ -35,6 +35,8 @@ public class Login extends TscBaseDomain {
 	private String custStat;		// 고객상태
 	private String cellPhnno;		// 휴대전화번호
 	private String email;			// 이메일
+	private String birthYmd;		// 생년월일
+	private String sexGb;			// 성별
 	private String snsType;			// SNS유형
 	private String snsId;			// SNS가입ID
 	private int loginFailCnt;		// 로그인실패건수
@@ -63,6 +65,16 @@ public class Login extends TscBaseDomain {
 		this.email = CryptoUtils.decryptAES(this.email);
 		return this.email;
 	}
+
+	public String getBirthYmd() {
+		this.birthYmd = CryptoUtils.decryptAES(this.birthYmd);
+		return this.birthYmd;
+	}
+
+	public String getSexGb() {
+		this.sexGb = CryptoUtils.decryptAES(this.sexGb);
+		return this.sexGb;
+	}
 	// 암호화 대상 복호화 처리 =================================================
 
 }

+ 7 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.core.support.util.MaskingUtils;
 import com.style24.persistence.TscBaseDomain;
 import com.style24.persistence.TscPageRequest;
 
@@ -340,5 +341,11 @@ public class Plan extends TscBaseDomain {
 	private String likeIt;			// 위시리스트담은상품
 	private int maxRow;				// 최대ROW수
 	private Integer exceptPlanSq;	// 제외할기획전번호
+	private String custId;			// 고객ID
+	// Masking
+	public String getMaskingCustId() {
+		return (this.custId != null) ?  MaskingUtils.id(this.custId) : this.custId;
+	}
+		
 
 }

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

@@ -894,6 +894,7 @@
 			 , CA.GOODS_QTY
 			 , G.SELF_GOODS_YN
 		     , G.GOODS_STAT
+		     , FN_GET_APPLY_CPN1_PRICE(CA.GOODS_CD, #{frontGb}) AS CURR_PRICE
 		FROM   TB_CART CA
 		INNER  JOIN TB_GOODS G
 		ON     CA.GOODS_CD = G.GOODS_CD

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

@@ -160,10 +160,10 @@
 		     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
 		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
 		            ELSE CP.DC_AVAL                                              END AS DC_VAL
-		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%M%D%H%I%S')
-		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%M%D%H%I%S')              END AS AVAIL_STDT
-		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%M%D%H%I%S')
-		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%M%D%H%I%S')             END AS AVAIL_EDDT
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')
+		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S')              END AS AVAIL_STDT
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%m%d%H%i%S')
+		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S')             END AS AVAIL_EDDT
 		FROM  TB_CUST_GRADE_POLICY CGP
 		INNER JOIN
 		      TB_COUPON CP

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

@@ -593,12 +593,12 @@
 		/* TsfDisplay.getCategoryFilter */
 		SELECT
 		<choose>
-			<when test="filterGb != null and filterGb =='SIZE'">
+		     <when test="filterGb != null and filterGb =='SIZE'">
 		SUBSTRING_INDEX(FILTER_CD,'|',1) AS FILTER_CD
-			</when>
-			<otherwise>
+		     </when>
+		     <otherwise>
 		FILTER_CD
-			</otherwise>
+		     </otherwise>
 		</choose>
 		, FILTER_NM
 		FROM TB_CATE_FILTER
@@ -612,37 +612,230 @@
 		ORDER BY DISP_ORD
 	</select>
 
-	<!-- 카테고리별 상품 총 수 -->
-	<select id="getCategoryGoodsCount" parameterType="GoodsSearch" resultType="int">
-		/* TsfDisplay.getCategoryGoodsCount */
-		SELECT COUNT(1) AS TOTCNT
-		FROM (SELECT A.GOODS_CD
-		           , A.CATE_NO
-		           , A.DISP_ORD
-		           , A.REG_NO
-		           , A.REG_DT
-		      FROM TB_CATE_GOODS A
-		      WHERE 1 = 1
-		        AND EXISTS(SELECT 1
-		                    FROM TB_CATE_4SRCH
-		                    WHERE 1 = 1
-		                      AND LEAF_CATE_NO = A.CATE_NO
-		                      AND CATE1_NO = #{cate1No}
-		                    <if test="cate2No != null and cate2No != ''">
-		                     AND CATE2_NO = #{cate2No}
-							</if>
-		                    <if test="cate3No != null and cate3No != ''">
+	<!-- 상품 카테고리 필터 중 혜택 -->
+	<select id="getCategoryFilterBenefit" parameterType="Cate4srch" resultType="GoodsSearch">
+		/* TsfDisplay.getCategoryFilterBenefit */
+		SELECT	GB.BENEFIT_GB AS FILTER_CD
+		      , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
+		             WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
+		             WHEN GB.BENEFIT_GB = '30' THEN '사은품'
+		             WHEN GB.BENEFIT_GB = '40' THEN '신상' ELSE '' END AS FILTER_NM
+		FROM	TB_GOODS_BENEFIT GB
+		INNER JOIN TB_CATE_GOODS CG ON GB.GOODS_CD = CG.GOODS_CD
+		WHERE	1=1
+		  AND	EXISTS (
+		                  SELECT 1
+		                  FROM	 TB_CATE_4SRCH
+		                  WHERE	 1=1
+		                    AND	 LEAF_CATE_NO = CG.CATE_NO
+		                    AND	 CATE1_NO = #{cate1No}
+		                  <if test="cate2No != null and cate2No != ''">
+		                    AND CATE2_NO = #{cate2No}
+		                  </if>
+		                  <if test="cate3No != null and cate3No != ''">
 		                    AND CATE3_NO = #{cate3No}
-							</if>
-		                    <if test="cate4No != null and cate4No != ''">
+		                  </if>
+		                  <if test="cate4No != null and cate4No != ''">
 		                    AND CATE4_NO = #{cate4No}
-							</if>
-		                    <if test="cate5No != null and cate5No != ''">
+		                  </if>
+		                  <if test="cate5No != null and cate5No != ''">
 		                    AND CATE5_NO = #{cate5No}
-		                    </if>
-				  )
-		) A
-		   , TB_GOODS C
-		WHERE A.GOODS_CD = C.GOODS_CD
+		                  </if>
+		                )
+		GROUP BY GB.BENEFIT_GB
+	</select>
+
+	<!-- 카테고리별 상품 총 수 -->
+	<select id="getCategoryGoodsCount" parameterType="GoodsSearch" resultType="int">
+		/* TsfDisplay.getCategoryGoodsCount */
+		SELECT COUNT(1) AS CNT
+		  FROM TB_GOODS G
+		  JOIN TB_CATE_GOODS CG ON G.GOODS_CD = CG.GOODS_CD
+		  JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD AND B.USE_YN = 'Y'
+		  JOIN TB_SITE_BRAND SB ON G.BRAND_CD = SB.BRAND_CD AND SB.USE_YN = 'Y'
+		  JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO AND BG.USE_YN = 'Y'
+		  JOIN TB_GOODS_STOCK S ON G.GOODS_CD = S.GOODS_CD
+		  LEFT OUTER JOIN TB_GOODS_SUMMARY SU ON G.GOODS_CD = SU.GOODS_CD
+		WHERE 1=1
+		  AND CG.GOODS_CD = G.GOODS_CD
+		  AND CG.GOODS_CD = S.GOODS_CD
+		  AND G.BRAND_CD = B.BRAND_CD
+		  AND B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		  AND CG.GOODS_CD = S.GOODS_CD
+		  AND EXISTS (
+		               SELECT 1
+		               FROM TB_CATE_4SRCH
+		               WHERE 1 = 1
+		                 AND LEAF_CATE_NO = CG.CATE_NO
+		                 AND SITE_CD = #{siteCd}
+		                 AND CATE_GB = 'G032_101' /*BY ITEM*/
+		                 AND CATE_TYPE = 'G031_10'
+		                 AND CATE1_NO = #{cate1No}
+		                 <if test="cate2No != null and cate2No != ''">
+		                 AND CATE2_NO = #{cate2No}
+		                 </if>
+		                 <if test="cate3No != null and cate3No != ''">
+		                 AND CATE3_NO = #{cate3No}
+		                 </if>
+		                 <if test="cate4No != null and cate4No != ''">
+		                 AND CATE4_NO = #{cate4No}
+		                 </if>
+		                 <if test="cate5No != null and cate5No != ''">
+		                 AND CATE5_NO = #{cate5No}
+		                 </if>
+		                 )
+		  AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		  AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		  AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
+		  AND S.STOCK_QTY > 0 /*재고있는상품*/
+	</select>
+
+	<select id="getCategoryGoodsList" parameterType="GoodsSearch" resultType="Goods">
+		/* TsfDisplay.getCategoryGoodsList */
+		WITH TAB_GOODS AS (
+		     SELECT G.BRAND_GROUP_NM     /*브랜드그룹명*/
+		          , G.GOODS_CD           /*상품코드*/
+		          , G.GOODS_NM           /*상품명*/
+		          , G.GOODS_GB           /*상품구분*/
+		          , G.FOREIGN_BUY_YN     /*해외구매대행여부*/
+		          , G.PARALLEL_IMPORT_YN /*병행수입여부*/
+		          , G.ORDER_MADE_YN      /*주문제작여부*/
+		          , G.GOODS_TNM          /*상품타이틀명*/
+		          , G.MAIN_COLOR_CD      /*대표색상코드*/
+		          , G.LIST_PRICE         /*정상가(최초판매가)*/
+		          , G.CURR_PRICE         /*현재판매가*/
+		          , G.REG_DT             /*등록일시*/
+		          , G.NUMB
+		     FROM   (
+		          SELECT CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM
+		               ELSE BG.BRAND_GROUP_KNM
+		               END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		               , G.GOODS_CD                                               /*상품코드*/
+		               , G.GOODS_NM                                               /*상품명*/
+		               , G.GOODS_GB                                               /*상품구분*/
+		               , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		               , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		               , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		               , G.GOODS_TNM                                              /*상품타이틀명*/
+		               , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		               , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		               , G.CURR_PRICE                                             /*현재판매가*/
+		               , G.REG_DT                                                 /*등록일시*/
+		               , ROW_NUMBER() OVER(ORDER BY CG.DISP_ORD
+		                                          , G.REG_DT DESC
+		                                          , G.GOODS_CD) AS NUMB
+		          FROM	TB_GOODS G
+		          JOIN	TB_CATE_GOODS CG ON G.GOODS_CD = CG.GOODS_CD
+		          JOIN	TB_BRAND B ON G.BRAND_CD = B.BRAND_CD AND B.USE_YN = 'Y'
+		          JOIN	TB_SITE_BRAND SB ON G.BRAND_CD = SB.BRAND_CD AND SB.USE_YN = 'Y'
+		          JOIN	TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO AND BG.USE_YN = 'Y'
+		          JOIN	TB_GOODS_STOCK S ON G.GOODS_CD = S.GOODS_CD
+		          LEFT OUTER JOIN TB_GOODS_SUMMARY SU ON G.GOODS_CD = SU.GOODS_CD
+		          WHERE 1=1
+		          AND CG.GOODS_CD = G.GOODS_CD
+		          AND CG.GOODS_CD = S.GOODS_CD
+		          AND G.BRAND_CD = B.BRAND_CD
+		          AND B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		          AND CG.GOODS_CD = S.GOODS_CD
+		          AND EXISTS (
+		                        SELECT 1
+		                        FROM TB_CATE_4SRCH
+		                        WHERE 1 = 1
+		                        AND LEAF_CATE_NO = CG.CATE_NO
+		                        AND SITE_CD = #{siteCd}
+		                        AND CATE_GB = 'G032_101' /*BY ITEM*/
+		                        AND CATE_TYPE = 'G031_10'
+		                        AND CATE1_NO = #{cate1No}
+		                        <if test="cate2No != null and cate2No != ''">
+		                        AND CATE2_NO = #{cate2No}
+		                        </if>
+		                        <if test="cate3No != null and cate3No != ''">
+		                        AND CATE3_NO = #{cate3No}
+		                        </if>
+		                        <if test="cate4No != null and cate4No != ''">
+		                        AND CATE4_NO = #{cate4No}
+		                        </if>
+		                        <if test="cate5No != null and cate5No != ''">
+		                        AND CATE5_NO = #{cate5No}
+		                        </if>
+		              )
+		          AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		          AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		          AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
+		          AND S.STOCK_QTY > 0 /*재고있는상품*/
+		          ) G
+		     WHERE  1=1
+		     <if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
+		     AND  G.NUMB BETWEEN #{pageable.startRow} AND #{pageable.endRow}
+		     </if>
+		)
+		, TAB_GOODS_IMG AS (
+		/* 상품의 이미지 */
+		SELECT GOODS_CD
+		,MAX(SYS_IMG_NM) AS SYS_IMG_NM
+		,MAX(SYS_IMG_NM2) AS SYS_IMG_NM2
+		FROM (
+		SELECT G.GOODS_CD
+		, CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END   AS SYS_IMG_NM
+		, CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END AS SYS_IMG_NM2
+		FROM   TAB_GOODS G
+		, TB_GOODS_IMG GI
+		WHERE  G.GOODS_CD = GI.GOODS_CD
+		AND    G.MAIN_COLOR_CD = GI.COLOR_CD
+		) Z
+		GROUP BY GOODS_CD
+		)
+		, TAB_GOODS_VIDEO AS (
+		/* 상품의 동영상 목록 */
+		SELECT GOODS_CD
+		, MAX(CASE WHEN RNUM = 1 THEN VIDEO_GB END)  AS VIDEO_GB_M
+		, MAX(CASE WHEN RNUM = 1 THEN VIDEO_VAL END) AS VIDEO_VAL_M
+		, MAX(CASE WHEN RNUM = 2 THEN VIDEO_GB END)  AS VIDEO_GB_S
+		, MAX(CASE WHEN RNUM = 2 THEN VIDEO_VAL END) AS VIDEO_VAL_S
+		FROM   (
+		SELECT G.GOODS_CD
+		, V.VIDEO_GB
+		, V.VIDEO_VAL
+		, VD.REG_DT
+		, RANK() OVER(PARTITION BY G.GOODS_CD ORDER BY VD.REG_DT) AS RNUM
+		FROM   TAB_GOODS G
+		, TB_VIDEO_DISPLOC VD
+		, TB_VIDEO V
+		WHERE  G.GOODS_CD = VD.DISPLOC_VAL
+		AND    VD.VIDEO_SQ = V.VIDEO_SQ
+		AND    VD.DISPLOC_GB = 'G' /*상품*/
+		AND    VD.DISP_YN = 'Y'
+		AND    V.DISP_YN ='Y'
+		) Z
+		GROUP  BY GOODS_CD
+		)
+		SELECT	G.BRAND_GROUP_NM
+		      , G.GOODS_CD
+		      , 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_TNM
+		      , G.MAIN_COLOR_CD
+		      , G.LIST_PRICE
+		      , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb})                           AS CURR_PRICE    /*현재판매가*/
+		      , GI.SYS_IMG_NM
+		      , GI.SYS_IMG_NM2
+		      , GV.VIDEO_GB_M
+		      , GV.VIDEO_VAL_M
+		      , GV.VIDEO_GB_S
+		      , GV.VIDEO_VAL_S
+		      <choose>
+		      	<when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		      		, IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
+		      	</when>
+		      	<otherwise>
+		      		, ''                                                                                           AS LIKE_IT       /*위시리스트담긴상품*/
+		      	</otherwise>
+		      </choose>
+		FROM	TAB_GOODS G
+		LEFT OUTER JOIN TAB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		LEFT OUTER JOIN TAB_GOODS_VIDEO GV ON G.GOODS_CD = GV.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
+		AND W.CUST_NO = #{custNo}
+		</if>
 	</select>
 </mapper>

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

@@ -817,7 +817,7 @@
 		SELECT A.GOODS_CD
 		     , A.COMPS_GOODS_CD
 		     , G.GOODS_NM AS COMPS_GOODS_NM
-		     , 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명*/
+		     , FN_GET_GOODS_NM(G.GOODS_NM,G.GOODS_GB,G.FOREIGN_BUY_YN,G.PARALLEL_IMPORT_YN,G.ORDER_MADE_YN) AS COMPS_GOODS_FULL_NM /*상품FULL명*/
 		     , A.QTY
 		     , G.BRAND_CD
 		     , G.GOODS_STAT

+ 2 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfLogin.xml

@@ -29,6 +29,8 @@
 		     , TEMP_PASSWD_YN                                            /*임시비밀번호여부*/
 		     , IFNULL(DATEDIFF(NOW(),PASSWD_CHG_DT),0) AS PWD_CHG_DAY    /*비밀번호변경일자*/
 		     , CI                                                        /*CI본인인증여부*/
+		     , BIRTH_YMD                                                 /*생년월일*/
+		     , SEX_GB                                                    /*성별*/
 		FROM   TB_CUSTOMER A
 		WHERE  1 = 1
 		<choose>

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

@@ -1200,4 +1200,34 @@
 		AND PLAN_SQ = #{planSq}
 		AND ENTRY_CUST_NO = #{custNo}
 	</select>
+	
+	<!-- 댓글 리스트  (수정필)-->
+	<select id="getReplyList" resultType="Plan" parameterType="Plan">
+		/* TsfPlanning.getReplyList */	
+		SELECT Z.*
+		      ,(SELECT CUST_ID FROM TB_CUSTOMER WHERE CUST_NO = Z.ENTRY_CUST_NO) AS CUST_ID
+		FROM 
+		(		
+			SELECT PE.PLAN_ENTRY_SQ
+			     , PE.PLAN_SQ
+			     , PE.ENTRY_CUST_NO
+			     , DATE_FORMAT(PE.ENTRY_DT,'%Y-%m-%d') AS ENTRY_DT
+			     , PE.ENTRY_VAL1
+			     , PE.ENTRY_VAL2
+			     , PE.ENTRY_VAL3
+			     , PE.ENTRY_VAL4
+			     , PE.ENTRY_VAL5
+			     , PE.ENTRY_VAL6
+			     , PE.ENTRY_VAL7
+			     , PE.ENTRY_VAL8
+			     , PE.REG_NO
+			     , PE.REG_DT
+			     , PE.UPD_NO
+			     , PE.UPD_DT
+			FROM TB_PLAN_ENTRY PE
+			WHERE 1=1
+		    AND PE.PLAN_SQ = #{planSq}
+		    ORDER BY REG_NO DESC
+		)Z
+	</select>
 </mapper>

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

@@ -610,7 +610,7 @@
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
-				   AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60) -- 구매 확정인것만
+				   AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
 				 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
 				    ON OD.ORD_NO = ODI.ORD_NO
 				   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
@@ -646,7 +646,7 @@
 					</otherwise>
 				</choose>
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
-				AND O.CUST_NO = 100000
+				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = 'G000_10'
      			<if test="ordNo!=null and ordNo != ''">

+ 85 - 60
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -22,68 +22,93 @@
 		<!-- ORDER BY A.REG_DT DESC LIMIT 1 -->
 	</select>
 	
+	<!-- 소셜상품(=핫딜) 목록 -->
 	<select id="getSocialGoodsList" resultType="Social" parameterType="Social">
-		/* TsfSocial.getSocialGoodsList*/
-		SELECT F.* 
-			 ,  (CASE WHEN F.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = F.GOODS_CD) 
-			    ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = F.GOODS_CD) 
-			    END) AS STOCK_QTY_SUM
-			 , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-			 , CASE IFNULL((SELECT COUNT(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ),0) 
-			            WHEN 0 THEN 'N'
-			            ELSE 'Y' END AS GOODS_IMAGE_YN
-			 ,(CASE WHEN F.WISH_GOOD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
-			FROM
-			(   
-				 SELECT A.SOCIAL_SQ
-				     , A.SOCIAL_NM
-				     , A.SOCIAL_TYPE
-				     , A.SITE_CD
-				     , A.FRONT_GB
-				     , A.SOCIAL_STDT
-				     , A.SOCIAL_EDDT
-				     , A.SOCIAL_TNM
-				     , A.USE_YN
-				     , A.APPLY_GB
-				     , A.REG_DT 
-				     , B.GOODS_CD 
-				     , B.CURR_BPRICE 
-				     , B.CURR_APRICE 
-				     , B.DC_BRATE 
-				     , B.DC_ARATE 
-				     , B.DEL_YN 
-				     , B.DISP_ORD 
-				     , C.GOODS_NM 
-				     , C.GOODS_TYPE 
-				     , C.GOODS_TNM 
-				     , C.LIST_PRICE
-				     , C.MAIN_COLOR_CD 
-				     , D.BRAND_KNM 
-				     , D.BRAND_ENM 
-				     , W.CUST_NO 
-				     , W.GOODS_CD AS WISH_GOOD
+		/* TsfSocial.getSocialGoodsList */
+		SELECT F.*
+		     , CASE WHEN F.GOODS_TYPE = 'G056_N' THEN
+		                IFNULL((SELECT SUM(CURR_STOCK_QTY - BASE_STOCK_QTY)
+		                        FROM   VW_STOCK WHERE GOODS_CD = F.GOODS_CD
+		                       ),0)
+		            ELSE
+		                IFNULL((SELECT SUM(CURR_STOCK_QTY - BASE_STOCK_QTY)
+		                        FROM   VW_STOCK_COMPOSE
+		                        WHERE  GOODS_CD = F.GOODS_CD
+		                       ),0)
+		       END                           AS STOCK_QTY_SUM
+		     , (SELECT MAX(SYS_IMG_NM)
+		        FROM   TB_GOODS_IMG
+		        WHERE  GOODS_CD = F.GOODS_CD
+		        AND    COLOR_CD = F.MAIN_COLOR_CD
+		        AND    DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
+		     , CASE WHEN IFNULL((SELECT COUNT(SYS_IMG_NM)
+		                         FROM   TB_GOODS_IMG
+		                         WHERE  GOODS_CD = F.GOODS_CD
+		                         AND    COLOR_CD = F.MAIN_COLOR_CD
+		                         AND    DEFAULT_IMG_YN = 'Y'
+		                        ),0) = 0 THEN
+		                'N'
+		            ELSE
+		                'Y'
+		       END                           AS GOODS_IMAGE_YN
+		     , CASE WHEN F.WISH_GOOD IS NULL THEN
+		                'N'
+		            ELSE
+		                'Y'
+		       END                           AS WISH_YN
+		FROM   (
+		        SELECT A.SOCIAL_SQ
+		             , A.SOCIAL_NM
+		             , A.SOCIAL_TYPE
+		             , A.SITE_CD
+		             , A.FRONT_GB
+		             , A.SOCIAL_STDT
+		             , A.SOCIAL_EDDT
+		             , A.SOCIAL_TNM
+		             , A.USE_YN
+		             , A.APPLY_GB
+		             , A.REG_DT
+		             , B.GOODS_CD
+		             , B.CURR_BPRICE
+		             , B.CURR_APRICE
+		             , B.DC_BRATE
+		             , B.DC_ARATE
+		             , B.DEL_YN
+		             , B.DISP_ORD
+		             , C.GOODS_NM
+		             , C.GOODS_TYPE
+		             , C.GOODS_TNM
+		             , C.LIST_PRICE
+		             , C.MAIN_COLOR_CD
+		             , D.BRAND_KNM
+		             , D.BRAND_ENM
+		             , W.CUST_NO
+		             , W.GOODS_CD AS WISH_GOOD
 		             <choose>
-			            <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
-				     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
-			            </when>
-			            <otherwise>
-				     , ''                                                                                           AS LIKE_IT       /*위시리스트담긴상품*/
-			            </otherwise>
+		                 <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		             , IF(W.GOODS_CD IS NULL,'','likeit') AS LIKE_IT /*위시리스트담긴상품*/
+		                 </when>
+		                <otherwise>
+		             , ''                                 AS LIKE_IT /*위시리스트담긴상품*/
+		                </otherwise>
 		             </choose>
-				FROM TB_SOCIAL A INNER JOIN TB_SOCIAL_GOODS B ON A.SOCIAL_SQ = B.SOCIAL_SQ 
-				                 INNER JOIN TB_GOODS C ON B.GOODS_CD = C.GOODS_CD 
-				                 INNER JOIN TB_BRAND D ON C.BRAND_CD = D.BRAND_CD
-				                 LEFT JOIN TB_WISHLIST W ON C.GOODS_CD = W.GOODS_CD
-		                             AND W.CUST_NO  = IFNULL(#{custNo},0)
-				WHERE 1=1
-				  AND NOW() BETWEEN A.SOCIAL_STDT AND A.SOCIAL_EDDT 
-				  AND A.USE_YN = 'Y'		    		 /*사용여부*/
-				  AND A.APPLY_GB = 'A'					 /*적용구분(P:대기,A:적용,F:종료)*/
-				  AND A.FRONT_GB IN ('A',#{frontGb})	 /*프론트 구분*/
-				  AND B.DEL_YN = 'N'
-				  AND NOW() BETWEEN C.SELL_STDT AND C.SELL_EDDT
-				ORDER BY B.DISP_ORD 
-			)F
-			WHERE F.SOCIAL_SQ = #{socialSq}
+		        FROM   TB_SOCIAL A INNER JOIN TB_SOCIAL_GOODS B ON A.SOCIAL_SQ = B.SOCIAL_SQ
+		                           INNER JOIN TB_GOODS C ON B.GOODS_CD = C.GOODS_CD
+		                           INNER JOIN TB_BRAND D ON C.BRAND_CD = D.BRAND_CD
+		                           LEFT JOIN TB_WISHLIST W ON C.GOODS_CD = W.GOODS_CD
+		                                                  AND W.CUST_NO = IFNULL(#{custNo},0)
+		        WHERE  1 = 1
+		        AND    NOW() BETWEEN A.SOCIAL_STDT AND A.SOCIAL_EDDT
+		        AND    A.USE_YN = 'Y' /*사용하는소셜*/
+		        AND    A.APPLY_GB = 'A' /*적용구분(P:대기,A:적용,F:종료)*/
+		        AND    A.FRONT_GB IN ('A',#{frontGb}) /*프론트구분*/
+		        AND    B.DEL_YN = 'N' /*삭제안된상품*/
+		        AND    C.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		        AND    C.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		        AND    NOW() BETWEEN C.SELL_STDT AND C.SELL_EDDT /*판매기간*/
+		        ORDER  BY B.DISP_ORD 
+		       ) F
+		WHERE  F.SOCIAL_SQ = #{socialSq}
 	</select>
+	
 </mapper>

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

@@ -30,13 +30,14 @@
 		/* TsfWishlist.getWishListGoodsList*/
 		SELECT Z.*
 			      ,100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE 
+			      ,DATE_FORMAT(Z.REG_DT,'%Y.%m') AS REG_DT_MONTH 
 			FROM
 			(
 			WITH TAB_PLAN_GOODS AS (
 			    SELECT W.AF_LINK_CD 
 			          ,W.CONTENTS_LOC 
 			          ,W.CUST_NO 
-			          ,DATE_FORMAT(W.REG_DT,'%Y.%m') AS REG_DT 
+			          ,W.REG_DT
 			          ,CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
 			                    BG.BRAND_GROUP_ENM
 			                ELSE

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

@@ -20,10 +20,8 @@ logging:
 
 domain:
     admin: //tdadmin.style24.com
-    front: //ts5000.ipdisk.co.kr
-    style24: //tdfront.style24.com
+    front: //tdfront.style24.com
     image: //tdimage.style24.com
-    cdnimage: //tdimage.style24.com
     uximage: //tdimage.style24.com
 
 upload:

+ 389 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartChangeOptionPopupMob.html

@@ -0,0 +1,389 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+
+<!-- 옵션변경 팝업 -->
+<div class="lap cartOptionModal" id="cartOptionModal" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="popup_close">카테고리닫기</div>
+	<div class="popup_head">
+		<h2>옵션변경</h2>
+	</div>
+	<div class="popup_con">
+		<div class="area_order">
+			<div class="part_goods">
+				<div class="goods_section">
+					<div class="goods_detail">
+						<a href="javascript:;">
+							<th:block th:if="${setType.equals(cart.goodsType) or cart.selfGoodsYn.equals('N')}">
+								<span class="thumb_box" th:each="img, index : ${cart.cartImgList}">
+									<img th:src="${cart.imgPath + '/' + img.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${img.sysImgNm}" alt="" />
+								</span>
+							</th:block>
+							<th:block th:if="${!setType.equals(cart.goodsType) and cart.selfGoodsYn.equals('Y')}">
+								<th:block th:each="comp, status : ${cart.cartCompsList}">
+									<th:block th:each="color, index : ${comp.cartColorList}">
+										<th:block th:if="${color.cartOptCd1 != null and color.cartOptCd1.equals(color.optCd1)}">
+											<span class="thumb_box" th:each="img, index : ${color.cartImgList}" th:if="${img.colorCd == color.cartOptCd1}">
+												<img th:src="${cart.imgPath + '/' + img.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${img.sysImgNm}" alt="" />
+											</span>
+										</th:block>
+									</th:block>
+								</th:block>
+							</th:block>
+
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name" th:text="${cart.goodsNm}"></div>
+								</div>
+								<div class="od_calc">
+									<p class="price">
+										<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+									</p>
+								</div>
+							</div>
+						</a>
+					</div>
+				</div>
+			</div>
+
+			<th:block th:each="comp, status : ${cart.cartCompsList}">
+				<!-- 자사 일반 상품 옵션 -->
+				<th:block th:if="${!setType.equals(cart.goodsType) and 'Y'.equals(cart.selfGoodsYn)}">
+					<div class="opt_color">
+						<div class="opt_header">
+							<span class="title">컬러</span>
+							<th:block th:each="color, index : ${comp.cartColorList}">
+								<span class="info" th:if="${color.cartColorNm != null}" th:text="${color.cartColorNm}"></span>
+							</th:block>
+						</div>
+
+						<ul>
+							<li th:each="color, index : ${comp.cartColorList}" class="selfGoodsColor">
+								<a href="javascript:void(0);" th:cartDtlSq="${color.cartDtlSq}" th:classappend="${color.cartColorNm != null} ? 'on'" class="selfGoodsColorSelect" th:data="${color.optCd1}">
+									<img th:src="${cart.imgPath + '/' + color.sysImgNm} + '?RS=70'" src="#" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${color.colorNm}" alt="" />
+								</a>
+							</li>
+						</ul>
+
+						<div class="opt_size">
+							<div class="opt_header">
+								<span class="title">사이즈</span>
+							</div>
+							<div class="form_field selfGoodsSize">
+								<th:block th:each="color, index : ${comp.cartColorList}" th:if="${color.cartColorNm != null}">
+									<th:block  th:if="${color.cartColorNm != null}">
+										<th:block th:each="size, index : ${color.cartSizeList}">
+											<div>
+												<input type="radio" name="rdi-optsize" th:id="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|" th:value="${size.optCd}" th:checked="${size.cartOptCd != null}" th:disabled="${size.soldoutYn == 'Y' or cart.goodsQty > size.currStockQty}">
+												<label th:for="|${'rdi-optsize' + size.goodsCd + '-' + size.optCd}|"><span th:text="${size.optCd2}"></span></label>
+											</div>
+										</th:block>
+									</th:block>
+								</th:block>
+							</div>
+						</div>
+					</div>
+				</th:block>
+
+				<!-- 세트상품 옵션 -->
+				<th:block th:if="${setType.equals(cart.goodsType)}">
+					<span class="hiddenData">
+						<input type="hidden" class="cartDtlSq" th:value="${comp.cartDtlSq}" />
+						<input type="hidden" class="itemCd" th:value="${comp.goodsCd}" />
+						<input type="hidden" class="optCd" th:classappend="|option_${comp.goodsCd}|" th:value="${comp.optCd}"/>
+						<input type="hidden" class="optCd1" th:classappend="|option1_${comp.goodsCd}|" th:value="${comp.optCd1}"/>
+						<input type="hidden" class="optCd2" th:classappend="|option2_${comp.goodsCd}|" th:value="${comp.optCd2}"/>
+					</span>
+
+					<div class="opt_select">
+						<div class="opt_header">
+							<span class="title" th:text="${comp.goodsNm}"></span>
+						</div>
+						<div class="opt_header">
+							<span class="title">옵션1</span>
+							<span class="color" th:classappend="|chooseColorNm_${comp.goodsCd}|" th:text="${comp.colorNm}"></span>
+							<div class="form_field">
+								<input id="od_item_off" type="checkbox"><label for="od_item_off"><span>품절 제외</span></label>
+							</div>
+						</div>
+						<form class="form_wrap">
+							<div class="form_field">
+								<div class="select_custom item_opt1 colorList">
+									<div class="combo">
+										<div class="select" th:text="${comp.colorNm}"></div>
+										<ul class="list" th:data="${comp.goodsCd}">
+											<th:block th:each="color, index : ${comp.cartColorList}">
+												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+											</th:block>
+										</ul>
+									</div>
+								</div>
+							</div>
+						</form>
+					</div>
+					<div class="opt_select">
+						<div class="opt_header">
+							<span class="title">옵션2</span>
+							<span class="color" th:classappend="|chooseSizeNm_${comp.goodsCd}|" th:text="${comp.optCd2}"></span>
+						</div>
+						<form class="form_wrap">
+							<div class="form_field">
+								<th:block th:each="color, index : ${comp.cartColorList}">
+									<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
+										<div class="combo">
+											<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
+											<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
+												<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
+													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+												</th:block>
+											</ul>
+										</div>
+									</div>
+								</th:block>
+							</div>
+						</form>
+					</div>
+				</th:block>
+
+				<!-- 입점업체 -->
+				<th:block th:if="${!setType.equals(cart.goodsType) and 'N'.equals(cart.selfGoodsYn)}">
+					<span class="hiddenData">
+						<input type="hidden" class="cartDtlSq" th:value="${comp.cartDtlSq}" />
+						<input type="hidden" class="itemCd" th:value="${comp.goodsCd}" />
+						<input type="hidden" class="optCd" th:classappend="|option_${comp.goodsCd}|" th:value="${comp.optCd}"/>
+						<input type="hidden" class="optCd1" th:classappend="|option1_${comp.goodsCd}|" th:value="${comp.optCd1}"/>
+						<input type="hidden" class="optCd2" th:classappend="|option2_${comp.goodsCd}|" th:value="${comp.optCd2}"/>
+					</span>
+
+					<div class="opt_select">
+						<div class="opt_header">
+							<span class="title">옵션1</span>
+							<span class="color" th:classappend="|chooseColorNm_${comp.goodsCd}|" th:text="${comp.colorNm}"></span>
+							<div class="form_field">
+								<input id="od_item_off" type="checkbox"><label for="od_item_off"><span>품절 제외</span></label>
+							</div>
+						</div>
+						<form class="form_wrap">
+							<div class="form_field">
+								<div class="select_custom item_opt1 colorList">
+									<div class="combo">
+										<div class="select" th:text="${comp.colorNm}"></div>
+										<ul class="list" th:data="${comp.goodsCd}">
+											<th:block th:each="color, index : ${comp.cartColorList}">
+												<li th:classappend="${color.cartColorNm != null} ? 'selected'" th:data="${color.optCd1}" th:text="${color.colorNm}" th:aria-disabled="${color.soldoutYn.equals('Y') ? true : false}"></li>
+											</th:block>
+										</ul>
+									</div>
+								</div>
+							</div>
+						</form>
+					</div>
+					<div class="opt_select">
+						<div class="opt_header">
+							<span class="title">옵션2</span>
+							<span class="color" th:classappend="|chooseSizeNm_${comp.goodsCd}|" th:text="${comp.optCd2}"></span>
+						</div>
+						<form class="form_wrap">
+							<div class="form_field">
+								<th:block th:each="color, index : ${comp.cartColorList}">
+									<div class="select_custom item_opt2 sizeList" th:classappend="|${comp.goodsCd}_${color.optCd1} sizeList${comp.goodsCd}|" th:style="${color.cartColorNm != null ? 'display:block' : 'display:none'}">
+										<div class="combo">
+											<div class="select" th:classappend="|size_${comp.goodsCd}_size_nm|" th:text="${comp.optCd2}" th:data="${color.goodsCd}"></div>
+											<ul class="list setSizeSelect" th:classappend="|size_${comp.goodsCd}|" th:data="${comp.goodsCd}">
+												<th:block th:each="size, i : ${color.cartSizeList}" th:if="${color.optCd1.equals(size.optCd1)}">
+													<li th:classappend="${size.cartOptCd != null} ? selected" th:optCd="${size.optCd}" th:value="${size.optCd}" th:text="${size.optCd2}" th:aria-disabled="${color.soldoutYn.equals('Y') or size.soldoutYn.equals('Y') ? true : false}"></li>
+												</th:block>
+											</ul>
+										</div>
+									</div>
+								</th:block>
+							</div>
+						</form>
+					</div>
+				</th:block>
+			</th:block>
+
+			<div class="opt_count">
+				<div class="opt_header">
+					<span class="title">수량</span>
+				</div>
+				<div class="number_count">
+					<span class="minus"><em class="sr-only">감소</em></span>
+					<input type="text" name="goodsQty" maxlength="3" style='ime-mode:disabled' th:value="${cart.goodsQty}"/>
+					<span class="plus"><em class="sr-only">추가</em></span>
+				</div>
+			</div>
+		</div>
+		<div class="btn_group_block">
+			<button class="btn btn_dark btn_block" th:onclick="|fnChangeCartOption(${cart.cartSq})|"><span>옵션변경</span></button>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		$(".select_custom").each(function() {
+			new sCombo($(this));
+		});
+	});
+
+	// 세트상품, 입점업체 상품 컬러 변경시
+	$("#cartOptionModal .colorList > .combo > .list li").on("click", function(e) {
+		let goodsCd = $(this).parent().attr("data");
+		let optCd1 = $(this).attr("data");
+		let firstSize = "";
+		if(optCd1 != $(".option1_" + goodsCd).val()) {
+			let firstOptCd = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").attr("optcd");
+			let firstOptCd2 = $("#cartOptionModal ." + goodsCd + "_" + optCd1 + " li:first").text();
+
+			$("#cartOptionModal .chooseColorNm_" + goodsCd).text($(this).text());
+			$("#cartOptionModal .option_" + goodsCd).val(firstOptCd);
+			$("#cartOptionModal .option1_" + goodsCd).val(optCd1);
+			$("#cartOptionModal .option2_" + goodsCd).val(firstOptCd2);
+
+			$("#cartOptionModal .sizeList" + goodsCd).hide();
+			$("#cartOptionModal ." + goodsCd + "_" + optCd1).show();
+			$("#cartOptionModal ." + goodsCd + "_" + optCd1 + " .select").text(firstOptCd2);
+			$("#cartOptionModal .chooseSizeNm_" + goodsCd).text(firstOptCd2);
+		}
+	});
+
+	// 세트상품, 입점업체 상품 사이즈 변경시
+	$(".sizeList > .combo > .list li").on("click", function() {
+		$(this).parent().parent().parent().parent().parent().parent().find(".opt_header .text").text($(this).text());
+		$("#cartOptionModal .option_" + $(this).parent().attr("data")).val($(this).attr("optcd"));
+		$("#cartOptionModal .option2_" + $(this).parent().attr("data")).val($(this).text());
+	});
+
+	/* 옵션변경 > 수량조절 */
+	//수량1개 이하 감소버튼 비활성화
+	var valItemCount = $('.optModify_pop .number_count input').val();
+	if ( valItemCount == 1 ) {
+		$('.optModify_pop .number_count .minus').addClass('min_val');
+	}
+
+	// 자사 일반 상품 컬러 선택시
+	$(".selfGoodsColorSelect").on("click", function(e) {
+		let sizeHtml = "";
+		let imgHtml = "";
+		let cart = [[${cart}]];
+		let color =  [[${cart.cartCompsList[0].cartColorList}]];
+		let optCd1 = $(this).attr("data");
+
+		for(let i = 0 ; i < color.length ; i++) {
+			let size = color[i].cartSizeList;
+			for(let j = 0 ; j < size.length ; j++) {
+				if(optCd1 == size[j].optCd1) {
+					sizeHtml += "<div>";
+					sizeHtml += "<input type='radio' name='rdi-optsize' id='" + size[j].goodsCd + "-" + size[j].optCd + "' value='" + size[j].optCd + "' ";
+					if(size[j].soldoutYn == "Y" || cart.goodsQty > size[j].currStockQty) {
+						sizeHtml += "disabled = 'disabled'";
+					}
+					sizeHtml += " />\n";
+					sizeHtml += "<label for='" + size[j].goodsCd + "-" + size[j].optCd + "'><span>" + size[j].optCd2 + "</span></label>\n"
+					sizeHtml += "</div>\n";
+				}
+			}
+
+			if(optCd1 == color[i].optCd1) {
+				for (let j = 0; j < color[i].cartImgList.length; j++) {
+					let img = color[i].cartImgList[j];
+					if(optCd1 == img.colorCd) {
+						imgHtml += "<li>\n<span class='thumb'>\n";
+						imgHtml += "<img src='" + cart.imgPath + "/" + img.sysImgNm + "' onerror='this.src='" + [[${@environment.getProperty('domain.uximage')}]] + "/images/pc/thumb/bg_item_none.png' alt='" + img.sysImgNm + "' />\n";
+						imgHtml += "</span>\n</li>\n";
+					}
+				}
+			}
+		}
+
+		$(".cartOptionModal .pic_list").html(imgHtml);
+		$(".cartOptionModal .selfGoodsSize").html(sizeHtml);
+	});
+
+	function fnChangeCartOption(cartSq) {
+		let cart = [[${cart}]];
+		var cartDtlSqArr = [], itemCds = [], optCds = [];
+		var data;
+
+		if(cart.goodsType == "G056_S") {
+			$("#cartOptionModal .cartDtlSq").each(function() {
+				optCds.push($(this).parent().find(".optCd").val());
+				cartDtlSqArr.push($(this).parent().find(".cartDtlSq").val());
+				itemCds.push($(this).parent().find(".itemCd").val());
+			});
+
+			data = {
+				cartSq : cart.cartSq
+				, goodsCd : cart.goodsCd
+				, goodsType : cart.goodsType
+				, cartDtlSqArr : cartDtlSqArr
+				, itemCds : itemCds
+				, optCds : optCds
+				, goodsQty : $("input[name=goodsQty]").val()
+			}
+		} else if(cart.goodsType != "G056_S" && cart.selfGoodsYn == "Y") {
+			if($(".selfGoodsSize").find("input[name=rdi-optsize]:checked").length < 1) {
+				mcxDialog.alert("옵션을 선택해 주세요.");
+				return false;
+			}
+
+			optCds.push($(".selfGoodsSize").find("input[name=rdi-optsize]:checked").val());
+			itemCds.push(cart.goodsCd);
+			$(".selfGoodsColorSelect").each(function() {
+				if($(this).attr("cartDtlSq") > 0) {
+					cartDtlSqArr.push($(this).attr("cartDtlSq"));
+				}
+			});
+
+			data = {
+				cartSq : cart.cartSq
+				, goodsCd : cart.goodsCd
+				, goodsType : cart.goodsType
+				, cartDtlSqArr : cartDtlSqArr
+				, itemCds : itemCds
+				, optCds : optCds
+				, goodsQty : $("input[name=goodsQty]").val()
+			}
+		} else {
+			$("#cartOptionModal .cartDtlSq").each(function() {
+				optCds.push($(this).parent().find(".optCd").val());
+				cartDtlSqArr.push($(this).parent().find(".cartDtlSq").val());
+				itemCds.push($(this).parent().find(".itemCd").val());
+			});
+
+			data = {
+				cartSq : cart.cartSq
+				, goodsCd : cart.goodsCd
+				, goodsType : cart.goodsType
+				, cartDtlSqArr : cartDtlSqArr
+				, itemCds : itemCds
+				, optCds : optCds
+				, goodsQty : $("input[name=goodsQty]").val()
+			}
+		}
+
+		$.ajax( {
+			type: "POST",
+			url : '/cart/change/option',
+			contentType: 'application/json',
+			dataType : 'json',
+			data : JSON.stringify(data),
+			error : function(e) {
+				mcxDialog.alert(e.message);
+			},
+			success : function(result) {
+				mcxDialog.alert(result.message);
+				$(".closeCartOptionModal").trigger("click");
+				if(result.status == "SUCCESS") {
+					let data = {shotDelvUseYn : $("input[name=shotDelvUseYn]:checked").val()};
+					getCartList(data);
+				}
+			}
+		});
+	}
+</script>
+<!-- //옵션변경 팝업 -->
+</html>

+ 1226 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -0,0 +1,1226 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : cartListFormMob
+ * @desc	: 장바구니
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.07   xodud1202   최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<form id="cartListForm" method="post" action="/order/noMember" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+		<div class="inner shotDelvSelect">
+			<div class="od_method">
+				<div class="tbl_tit">
+					<h3>배송방법 선택</h3>
+				</div>
+				<div class="tbl tbl_radio">
+					<table>
+						<colgroup>
+							<col width="*">
+						</colgroup>
+						<tbody>
+						<tr>
+							<th class="sr-only">총알배송</th>
+							<td>
+								<div class="form_field">
+									<input type="radio" id="chk-1" name="shotDelvUseYn" value="Y" th:checked="${order.shotDelvUseYn != null and order.shotDelvUseYn.equals('Y')}">
+									<label for="chk-1">
+										<span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span>
+										<span class="icon_tag">
+											<em class="tag_stype2">총알배송</em>
+										</span>
+									</label>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th class="sr-only">총알배송 안함</th>
+							<td>
+								<div class="form_field">
+									<input id="chk-2" type="radio" name="shotDelvUseYn" value="N" th:checked="${order.shotDelvUseYn == null or !order.shotDelvUseYn.equals('Y')}">
+									<label for="chk-2">
+										<span>총알배송 안함</span>
+									</label>
+								</div>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="sec_select">
+				<div class="form_field">
+					<input id="od_item_all" type="checkbox" checked="checked"><label for="od_item_all"><span>전체선택</span></label>
+				</div>
+				<button type="button" class="btn btn_default btn_sm" onclick="deleteCart('SELECT', 'cart')"><span>선택삭제</span></button>
+			</div>
+		</div>
+		<div class="inner" th:if="${order.shotCartList.size() > 0 or order.wmsCartList.size() > 0}">
+			<!-- STYLE24 배송 -->
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">STYLE24 배송</div>
+				</div>
+				<!-- 총알 배송 -->
+				<div class="goods_area goods_bullship shotList" th:if="${order.shotCartList != null and order.shotCartList.size() > 0}">
+					<h3>총알배송 <span>오늘 자정까지 도착</span></h3>
+					<div class="goods_section cartInfo shotCartInfo" th:each="cart, status : ${order.shotCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}" />
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default btn_option_pop01" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div> <!-- 옵션변경_팝업01 호출 -->
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div> <!-- 210406_ID 추가 -->
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+					</div>
+				</div>
+				<!-- 총알 배송 -->
+				<!-- 일반 배송 -->
+				<div class="goods_area goods_basic wmsList" th:if="${order.wmsCartList != null and order.wmsCartList.size() > 0}">
+					<h3>일반배송</h3>
+					<div class="goods_section wmsCartInfo cartInfo" th:each="cart, status : ${order.wmsCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}">
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default btn_option_pop01" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div> <!-- 옵션변경_팝업01 호출 -->
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div> <!-- 210406_ID 추가 -->
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+					</div>
+				</div>
+				<!-- 일반 배송 -->
+
+				<!-- 자사 배송비 -->
+				<div class="goods_txt selfGoodsDelv" th:classappend="|delv_${order.cartDelvFeeCd}|">
+					<span class="dlvr_fee" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
+					<span class="dlvr_fee" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
+					<span>STYLE24  배송</span>
+				</div>
+
+				<div class="goods_dlvr_save" th:if="${order.wmsDelvFee > 0}">
+					<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+				</div>
+			</div>
+			<!-- //STYLE24 배송 -->
+		</div>
+
+		<div class="inner" th:if="${order.delvCartList != null and order.delvCartList.size() > 0}">
+			<!-- 업체직배송 -->
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">업체직 배송</div>
+				</div>
+				<!-- 업체직배송 -->
+				<div class="goods_area">
+					<div class="goods_section delvCartInfo cartInfo" th:each="cart, status : ${order.delvCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}">
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div>
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div>
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+
+						<!-- 입점업체 배송비 -->
+						<div class="goods_txt" th:if="${'Y'.equals(cart.addDelvFeeYn)}" th:classappend="|delv_${cart.delvFeeCd}|">
+							<span class="dlvr_fee" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
+							<span class="dlvr_fee" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
+							<span th:text="|${cart.supplyCompNm} 업체직배송|"></span>
+						</div>
+
+						<div class="goods_dlvr_save" th:if="${'Y'.equals(cart.addDelvFeeYn) and cart.delvFee > 0}">
+							<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+						</div>
+					</div>
+				</div>
+				<!-- 업체직배송 -->
+			</div>
+			<!-- //업체직배송 -->
+		</div>
+		<div class="inner">
+			<div class="area_order">
+				<div class="tit_box">
+					<h3>결제 정보</h3>
+					<span>
+						<em class="number" th:text="${order.totCartCnt}"></em>개의 상품
+					</span>
+				</div>
+				<div class="od_amount_box">
+					<dl>
+						<div>
+							<dt>상품금액</dt>
+							<dd><em class="sumListPrice" th:text="${#numbers.formatInteger(order.sumListPrice, 1, 'COMMA')}"></em>원</dd>
+						</div>
+						<div>
+							<dt>배송비</dt>
+							<dd><em class="totDelvFee" th:text="${#numbers.formatInteger(order.totDelvFee, 1, 'COMMA')}"></em>원</dd>
+						</div>
+						<div>
+							<dt>할인금액</dt>
+							<dd><span class="disc_amount"><em class="totDcAmt" id="totDcAmt" th:text="${#numbers.formatInteger(order.totDcAmt, 1, 'COMMA')}"></em>원</span></dd>
+						</div>
+					</dl>
+				</div>
+				<div class="totalprice_box">
+					<dl>
+						<dt>총 결제 예정 금액</dt>
+						<dd><span class="sumRealPayAmt" id="sumRealPayAmt" th:text="${#numbers.formatInteger(order.sumRealPayAmt + order.totDelvFee, 1, 'COMMA')}"></span>원</dd>
+					</dl>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="area_salecoupon">
+				<h4>할인코드 입력</h4>
+				<div class="form_field">
+					<div class="input_wrap form_full">
+						<label class="input_label sr-only">할인코드입력</label>
+						<input type="text" id="serialCpnNm" class="form_control" placeholder="할인코드를 입력해주세요.">
+					</div>
+					<button type="button" id="btn_salecode" class="btn btn_dark btn_sm" onclick="serialCpnApply()"><span>적용</span></button> <!-- 210406_ID 추가 -->
+				</div>
+				<div class="coupon_box">
+					<div class="coupon">
+						<button type="button" class="btn_delete"><span><em class="sr-only">쿠폰닫기</em></span></button>
+						<div>
+							<p class="cp_name"></p>
+							<p class="cp_cont">
+								<span class="cp_dc_val"></span>
+							</p>
+							<p class="cp_condition"></p>
+						</div>
+						<p class="cp_date">
+							<span class="availStdt"></span>&nbsp;~&nbsp;<span class="availEddt"></span>
+						</p>
+					</div>
+					<button type="button" class="btn_underline" id="btn_couponInfo_pop">
+						<span>사용안내</span>
+					</button>
+				</div>
+			</div>
+		</div>
+
+
+
+		<div class="inner wide">
+			<div class="od_recommend">
+				<h3>추천상품</h3>
+				<div class="swiper-container item_list">
+					<div class="swiper-wrapper">
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="od_calc_wrap" id="bottomOrderArea">
+				<button type="button" class="btn btn_dark"><span>합계 <em class="realOrderAmtText" th:text="${#numbers.formatInteger(order.sumRealPayAmt + order.totDelvFee, 1, 'COMMA')}">0</em>원</span></button>
+				<button type="button" id="btn_purchase" class="btn btn_primary"><span>구매하기 (<em class="realOrderQtyText" th:text="${order.totCartCnt}"></em>개)</span></button> <!-- 210406_ID 추가 -->
+			</div>
+		</div>
+	</form>
+
+	<!-- 쿠폰사용안내 팝업 -->
+	<div class="modal fade couponInfo_pop cartCpnInfoModal" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+				<div class="modal-header">
+					<h5 class="modal-title" id="couponInfoLabel"></h5>
+				</div>
+				<div class="modal-body">
+					<div class="pop_cont">
+						<dl>
+							<div>
+								<dt>사용조건</dt>
+								<dd class="cpnCondition"></dd>
+							</div>
+							<div class="cartCpnPubLimitQty">
+								<dt>발급수량</dt>
+								<dd class="custPubLimitQtyTxt"></dd>
+							</div>
+							<div>
+								<dt>유효기간</dt>
+								<dd class="availDt"></dd>
+							</div>
+							<div>
+								<dt>대상조건</dt>
+								<dd class="refVal"></dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //쿠폰사용안내 팝업 -->
+
+	<!-- 옵션변경 팝업 -->
+	<div id="optModifyPop01" class="popup_box optModifyPop optModifyPop01"></div>
+	<!-- //옵션변경 팝업 -->
+
+	<script th:inline="javascript">
+		let sumRealPayAmt = [[${order.sumRealPayAmt + order.totDelvFee}]];
+		let totDcAmt = [[${order.totDcAmt}]];
+		let loginInfo = [[${loginInfo}]];
+		let orderFlag = true;
+
+		$(document).ready(function() {
+			if([[${!order.shotCanYn.equals('Y')}]]) {
+				//$(".shotDelvSelect").hide();
+			}
+
+			$("#cartListForm .area_salecoupon .coupon_box").hide();
+
+			if(!loginInfo || loginInfo.custNo == null || loginInfo.custNo == 0) {
+				$("#cartListForm .area_salecoupon").parent().hide();
+			}
+		});
+
+		function cancelCartCpn() {
+			$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+			$("#cartListForm #totDcAmt").text(Number(totDcAmt).toLocaleString());
+			$("#cartListForm .area_salecoupon .coupon_box").hide();
+
+			$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt).toLocaleString());
+		}
+
+		function serialCpnApply() {
+			let cartArr = [];
+			let currPrices = [];
+			$("#cartListForm input[name=cartSqArr]:checked").each(function(index, item) {
+				cartArr.push($(this).val());
+				currPrices.push($(this).parents(".cartInfo").find("input[name=tmtbDcAmt]").val());
+			});
+
+			let data = {
+				rdCpnNm : $("#cartListForm #serialCpnNm").val(),
+				cartSqArr : cartArr,
+				currPrices : currPrices
+			}
+
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/list/serialCpnApply',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					if(result.serialCpnInfo.result == "SUCCESS") {
+						let cpnInfo = result.serialCpnInfo;
+						$("#cartListForm .area_salecoupon .coupon_box").show();
+
+						// 합계 금액
+						if(cartArr.length > 0) {
+							$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
+							$("#cartListForm #totDcAmt").text(Number(totDcAmt - cpnInfo.dcAmt).toLocaleString());
+							$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
+						}
+
+						// 쿠폰 정보
+						$("#cartListForm .area_salecoupon .cp_name").text(cpnInfo.cpnNm);
+						$("#cartListForm .area_salecoupon .cp_condition").html(cpnInfo.cpnDesc + "<span><em class='tag'>1장 보유</em></span>");
+						$("#cartListForm .area_salecoupon .availStdt").text(cpnInfo.availStdt);
+						$("#cartListForm .area_salecoupon .availEddt").text(cpnInfo.availEddt);
+						if (cpnInfo.dcWay == "G240_10") {
+							$("#cartListForm .area_salecoupon .cp_dc_val").html("<em>" + Number(cpnInfo.dcVal).toLocaleString() + "</em> 원");
+						} else if (cpnInfo.dcWay == "G240_11") {
+							$("#cartListForm .area_salecoupon .cp_dc_val").html("<em>" + cpnInfo.dcVal + "%</em>");
+						}
+
+						let conditionComment = "", refValComment = "";
+
+						if(cpnInfo.buyLimitAmt > 0) { conditionComment += "<span>" + Number(cpnInfo.buyLimitAmt).toLocaleString() + "</span>원 이상 구매 시 "; }
+						if(cpnInfo.maxDcAmt > 0) { conditionComment += "최대 <span>" +  Number(cpnInfo.maxDcAmt).toLocaleString() + "</span>원 할인"; }
+
+						if("A" == cpnInfo.applyScope) {
+							refValComment += "전체<br/>";
+						} else {
+							if(cpnInfo.refCateCnt > 0) {
+								refValComment += cpnInfo.refCateNm + " 카테고리";
+								if(cpnInfo.refCateCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refSupplyCompCnt > 0) {
+								refValComment += cpnInfo.refSupplyCompNm + " 업체";
+								if(cpnInfo.refSupplyCompCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refBrandCnt > 0) {
+								refValComment += cpnInfo.refBrandNm;
+								refValComment += " 브랜드";
+								if(cpnInfo.refBrandCnt > 2) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refGoodsCnt > 0) {
+								refValComment += cpnInfo.refGoodsNm + " 상품";
+								if(cpnInfo.refGoodsCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+						}
+						refValComment += "일부상품, 특가상품 제외";
+
+						$(".cartCpnInfoModal .modal-header").html('<h5 class="modal-title" id="couponInfoLabel">' + cpnInfo.cpnNm + '</h5>');
+
+						if(conditionComment != "") { $(".cartCpnInfoModal .cpnCondition").html(conditionComment); }
+						else { $(".cartCpnInfoModal .cartCpnCondition").hide(); }
+
+						if(cpnInfo.custPubLimitQty > 0) { $(".cartCpnInfoModal .custPubLimitQtyTxt").html("1인 최대 <span>" + Number(cpnInfo.custPubLimitQty).toLocaleString() + "</span>매"); }
+						else { $(".cartCpnInfoModal .cartCpnPubLimitQty").hide(); }
+
+						$(".cartCpnInfoModal .availDt").html('<span>' + cpnInfo.availStdtTime + "</span> ~ <span>" + cpnInfo.availEddtTime + "</span>");
+						$(".cartCpnInfoModal .refVal").html(refValComment);
+					} else {
+						mcxDialog.alert(result.serialCpnInfo.result);
+					}
+				}
+			});
+		}
+
+		$("input[name=cartSqArr]").on("change", function(e) {
+			changeCartSqArr();
+		});
+
+		function changeCartSqArr() {
+			let cartArr = [];
+
+			// 선택된 장바구니 번호
+			$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+				cartArr.push($(this).val());
+			});
+
+			// 선택된 장바구니 정보 가공
+			let data = {	cartSqArr : cartArr }
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/change/goods/list',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					fnChangeCartListInfo(result);
+				}
+			});
+		}
+
+		function fnChangeCartListInfo(order) {
+			let shotList = order.shotCartList;
+			let wmsList = order.wmsCartList;
+			let delvList = order.delvCartList;
+			let cartList = new Array();
+
+			// 다다익선 정보 숨김
+			$("#cartListForm .applyTmtb").hide();
+			$("#cartListForm .notApplyTmtb").hide();
+
+			// 장바구니 각 상품 가격 정보 할인 전으로 변경
+			$("#cartListForm .cartInfo input[name=cartSq]").each(function() {
+				if($(this).parent().find(".calc_box .price_org").text() != "") {
+					$(this).parent().find(".calc_box .price_sale").text($(this).parent().find(".calc_box .price_org").text());
+					$(this).parent().find(".calc_box .price_org").remove();
+				}
+			});
+
+			$("#cartListForm").find(".delvFeeArea").html("<div class='info_dlvr'><span class='dlvr_fee'>배송비 무료</span></div>");
+			for(let i = 0 ; i < shotList.length ; i++) {
+				cartList.push(shotList[i]);
+				$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
+					if(shotList[i].cartSq == $(this).val()) {
+						let shot = shotList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+
+						// 다다익선 할인가 적용
+						if(shot.tmtbDcAmt < shot.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(shot.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(shot.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(shot.tmtbDcAmt);
+						}
+					}
+				});
+			}
+
+			for(let i = 0 ; i < wmsList.length ; i++) {
+				cartList.push(wmsList[i]);
+				$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
+					if(wmsList[i].cartSq == $(this).val()) {
+						let wms = wmsList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+
+						// 다다익선 할인가 적용
+						if(wms.tmtbDcAmt < wms.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(wms.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(wms.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(wms.tmtbDcAmt);
+						}
+					}
+				});
+			}
+
+			// 자사 상품 배송비
+			if(order.wmsDelvFee == 0) {
+				$(".selfGoodsDelv").html("<span class='dlvr_fee'>배송비 무료</span>");
+			} else {
+				let html = "<span class='dlvr_fee'>배송비 <em>" + Number(order.wmsDelvFee).toLocaleString() + "</em> 원</span><a href='#' class='btn_popup_save'>배송비 SAVE 상품 보기</a>";
+				$(".selfGoodsDelv").html(html);
+			}
+
+			for(let i = 0 ; i < delvList.length ; i++) {
+				cartList.push(delvList[i]);
+				$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
+					if(delvList[i].cartSq == $(this).val()) {
+						let delv = delvList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "N") {
+						}
+
+						// 다다익선 할인가 적용
+						if(delv.tmtbDcAmt < delv.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(delv.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(delv.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(delv.tmtbDcAmt);
+						}
+
+						if(delv.delvFee == 0) {
+							$(".delvList").find(".delv_" + delv.delvFeeCd).html("<span class='dlvr_fee'>배송비 무료</span><span class='dlvr_fee'><em>" + delv.supplyCompNm + "</em> 업체직배송</span>");
+						} else {
+							let html = "<div className='order_delivery'><span class='dlvr_fee'>배송비 <em>" + Number(delv.delvFee).toLocaleString() + "</em>원</span><span class='dlvr_shop'><em>" + delv.supplyCompNm + "</em> 업체직배송</span><a href='#' className='btn_popup_save'>배송비 SAVE 상품 보기</a></div>";
+							$(".delvList").find(".delv_" + delv.delvFeeCd).html(html);
+						}
+					}
+				});
+			}
+
+			// 결제 총액 영역 수정
+			$("#cartListForm .checkSelectCartListCnt").text(Number(order.totCartCnt).toLocaleString());
+			$("#cartListForm .sumListPrice").text(Number(order.sumListPrice).toLocaleString());
+			$("#cartListForm .totDelvFee").text(Number(order.totDelvFee).toLocaleString());
+			sumRealPayAmt = order.sumRealPayAmt + order.totDelvFee;
+			totDcAmt = order.totDcAmt;
+
+			// 하단 구매하기 버튼 수량 및 금액 변경
+			$("#bottomOrderArea .realOrderQtyText").text(Number(order.totCartCnt).toLocaleString());
+			$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt).toLocaleString());
+
+			// 할인코드 쿠폰 금액 재확인
+			if($("#cartListForm #serialCpnNm").val()) {
+				serialCpnApply();
+			} else {
+				$("#cartListForm .totDcAmt").text(Number(totDcAmt).toLocaleString());
+				$("#cartListForm .sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+				cancelCartCpn();
+			}
+		}
+
+		function fnOrderValidation(list, listIndex, cartSqArr, allYn) {
+			// listIndex가 -1이면 (마지막이 지난후)
+			if(listIndex ==  - 1) {
+				if(allYn == "Y" && orderFlag) {
+					$("#cartListForm").submit();
+				} else {
+					if(orderFlag) {
+						let html	 = "<input type='hidden' name='cartSqArr' value='" + cartSqArr + "' />";
+						html		+= "<input type='hidden' name='shotDelvUseYn' value='" + $("input[name=shotDelvUseYn]:checked").val() + "' />";
+						$("#cartInfoForm").html(html);
+						$("#cartInfoForm").submit();
+					}
+				}
+			}
+
+			let info = list[listIndex];
+			let removeCartSq = 0, updateCartSq = 0, goodsQty = 0;
+			listIndex++;
+
+			// list[listIndex]가 null이 아니라면
+			if(info != null) {
+				if (info.ordCanYn == "N") {		// 주문 불가
+					let message = info.goodsNm + " 상품은 구매 할 수 없습니다. 제외하고 계속 주문하시겠습니까?";
+					fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn);
+				} else if (info.soldoutYn == "Y") {		// 품절
+					if (info.goodsStat == "G008_70" || info.ordCanQty < info.minOrdQty) {		// 상품 상태가 품절이거나 주문 가능 수량이 최소주문수량보다 적을경우
+						let message = info.goodsNm + " 상품은 품절입니다. 제외하고 계속 주문하시겠습니까?";
+						fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn)
+					} else if (info.goodsQty < info.ordCanQty) {		// 주문 가능 수량이 0일경우
+						let message = info.goodsNm + "의 " + info.colorNm + " 옵션이 품절되었습니다. 제외하고 계속 주문하시겠습니까?";
+						fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn)
+					} else if (listIndex < list.length) {
+						// 혹시 else일 경우
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				} else if (info.ordCanQty < info.goodsQty) {		// 최소 주문 수량보다 장바구니에 적게 들어왔을 경우
+					let message;
+					if ("G056_S" == info.goodsType) {
+						message = info.goodsNm + " 의" + info.itemNm + "/" + info.colorNm + "/" + info.optCd2 + "의 수량이 부족합니다.\n구매가능 수량은 " + info.ordCanQty + "개입니다.\n구매가능 수량만큼 주문하시겠습니까?";
+					} else {
+						message = info.goodsNm + " 의" + info.colorNm + "/" + info.optCd2 + "의 수량이 부족합니다.\n구매가능 수량은 " + info.ordCanQty + "개입니다.\n구매가능 수량만큼 주문하시겠습니까?";
+					}
+
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (info.goodsQty < info.minOrdQty) {
+					let message = info.goodsNm + " 의 최소 구매수량은 " + info.minOrdQty + "개입니다.\n최소 구매 수량으로 주문하시겠습니까?";
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (info.goodsQty > info.maxOrdQty) {
+					let message = info.goodsNm + " 의 최대 구매 사능 수량은 " + info.maxOrdQty + "개입니다. 최대 구매 가능한 수량으로 주문하시겠습니까?";
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (listIndex < list.length) {
+					fnOrderValidation(list, listIndex, cartSqArr, allYn);
+				} else {
+					fnOrderValidation(list, -1, cartSqArr, allYn);
+				}
+			} else {
+				fnOrderValidation(list, -1, cartSqArr, allYn);
+			}
+		}
+
+		function fnUpdateConfirmChangeQty(message, cartSq, goodsQty, list, listIndex, cartSqArr, allYn) {
+			mcxDialog.confirmC(message, { //내용
+				btn     : ["취소", "확인"],
+				btnClick: function (index) {
+					if (index == 1) { //button1 일때 처리문
+						orderFlag = false; return false;
+					} else {	//button2 일때 처리문
+						updateGoodsQty(cartSq, goodsQty);
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				}
+			});
+		}
+
+		function fnRemoveCartSqConfirm(message, cartSqArr, cartSq, list, listIndex, allYn) {
+			mcxDialog.confirmC(message, { //내용
+				btn     : ["취소", "확인"],
+				btnClick: function (index) {
+					if (index == 1) { //button1 일때 처리문
+						orderFlag = false; return false;
+					} else {	//button2 일때 처리문
+						fnCheckOffCartSqArr(cartSqArr, info.cartSq);
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				}
+			});
+		}
+
+		function fnCheckOffCartSqArr(cartSqArr, cartSq) {
+			// 체크박스 해제
+			$("#cartListForm input[name=cartSqArr]").each(function () {
+				if ($(this).val() == cartSq) {
+					$(this).prop("checked", false);
+				}
+			});
+
+			// 장바구니 선택된것 삭제 > cartSq 0으로 변경
+			for (let i = 0; i < cartSqArr.length; i++) {
+				if (cartSqArr[i] == cartSq) {
+					cartSqArr[i] = 0;
+				}
+			}
+		}
+
+		// 주문하기
+		function fnSubmitNoMember(cartSq) {
+			let cartSqArr = [];
+			orderFlag = true;
+
+			if($("#cartListForm input[name=cartSqArr]:checked").length < 1) {
+				mcxDialog.alert("구매하실 상품을 선택해주세요.");
+				return false;
+			}
+
+			if(loginInfo == null || loginInfo.custNo == null || loginInfo.custNo == 0) {
+				var btn = ["비회원 구매", "로그인 후 구매"];
+				mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
+					btn: btn,
+					btnClick: function(index){
+						if (index == 1){ //button1 일때 처리문
+							if(cartSq == "all") {
+								// 선택된 장바구니 번호
+								$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+									cartSqArr.push($(this).val());
+								});
+
+								fnOrderCheck(cartSqArr, 0, "Y");
+							} else {
+								fnOrderCheck(cartSq, 0, "N");
+							}
+						} else {	//button2 일때 처리문
+							location.href="/signin";
+						}
+					}
+				});
+			} else {
+				if(cartSq == "all") {
+					// 선택된 장바구니 번호
+					$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+						cartSqArr.push($(this).val());
+					});
+
+					fnOrderCheck(cartSqArr, loginInfo.custNo, "Y");
+				} else {
+					fnOrderCheck(cartSq, loginInfo.custNo, "N");
+				}
+			}
+		}
+
+		// 주문 데이터 밸리데이션 체크
+		function fnOrderCheck(cartSq, custNo, allYn) {
+			// 선택된 장바구니 정보 가공
+			let data = {	  cartSqArr : cartSq
+				, custNo : custNo
+			}
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/order/list/check',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					if(result == null || result.length == 0) {
+						mcxDialog.alert("주문 가능한 상품이 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+					} else {
+						fnOrderValidation(result, 0, cartSq, allYn);
+					}
+				}
+			});
+		}
+
+		//옵션변경 팝업열기
+		function fnChangeCartOptCd(cartSq) {
+			$.ajax( {
+				type: "POST",
+				url : '/cart/goods/info',
+				dataType : 'html',
+				data : {cartSq : cartSq},
+				success : function(result) {
+					$("#cartOptionModal").remove();
+					$("#optModifyPop01").html(result);
+					$('#optModifyPop01').show().addClass("active");
+					$("body").css({"overflow":"hidden"});
+				}
+			});
+		}
+
+		// 장바구니 구매 수량 변경
+		function updateGoodsQty(cartSq, goodsQty) {
+			let url = '/cart/update/goodsQty';
+			// 선택된 장바구니 정보 가공
+			let data = {	  cartSq : cartSq
+				, goodsQty : goodsQty
+			}
+			let jsonData = JSON.stringify(data);
+
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				//alert(result.changeQty);
+			});
+		}
+
+		// 페이지 이동
+		function fnGoToGoodsDetail(goodsCd) {
+			cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+		}
+
+		// 전체선택 버튼
+		$("#od_item_all").on("change", function() {
+			if($("#od_item_all").is(":checked")) {
+				$("input[name=cartSqArr]").prop("checked", true);
+				changeCartSqArr();
+			} else {
+				$("input[name=cartSqArr]").prop("checked", false);
+				// 하단 합계금액, 구매하기 수량 변경
+				$("#cartListForm .realOrderAmtText").text("0");
+				$("#cartListForm .realOrderQtyText").text("0");
+				$("#cartListForm .area_order .number").text("0");
+				$("#cartListForm .od_amount_box .sumListPrice").text("0");
+				$("#cartListForm .od_amount_box .totDelvFee").text("0");
+				$("#cartListForm .od_amount_box .totDcAmt").text("0");
+				$("#cartListForm .totalprice_box .sumRealPayAmt").text("0");
+			}
+		});
+
+		//수량조절 이벤트
+		$(document).on('click','.optModifyPop01 .number_count .minus',function(e){
+			var $input = $(this).parent().find('input');
+			var count = parseInt($input.val()) - 1;
+			count = count < 1 ? 1 : count;
+			$input.val(count);
+			$input.change();
+			//수량1개 이하 감소버튼 비활성화
+			if ($input.val() == 1) {
+				$('.optModifyPop01 .number_count .minus').addClass('min_val');
+			}
+			return false;
+		}).on('click','.optModifyPop01 .number_count .plus',function(e){
+			var $input = $(this).parent().find('input');
+			$input.val(parseInt($input.val()) + 1);
+			$input.change();
+			//수량2개 이상부터 감소버튼 활성화
+			$('.optModifyPop01 .number_count .minus').removeClass('min_val');
+			return false;
+		}).on('keyup','.optModifyPop01 .number_count input[type=text]',function(e){
+			//텍스트, 0 입력금지
+			$(this).val($(this).val().replace(/[^1-9]/g,""));
+		});
+
+		/* 팝업 - 옵션변경 > 컬러선택 표기 */
+		$(document).on('click','.optModifyPop .opt_color ul li a',function(e){
+			$(this).parents('.opt_color').find('li a').removeClass('on');
+			$(this).addClass('on');
+			var optColor = $('.optModifyPop .opt_color ul li a.on img').attr('alt');
+			$('.optModify_pop .opt_color .opt_header .color').text(optColor);
+			return false;
+		});
+	</script>
+</th:block>
+</body>
+</html>

+ 101 - 11
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -18,53 +18,128 @@
  -->
 <body>
 <th:block layout:fragment="content">
+	<main role="" id="" class="container od">
+		<section class="content shopping_bag" id="cartAjaxList">
+			<!-- 장바구니 내용 -->
+		</section>
 
+		<!-- 옵션변경_팝업01 -->
+		<div id="optModifyPop01" class="popup_box optModifyPop optModifyPop01">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>옵션변경</h2>
+				</div>
+				<div class="popup_con"></div>
+			</div>
+		</div>
+		<!-- //옵션변경_팝업01 -->
+
+		<!-- 옵션변경_팝업02 -->
+		<div id="optModifyPop02" class="popup_box optModifyPop optModifyPop02">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>옵션변경</h2>
+				</div>
+				<div class="popup_con"></div>
+			</div>
+		</div>
+		<!-- //옵션변경_팝업02 -->
+
+		<!-- 다다익선 할인 대상_팝업 -->
+		<div id="moresalePop" class="popup_box moresalePop">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>다다익선 할인 상품</h2>
+					<div class="area_benefit">
+						<span class="tag primary">SALE</span>
+						<p>
+							<span>10만원 이상 구매 시 1만원 할인</span>
+							<span>5개 이상 구매 시 1만원 할인</span>
+						</p>
+					</div>
+				</div>
+				<div class="popup_con">
+
+				</div>
+			</div>
+		</div>
+		<!-- //다다익선 할인 대상_팝업 -->
+
+		<!-- 배송비 SAVE_팝업 -->
+		<div id="dlvrSavePop" class="popup_box dlvrSavePop">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>배송비 SAVE 상품</h2>
+				</div>
+				<div class="popup_con">
+
+				</div>
+			</div>
+		</div>
+		<!-- //배송비 SAVE_팝업 -->
+	</main>
+
+	<script src="/ux/mo/js/swiper.min.js"></script>
+	<link rel="stylesheet" type="text/css" href="/ux/mo/css/swiper.min.css" />
 
 <script th:inline="javascript">
 	$(document).ready(function(){
 		// 1. 타이틀설정
 		$("#htopTitle").text("쇼핑백");
 
+		// 장바구니 상품 정보 select
+		getCartList();
+
 		//추천상품_슬라이드
 		var od_recommend_slide = new Swiper('.od_recommend .swiper-container', {
 			slidesPerView: 2,
 			spaceBetween: 8,
-			centerMode: true,
+			centerMode: true
 		});
 
 		//배송요청사항
-		var my_deilivery_selecter = new sCombo('.my .ship_request .select_custom');
+		// var my_deilivery_selecter = new sCombo('.my .ship_request .select_custom');
+
+		//상품옵션변경 팝업 > 컬러선택 표기
+		$(document).on('change','input[name=shotDelvUseYn]',function(e){
+			let data = {shotDelvUseYn : $("input[name=shotDelvUseYn]:checked").val()};
+			getCartList(data);
+		});
 
 		//옵션변경_팝업01
 		$(document).on("click", ".btn_option_pop01", function(){
-			$("#optModifyPop01 .popup_con").load("popup_optModify01.html");
-			$('#optModifyPop01').show().addClass("active");
-			$("body").css({"overflow":"hidden"});
+			//$("#optModifyPop01 .popup_con").load("popup_optModify01.html");
+			/*$('#optModifyPop01').show().addClass("active");
+			$("body").css({"overflow":"hidden"});*/
 		});
 
 		//옵션변경_팝업02
 		$(document).on("click", ".btn_option_pop02", function(){
-			$("#optModifyPop02 .popup_con").load("popup_optModify02.html");
+			//$("#optModifyPop02 .popup_con").load("popup_optModify02.html");
 			$('#optModifyPop02').show().addClass("active");
 			$("body").css({"overflow":"hidden"});
 		});
 
 		//다다익선 할인 대상_팝업
 		$(document).on("click", ".btn_moresale_pop", function(){
-			$("#moresalePop .popup_con").load("popup_moresale.html");
+			//$("#moresalePop .popup_con").load("popup_moresale.html");
 			$('#moresalePop').show().addClass("active");
 			$("body").css({"overflow":"hidden"});
 		});
 
 		//배송비 SAVE_팝업
 		$(document).on("click", ".btn_popup_save", function(){
-			$("#dlvrSavePop .popup_con").load("popup_dlvrSave.html");
+			//$("#dlvrSavePop .popup_con").load("popup_dlvrSave.html");
 			$('#dlvrSavePop').show().addClass("active");
 			$("body").css({"overflow":"hidden"});
 		});
 
 		//팝업_닫기
-		$('.popup_close').on("click",function(){
+		$(document).on("click", ".popup_close", function(){
 			$('.popup_box').hide();
 			$('.popup_box').removeClass('active');
 			$("body").css({"overflow":"visible"});
@@ -72,15 +147,30 @@
 
 		//팝업 - 쿠폰사용안내
 		$(document).on('click','#btn_couponInfo_pop',function(e){
-			$("#couponInfoPop .modal-content").load("popup_couponInfo.html");
+			//$("#couponInfoPop .modal-content").load("popup_couponInfo.html");
 			$("#couponInfoPop").modal("show");
 			return false;
 		});
 		$("#couponInfoPop_close").click(function() {
 			$("#couponInfoPop").modal("hide");
 		});
+	});
 
-	})
+	function getCartList(parameter) {
+		// 장바구니 정보 조회
+		$.ajax( {
+			type: "POST",
+			url : '/cart/goods/list',
+			data : parameter,
+			dataType : 'html',
+			success : function(result) {
+				if (result != null) {
+					$("#cartListForm").remove();
+					$("#cartAjaxList").html(result);
+				}
+			}
+		});
+	}
 </script>
 
 </th:block>

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

@@ -23,7 +23,7 @@
 					<div class="item_state">
 						<a href="javascript:void(0);" class="itemLink">
 							<div class="itemPic">
-								<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=40'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 							</div>
 							<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA</p>
 							<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성</div>

+ 28 - 37
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -49,7 +49,7 @@
 							<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
 															or #strings.contains(goodsImg.sysImgNm,'_L1.')
 															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-							<div class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></div></div>
+							<div class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></div></div>
 							</th:block>
 						</div>
 						<!-- Add Pagination -->
@@ -103,7 +103,7 @@
 					<ul>
 						<li th:each="goodsOption1, status : ${goodsOption1List}">
 							<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
-								<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm}" alt="">
+								<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
 							</a>
 						</li>
 					</ul>
@@ -219,7 +219,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_M3.')
 																					or #strings.contains(goodsImg.sysImgNm,'_M4.')
 																					or #strings.contains(goodsImg.sysImgNm,'_M5.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 						</th:block>
 					</div>
 				</div>
@@ -241,7 +241,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_D3.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D4.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 						</th:block>
 					</div>
 				</div>
@@ -273,7 +273,7 @@
 				<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01.')}">
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" >
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=360'}" alt="">
 							</th:block>
 					</div>
 				</div>
@@ -405,7 +405,7 @@
 							<div class="swiper-slide"  th:each="bestReview, status : ${bestReviewList}"  >
 								<!-- 베스트 리뷰 등록시 노출 -->
 								<div class="best_review">
-									<a href="javascript:void(0);">
+									<a href="javascript:void(0);" th:onclick="cfGoodsReviewDetail([[${goodsInfo.goodsCd}]],'Y', '',[[${bestReview.reviewSq}]])">
 										<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.score*100/5), 0,0)}">
 											<span class="star">
 												<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
@@ -572,7 +572,7 @@
 							<ul>
 								<li th:each="goodsOption1, status : ${goodsOption1List}">
 									<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
-										<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm}" alt="">
+										<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
 									</a>
 								</li>
 							</ul>
@@ -1607,7 +1607,7 @@
 			$(".pic_list > div").hide();
 			$(".pic_list > div").eq(pic_index).fadeIn();
 		});
-		
+
 		//슬라이드 - 베스트리뷰팝업 
 		var bestreviewdetailSwiper = new Swiper('.pd_bestreviewdetail_pop .area_slider .swiper-container', {
 			observer: true,
@@ -1630,31 +1630,30 @@
 			},
 		});
 
-		//팝업 - 리뷰
-		$(document).on('click','#btn_pdReview_pop',function(e){
-			$("#pdReviewPop").modal("show");
-			$('#pdReviewPop .modal-body .pop_cont').load('pd_review_pop.html');
-			return false;
-		})
+		$(document).on('click','.pd_bestreviewdetail_pop .thumblist ul li',function(e){
 
-		//팝업 - 베스트리뷰
-		$(document).on('click','#btn_pdBestReview_pop a',function(e){
-			$("#pdBestReviewPop").modal("show");
-			return false;
-		})
+			$(this).parents(".swiper-slide").find(".review > .pic > .thumb").empty();
+			$(this).parents(".swiper-slide").find(".thumblist ul li .pic").removeClass('active');
+			$(this).find(".pic").addClass('active');
 
-		//팝업 - 포토/영상 리뷰 (detail)
-		$(document).on('click','.area_rv_photo .photo_list a, .area_rv_all .review_list .photo_list a, .pd_photoreviewlist_pop .photo_list ul li a',function(e){
-			$("#pdPhotoReviewDetailPop").modal("show");
+			var thumbIndex = $(this).index();
+			var thumbImg = $(this).find('.pic .thumb').attr('style');
+			var thumbImgSrc = thumbImg.split("background-image:url(")[1];
+			thumbImgHtml = "<img src="+ thumbImgSrc +" alt=''>";
+			$(this).parents(".swiper-slide").find(".review > .pic > .thumb").append(thumbImgHtml);
+			
 			return false;
-		})
-
-		//팝업 - 포토/영상 리뷰 (list)
-		$(document).on('click','#btn_more_photoreview',function(e){
-			$("#pdPhotoReviewListPop").modal("show");
+		});
+			
+		// 포토,베스트리뷰숨김
+		var review_open=$(".btn_review_open");
+		$(document).on('click','.btn_review_open',function(e){
+			$(this).toggleClass('active');
+			$(this).next(".review_list").toggleClass('active');
 			return false;
-		})
-
+		});
+		
+		
 		//팝업 - 구매하기 > 옵션선택 > 옵션셀렉트팝업
 		$(document).on('click','.Purchase_pop .option_result .option_open',function(e){
 			$(".Purchase_pop .pop_option_select").show();
@@ -1666,14 +1665,6 @@
 			return false;
 		});
 
-		// 포토,베스트리뷰숨김
-		var review_open=$(".btn_review_open");
-		$(document).on('click','.btn_review_open',function(e){
-			$(this).toggleClass('active');
-			$(this).next(".review_list").toggleClass('active');
-			return false;
-		});
-		
 		fnOptionSoldout();
 		
 		// 광고 스크립트용

+ 14 - 23
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html

@@ -17,7 +17,7 @@
 <!-- 상품문의 리스트 내용 -->
 <form id="goodsQnaForm" name="goodsQnaForm" action="#" th:action="@{'/goods/qna/list'}">
 <input type="hidden" name="pageNo"  value ="1"/>
-<input type="hidden" name="pageSize" value ="20"/>
+<input type="hidden" name="pageSize" value ="3"/>
 <input type="hidden" name="relGoodsCd" th:value ="${goodsInfo.goodsCd}"/>
 <div class="pd_qnalist">
 	<div class="info_txt">
@@ -62,7 +62,7 @@
 </div>
 </form>
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+<script src="/ux/plugins/gaga/gaga.infinite.scroll.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
@@ -93,6 +93,7 @@
 	}
 
 	var fnGoodsQnaListSearch = function() {
+		fnGoodsQnaInfiniteScrollInit();
 		gagaInfiniteScroll.getHistory();
 	}
 
@@ -154,33 +155,23 @@
 
 	// 인피니트 스크롤 초기화
 	var fnGoodsQnaInfiniteScrollInit = function(){
-		 sessionStorage.removeItem(document.location.href);
+		// sessionStorage.removeItem(document.location.href);
+		History.replaceState(null, null);
+		gagaInfiniteScroll.pageStatus = {
+				  pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
+				, loadPage : 0      // 로드할 페이지
+				, loadAlign : 'not' // 로드 상태(prev, next, not)
+				, historyScroll : 0 //
+				, nowPage : null    // 현재 페이지
+				, pageUrl : {       // page url
+				}
+		}
 		//History 초기화
 		$("#listBox").html("");
 	}
 	
-	// 왜 안될가?
-	// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
-	$(window).on("pageshow", function(event) {
-		if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
-			var historyData = sessionStorage.getItem(document.location.href);
-			if(historyData!=null){
-				historyData = JSON.parse(historyData);
-			}else{
-				historyData = {};
-			}
-			fnGoodsQnaListSearch();
-		}else{
-			fnGoodsQnaInfiniteScrollInit();
-			fnGoodsQnaListSearch();
-		}
-
-	});
-	
-	
 	$(document).ready( function() {
 		fnGoodsQnaListSearch();
-		
 	});
 	
 /*]]>*/

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

@@ -458,7 +458,7 @@
 				</li>
 			</ul>
 			<!-- 포토영상 게시글 최대 7개 & 버튼노출 -->
-			<div th:if="${#lists.size(photoReviewList) >= 8}">
+			<div th:if="${#lists.size(photoReviewList) >= 1}">
 				<div>
 					<button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${goodsInfo.goodsCd}]])"><span>더 보기</span></button>
 				</div>	

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

@@ -19,7 +19,7 @@
 <div class="shareWrap" th:with="stylelUrl=${@environment.getProperty('domain.front')}, imgGoodsUrl=${@environment.getProperty('upload.goods.view')}">
 	<div id="layerShare" class="setShare open">
 		<span>
-			<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm}');|"><span>카카오톡</span></button>
+			<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=80'}');|"><span>카카오톡</span></button>
 			<button type="button" class="fb" th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '', '');|"><span>페이스북</span></button>
 			<button type="button" class="tw" th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm+ '#style24몰'}', '', '');|"><span>트위터</span></button>
 			<button type="button" class="url btn_copy"><span>URL</span></button>

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

@@ -31,7 +31,7 @@
 						<div class="item_state">
 							<a href="javascript:void(0);" class="itemLink">
 								<div class="itemPic">
-									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=70'}">
 								</div>
 								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 								<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

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

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

@@ -23,7 +23,7 @@
 					<div class="item_state">
 						<a href="javascript:void(0);" class="itemLink">
 							<div class="itemPic">
-								<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=40'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 							</div>
 							<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA</p>
 							<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성</div>

+ 168 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewDetailFormMob.html

@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsReviewDetailFormMob.html
+ * @desc	: 상품평 상세 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.07   eskim		최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+	<div class="modal-content">
+		<div class="modal-header">
+			<th:block th:if="${review.bestYn == 'Y'}">
+			<h5 class="modal-title" id="exampleFullLabel">베스트 리뷰</h5>
+			</th:block>
+			<th:block th:unless="${review.bestYn == 'Y'}">
+			<h5 class="modal-title" id="exampleFullLabel">
+				<button type="button" id="btn_more_photoreview"></button>
+				포토/영상리뷰
+			</h5>
+			</th:block>
+		</div>
+		<div class="modal-body" th:if="${reviewList != null and !reviewList.empty}">
+			<div class="pop_cont" th:each="review, status : ${reviewList}" >
+				<!-- 리뷰사진영역 -->
+					<div class="area_slider">
+						<div class="swiper-container thumb_list">
+							<div class="swiper-wrapper">
+								<th:block th:if="${review.reviewAttachList != null and !review.reviewAttachList.empty}" >
+								<th:block th:each="reviewAttach, attachStatus : ${review.reviewAttachList}" th:if="${attachStatus.first}">
+								<div class="swiper-slide">
+									<div class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}">
+										<th:block th:if="${reviewAttach.fileGb == 'M'}">
+											<video poster="http://cdn.011st.com/11dims/resize/1999x1999/quality/75/11src/review/10201202/3121412332/2e66698576d64c5c9977a6fe6606008d.jpg" muted="muted" preload="metadata" controls="controls">
+											<source src="http://snsvideo.11st.co.kr/movie/item/www/675/67518524_06_1_C1.mp4" type="video/mp4">
+										</video>
+										</th:block>
+										<th:block th:unless="${reviewAttach.fileGb == 'M'}">
+											<img th:src="${imgUrl+'/'+reviewAttach.sysFileNm}" alt="">
+										</th:block>
+									</div>
+								</div>
+								</th:block>
+								</th:block>
+								<th:block th:unless="${review.reviewAttachList != null and !review.reviewAttachList.empty}">
+									<div class="swiper-slide"><div class="thumb nodata"><img th:src="${imgGoodsUrl+'/'+review.sysImgNm+'?RS=358'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" alt=""></div></div><!-- 이미지 없으면 calss .nodata  -->
+								</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				<!-- //리뷰사진영역 -->
+				<!-- 리뷰내용 -->
+				<div class="pd_review best">
+					<div class="area_rv_all">
+						<div class="btn_review_open">리뷰오픈</div>
+						<div class="review_list">
+							<ul>
+								<li>
+									<div class="review">
+										<div class="info_box">
+											<div class="star_score" h:with="starScore=${#numbers.formatDecimal((review.score*100/5), 0,0)}">
+												<span class="star">
+													<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
+												</span>
+											</div>
+											<div class="writer">
+												<span class="wr_id" th:text="${review.maskingCustId}">ab2****</span>
+												<span class="wr_date" th:text="${review.regDt}">2020.07.15</span>
+											</div>
+										</div>
+										<div class="response_box">
+											<div>
+												<dl>
+													<div th:if="${review.goodsOptionList != null and !review.goodsOptionList.empty}" th:each="reviewGoods, goodsStatus : ${review.goodsOptionList}">
+														<dt >구매옵션</dt>
+														<dd th:text="${reviewGoods.optCd1 +' / '+ reviewGoods.optCd2}">베이지 / 100</dd>
+													</div>
+													<div>
+														<dt>키/몸무게</dt>
+														<dd><th:block th:if="${not #strings.isEmpty(review.height)}" th:text="|${review.height}cm / |"></th:block> 
+															<th:block th:if="${not #strings.isEmpty(review.weight)}" th:text="|${review.weight}kg|"></th:block>
+														</dd>
+													</div>
+												</dl>
+											</div>
+										</div>
+										<div class="txt_review_box">
+											<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.reviewContent))}">옷</p>
+										</div>
+										<div class="response_box2"  th:if="${not #strings.isEmpty(review.sizeGb)}">
+											<div>
+												<dl>
+													<div>
+														<dt>사이즈</dt>
+														<dd th:text="${review.scoreSizeNm}">작음</dd>
+													</div>
+													<div>
+														<dt>컬러</dt>
+														<dd th:text="${review.scoreColorNm}">밝음</dd>
+													</div>
+													<th:block th:if="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
+													<div>
+														<dt>핏</dt>
+														<dd th:text="${review.scoreFitNm}">레귤러</dd>
+													</div>
+													<div>
+														<dt>두께감</dt>
+														<dd th:text="${review.scoreThickNm}">적당함</dd>
+													</div>
+													</th:block>
+													<th:block th:unless="${review.sizeGb == 'T' or review.sizeGb == 'B'}">
+													<div>
+														<dt>무게감</dt>
+														<dd th:text="${review.scoreWeightNm}">레귤러</dd>
+													</div>
+													<div>
+														<dt>볼너비</dt>
+														<dd th:text="${review.scoreBallNm}">적당함</dd>
+													</div>
+													</th:block>
+												</dl>
+											</div>
+										</div>
+										<div class="reply_box" th:if="${not #strings.isEmpty(review.admRpl)}">
+											<div class="reply">
+												<div class="reply_writer">
+													<span class="wr_name">관리자</span>
+													<span class="wr_date" th:text="${review.admRplDt}" >2020.07.15</span>
+												</div>
+												<div class="reply_txt">
+													<p th:utext="${#strings.unescapeJava(#strings.escapeJava(review.admRpl))}">
+														안녕하세요, 스타일24 관리자입니다.
+													</p>
+												</div>
+											</div>
+										</div>
+									</div>
+								</li>
+							</ul>
+						</div>
+					</div>
+				</div>
+				<!-- //리뷰내용 -->
+			</div>
+		</div>
+	</div>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_best')" class="close-modal">Close</a> 
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	$(document).ready( function() {
+
+
+	});
+	
+/*]]>*/
+</script>	
+ </html>

+ 113 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsReviewPhotoFormMob.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsReviewPhotoFormMob.html
+ * @desc	: 상품평 - 포토/영상 리스트 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.008   eskim		최초 작성
+ *******************************************************************************
+ -->
+<div class="modal-dialog" role="document">
+	<div class="modal-content">
+		<div class="modal-header">
+			<h5 class="modal-title" id="exampleFullLabel">포토/영상리뷰</h5>
+		</div>
+		<div class="modal-body">
+			<div class="pop_cont">
+				<div class="photo_list" >
+					<ul id="ulGoodsReviewPhoto">
+					</ul>
+				</div>
+				<div class="review_last"   style="display:none;">
+					마지막 게시글입니다.
+				</div>
+				<div class="btn_group_flex"  style="display:none;">
+					<div>
+						<button type="button" class="btn btn_default" id="btnMore">
+							<span>더보기</span>
+						</button>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<form id="goodsReviewPhotoForm" name="goodsReviewPhotoForm" action="#" th:action="@{'/goods/review/list'}">
+		<input type="hidden" name="pageNo" value ="1"/>
+		<input type="hidden" name="pageSize" value ="30"/>
+		<input type="hidden" name="photoYn" value ="Y"/>
+		<input type="hidden" name="goodsCd" th:value ="${params.goodsCd}"/>
+	</form>
+</div>
+<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_photo')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	var fnReviewPhotoGetList = function() {
+
+		gagajf.ajaxFormSubmit($('#goodsReviewPhotoForm').prop('action'), '#goodsReviewPhotoForm', fnGetListCallback);
+	}
+	
+	var fnGetListCallback = function(result) {
+		//$('#ulGoodsReviewPhoto').html('');
+	
+		// 목록
+		if (result.dataList != null && result.dataList.length > 0) {
+			
+			$.each(result.dataList, function(idx, item) {
+				let tag = '';
+				if (item.reviewAttachList != null && item.reviewAttachList.length > 0){
+					var fileGbClass = '';
+					$.each(item.reviewAttachList, function(aIdx, reviewAttach){
+						fileGbClass = '';
+						if (reviewAttach == "M") fileGbClass = "mov";
+				tag += '				<li>\n';
+				tag += '					<a href="javascript:void();" onclick="fnGoodsReviewDetail(\''+item.reviewSq+'\');">\n';
+				tag += '						<div class="pic">\n';
+				tag += '							<span class="thumb '+ fileGbClass +'" style="background-image:url('+ _imgUrl + reviewAttach.sysFileNm +');"></span>\n'; //<!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+				tag += '						</div>\n';
+				tag += '					</a>\n';
+				tag += '				</li>\n';		
+					});	
+				}
+				
+				$('#ulGoodsReviewPhoto').append(tag);
+			});
+			
+		}
+		
+		if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
+			$('#btnMore').parent().show();
+			$('#goodsReviewPhotoForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
+		} else {
+			$('.review_last').show();
+			$('#btnMore').parent().hide();
+		}
+	}
+	
+	// 더보기
+	$('#btnMore').on('click', function() {
+		fnReviewPhotoGetList();
+	});
+	
+	// 상세보기
+	var fnGoodsReviewDetail = function(reviewSq){
+		cfGoodsReviewDetail([[${params.goodsCd}]],'', 'Y', reviewSq);
+		cfCloseLayer('layer_review_photo');
+	}
+	
+	$(document).ready( function() {
+		
+		fnReviewPhotoGetList();
+		
+	});
+	
+/*]]>*/
+</script>	
+ </html>

+ 262 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -0,0 +1,262 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageWishListFormMob.html
+ * @desc    : 마이페이지 > 리뷰 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.08   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<!-- 상단헤드 //? -->
+<th:block layout:fragment="content">
+		<main role="" id="" class="container my">
+			<section class="content review">
+				<div class="inner">
+					<div class="ADwrap">
+						<span class="adcopy">일반 리뷰 150P, 포토/영상 리뷰 350P 적립!</span>
+
+						<div class="tip_wrap tip1" >
+							<div class="tip_tit">?</div>
+							<div class="tip_contents">
+								<a href="javascript:;" class="tip_close"><span class="sr-only">팁 닫기</span></a> <!-- 210407_tip_close 요소 추가 -->
+								<p class="tip_txt">
+									<ul>
+										<li>일반 리뷰 작성시 150P, 포토/영상 리뷰는 350P가 추가 적립됩니다.</li>
+										<li>월 최대 10,000P까지 적립 가능합니다. <br> (합산 후 월 1회 지급)</li>
+										<li>베스트 리뷰로 선정되면 10,000P가 추가 적립됩니다.</li>
+										<li>리뷰는 주문일 기준 90일간 작성이 가능합니다.</li>
+									</ul>
+								</p>
+							</div>
+						</div>
+					</div>
+
+				</div>
+				<div class="inner wide">
+					<div class="tabWrap">
+						<ul class="tabIndex">
+							<li id="completeReview"><a href="javascript:void(0);">작성 가능한 리뷰<span class="count" th:text="'('+${#numbers.formatInteger(completeReviewCount,0,'COMMA')}+')'"></span></a></li>
+							<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span class="count" th:text="'('+${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}+')'" ></span></a></li>
+						</ul>
+						<div class="tabContents">
+							<div class="tab_cont active">
+								<!-- tab_cont Start -->
+								<div class="inner">
+
+									<div class="part_goods">
+										<!-- 굿즈_리뷰 -->
+										<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">
+													</div>
+													<div class="info_box">
+														<div class="od_name">
+															<div class="goods_date"><span class="date">2020.10.25</span> 구매</div>
+															<div class="brand">
+																<span>Mollimelli 몰리멜리</span>
+															</div>
+															<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</div>
+														</div>
+														<div class="od_opt">
+															<div class="option">
+																<em>Black</em><em>XXL</em>
+															</div>
+														</div>
+													</div>
+												</a>
+											</div>
+											<div class="goods_btn_wrap btn_group_flex">
+												<div><button type="button" class="btn btn_default"><span>리뷰쓰기(</span><em>15</em><span>일 남음)</span></button></div>
+											</div>
+										</div>
+										<!-- //굿즈_리뷰 -->
+									</div>
+									
+								</div>
+								<!-- // tab_cont End -->
+							</div>
+							<div class="tab_cont ">
+								<!-- tab_cont Start -->
+
+								<div class="once">
+									<div class="alert" role="alert">
+										<p>관리자가 댓글을 남긴 상품평이 있습니다.</p>
+										<p class="formOnly">바로확인</p>
+										<button type="button" class="alertCls" onclick="location.href='#newreply2'" data-dismiss="alert"><span aria-hidden="true">바로 확인</span><span class="sr-only">move and Close</span></button>
+										<!--
+											.reply_box(관리자댓글)가 추가된 
+											부모, class="reviewMy"의 
+											id="newreply2"로 이동 됩니다.
+										 -->
+									</div>
+								</div>
+
+								<div class="inner">
+									<div class="part_goods">
+										<!-- 굿즈_리뷰 -->
+										<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">
+													</div>
+													<div class="info_box">
+														<div class="od_name">
+															<div class="goods_date"><span class="date">2020.10.25</span>구매</div>
+															<div class="brand">
+																<span>Mollimelli 몰리멜리</span>
+															</div>
+															<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</div>
+														</div>
+														<div class="od_opt">
+															<div class="option">
+																<em>Black</em><em>XXL</em>
+															</div>
+														</div>
+													</div>
+												</a>
+											</div>											
+										</div>
+										<!-- //굿즈_리뷰 -->
+									</div>
+									<div class="reviewMy">
+										<div class="info_box">
+											<div class="star_score">
+												<span class="star">
+													<em class="progbar" style="width:70%;"></em> <!-- 평점 style로 표기 -->
+												</span>
+											</div>
+											<div class="writer">
+												<span class="wr_date">2020.07.15</span>
+											</div>
+										</div>
+										<div class="response_box">
+											<div>
+												<dl>
+													<div>
+														<dt>구매옵션</dt>
+														<dd>베이지 / 100</dd>
+													</div>
+													<div>
+														<dt>키/몸무게</dt>
+														<dd>178cm/71kg</dd>
+													</div>
+												</dl>
+											</div>
+										</div>
+										<div class="photo_box">
+											<div class="photo_list">
+												<ul>
+													<li>
+														<a href="">
+															<div class="pic">
+																<span class="thumb mov" style="background-image:url('/images/pc/thumb/tmp_pdLookbook3.jpg');"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
+															</div>
+														</a>
+													</li>
+													<li>
+														<a href="">
+															<div class="pic">
+																<span class="thumb" style="background-image:url('/images/pc/thumb/tmp_pdDetail4.jpg');"></span>
+															</div>
+														</a>
+													</li>
+												</ul>
+											</div>
+										</div>
+										<div class="txt_review_box">
+											<p>
+												옷이 부들부들 촉감이 너무 좋습니다~ 보는 것 보다 실제 입으니깐 더 멋스러운 것 같아요! 차분한 그레이 라서 지금 가을가을한 계절에 잘 어울리는 같아요. 옷이 부들부들 촉감이 너무 좋습니다~ 보는 것 보다 실제 입으니깐 더 멋스러운 것 같아요! 차분한 그레이 라서 지금 가을가을한 계절에 잘 어울리는 같아요.
+											</p>
+										</div>
+										<div  class="response_box2">
+											<div>
+												<dl class="clear">
+													<div>
+														<dt>사이즈</dt>
+														<dd>작음</dd>
+													</div>
+													<div>
+														<dt>핏</dt>
+														<dd>레귤러</dd>
+													</div>
+													<div>
+														<dt>컬러</dt>
+														<dd>밝음</dd>
+													</div>
+													<div>
+														<dt>두께감</dt>
+														<dd>적당함</dd>
+													</div>
+												</dl>
+											</div>
+										</div>
+										<div class="reply_box">
+											<div class="reply">
+												<div class="reply_writer">
+													<span class="wr_name">관리자</span>
+													<span class="wr_date">2020.07.15</span>
+												</div>
+												<div class="reply_txt">
+													<p>
+														안녕하세요, 스타일24 관리자입니다.<br>
+														최대한 검수작업을 하고 있으나, 상품 출고량이 많은 경우 간혹 검수가 누락되는 경우가 있습니다.<br>
+														만약, 받아보시고 문제가 있을 경우 텍 제거하지마시고 고객센터로 접수 해주시면 처리 도와드리겠습니다.<br>
+														구매해주셔서 감사합니다.                                                 
+													</p>
+												</div>
+											</div>
+										</div>
+										<!-- .reply_box가 노출될 경우, 삭제만 -->
+										<div class="goods_btn_wrap btn_group_flex">
+											<div><button type="button" class="btn btn_default"><span>리뷰 삭제</span></button></div>
+										</div>
+									</div>
+								</div>
+
+								<!-- // tab_cont End -->
+							</div>
+						</div>
+					</div>
+				</div>
+			</section>
+		</main>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
+	let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
+	let attachList = [[${alreadyReviewAttach}]];
+	// 작성가능한 리뷰 클릭 시 
+	$("#completeReview").click(function() {
+		$("#alreadyReview").removeClass("active");
+		$("#completeReview").addClass("active");
+		$(".check_notice").hide();
+		gagaPaging.init('searchForm1', fnSearchCallback1, 'paging', 10);
+		gagaPaging.load(1);
+	})
+	
+	$("#alreadyReview").click(function() {
+		$("#completeReview").removeClass("active");
+		$("#alreadyReview").addClass("active");
+		$(".check_notice").show();
+		gagaPaging.init('searchForm2', fnSearchCallback2, 'paging2', 10);
+		gagaPaging.load(1);
+	})
+/*]]>*/
+</script>
+	</th:block>
+
+</body>
+</html>

+ 112 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageWishListFormMob.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageWishListFormMob.html
+ * @desc    : 마이페이지 > 위시리스트 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.08   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<!-- 상단헤드 //? -->
+<th:block layout:fragment="content">
+	<main role="" id="" class="container my">
+			<section class="content my_wishlist">
+				<div class="inner">
+					<div class="wishlist" id="wishList">
+					</div>
+				</div>
+			</section>
+		</main>
+<script th:inline="javascript">
+/*<![CDATA[*/
+let month = [[${wishMonth}]];
+
+var wishlistDelete = function(obj) {
+	mcxDialog.confirm("위시리스트를 해제하시겠습니까?", {
+		cancelBtnText : "취소",
+		sureBtnText : "확인",
+		sureBtnClick : function() {
+			cfnPutWishList(obj);
+			ajaxWishList();
+		}
+	});
+}	
+//마이페이지 위시리스트 
+var ajaxWishList = function () {
+	 $.getJSON('/mypage/wish/list', function(result, status) {
+		if (status == 'success') {
+			$('#wishList').html('');
+			html = '';
+			for (var i = 0; i < month.length; i++) {
+				html += '<div class="monthly_wish_wrap">\n';
+				html += '	<div class="date">\n';
+				html += '		<span>'+month[i].regDt+'</span>\n';
+				html += '	</div>\n';
+				html += '	<div class="itemsGrp">\n';
+				
+				$.each(result, function (idx, item) {
+					if (item.regDtMonth == month[i].regDt) {
+						html += '		<div class="item_prod">\n';
+						html += '			<div class="item_state">\n';
+						html += '				<button type="button" class="itemLike likeit" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>\n';
+						html += '				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail('+item.goodsCd+')">\n';
+						html += '					<div class="itemPic">\n';
+						html += '						<img class="vLHTC pd_img"  src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">\n';
+						html += '					</div>\n';
+						html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+						html += '					<div class="itemName">'+item.goodsNm+'</div>\n';
+						html += '					<p class="itemPrice">\n';
+						
+						if (item.currPrice != item.listPrice) {
+							html+='						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
+						}
+						html += item.currPrice.addComma();
+						if (item.dcRate>0) {
+							html+='						<span class=" itemPercent">'+item.dcRate+'%</span>\n';
+						}
+						html += '					</p>\n';
+						html += '					<div class="itemcolorchip">\n';
+						html += '						<span class="chip_color35" value="ABM">BEIGE</span>\n';
+						html += '						<span class="chip_color54" value="BDS">BLACK</span>\n';
+						html += '						<span class="chip_color40" value="YBR">WHITE</span>\n';
+						html += '					</div>\n';
+						html += '					<p class="itemBadge">\n';
+						html += '						<span class="badge13">베스트 </span>\n';
+						html += '					</p>\n';
+						if (item.goodsTnm != null && item.goodsTnm != '') {
+							html+='					<div class="itemComment">'+item.goodsTnm+'</div>\n';
+						}
+						html += '				</a>\n';
+						html += '			</div>\n';
+						html += '		</div>\n';
+						
+					}
+				});
+				
+				html += '	</div>\n';
+				html += '</div>\n';
+				$('#wishList').html(html);
+			}
+		}
+	});
+}
+
+$(document).ready(function() {
+	ajaxWishList();
+});
+/*]]>*/
+</script>
+	</th:block>
+
+</body>
+</html>

+ 134 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html

@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : PlanningEventMainFormMob.html
+ * @desc    : 이벤트메인 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.08   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<!--  container -->
+		<main role="" id="" class="container ev">
+			<section class="content ev_list">
+				<div class="inner bg_gray">
+					<div class="ev_mem_rank">
+						<div class="txt">
+							<p>
+								STYLE24 회원등급에 따라<br>제공되는 혜택 정보를 확인해 보세요.
+							</p>
+							<a href="javascript:;" class="btn btn_dark">회원등급 혜택 보기</a>
+						</div>
+					</div>
+				</div>
+				<div class="inner">
+					<div class="event_list">
+						<div class="event_top">
+							<div class="count"id="eventTotCnt">
+								<!-- <span>9,999</span>개의 이벤트 -->
+							</div>
+							<div class="event_btn">
+								<a href="javascript:void(0);" th:onclick="cfnGoToPage(_PAGE_NOTICE)">당첨자 발표</a>
+							</div>
+						</div>
+						<div class="list" id="divEventList">
+							<!-- <ul class="event_con">
+								<li><a href="">
+										<div class="ev_img">
+											<div class="shape ranker">
+												<span>NEW</span>
+											</div>
+											<img src="/images/mo/thumb/ev_list_img01.jpg"
+												alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
+										</div>
+										<div class="txt">
+											<p class="tit">ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ
+												컬렉션</p>
+											<div class="date">
+												<span>2020.12.17</span> - <span>2021.01.03</span>
+											</div>
+										</div>
+								</a></li>
+							</ul> -->
+							 <div class="nodata" id="divEventNoData" style="display:none;">
+								<p><img src="/images/mo/ico_content_find02.png" alt="등록된 이벤트가 없습니다."></p>
+								<span>등록된 이벤트가 없습니다.</span>
+								
+							</div> 
+
+						</div>
+					</div>
+				</div>
+
+			</section>
+		</main>
+<script th:inline="javascript">
+
+/*<![CDATA[*/
+let fnGetEventList = function() {
+	let actionUrl = '/planning/event/main/list';
+	
+	$.getJSON(actionUrl
+		, function(result, status) {
+			if (status == 'success') {
+				if (result.length > 0) {
+					$('#eventTotCnt').html('<span>' + result.length.addComma() + '</span>개의 이벤트');
+					$('#divEventList').html('');
+					let tag = '';
+					tag += '<ul class="event_con">\n';
+					$.each(result, function(idx, item) {
+						tag += '	<li>\n';
+						tag += '        <a onclick="cfnGoToPlanDetail(\'' + item.planSq + '\')">\n'
+						tag += '			<div class="ev_img">\n';
+						if (item.newYn == 'Y') {
+							tag += '				<div class="shape ranker">\n';
+							tag += '					<span>NEW</span>\n';
+							tag += '				</div>\n';
+						}
+						tag += '				<img src="' + _uploadImageUrl + item.mainImg + '" alt="">\n';
+						tag += '			</div>\n';
+						tag += '			<div class="txt">\n';
+						tag += '				<p class="tit">'+item.planNm+'</p>\n';
+						tag += '				<div class="date">\n';
+						tag += '					<span>'+item.dispStdt+'</span> - <span>'+item.dispEddt+'</span>\n';
+						tag += '				</div>\n';
+						tag += '			</div>\n';
+						tag += '        </a>\n';
+						tag += '	</li>\n';
+					});
+					
+					tag += '</ul>\n';
+					
+					
+					$('#divEventList').html(tag);
+					
+					$('#divEventNoData').hide();
+					$('#divEventList').show();
+				} else {
+					$('#eventTotCnt').html('<span>0</span>개의 이벤트');
+					$('#divEventNoData').show();
+					$('#divEventList').hide();
+				}
+			}
+		});
+}
+
+$(document).ready(function() {
+	fnGetEventList();
+});
+/*]]>*/
+</script>
+	</th:block>
+
+</body>
+</html>

+ 6 - 6
src/main/webapp/WEB-INF/views/web/cart/CartChangeOptionPopupWeb.html

@@ -1,12 +1,12 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org">
 <!-- 옵션변경 팝업 -->
-<div id="cartOptionModal" class="modal-dialog cartOptionModal" role="document">
+<div id="cartOptionModal" class="modal-dialog cartOptionModal" role="document" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="modal-content">
 		<div class="modal-header">
 			<h5 class="modal-title" id="optModifyLabel">옵션변경</h5>
 			<div class="prod_title">
-				<span class="name" th:text="${cart.goodsNm}">버카루 BUCKROO 남성 제기장 스웨이드 자켓</span>
+				<span class="name" th:text="${cart.goodsNm}"></span>
 			</div>
 		</div>
 		<div class="modal-body">
@@ -16,7 +16,7 @@
 						<th:block th:if="${setType.equals(cart.goodsType) or cart.selfGoodsYn.equals('N')}">
 							<li th:each="img, index : ${cart.cartImgList}">
 								<span class="thumb">
-									<img th:src="${cart.imgPath + '/' + img.sysImgNm}" src="#" alt="" />
+									<img th:src="${cart.imgPath + '/' + img.sysImgNm} + '?RS=180'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${img.sysImgNm}" alt="" />
 								</span>
 							</li>
 						</th:block>
@@ -26,7 +26,7 @@
 									<th:block th:if="${color.cartOptCd1 != null and color.cartOptCd1.equals(color.optCd1)}">
 										<li th:each="img, index : ${color.cartImgList}" th:if="${img.colorCd == color.cartOptCd1}">
 											<span class="thumb">
-												<img th:src="${cart.imgPath + '/' + img.sysImgNm}" src="#" alt="" />
+												<img th:src="${cart.imgPath + '/' + img.sysImgNm} + '?RS=180'" src="/" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${img.sysImgNm}" alt="" />
 											</span>
 										</li>
 									</th:block>
@@ -108,7 +108,7 @@
 								<ul>
 									<li th:each="color, index : ${comp.cartColorList}" class="selfGoodsColor">
 										<a href="javascript:void(0);" th:cartDtlSq="${color.cartDtlSq}" th:classappend="${color.cartColorNm != null} ? 'on'" class="selfGoodsColorSelect" th:data="${color.optCd1}">
-											<img th:src="${cart.imgPath + '/' + color.sysImgNm}" src="#" th:alt="${color.colorNm}" alt="" />
+											<img th:src="${cart.imgPath + '/' + color.sysImgNm} + '?RS=70'" src="#" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" th:alt="${color.colorNm}" alt="" />
 										</a>
 									</li>
 								</ul>
@@ -274,7 +274,7 @@
 						let img = color[i].cartImgList[j];
 						if(optCd1 == img.colorCd) {
 							imgHtml += "<li>\n<span class='thumb'>\n";
-							imgHtml += "<img src='" + cart.imgPath + "/" + img.sysImgNm + "' alt='' />\n";
+							imgHtml += "<img src='" + cart.imgPath + "/" + img.sysImgNm + "' onerror='this.src='" + [[${@environment.getProperty('domain.uximage')}]] + "/images/pc/thumb/bg_item_none.png' alt='" + img.sysImgNm + "' />\n";
 							imgHtml += "</span>\n</li>\n";
 						}
 					}

+ 37 - 28
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -14,7 +14,7 @@
  *******************************************************************************
  -->
 <div id="cartAjaxArea">
-	<form id="cartListForm" method="post" action="/order/noMember">
+	<form id="cartListForm" method="post" action="/order/noMember" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 		<!--<input type="hidden" name="cartCpnDcAmt" id="cartCpnDcAmt" th:value="${param.cartCpnDcAmt}" />-->
 
 		<!-- CONT-BODY -->
@@ -108,8 +108,8 @@
 											<div class="goods_box">
 												<div class="gd_item">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
-														<span class="thumb">
-															<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" width="100%" alt="">
+														<span class="thumb" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
+															<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" src="/" width="100%" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"  th:alt="${cart.sysImgNm}" alt="">
 														</span>
 														<p>
 															<span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
@@ -143,7 +143,7 @@
 													<p th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
 													<p th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
-													<p th:if="${(cart.goodsQty < cart.ordCanQty or cart.soldoutYn.equals('Y')) and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
+													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}" th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></p>
@@ -223,7 +223,7 @@
 											<div class="goods_box">
 												<div class="gd_item">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
-														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" width="100%" alt=""></span>
+														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 													</a>
@@ -343,7 +343,7 @@
 											<div class="goods_box">
 												<div class="gd_item">
 													<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
-														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" width="100%" alt=""></span>
+														<span class="thumb"><img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm} + '?RS=100'" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'" src="/" width="100%"  th:alt="${cart.sysImgNm}" alt=""></span>
 														<p><span class="brand" th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span></p>
 														<p><span class="name" th:text="${cart.goodsNm}"></span></p>
 													</a>
@@ -433,7 +433,7 @@
 			<div class="area_order">
 				<div class="tit_box">
 					<h3>결제 정보</h3>
-					<span><em class="number" th:text="${order.totCartCnt}"></em>개의 상품</span>
+					<span><em class="number checkSelectCartListCnt" th:text="${order.totCartCnt}"></em>개의 상품</span>
 				</div>
 				<div class="od_amount_box">
 					<dl>
@@ -473,9 +473,7 @@
 				<div class="coupon_box">
 					<div class="coupon">
 						<div>
-							<p class="cp_name">
-								TBJ 시즌오프 20% 할인쿠폰
-							</p>
+							<p class="cp_name"></p>
 							<p class="cp_cont">
 								<!--<span><em>12,399,900</em>원</span>
 								<span><em>40</em>%</span>-->
@@ -487,7 +485,7 @@
 							</p>
 						</div>
 						<p class="cp_date">
-							<span class="availStdt">2021.01.01</span>&nbsp;~&nbsp;<span class="availEddt">2021.12.30</span>
+							<span class="availStdt"></span>&nbsp;~&nbsp;<span class="availEddt"></span>
 						</p>
 					</div>
 					<button type="button" class="btn_underline" id="btn_cartCouponInfo_pop">
@@ -512,34 +510,26 @@
 		<div class="modal-dialog" role="document">
 			<div class="modal-content">
 				<div class="modal-header">
-					<h5 class="modal-title" id="couponInfoLabel">aa</h5>
+					<h5 class="modal-title" id="couponInfoLabel"></h5>
 				</div>
 				<div class="modal-body">
 					<div class="pop_cont">
 						<dl>
 							<div class="cartCpnCondition">
 								<dt>사용조건</dt>
-								<dd class="cpnCondition">
-									<span>9,999,999</span>원 이상 구매 시 최대 <span>9,999,999</span>원 할인
-								</dd>
+								<dd class="cpnCondition"></dd>
 							</div>
 							<div class="cartCpnPubLimitQty">
 								<dt>발급수량</dt>
-								<dd class="custPubLimitQtyTxt">
-									1인 최대<span>9,999</span>매
-								</dd>
+								<dd class="custPubLimitQtyTxt"></dd>
 							</div>
 							<div>
 								<dt>유효기간</dt>
-								<dd class="availDt">
-									<span>2020.09.21 23:59</span>&nbsp;~&nbsp;<span>2020.09.21 23:59</span>
-								</dd>
+								<dd class="availDt"></dd>
 							</div>
 							<div>
 								<dt>대상조건</dt>
-								<dd class="refVal">
-									카테고리명 / 브랜드명 / 상품명 등 (일부 품목 제외)
-								</dd>
+								<dd class="refVal"></dd>
 							</div>
 						</dl>
 					</div>
@@ -595,7 +585,7 @@
 			cfnAddCart(compsList);*/
 
 			if([[${!order.shotCanYn.equals('Y')}]]) {
-				$(".shotDelvSelect").hide();
+				//$(".shotDelvSelect").hide();
 			}
 
 			$("#cartListForm .area_salecoupon .coupon_box").hide();
@@ -708,8 +698,11 @@
 						$("#cartListForm .area_salecoupon .coupon_box").show();
 
 						// 합계 금액
-						$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
-						$("#cartListForm #totDcAmt").text(Number(totDcAmt - cpnInfo.dcAmt).toLocaleString());
+						// 합계 금액
+						if(cartArr.length > 0) {
+							$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
+							$("#cartListForm #totDcAmt").text(Number(totDcAmt - cpnInfo.dcAmt).toLocaleString());
+						}
 
 						// 쿠폰 정보
 						$("#cartListForm .area_salecoupon .cp_name").text(cpnInfo.cpnNm);
@@ -853,6 +846,10 @@
 		}*/
 
 		$("input[name=cartSqArr]").on("change", function(e) {
+			changeCartSqArr();
+		});
+
+		function changeCartSqArr() {
 			let cartArr = [];
 
 			// 선택된 장바구니 번호
@@ -874,7 +871,7 @@
 					fnChangeCartListInfo(result);
 				}
 			});
-		});
+		}
 
 		function fnChangeCartListInfo(order) {
 			let shotList = order.shotCartList;
@@ -1006,6 +1003,7 @@
 			}
 
 			// 결제 총액 영역 수정
+			$("#cartListForm .checkSelectCartListCnt").text(Number(order.totCartCnt).toLocaleString());
 			$("#cartListForm .sumListPrice").text(Number(order.sumListPrice).toLocaleString());
 			$("#cartListForm .totDelvFee").text(Number(order.totDelvFee).toLocaleString());
 			sumRealPayAmt = order.sumRealPayAmt + order.totDelvFee;
@@ -1222,15 +1220,26 @@
 			});
 		}
 
+		// 페이지 이동
 		function fnGoToGoodsDetail(goodsCd) {
 			cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
 		}
 
+		// 전체선택 버튼
 		$("#od_item_all").on("change", function() {
 			if($("#od_item_all").is(":checked")) {
 				$("input[name=cartSqArr]").prop("checked", true);
+				changeCartSqArr();
 			} else {
 				$("input[name=cartSqArr]").prop("checked", false);
+				// 하단 합계금액, 구매하기 수량 변경
+				$("#cartListForm .realOrderAmtText").text("0");
+				$("#cartListForm .realOrderQtyText").text("0");
+				$("#cartListForm .area_order .number").text("0");
+				$("#cartListForm .od_amount_box .sumListPrice").text("0");
+				$("#cartListForm .od_amount_box .totDelvFee").text("0");
+				$("#cartListForm .od_amount_box .totDcAmt").text("0");
+				$("#cartListForm .totalprice_box .sumRealPayAmt").text("0");
 			}
 		});
 	</script>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -40,7 +40,7 @@
 					</div>
 				</div>
 				<div id="cartAjaxList" class="cont_body">
-
+					<!-- 장바구니 내용 -->
 				</div>
 			</div>
 			<div class="content od_recommend">

+ 93 - 15
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -20,7 +20,10 @@
 		<div class="area">
 			<div class="logo">
 				<a href="#none">
-					<h1><img th:src="${@environment.getProperty('domain.image') + brandGroupInfo.logoFileNm}" src="/images/pc/thumb/br_tbj_logo.png" alt="TBJ nearby"/></h1>
+					<h1>
+						<!-- <img th:src="${@environment.getProperty('domain.image') + brandGroupInfo.logoFileNm}" src="/images/pc/thumb/br_tbj_logo.png" alt="TBJ nearby"/> -->
+						<p th:text="${brandGroupInfo.brandGroupNm}"></p>
+					</h1>
 				</a>
 			</div>
 			<div class="util_group">
@@ -35,10 +38,21 @@
 			<!-- nav -->
 			<div class="nav">
 				<ul class="bundle" id="ulGnbTab">
-					<li><a href="#">상품</a></li>
-					<li><a href="#">룩북</a></li>
-					<li><a href="#">20S/S시즌오프</a></li>
-					<li><a href="#">이벤트</a></li>
+					<li class="home"><a href="javascript:void(0);" onclick="cfnGoToBrandMain([[${brandGroupInfo.brandGroupNo}]]);">브랜드 홈</a></li>
+					<li class="has_depth"><!-- depth_menu 있을 시 has_depth 클래스 추가 -->
+						<a href="#">상품</a>
+						<!-- 상품 depth -->
+						<div class="depth_menu category">
+							<div class="head_category">
+								<div class="menu">
+									<ul class="maintabs" id="ulGnbCate">
+									</ul>
+								</div>
+							</div>
+							<div class="head_banner" id="divGnbBrandBanner">
+							</div>
+						</div>
+					</li>
 				</ul>
 			</div>
 			<!-- // nav -->
@@ -46,7 +60,7 @@
 			<!-- search -->
 			<div class="search">
 				<button type="button" class="btn_open_search"><i class="ico ico_search"><em>통합검색 열기</em></i></button>
-				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
+				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count"></span></a>
 			</div>
 			<!-- //search -->
 		</div>
@@ -59,21 +73,57 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
+	// GNB탭 > 카테고리
+	let fnGetGnbCategory = function(cate1) {
+		let tag = '';
+		if (cate1 != null) {
+			tag += '<li>\n';
+			tag += '	<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
+			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+				tag += '	<ul class="box_depth2">\n';
+				$.each(cate1.cate2List, function(idx2, cate2) {
+					tag += '		<li>\n';
+					tag += '			<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
+					if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
+						tag += '			<ul class="box_depth3">\n';
+						$.each(cate2.cate3List, function(idx3, cate3) {
+							tag += '				<li>\n';
+							tag += '					<a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
+							if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
+								tag += '					<ul class="box_depth3">\n';
+								$.each(cate3.cate4List, function(idx4, cate4) {
+									tag += '						<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList([[${brandGroupInfo.brandGroupNo}]],\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
+								});
+								tag += '					</ul>\n';
+							}
+							tag += '				</li>\n';
+						});
+						tag += '			</ul>\n';
+					}
+					tag += '		</li>\n';
+				});
+				tag += '	</ul>\n';
+			}
+			tag += '</li>\n';
+		}
+		return tag;
+	}
+	
 	// GNB탭 생성
 	let fnCreateGnbTab = function() {
-		$.getJSON('/display/brand/gnb/tab/list/' + [[${brandGroupInfo.brandGroupNo}]]
+		$('#ulGnbCate').html('');
+		let allCate = [[${allCateList}]];
+		$.each(allCate, function(allCateIdx, allCateItem) {
+			let gnbCate = fnGetGnbCategory(allCateItem);
+			$('#ulGnbCate').append(gnbCate);
+		});
+		
+		$.getJSON('/display/brand/gnb/tab/list?brandGroupNo=' + [[${brandGroupInfo.brandGroupNo}]]
 			, function(result, status) {
 				if (status == 'success') {
 					if (result.length > 0) {
-						$('#ulGnbTab').html('');
 						$.each(result, function(idx, item) {
-							/* if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형:카테고리, 아울렛
-								$.each(allCate, function(allCateIdx, allCateItem) {
-									if (item.cate1No == allCateItem.cate1No) {
-										$('#ulGnbTab').append(gnbCate);
-									}
-								});
-							} else  */if (item.contentsType == 'L') { // 컨텐츠유형:링크
+							if (item.contentsType == 'L') { // 컨텐츠유형:링크
 								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 							}
 						});
@@ -86,6 +136,34 @@
 		//검색창 호출
 		$(".common_search").load("sch_layer_pop.html");
 
+		// GNB toggle
+		$(document).on('mouseenter','.common_header.br_header .gnb .nav > ul > li',function(e){
+			$(this).parents('.nav').find('.bundle > li > a').removeClass('active');
+			$(this).children('a').addClass('active');
+			if(!$(this).hasClass('has_depth')){
+				$('.black_screen').hide();
+				$('.common_header.br_header .gnb .depth_menu, .box_depth2, .box_depth3, .box_depth4').hide();
+			} else if($(this).hasClass('has_depth')){
+				$('.black_screen').show();
+				$(this).find('.depth_menu').show();
+				$(this).parents('ul').siblings('ul').find('li.has_depth .depth_menu').hide();
+				$(this).siblings('li.has_depth').find('.depth_menu').hide();
+			}
+		}).on('mouseleave','.common_header.br_header .gnb',function(e){
+			$(this).find('.bundle > li > a').removeClass('active');
+			$('.black_screen').hide();
+			$('.common_header.br_header .gnb .depth_menu, .box_depth2, .box_depth3, .box_depth4').hide();
+		});
+
+		// GNB 하위메뉴
+		$(document).on('mouseenter','.common_header.br_header .maintabs li',function(e){
+			if($(this).find('> ul').length > 0){
+				$(this).addClass('on');
+			}
+			$(this).find('> ul').show();
+			$(this).siblings('li').find('> ul').hide();
+		});
+		
 		// GNB탭 생성
 		fnCreateGnbTab();
 	});

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

@@ -893,9 +893,9 @@
 			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 				tag += '	<ul class="quick_depth">\n';
 				tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');"><span>메인</span></a>\n';
-				tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');"><span>전체</span></a>\n';
+				tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ');"><span>전체</span></a>\n';
 				$.each(cate1.cate2List, function(idx2, cate2) {
-					tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');"><span>' + cate2.cate2Nm + '</span></a>\n';
+					tag += '		<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');"><span>' + cate2.cate2Nm + '</span></a>\n';
 				});
 				tag += '	</ul>\n';
 			}
@@ -1051,11 +1051,15 @@
 	// 장바구니
 	let fnGetCartGoodsList = function() {
 		$.getJSON('/cart/quick/cart/list', function(order, status) {
+			let cartCnt;
+			if(order.totCartCnt > 99) {cartCnt = "99+";} else {cartCnt = order.totCartCnt;}
 			$("#quick_menu .shopingbag.quick_con.quick02 .quick_head a").attr("href", _PAGE_CART);
+			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
+			$("#header .gnb .btn_cart .circle_count").text(cartCnt);
 
 			if (status == 'success') {
 				let quickShoppingBagHtml = "";
-				$("#quick_menu #quick02 .count").text(order.totCartCnt);
+				$("#quick_menu #quick02 .count").text(cartCnt);
 
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").html("");
 				if(order.totCartCnt > 0) {
@@ -1078,7 +1082,7 @@
 							}
 							quickShoppingBagHtml += "			<a href='javascript:fnGoToGoodsDetail(\"" + info.goodsCd + "\")' class='itemLink'>";
 							quickShoppingBagHtml += '				<div class="itemPic">';
-							quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + order.imgPath1 + '/' + info.sysImgNm + '"/>';
+							quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + order.imgPath1 + '/' + info.sysImgNm + '?RS=120"/>';
 							quickShoppingBagHtml += '				</div>';
 							quickShoppingBagHtml += '				<p class="itemBrand">' + info.brandEnm + ' ' + info.brandKnm + '</p>';
 							quickShoppingBagHtml += '				<div class="itemName">' + info.goodsNm + '</div>';
@@ -1119,7 +1123,7 @@
 					}
 
 					quickShoppingBagHtml += '</div>';
-					quickShoppingBagHtml += '<button type="button" class="btn btn_default purchase_btn" onclick="quickCartOrder()"><span>전체 상품 구매하기</span></button>';
+					quickShoppingBagHtml += '<button type="button" class="btn btn_default purchase_btn" onclick="cfnGoToPage(_PAGE_CART);"><span>쇼핑백 바로가기</span></button>';
 				} else {
 					if(!$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").hasClass("nodata")) {
 						$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").addClass("nodata");

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

@@ -19,12 +19,37 @@
 	<!-- head start -->
 	<div class="common_header">
 		<!-- 프로모션 띠 배너 등록 시 노출 -->
-		<div class="hd_top_banner" style="background-color:#fd4801;display:none;">
-			<a href="" class="t_bnr">
-				<span style="margin:0 auto;height:60px;line-height:60px;font-size: 20px;font-weight: 600;letter-spacing: -.025em; color:#fff;">APP 수신동의 하면 1만 포인트 증정!</span>
-				<!--<img src="ABC.jpg" alt="프로모션"/>-->
-			</a>
-		</div>
+<!-- 		<div class="hd_top_banner"> -->
+<!-- 			<div class="bnrtype_open" style="background-color:#496ac9;"> -->
+<!-- 				<a href="" target=""> -->
+<!-- 					<img src="/images/pc/thumb/tmp_top_banner2.jpg" alt="">	 -->
+<!-- 					<div class="open_bnr_area"> -->
+<!-- 						<img src="/images/pc/thumb/tmp_top_banner2_open.jpg" alt=""/> -->
+<!-- 					</div> -->
+<!-- 				</a> -->
+<!-- 				<button class="btn_toggle_bnr"><span>열기</span></button> -->
+<!-- 			</div> -->
+<!-- 			<div class="bnrtype_img" style="background-color:#57799d;"> -->
+<!-- 				<a href="" target=""> -->
+<!-- 					<img src="/images/pc/thumb/tmp_top_banner1.jpg" alt=""/> -->
+<!-- 				</a> -->
+<!-- 			</div> -->
+<!-- 			<div class="bnrtype_text" style="background-color:#fd4801;"> -->
+<!-- 				<a href="" target=""> -->
+<!-- 					<div style="color:#fff; font-size:20px; font-weight:300;"> -->
+<!-- 						<span style="font-weight:500">APP</span> 수신동의 하면 <span style="font-weight:500">1</span>만 포인트 증정! -->
+<!-- 					</div> -->
+<!-- 				</a> -->
+<!-- 			</div> -->
+<!-- 			<div class="close_bnr_area"> -->
+<!-- 				<form class="form_wrap"> -->
+<!-- 					<div class="form_field"> -->
+<!-- 						<input id="chk-cookie" type="checkbox"><label for="chk-cookie"><span>오늘 하루 보지 않기</span></label> -->
+<!-- 					</div> -->
+<!-- 				</form> -->
+<!-- 				<button id="btn_close_bnr" class="btn_close"><span>닫기</span></button> -->
+<!-- 			</div> -->
+<!-- 		</div> -->
 		<!-- //프로모션 띠 배너 등록 시 노출 -->
 
 		<div class="area">
@@ -82,322 +107,712 @@
 
 			<!-- search -->
 			<div class="search">
+				<!-- 프로모션 문구 노출 검색용-->
 				<div class="area">
-					<form id="searchMainForm" name="searchMainForm">
-						<fieldset>
-							<legend>통합검색</legend>
-							<input type="text" id="search" name="search" value="" placeholder="모이몰론, 남들보다 빠르게! 신상 check" class="search_input" title="검색어 입력" maxlength="100">
-							<div class="search_group" id="ark" style="display: none;">
-								<div id="ark_down" style="position: absolute; display: block; cursor: pointer; top: 3px; left: 366px;"></div>
-								<div id="ark_up" style="position: absolute; display: none; cursor: pointer; top: 3px; left: 366px;"></div>
-								<div class="area">
-									<p class="blind">연관검색</p>
-									<div class="search_list">
-										<div id="ark_content_list" style="width: 410px;"></div>
-										<div id="ark_category_list" class="category"></div>
-										<div id="ark_event_list" class="exhibition"></div>
-										<div id="ark_powerdeal_list"></div>
+					<p class="promotion_search">모이몰론, 남들보다 빠르게! 신상 check</p>
+					<button type="button" class="btn_sch_promotion" id="btnGnbSearch"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>
+				</div>
+				<!-- //프로모션 문구 노출 검색용-->
+				<!-- 통합검색 -->
+				<button type="button" class="btn_open_search"><i class="ico ico_search"><em>통합검색</em></i></button>
+				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
+				<!-- //통합검색 -->
+			</div>
+			<!-- //search -->
+		</div>
+		<div class="black_screen"></div>
+	</div>
+	
+	<!-- 검색 레이어 -->
+	<div class="common_search">
+		<h2 class="sr-only">통합검색</h2>
+		<div class="cont_search">
+			<div class="area_input">
+				<form id="searchMainForm" name="searchMainForm">
+					<fieldset>  
+						<legend>통합검색</legend>
+						<input type="text" id="search" name="search" value="" placeholder="검색어를 입력하세요." class="search_input" title="검색어 입력" maxlength="100"/>
+						<button type="button" class="sch_btn"><i class="ico ico_search"><em>검색</em></i></button>
+					</fieldset>
+				</form>
+			</div>
+			<div class="area_result">
+				<!-- 검색결과 입력 전 -->
+				<div class="default_box">
+					<div class="recent_blk">
+						<h3>최근 검색어</h3>
+						<!-- 최근검색어 있을 시 노출 -->
+						<div class="list_recent_keword">
+							<ul>
+								<li>
+									<a href="">슬랙스</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">다운점퍼</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">특가세일</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">모이몰른 티셔츠</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">TBJ 패딩</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">트레이닝 팬츠</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">슬랙스</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">다운점퍼</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">특가세일</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+								<li>
+									<a href="">모이몰른 티셔츠</a>
+									<button type="button" class="btn_delete"><span>삭제</span></button>
+								</li>
+							</ul>
+						</div>
+						<button type="button" class="btn_underline"><span>전체삭제</span></button>
+						<!-- //최근검색어 있을 시 노출 -->
+						<!-- 최근검색어 없을 시 노출 -->
+						<div class="empty_txt">
+							최근 검색어가 없습니다.
+						</div>
+						<!-- //최근검색어 없을 시 노출 -->
+					</div>
+					<div class="popular_blk">
+						<h3>STYLE24에서 검색되고 있어요</h3>
+						<div class="list_popular_keword">
+							<ul>
+								<li>
+									<a href="">BUCKAROO</a>
+								</li>
+								<li>
+									<a href="">기모청바지</a>
+								</li>
+								<li>
+									<a href="">컨버스 주니어</a>
+								</li>
+								<li>
+									<a href="">겨울 팬츠</a>
+								</li>
+								<li>
+									<a href="">모이몰른</a>
+								</li>
+								<li>
+									<a href="">BUCKAROO</a>
+								</li>
+								<li>
+									<a href="">기모청바지</a>
+								</li>
+								<li>
+									<a href="">컨버스 주니어</a>
+								</li>
+								<li>
+									<a href="">겨울 팬츠</a>
+								</li>
+								<li>
+									<a href="">모이몰른</a>
+								</li>
+							</ul>
+						</div>
+					</div>
+					<div class="realtime_blk">
+						<h3>지금 고객님들이 많이 보고 있어요</h3>
+						<div class="modify_timer">
+							<button type="button"><span><em class="time">17:30</em> 기준</span></button>
+						</div>
+						<div class="realtime_wrap">
+							<div class="itemsGrp">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg"/>
+											</div>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+											<div class="viewCount"><span>508</span>명 보는중</div>
+										</a>
 									</div>
-									<div class="close">
-										<a href="#" class="search_close">닫기<i class="ico ico_search_close_gray"><em>닫기</em></i></a>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg"/>
+											</div>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+											<div class="viewCount"><span>508</span>명 보는중</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+											<div class="viewCount"><span>508</span>명 보는중</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+											</div>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+											<div class="viewCount"><span>508</span>명 보는중</div>
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg"/>
+											</div>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+											<div class="viewCount"><span>508</span>명 보는중</div>
+										</a>
 									</div>
 								</div>
 							</div>
-							<!-- 검색어 입력전 -->
-							<div id="mykeyword" class="my_search_group sch_auto" style="display: none;">
-								<p class="blind">인기 검색어 &amp; 최근 검색어</p>
-								<div class="area">
-									<div class="hot_search_list" id="popkeyword">
-										<p>인기 검색어</p>
-										<ul>
-											<li>
-												<a href="#"><span>1</span>나이키</a>
-											</li>
-											<li>
-												<a href="#"><span>2</span>tamiya</a>
-											</li>
-											<li>
-												<a href="#"><span>3</span>니콘 z6</a>
-											</li>
-											<li>
-												<a href="#"><span>4</span>갤럭시 자켓</a>
-											</li>
-											<li>
-												<a href="#"><span>5</span>아동운동화</a>
-											</li>
-											<li>
-												<a href="#"><span>6</span>타미야</a>
-											</li>
-											<li>
-												<a href="#"><span>7</span>널디</a>
-											</li>
-											<li>
-												<a href="#"><span>8</span>호박목걸이</a>
-											</li>
-											<li>
-												<a href="#"><span>9</span>제시뉴욕</a>
-											</li>
-											<li>
-												<a href="#"><span>10</span>뉴에라</a>
-											</li>
-										</ul>
+						</div>
+					</div>
+				</div>
+				<!-- //검색결과 입력 전 -->
+				<!-- 검색결과 입력 후 -->
+				<div class="searching_box" style="display:none;">
+					<div class="autokeyword_blk">
+						<ul> 
+							<li><a href=""><em>가</em>을컬리수</a></li>
+							<li><a href=""><em>가</em>드상하</a></li>
+							<li><a href=""><em>가</em>죽자켓</a></li>
+							<li><a href=""><em>가</em>죽밸트</a></li>
+							<li><a href=""><em>가</em>운</a></li>
+							<li><a href=""><em>가</em>을</a></li>
+							<li><a href=""><em>가</em>디건</a></li>
+							<li><a href=""><em>가</em>디건형니트</a></li>
+							<li><a href=""><em>가</em>드밴드레깅스</a></li>
+							<li><a href=""><em>가</em>을잠옷</a></li>
+						</ul>
+					</div>
+					<div class="exfind_blk">
+						<!-- 검색어 매칭 브랜드 있을 시 노출  -->
+						<div class="find_brand">
+							<h3><a href="">나이키 주니어 샵 바로가기</a></h3>
+						</div>
+						<!-- //검색어 매칭 브랜드 있을 시 노출  -->
+						<!-- 검색어 매칭 카테고리 있을 시 노출  -->
+						<div class="find_category">
+							<ul>
+								<li>
+									<span class="category_txt">카테고리</span>
+									<a href="">
+										<span>여성</span>
+										<span>니트<em>가</em>디건/베스트</span>
+									</a>
+								</li>
+								<li>
+									<span class="category_txt">카테고리</span>
+									<a href="">
+										<span>남성</span>
+										<span>니트/<em>가</em>디건/베스트</span>
+										<span>가디건</span>
+										<span>롱가디건</span>
+									</a>
+								</li>
+							</ul>
+						</div>
+						<!-- //검색어 매칭 카테고리 있을 시 노출  -->
+					</div>
+					<div class="pd_list relate">
+						<h3>관련상품</h3>
+						<div class="realtime_wrap">
+							<div class="itemsGrp">
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+											<p class="itemPrice cols">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										</a>
 									</div>
-									<div class="my_search_list" id="searchkeyword">
-										<p>최근 검색어</p>
-										<button type="button" onclick="removeMyKeyword();">최근 검색어 전체삭제<i class="ico ico_mysearch_delete"></i></button>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+											<p class="itemPrice cols">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+											<p class="itemPrice cols">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										</a>
 									</div>
 								</div>
-								<div class="close">
-									<a href="#" class="search_close">닫기<i class="ico ico_search_close_gray"><em>닫기</em></i></a>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+											<p class="itemPrice cols">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										</a>
+									</div>
+								</div>
+								<div class="item_prod">
+									<div class="item_state">
+										<a href="#none" class="itemLink">
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+											</div>
+											<p class="itemBrand">BRAND NAME1</p>
+											<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+											<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+											<p class="itemPrice cols">
+												<span class="itemPrice_original">89,000</span>
+												80,100
+												<span class="itemPercent">10%</span>
+											</p>
+											<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										</a>
+									</div>
 								</div>
 							</div>
-							<!-- // 검색어 입력전 -->
-							<button type="button" class="close"><i class="ico ico_search_close"><em>닫기</em></i></button>
-							<button type="button" class="sch_btn" onclick="goSearch();"><i class="ico ico_search"><em>검색</em></i></button>
-						</fieldset>
-					</form>
+						</div>
+					</div>
 				</div>
-
-				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
-
+				<!-- //검색결과 입력 후 -->
+				<!-- 검색결과 없을때 노출 -->
+				<div class="empty_box" style="display:none;">
+					<div class="nodata">
+						<p>
+							<span class="keyword">'티비제이 제기장 스웨터'</span>에 맞는 상품을 찾지 못했습니다.<br>
+							검색어를 변경해 보세요.
+						</p>
+					</div>
+					<div class="pd_list recommend">
+						<h3>이런 상품은 어떤가요?</h3>
+						<div class="itemsGrp">
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+										</div>
+										<p class="itemBrand">BRAND NAME1</p>
+										<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										<p class="itemPrice cols">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									</a>
+								</div>
+							</div>
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+										</div>
+										<p class="itemBrand">BRAND NAME1</p>
+										<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										<p class="itemPrice cols">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									</a>
+								</div>
+							</div>
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+										</div>
+										<p class="itemBrand">BRAND NAME1</p>
+										<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										<p class="itemPrice cols">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									</a>
+								</div>
+							</div>
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+										</div>
+										<p class="itemBrand">BRAND NAME1</p>
+										<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										<p class="itemPrice cols">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									</a>
+								</div>
+							</div>	
+							<div class="item_prod">
+								<div class="item_state">
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg"/>
+										</div>
+										<p class="itemBrand">BRAND NAME1</p>
+										<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+										<p class="itemPrice cols">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									</a>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- //검색결과 없을때 노출 -->
 			</div>
-			<!-- // search -->
 		</div>
+		<button type="button" class="btn_close_search"><span>닫기</span></button>
 	</div>
-	<!-- head end -->
+	<!-- //검색 레이어 -->
 
-	<script th:inline="javascript">
-		/*<![CDATA[*/
-		// 전체카테고리 조회
-// 		let allCate;
-// 		let fnGetAllCategory = function() {
-// 			$.getJSON('/display/all/cate/list'
-// 				, function(result, status) {
-// 					if (status == 'success') {
-// 						allCate = result;
-						
-// 						// GNB탭 > 브랜드 생성
-// 						fnCreateGnbBrandGroup();
-// 					}
-// 			});
-// 		}
-		
-		// GNB탭 > 카테고리
-		let fnGetGnbCategory = function(cate1) {
-			let tag = '';
-			if (cate1 != null) {
-				tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
-				tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
-				tag += '	<div class="depth_menu category">\n';
-				tag += '		<div class="head_category">\n';
-				tag += '			<div class="tit">\n';
-				tag += '				<p>' + cate1.cate1Nm + '</p>\n';
-				tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');" class="more">전체보기</a>\n';
+<script th:inline="javascript">
+/*<![CDATA[*/
+	// 전체카테고리 조회
+// 	let allCate;
+// 	let fnGetAllCategory = function() {
+// 		$.getJSON('/display/all/cate/list'
+// 			, function(result, status) {
+// 				if (status == 'success') {
+// 					allCate = result;
+					
+// 					// GNB탭 > 브랜드 생성
+// 					fnCreateGnbBrandGroup();
+// 				}
+// 		});
+// 	}
+	
+	// GNB탭 > 카테고리
+	let fnGetGnbCategory = function(cate1) {
+		let tag = '';
+		if (cate1 != null) {
+			tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
+			tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
+			tag += '	<div class="depth_menu category">\n';
+			tag += '		<div class="head_category">\n';
+			tag += '			<div class="tit">\n';
+			tag += '				<p>' + cate1.cate1Nm + '</p>\n';
+			tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ');" class="more">전체보기</a>\n';
+			tag += '			</div>\n';
+			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
+				tag += '			<div class="menu">\n';
+				tag += '				<ul class="maintabs">\n';
+				$.each(cate1.cate2List, function(idx2, cate2) {
+					tag += '					<li>\n';
+					tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
+					if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
+						tag += '						<ul class="box_depth2">\n';
+						$.each(cate2.cate3List, function(idx3, cate3) {
+							tag += '							<li>\n';
+							tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
+							if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
+								tag += '								<ul class="box_depth3">\n';
+								$.each(cate3.cate4List, function(idx4, cate4) {
+									tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
+								});
+								tag += '								</ul>\n';
+							}
+							tag += '							</li>\n';
+						});
+						tag += '						</ul>\n';
+					}
+					tag += '					</li>\n';
+				});
+				tag += '				</ul>\n';
 				tag += '			</div>\n';
-				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
-					tag += '			<div class="menu">\n';
-					tag += '				<ul class="maintabs">\n';
-					$.each(cate1.cate2List, function(idx2, cate2) {
-						tag += '					<li>\n';
-						tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
-						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
-							tag += '						<ul class="box_depth2">\n';
-							$.each(cate2.cate3List, function(idx3, cate3) {
-								tag += '							<li>\n';
-								tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
-								if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
-									tag += '								<ul class="box_depth3">\n';
-									$.each(cate3.cate4List, function(idx4, cate4) {
-										tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
-									});
-									tag += '								</ul>\n';
-								}
-								tag += '							</li>\n';
-							});
-							tag += '						</ul>\n';
-						}
-						tag += '					</li>\n';
-					});
-					tag += '				</ul>\n';
-					tag += '			</div>\n';
-					tag += '		</div>\n';
-					tag += '	</div>\n';
-				}
-
-				// if (cate1.bannerList.length > 0) {
-				// 	tag += '	<div class="head_banner">\n';
-				// 	tag += '		<div class="tit">\n';
-				// 	tag += '			<p>가을의 신상 만나기</p>\n';
-				// 	tag += '		</div>\n';
-				// 	tag += '		<div class="list">\n';
-				// 	tag += '			<ul class="clear event_con">\n';
-				// 	tag += '				<li>\n';
-				// 	tag += '					<a href="">\n';
-				// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
-				// 	tag += '						<div class="txt">\n';
-				// 	tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
-				// 	tag += '						</div>\n';
-				// 	tag += '					</a>\n';
-				// 	tag += '				</li>\n';
-				// 	tag += '				<li>\n';
-				// 	tag += '					<a href="">\n';
-				// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
-				// 	tag += '						<div class="txt">\n';
-				// 	tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
-				// 	tag += '						</div>\n';
-				// 	tag += '					</a>\n';
-				// 	tag += '				</li>\n';
-				// 	tag += '			</ul>\n';
-				// 	tag += '		</div>\n';
-				// 	tag += '	</div>\n';
-				// }
-				tag += '</li>\n';
+				tag += '		</div>\n';
+				tag += '	</div>\n';
 			}
-			return tag;
-		}
 
-		// GNB탭 생성
-		let fnCreateGnbTab = function() {
-			$.getJSON('/display/gnb/tab/list'
-				, function(result, status) {
-					if (status == 'success') {
-						if (result.length > 0) {
-							$('#divGnbTab').html('');
-							$('#ulGnbTab').html('');
-							
-							let allCate = [[${allCateList}]];
-							$.each(result, function(idx, item) {
-								if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형:카테고리, 아울렛
-									$.each(allCate, function(allCateIdx, allCateItem) {
-										if (item.cate1No == allCateItem.cate1No) {
-											let gnbCate = fnGetGnbCategory(allCateItem);
-											$('#divGnbTab').append(gnbCate);
-											$('#ulGnbTab').append(gnbCate);
-										}
-									});
-								} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
-									$('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
-									$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
-								}
-							});
-						}
-					}
-				});
+			// if (cate1.bannerList.length > 0) {
+			// 	tag += '	<div class="head_banner">\n';
+			// 	tag += '		<div class="tit">\n';
+			// 	tag += '			<p>가을의 신상 만나기</p>\n';
+			// 	tag += '		</div>\n';
+			// 	tag += '		<div class="list">\n';
+			// 	tag += '			<ul class="clear event_con">\n';
+			// 	tag += '				<li>\n';
+			// 	tag += '					<a href="">\n';
+			// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img01.jpg" alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션"></div>\n';
+			// 	tag += '						<div class="txt">\n';
+			// 	tag += '							<p class="tit">2020 FALL COLLECTION 가을에는 이 컬러 2020 FALL COLLECTION 가을에는 이 컬러</p>\n';
+			// 	tag += '						</div>\n';
+			// 	tag += '					</a>\n';
+			// 	tag += '				</li>\n';
+			// 	tag += '				<li>\n';
+			// 	tag += '					<a href="">\n';
+			// 	tag += '						<div class="ev_img"><img src="/images/pc/thumb/ev_list_img02.jpg" alt="단 48시간, 퓨어캐시미어 최대 80%세일 PURE CASHMERE 48H POP-UP"></div>\n';
+			// 	tag += '						<div class="txt">\n';
+			// 	tag += '							<p class="tit">FALL NEW ARRIVAL</p>\n';
+			// 	tag += '						</div>\n';
+			// 	tag += '					</a>\n';
+			// 	tag += '				</li>\n';
+			// 	tag += '			</ul>\n';
+			// 	tag += '		</div>\n';
+			// 	tag += '	</div>\n';
+			// }
+			tag += '</li>\n';
 		}
+		return tag;
+	}
 
-		// GNB탭 > 브랜드 생성
-		let fnCreateGnbBrandGroup = function() {
-			$.getJSON('/display/gnb/brand/group/list'
-				, function(result, status) {
-					if (status == 'success') {
-						if (result.length > 0) {
-							$('#divGnbBrandGrp').html('');
-							let tag = '';
-							let prevTitle = '';
-							$.each(result, function (idx, item) {
-								if (prevTitle != item.title) {
-									if (idx > 0) {
-										tag += '		</ul>\n';
-										tag += '	</div>\n';
-										tag += '</div>\n';
+	// GNB탭 생성
+	let fnCreateGnbTab = function() {
+		$.getJSON('/display/gnb/tab/list'
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#divGnbTab').html('');
+						$('#ulGnbTab').html('');
+						
+						let allCate = [[${allCateList}]];
+						$.each(result, function(idx, item) {
+							if (item.contentsType == 'C' || item.contentsType == 'O') { // 컨텐츠유형:카테고리, 아울렛
+								$.each(allCate, function(allCateIdx, allCateItem) {
+									if (item.cate1No == allCateItem.cate1No) {
+										let gnbCate = fnGetGnbCategory(allCateItem);
+										$('#divGnbTab').append(gnbCate);
+										$('#ulGnbTab').append(gnbCate);
 									}
-									tag += '<div class="row">\n';
-									tag += '	<p>' + item.title + '</p>\n';
-									tag += '	<div class="brand_list swiper-container">\n';
-									tag += '		<ul class="clear swiper-wrapper">\n';
-								} else {
-									tag += '			<li class="swiper-slide">\n';
-									tag += '				<a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + item.brandGroupNo + ');">\n';
-									tag += '					<img src="' + _uploadDefaultUrl + item.logoFileNm + '" alt=""/>\n';
-									tag += '					<span><em>' + item.brandGroupNm + '</em></span>\n';
-									tag += '				</a>\n';
-									tag += '			</li>\n';
-								}
-								prevTitle = item.title;
-							});
-							tag += '		</ul>\n';
-							tag += '	</div>\n';
-							tag += '</div>\n';
-							$('#divGnbBrandGrp').html(tag);
-						}
-						fnCreateGnbTab();
+								});
+							} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
+								$('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
+								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
+							}
+						});
 					}
-			});
-		}
-
-		$(document).ready(function() {
-			//검색창 호출
-			$(".common_search").load("sch_layer_pop.html");
-
-			// GNB toggle
-			$(document).on('mouseenter','.common_header .gnb .nav > ul > li',function(e){
-				if(!$(this).hasClass('has_depth')){
-					$('.black_screen').hide();
-					$('.common_header .gnb .depth_menu').hide();
-				} else if($(this).hasClass('has_depth')){
-					$('.black_screen').show();
-					$(this).find('.depth_menu').show();
-					$(this).parents('ul').siblings('ul').find('li.has_depth .depth_menu').hide();
-					$(this).siblings('li.has_depth').find('.depth_menu').hide();
 				}
-			}).on('mouseleave','.common_header .gnb',function(e){
-				$('.black_screen').hide();
-				$('.common_header .gnb .depth_menu').hide();
 			});
+	}
 
-			// GNB 하위메뉴
-			$(document).on('mouseenter','.common_header .maintabs li',function(e){
-				if($(this).find('> ul').length > 0){
-					$(this).addClass('on');
+	// GNB탭 > 브랜드 생성
+	let fnCreateGnbBrandGroup = function() {
+		$.getJSON('/display/gnb/brand/group/list'
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#divGnbBrandGrp').html('');
+						let tag = '';
+						let prevTitle = '';
+						$.each(result, function (idx, item) {
+							if (prevTitle != item.title) {
+								if (idx > 0) {
+									tag += '		</ul>\n';
+									tag += '	</div>\n';
+									tag += '</div>\n';
+								}
+								tag += '<div class="row">\n';
+								tag += '	<p>' + item.title + '</p>\n';
+								tag += '	<div class="brand_list swiper-container">\n';
+								tag += '		<ul class="clear swiper-wrapper">\n';
+							} else {
+								tag += '			<li class="swiper-slide">\n';
+								tag += '				<a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + item.brandGroupNo + ');">\n';
+								tag += '					<img src="' + _uploadDefaultUrl + item.logoFileNm + '" alt=""/>\n';
+								tag += '					<span><em>' + item.brandGroupNm + '</em></span>\n';
+								tag += '				</a>\n';
+								tag += '			</li>\n';
+							}
+							prevTitle = item.title;
+						});
+						tag += '		</ul>\n';
+						tag += '	</div>\n';
+						tag += '</div>\n';
+						$('#divGnbBrandGrp').html(tag);
+					}
+					fnCreateGnbTab();
 				}
-				$(this).find('> ul').show();
-				$(this).siblings('li').find('> ul').hide();
-			});
+		});
+	}
 
-			// GNB 더보기
-			$(document).on('click','.more_category .btn_more_cate',function(e){
-				$(this).parent('.more_category').toggleClass('on');
-				$(this).parent('.more_category').find('.cate_list').toggle();
-				return false;
-			});
+	$('#btnGnbSearch').on('click', function() {
+		//검색창 호출
+		$(".common_search").addClass('active');
+	});
+	
+	$(document).ready(function() {
+		//TOP BANNER close
+		$(document).on('click','#btn_close_bnr',function(e){
+			$('body').removeClass('lock');
+			$('.bnrtype_open').removeClass('fixed');
+			$('.hd_top_banner').remove();
+		});
+		
+		//TOP BANNER OPEN TYPE		
+		$(document).on('click','.bnrtype_open .btn_toggle_bnr',function(e){
+			$('body').toggleClass('lock');
+			$('.bnrtype_open').toggleClass('fixed');
+			$(this).text($(this).text() == '열기' ? '닫기' : '열기');
+		});
+		
+		// GNB toggle
+		$(document).on('mouseenter','.common_header .gnb .nav > ul > li',function(e){
+			$(this).parents('.nav').find('.bundle > li > a').removeClass('active');
+			$(this).children('a').addClass('active');
+			if(!$(this).hasClass('has_depth')){
+				$('.black_screen').hide();
+				$('.common_header .gnb .depth_menu, .box_depth2, .box_depth3, .box_depth4').hide();
+			} else if($(this).hasClass('has_depth')){
+				$('.black_screen').show();
+				$(this).find('.depth_menu').show();
+				$(this).parents('ul').siblings('ul').find('li.has_depth .depth_menu').hide();
+				$(this).siblings('li.has_depth').find('.depth_menu').hide();
+			}
+		}).on('mouseleave','.common_header .gnb',function(e){
+			$(this).find('.bundle > li > a').removeClass('active');
+			$('.black_screen').hide();
+			$('.common_header .gnb .depth_menu, .box_depth2, .box_depth3, .box_depth4').hide();
+		});
 
-			// GNB - 슬라이드 > 브랜드_GNB
-			var brand_gnb_slide = new Swiper('#header .gnb .brand_list', {
-				observer: true,
-				observeParents: true,
-				centeredSlides: false,
-				slidesPerView: 'auto',
-				freeMode:true,
-			});
+		// GNB 하위메뉴
+		$(document).on('mouseenter','.common_header .maintabs li',function(e){
+			if($(this).find('> ul').length > 0){
+				$(this).addClass('on');
+			}
+			$(this).find('> ul').show();
+			$(this).siblings('li').find('> ul').hide();
+		});
 
-			//통합검색 - 슬라이드 > 지금 고객님들이 많이 보고 있어요
-			var realtimeItemSwiper = new Swiper('.common_search .realtime_slider .swiper-container', {
-				observer: true,
-				observeParents: true,
-				slidesPerView: 5,
-				spaceBetween: 20,
-				autoplay: {
-					delay: 2500,
-					disableOnInteraction:false,
-				},
-				navigation: {
-					nextEl: '.common_search .realtime_slider .swiper-button-next',
-					prevEl: '.common_search .realtime_slider .swiper-button-prev',
-				},
-				pagination: {
-					el: '.common_search .realtime_slider .swiper-pagination',
-					clickable: true,
-				},
-			});
+		// GNB 하위메뉴
+		$(document).on('mouseenter','.common_header .maintabs li',function(e){
+			if($(this).find('> ul').length > 0){
+				$(this).addClass('on');
+			}
+			$(this).find('> ul').show();
+			$(this).siblings('li').find('> ul').hide();
+		});
+		
+		// GNB 더보기
+		$(document).on('click','.more_category .btn_more_cate',function(e){
+			$(this).parent('.more_category').toggleClass('on');
+			$(this).parent('.more_category').find('.cate_list').toggle();
+			return false;
+		});
 
-// 			// 전체 카테고리 조회
-// 			fnGetAllCategory();
-			
-			// GNB탭 > 브랜드 생성
-			fnCreateGnbBrandGroup();
+		// GNB - 슬라이드 > 브랜드_GNB
+		var brand_gnb_slide = new Swiper('#header .gnb .brand_list', {
+			observer: true,
+			observeParents: true,
+			centeredSlides: false,
+			slidesPerView: 'auto',
+			freeMode:true,
 		});
-		/*]]>*/
-	</script>
+
+		//통합검색 - 슬라이드 > 지금 고객님들이 많이 보고 있어요
+		var realtimeItemSwiper = new Swiper('.common_search .realtime_slider .swiper-container', {
+			observer: true,
+			observeParents: true,
+			slidesPerView: 5,
+			spaceBetween: 20,
+			autoplay: {
+				delay: 2500,
+				disableOnInteraction:false,
+			},
+			navigation: {
+				nextEl: '.common_search .realtime_slider .swiper-button-next',
+				prevEl: '.common_search .realtime_slider .swiper-button-prev',
+			},
+			pagination: {
+				el: '.common_search .realtime_slider .swiper-pagination',
+				clickable: true,
+			},
+		});
+
+// 		// 전체 카테고리 조회
+// 		fnGetAllCategory();
+		
+		// GNB탭 > 브랜드 생성
+		fnCreateGnbBrandGroup();
+	});
+/*]]>*/
+</script>
 
 </header>
 

+ 52 - 5
src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html

@@ -65,8 +65,8 @@
 	<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.0/js/swiper.min.js"></script>
 	<script src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js"></script>
 	<script src="/ux/pc/js/jquery.modal.min.js"></script>
+	<script src="/ux/pc/js/slick.min.js"></script>
 	<script src="/ux/pc/js/jquery-ui.js"></script>
-<!-- 	<script src="/ux/pc/js/jquery.ui.datepicker.monthyearpicker.js"></script> -->
 	<script src="/ux/plugins/jquery.serializeObject.min.js"></script>
 	<script src="/ux/plugins/mcxdialog/mcxdialog_ui.js"></script>
 	
@@ -82,23 +82,28 @@
 // 		gtag('config', 'UA-168660512-1');
 	</script>
 	
-	<th:block th:if="${sessioninfo != null}">
+	<th:block th:if="${sessionInfo != null}">
 		<script th:inline="javascript">
 		/*<![CDATA[*/
 			var gCustId = [[${sessionInfo.custId}]];
-			var gEmail = [[${sessionInfo.Email}]];
+			var gEmail = [[${sessionInfo.email}]];
+			var gGender = [[${sessionInfo.sexGb}]];
+			var gBirthYmd = [[${sessionInfo.birthYmd}]];
 			/*]]>*/
 		</script>
 	</th:block>
-	<th:block th:if="${sessioninfo == null}">
+	<th:block th:if="${sessionInfo == null}">
 		<script th:inline="javascript">
 		/*<![CDATA[*/
 			var gCustId = '';
 			var gEmail = '';
+			var gGender = '';
+			var gBirthYmd = '';
 			/*]]>*/
 		</script>
 	</th:block>
-	
+
+	<script type="text/javascript" th:src="@{'/ux/plugins/gaga/gaga.validation.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/ux/plugins/gaga/gaga.validation.js"></script>
 	<script src="/ux/sha512.min.js"></script>
 	<script>
 		String.prototype.hashCode = function() {
@@ -125,6 +130,48 @@
 			x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
 		})();
 		/* \\Eiengine Script (Visit) */
+
+		// 로그인 성공 시 - 시작
+
+		// 나이대 구하기 31 -> 30
+		var fnGetAge = function (birthYmd) {
+			let age = '';
+			if (!gagajf.isNull(birthYmd) && birthYmd.length > 7) {
+				let year = Number(new Date().getFullYear());
+				let curretAge = year - Number(birthYmd.substr(0, 4));
+				age = String(curretAge).substr(0 , 1) + '0';
+			}
+			return age;
+		}
+		// 성별 공통코드 값 M-> A, F-> B
+		var fnGetGender = function (gGender) {
+			let gender = '';
+			if (!gagajf.isNull(gGender)) {
+				gender = gGender.substr(5,6) === 'M' ? 'A' : 'B';
+			}
+			return gender;
+		}
+
+		let loginSuccessYn = gagajf.getCookie('st24ck_login_success');
+		if (loginSuccessYn === 'Y') {
+			gagajf.setCookie('st24ck_login_success', '', 0);
+			let age = fnGetAge(gBirthYmd);
+			let gender = fnGetGender(gGender);
+			window._eglqueue = window._eglqueue || [];
+			_eglqueue.push(['setVar','cuid', eglqueueCuid]);
+			_eglqueue.push(['setVar','userId', hCustId]);
+			_eglqueue.push(['setVar','gender', gender]);
+			_eglqueue.push(['setVar','age', age]);
+			_eglqueue.push(['track','user']);
+			(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>
 </head>
 

+ 1 - 9
src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html

@@ -312,15 +312,7 @@
 		};
 
 		$(document).ready( function() {
-			$(document).on('click','.mb .registration_tap > .form_group > .form_field > div',function(e){
-				// form 데이터 리셋
-				$('#searchCustInfo')[0].reset();
-
-				$(this).find('input').prop('checked', true);
-				$(this).parents('.form_group').find('.regist_box').removeClass('on');
-				$(this).parents('.form_group').find('.regist_box').eq($(this).index()).addClass('on');
-				return false;
-			});
+			$('#searchCustInfo')[0].reset();
 		});
 
 /*]]>*/

+ 8 - 1
src/main/webapp/WEB-INF/views/web/customer/JoinCompleteFormWeb.html

@@ -58,7 +58,14 @@
 				<h4>신규회원 혜택안내</h4>
 			</div>
 			<div class="cont_body">
-				신규회원 혜택안내 내용
+				<img src="/images/pc/img_mb_join_done.jpg" alt="신규회원 혜택안내 내용">
+				<div class="btn_group_block btn_group_md ui_row">
+					<div class="ui_col_12">
+						<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_MAIN);">
+							<span>쇼핑하러 가기</span>
+						</button>
+					</div>
+				</div>
 			</div>
 		</div>
 		<!--//신규가입인 경우-->

+ 32 - 8
src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html

@@ -138,8 +138,30 @@
 									</div>
 								</div>
 								<!-- //임시비밀번호 발급 -->
+								<div id="failCustId" class="find_result clear hide">
+									<div class="form_info">
+										<span class="ico_content_none"></span>
+										<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+										<p class="t_info mt10">
+											정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
+										</p>
+									</div>
+									<div class="btn_group_block btn_group_md ui_row">
+										<div class="ui_col_6">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+												<span>회원가입</span>
+											</button>
+										</div>
+										<div class="ui_col_6">
+											<button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
+												<span>다시 찾기</span>
+											</button>
+										</div>
+									</div>
+								</div>
+								<!-- //회원정보로 아이디찾기 실패일경우 -->
 								<!-- 비밀번호 찾기 결과안내 실패일경우 -->
-								<div id="failAuthentication" class="find_result clear" style="display: none;">
+								<div id="failAuthentication" class="find_result clear hide">
 									<div class="form_info">
 										<span class="ico_content_none"></span>
 										<p>입력한 정보와 일치하는 정보가 존재하지 않습니다.</p>
@@ -235,7 +257,13 @@
 		var fnGetDisplayFail = function (authMethod) {
 			$('.form_head').hide();
 			$('.registration_nav').hide();
-			$('#failAuthentication').show();
+			if (authMethod === 'custInfo') {
+				$('#failCustId').show();
+			}
+			if (authMethod === 'mobile' || authMethod === 'ipin') {
+				$('#failAuthentication').show();
+			}
+
 		};
 
 		// 나이스 본인인증 후 콜백
@@ -250,14 +278,10 @@
 		};
 
 		$(document).ready( function() {
-			$(document).on('click','.mb .registration_tap > .form_group >.form_field > div',function(e){
-				$(this).find('input').prop('checked', true);
-				$(this).parents('.form_group').find('.regist_box').removeClass('on');
-				$(this).parents('.form_group').find('.regist_box').eq($(this).index()).addClass('on');
-				return false;
-			});
+			$('#searchCustInfo')[0].reset();
 		});
 
+
 		/*]]>*/
 	</script>
 

+ 1 - 2
src/main/webapp/WEB-INF/views/web/customer/PrivacyTrustLayerFormWeb.html

@@ -22,8 +22,7 @@
 		<div class="modal-body">
 			<div class="pop_cont">
 				<div class="text_wrap">
-					개인정보 취급 위탁내용이 들어갑니다.<br>
-
+					<div class="text_wrap" th:utext="${#strings.replace(#strings.replace(clause,'&amplt;','<'),'&ampgt;','>')}">
 				</div>
 			</div>
 		</div>

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

@@ -102,7 +102,7 @@
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 														<div class=" itemName" th:text="${goodsData.goodsFullNm}"></div>
 														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')+'원'}"></p>
-														<div class="itemComment">#가을느낌 물씬!</div>
+														<div class="itemComment" th:text="${goodsData.goodsTnm}">#가을느낌 물씬!</div>
 													</a>
 												</div>
 											</div>
@@ -170,11 +170,12 @@
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}"></p>
 														<div class="itemName" th:text="${goodsData.goodsFullNm}"></div>
-														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">
+														<p class="itemPrice">
+															[[${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')} + 원]]
 															<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}"></span>
 															<span class="itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
 														</p>
-														<div class="itemComment">#가을느낌 물씬!!</div>
+														<div class="itemComment" th:text="${goodsData.goodsTnm}">#가을느낌 물씬!!</div>
 													</a>
 												</div>
 											</div>
@@ -208,7 +209,7 @@
 												<th:block th:if="${LookbookData.lookbookGoodsList != null and !LookbookData.lookbookGoodsList.empty}" th:each="lookbookGoods, status : ${LookbookData.lookbookGoodsList}">
 													<div class="item_picker" th:style="${'left:'+lookbookGoods.xlim+'%; top:'+lookbookGoods.ylim+'%;'}">
 														<!--<button type="button" id="btn_lookbook_picker01" ><span class="ico ico_picker"></span></button>-->
-														<button type="button" th:onclick="fnGoodsPopup([[${lookbookGoods.sysImgNm}]],[[${lookbookGoods.brandGroupNm}]],[[${lookbookGoods.goodsNm}]],[[${lookbookGoods.listPrice}]],[[${lookbookGoods.currPrice}]],[[${lookbookGoods.dcRate}]],[[${lookbookGoods.goodsCd}]])"><span class="ico ico_picker"></span></button>
+														<button type="button" th:onclick="fnGoodsPopup([[${lookbookGoods.sysImgNm}]],[[${lookbookGoods.brandGroupNm}]],[[${lookbookGoods.goodsFullNm}]],[[${lookbookGoods.listPrice}]],[[${lookbookGoods.currPrice}]],[[${lookbookGoods.dcRate}]],[[${lookbookGoods.goodsCd}]])"><span class="ico ico_picker"></span></button>
 														<!--id="btn_lookbook_picker01" <div class="pick_descr">
 															<a href="" th:text="${lookbookGoods.goodsNm}">
 															</a>
@@ -247,7 +248,8 @@
 													</div>
 													<p class=" itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 													<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-													<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">80,100
+													<p class="itemPrice" >
+														[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')} + 원]]
 														<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
 														<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
 													</p>
@@ -361,7 +363,7 @@
 													<span class="badge13">단독특가</span>
 													<span class="badge13">무료배송</span>
 												</p>
-												<div class="itemComment">#가을느낌 물씬!</div>
+												<div class="itemComment" th:text="${goodsData.goodsTnm}">#가을느낌 물씬!</div>
 											</a>
 										</div>
 									</div>

+ 90 - 168
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -243,7 +243,7 @@
 							</div>
 							<div class="count_wrap">
 								<div>
-									<p><span>9999</span>개의 상품</p>
+									<p><span id="totCntId">9999</span>개의 상품</p>
 								</div>
 								<div>
 									<ul>
@@ -259,168 +259,18 @@
 									</ul>
 								</div>
 							</div>
-							<div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
-								</div>
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-												<span class="badge13">쿠폰할인 </span>
-												<span class="badge13">무료배송 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
-								</div>
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-												<span class="badge13">쿠폰할인 </span>
-												<span class="badge13">무료배송 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
-								</div>
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
-								</div>
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
-								</div>
-								<div class="item_prod">
-									<div class="item_state">
-										<button type="button" class="itemLike">관심상품 추가</button>
-										<a href="#none" class="itemLink">
-											<div class="rank ranker"><span>1</span></div>
-											<div class="itemPic">
-												<img alt="BLUE-a" class=" vLHTC pd_img" src="/images/pc/thumb/prod1.jpg">
-											</div>
-											<p class="itemBrand">BRAND NAME</p>
-											<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-											<p class="itemPrice">80,100
-												<span class="itemPrice_original">89,000</span>
-												<span class=" itemPercent">10%</span>
-											</p>
-											<div class="itemcolorchip">
-												<span class="chip_color35" value="ABM">BEIGE</span>
-												<span class="chip_color54" value="BDS">BLACK</span>
-												<span class="chip_color40" value="YBR">WHITE</span>
-											</div>
-											<p class="itemBadge">
-												<span class="badge13">베스트 </span>
-											</p>
-											<div class="itemComment">#주문 폭주 상품</div>
-										</a>
-									</div>
+
+							<div id="infiniteContainer">
+								<div id="listBoxOuter" class="itemsGrp">
+									<ul class="productlist quarter" >
+									</ul>
 								</div>
 							</div>
+
+							<div class="itemsGrp" id="listBox">
+
+							</div>
+
 						</div>
 					</div>
 				</div>
@@ -429,7 +279,7 @@
 	</div>
 	<form id="searchGoodsForm" name="searchGoodsForm">
 		<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
-		<input type="hidden" name="pageSize" value ="32"/>
+		<input type="hidden" name="pageSize" value ="30"/>
 		<input type="hidden" name="cateNo" th:value="${cateInfo.cateNo}"/>
 		<input type="hidden" name="cateGb" th:value="${cateInfo.cateGb}"/>
 		<input type="hidden" name="brandGroupNo" th:value="${cateInfo.brandGroupNo}"/>
@@ -441,9 +291,9 @@
 		<input type="hidden" name="sortGb"/>
 	</form>
 
-	<script type="text/javascript" src="/ux/plugins/jquery.history.min.js"></script>
-	<script type="text/javascript" src="/ux/plugins/gaga.infinite.scroll.js"></script>
-
+	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
+	<script src="/ux/plugins/jquery/jquery.history.min.js"></script>
+	<script th:src="@{'/biz/goodsSession.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goodsSession.js"></script>
 	<script th:inline="javascript">
 		/*<![CDATA[*/
 		var filterPriceList = [[${filterPriceList}]];
@@ -505,12 +355,32 @@
 
 		// 상품 검색
 		var fnGetInfiniteScrollDataList = function (pageNum){
-			$("#searchForm input[name=pageNo]").val(pageNum+1);
-			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchForm,  gagaInfiniteScroll.jsonToHtml);
+			console.log('pageNum:::'+pageNum);
+			$("#searchGoodsForm input[name=pageNo]").val(pageNum+1);
+			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchGoodsForm,  gagaInfiniteScroll.jsonToHtml);
 		}
 
 		var fnDrawInfiniteScrollData = function (result){
-			console.log('nn');
+			console.log('fnDrawInfiniteScrollData');
+			let totalCnt = result.totalCnt;
+			$("#totCntId").text(totalCnt.addComma());
+			gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
+
+			var ithrCd = '';
+			var contentLoc = '';
+			if (result.dataList != null && result.dataList.length > 0) {
+				var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];;
+				let lastPage = result.paging.pageable.pageNo;
+				let endRow = result.endRow - result.paging.pageable.pageSize;
+				var htm = fnCreateGoodsList(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow);
+				console.log('1234');
+				gagaInfiniteScroll.draw(htm);
+			}else {
+				if($("#searchForm input[name=pageNo]").val()==1){
+					$('#listBox').html('<li class="none">상품정보가 존재하지 않습니다.</li>');
+				}
+				gagaInfiniteScroll.draw('not');
+			}
 		}
 
 		var fnCreateCategoryList = function (){
@@ -619,6 +489,58 @@
 			return tag;
 		}
 
+		// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
+		$(window).on("pageshow", function(event) {
+			$('#filterForm input[name=brand]:checked').each(function(){
+				$(this).parent().addClass("active");
+			});
+			$('#filterForm input[name=size]:checked').each(function(){
+				$(this).parent().addClass("active");
+			});
+			$('#filterForm input[name=price]:checked').each(function(){
+				$(this).parent().addClass("active");
+			});
+			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+				var historyData = sessionStorage.getItem(document.location.href);
+				if(historyData!=null){
+					historyData = JSON.parse(historyData);
+				}else{
+					historyData = {};
+				}
+				if(typeof historyData.sortGbNm!='undefined' && historyData.sortGbNm!=''){
+					$(".arrayWrap .btn").text(historyData.sortGbNm);
+				}
+				if(typeof historyData.filterHtml!='undefined' && historyData.filterHtml!=''){
+					$("#searchForm").append(historyData.filterHtml);
+					filterHtml = historyData.filterHtml;
+				}
+				if(typeof historyData.filterStatHtml!='undefined' && historyData.filterStatHtml!=''){
+					$(".filterstate").append(historyData.filterStatHtml);
+					filterStatHtml = historyData.filterStatHtml;
+				}
+				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
+					$("#totalGoodsCnt").text(historyData.totalCount);
+				}
+				if(typeof historyData.sortGb!='undefined' && historyData.sortGb!=''){
+					$("#sortSelect").val(historyData.sortGb);
+					$("#searchForm input:hidden[name=sortGb]").val(historyData.sortGb);
+					fnSortChange(historyData.sortGb);
+				}else{
+					fnGoodsListSearch();
+				}
+			}else{
+				fnCategoryGoodsInfiniteScrollInit();
+				var sortGb = [[${sortGb}]];
+				if(sortGb=='new' || sortGb=='best'){
+					$("#sortSelect").val(sortGb);
+					$("#sortSelect").parent('div').children('span').text($("#sortSelect option:selected").text())
+					fnSortChange(sortGb);
+				}else{
+					fnGoodsListSearch();
+				}
+			}
+		});
+
 		/*]]>*/
 	</script>
 

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

@@ -209,10 +209,10 @@
 		let allCate = [[${allCateList}]];
 		$.each(allCate, function(idx1, cate1) {
 			if ([[${params.cate1No}]] == cate1.cate1No) {
-				let tag = '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate1.cateGb + '\', ' + cate1.cate1No + ');">전체</a>\n';
+				let tag = '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\', ' + cate1.cate1No + ');">전체</a>\n';
 				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 					$.each(cate1.cate2List, function(idx2, cate2) {
-						tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
+						tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
 					});
 				}
 				$('.dp_cate_list').html(tag);

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

@@ -121,7 +121,7 @@
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 														<div class=" itemName" th:text="${goodsData.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
 														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">488,000원</p>
-														<div class="itemComment">#가을느낌 물씬!</div>
+														<div class="itemComment" th:text="${goodsData.goodsTnm}">#가을느낌 물씬!</div>
 													</a>
 												</div>
 											</div>
@@ -211,11 +211,13 @@
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandEnm}">BRAND NAME</p>
 															<div class="itemName" th:text="${goodsData.goodsNm}">여성 체인 프린트 큐롯 스커트 프린트 큐롯 스커트</div>
-															<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">80,100
-																<span class="itemPrice_original" th:text="${#numbers.formatInteger(planningGoods.listPrice,1,'COMMA')}">89,000</span>
-																<span class="itemPercent" th:if="${planningGoods.currPrice != planningGoods.listPrice}" th:text="${(planningGoods.listPrice == 0 ? 0 : #numbers.formatDecimal((planningGoods.listPrice - planningGoods.currPrice) / (planningGoods.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
+															<p class="itemPrice">
+																[[${#numbers.formatInteger(goodsData.currAprice,0,'COMMA')} + 원]]
+																<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,0,'COMMA')} + '원'"></span>
+																<span class=" itemPercent" th:text="${#numbers.formatDecimal(goodsData.dcArate,1,0)} + '%'"></span>
+																<!--<span class="itemPercent" th:if="${planningGoods.currPrice != planningGoods.listPrice}" th:text="${(planningGoods.listPrice == 0 ? 0 : #numbers.formatDecimal((planningGoods.listPrice - planningGoods.currPrice) / (planningGoods.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>-->
 															</p>
-															<div class="itemComment">#데일리웨어로 매일입고싶은</div>
+															<div class="itemComment" th:text="${goodsData.goodsTnm}">#데일리웨어로 매일입고싶은</div>
 														</a>
 													</div>
 												</div>
@@ -287,7 +289,7 @@
 																	<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
 																	<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
 																</p>
-																<div class="itemComment">#데일리웨어로 매일입고싶은</div>
+																<div class="itemComment" th:text="${goodsData.goodsTnm}">#데일리웨어로 매일입고싶은</div>
 															</a>
 														</div>
 													</div>
@@ -371,11 +373,11 @@
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 																		<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-																		<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">80,100
+																		<p class="itemPrice">[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')} + 원]]
 																			<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
 																			<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
 																		</p>
-																		<div class="itemComment">#주문 폭주 상품</div>
+																		<div class="itemComment" th:text="${goodsData.goodsTnm}">#주문 폭주 상품</div>
 																	</a>
 																</div>
 															</div>
@@ -398,6 +400,329 @@
 			</th:block>
 		</th:block>
 
+		<!-- 10. 당신을위한제안 -->
+		<div class="content main_foryou">
+			<div class="cont_head">
+				<p class="displayH">당신을 위한 제안</p>
+				<span>스타일24에서 가장 주목받는 상품을 살펴보세요</span>
+			</div>
+			<div class="cont_body">
+				<div class="post-sug fy_nav">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide">
+								<ul>
+									<li><button class="btn btn_shape active" data-tab="fy1"><div><span class="number">1</span><span>BUCKAROO</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy2"><div><span class="number">2</span><span>기모청바지</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy3"><div><span class="number">3</span><span>겨울 팬츠</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy4"><div><span class="number">4</span><span>컨버스 주니어</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy5"><div><span class="number">5</span><span>모이몰른</span></div></button><a href="#none">자세히 보기</a></li>
+								</ul>
+							</div>
+							<div class="swiper-slide">
+								<ul>
+									<li><button class="btn btn_shape" data-tab="fy6"><div><span class="number">6</span><span>컨버스 주니어</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy7"><div><span class="number">7</span><span>겨울 팬츠</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy8"><div><span class="number">8</span><span>BUCKAROO</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy9"><div><span class="number">9</span><span>모이몰른</span></div></button><a href="#none">자세히 보기</a></li>
+									<li><button class="btn btn_shape" data-tab="fy10"><div><span class="number">10</span><span>기모청바지</span></div></button><a href="#none">자세히 보기</a></li>
+								</ul>
+							</div>
+						</div>
+					</div>
+					<div class="swiper-controls">
+						<div class="swiper-pagination"></div>
+					</div>
+				</div>
+				<div class="fy_item active" id="fy1">
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug01.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">자카드 방풍 패딩 스웨터 가디건 자카드 </div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug02.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part lg">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug03.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug04.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug05.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug06.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug07.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+				</div>
+
+				<div class="fy_item" id="fy2">
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug04.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug05.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug01.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">자카드 방풍 패딩 스웨터 가디건 자카드 </div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug02.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug06.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug07.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+					<div class="part lg">
+						<div class="item_prod">
+							<div class="item_state">
+								<button type="button" class="itemLike" tabindex="0">관심상품 추가</button>
+								<a href="#none" class="itemLink" tabindex="0">
+									<div class="itemPic">
+										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/main_sug03.jpg">
+									</div>
+									<div class="itemInfo">
+										<p class="itemBrand">BRAND NAME</p>
+										<div class=" itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+										<p class="itemPrice">80,100</p>
+									</div>
+								</a>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="fy_item" id="fy3"></div>
+				<div class="fy_item" id="fy4"></div>
+				<div class="fy_item" id="fy5"></div>
+				<div class="fy_item" id="fy6"></div>
+				<div class="fy_item" id="fy7"></div>
+				<div class="fy_item" id="fy8"></div>
+				<div class="fy_item" id="fy9"></div>
+				<div class="fy_item" id="fy10"></div>
+			</div>
+		</div>
+
+		<!-- 11. TV 슬라이드 -->
+		<div class="content wide main_tv">
+			<div class="cont_head">
+				<p class="displayH t_c">STYLE24 TV</p>
+			</div>
+			<div class="cont_body">
+				<div class="swiper-container post-tv">
+					<div class="swiper-wrapper">
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/hqryeW6scd0?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/J7nowE2iTIM?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/cRiKrFk7FTM?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/hqryeW6scd0?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/J7nowE2iTIM?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="movbox">
+								<iframe width="100%" height="100%" src="https://www.youtube.com/embed/cRiKrFk7FTM?rel=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+							</div>
+						</div>
+					</div>
+					<div class="swiper-button-prev white"></div> <!-- 클래스명 white 추가 -->
+					<div class="swiper-button-next white"></div>
+				</div>
+				<div class="swiper-controls">
+					<div class="swiper-pagination"></div>
+				</div>
+			</div>
+		</div>
 
 
 	<!-- End Of Main Contents -->

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


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

@@ -56,7 +56,7 @@
 																		or #strings.contains(goodsImg.sysImgNm,'_M3.')
 																		or #strings.contains(goodsImg.sysImgNm,'_M4.')
 																		or #strings.contains(goodsImg.sysImgNm,'_M5.')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 			</th:block>
 		</div>
 	</div>
@@ -79,7 +79,7 @@
 																		or #strings.contains(goodsImg.sysImgNm,'_D3.')
 																		or #strings.contains(goodsImg.sysImgNm,'_D4.')
 																		or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 			</th:block>
 		</div>
 	</div>
@@ -112,7 +112,7 @@
 	<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01.')}">
 		<div class="view">
 			<th:block th:each="goodsImg, status : ${goodsImgList}" >
-				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 				</th:block>
 		</div>
 	</div>

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

@@ -40,7 +40,7 @@
 													th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
 															or #strings.contains(goodsImg.sysImgNm,'_L1.')
 															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></div>
+											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=48'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></div>
 										</th:block>	
 										</div>
 									</div>
@@ -55,7 +55,7 @@
 									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
 												or #strings.contains(goodsImg.sysImgNm,'_L1.')
 												or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></li>
+									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=558'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></li>
 								</th:block>
 							</ul>
 						</div>
@@ -159,7 +159,7 @@
 														<div class="item_state">
 															<a href="javascript:void(0);" class="itemLink">
 																<div class="itemPic">
-																	<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+																	<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=285'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																</div>
 																<div class="itemName">선택</div>
 															</a>
@@ -174,7 +174,7 @@
 															<div class="item_state" >
 																<a href="javascript:void(0);" class="itemLink" >
 																	<div class="itemPic">
-																		<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+																		<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=285'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																	</div>
 																	<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 																	<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
@@ -716,25 +716,6 @@
 	
 	//장바구니담기
 	var fnAddCart = function(btnType){
-		
-		// 바로구매는 로그인여부 확인
-		if (btnType == "O" && !cfCheckLogin()) {
-			
-			let btn = ["비회원 구매", "로그인후 구매"]; //버튼명[좌,우]
-			mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
-				btn: btn,
-				btnClick: function(index){
-					if (index == 1){ //button1 일때 처리문
-						// 비회원 URL
-						ALERT('비회원');
-					} else {	//button2 일때 처리문
-						cfnGoToPage(_PAGE_LOGIN);
-					}
-				}
-			});
-			return false;
-		}
-		
 		let params = [];
 		
 		let target = $('#cartForm input[name=cea]');

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

@@ -29,7 +29,7 @@
 							<div class="item_state">
 								<a href="javascript:void(0);" class="itemLink">
 									<div class="itemPic">
-										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									</div>
 									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>
@@ -47,7 +47,7 @@
 								<div class="item_state">
 									<a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]])">
 										<div class="itemPic">
-											<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 										</div>
 										<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 										<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -25,7 +25,7 @@
 			<div class="item_state">
 				<a href="javascript:void(0);" class="itemLink">
 					<div class="itemPic">
-						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}">
 					</div>
 					<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 					<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -41,7 +41,7 @@
 													th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
 															or #strings.contains(goodsImg.sysImgNm,'_L1.')
 															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></div>
+											<a th:href="${'#navLocate'+ status.count}"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=48'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></div>
 										</th:block>	
 										</div>
 									</div>
@@ -56,7 +56,7 @@
 									th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
 												or #strings.contains(goodsImg.sysImgNm,'_L1.')
 												or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></li>
+									<a href="javascript:void(0);"><span class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></span></a></li>
 								</th:block>
 							</ul>
 						</div>
@@ -176,7 +176,7 @@
 									<ul >
 										<li th:each="goodsOption1, status : ${goodsOption1List}">
 											<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
-												<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm}" alt="">
+												<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm +'?RS=64'}" alt="">
 											</a>
 										</li>
 									</ul>
@@ -441,7 +441,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_M3.')
 																					or #strings.contains(goodsImg.sysImgNm,'_M4.')
 																					or #strings.contains(goodsImg.sysImgNm,'_M5.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 						</th:block>
 					</div>
 				</div>
@@ -464,7 +464,7 @@
 																					or #strings.contains(goodsImg.sysImgNm,'_D3.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D4.')
 																					or #strings.contains(goodsImg.sysImgNm,'_D5.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 						</th:block>
 					</div>
 				</div>
@@ -474,7 +474,7 @@
 					<span class="tit_view">FABRIC</span>
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1.')}">
-						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+						<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 						</th:block>
 					</div>
 				</div>
@@ -497,7 +497,7 @@
 				<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01.')}">
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" >
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="">
 							</th:block>
 					</div>
 				</div>
@@ -660,7 +660,7 @@
 																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
 																	</th:block>
 																		<div class="itemPic">
-																			<img alt="" class="vLHTC pd_img"  th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm}">
+																			<img alt="" class="vLHTC pd_img"  th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm+'?RS=100'}">
 																		</div>
 																		<p class="itemBrand" th:text="${lookbookGoods.brandGroupNm}">CURLYSUE 컬리수</p>
 																		<div class="itemName" th:text="${lookbookGoods.goodsFullNm}">[★2020 겨울신상★] 리버시블 경량점퍼 CPW0XQJM51 [겨울]</div>
@@ -849,7 +849,6 @@
 		let target=$('.select_custom.item_opt2');
 		let targetSize = target.length;	//구성품 갯수
 		
-		//eskim
 		let cnt = 0;
 		let itemSize = 0;
 		target.each(function(){
@@ -1037,7 +1036,7 @@
 	var fnAddCart = function(btnType){
 		
 		// 바로구매는 로그인여부 확인
-		if (btnType == "O" && !cfCheckLogin()) {
+/* 		if (btnType == "O" && !cfCheckLogin()) {
 			
 			let btn = ["비회원 구매", "로그인후 구매"]; //버튼명[좌,우]
 			mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
@@ -1052,9 +1051,8 @@
 				}
 			});
 			return false;
-		}
+		} */
 		
-		let params = [];
 		let goodsType = $("#cartForm  input[name=goodsType]").val();
 
 		if (goodsType == 'G056_N'){
@@ -1063,6 +1061,7 @@
 				return;
 			}
 		
+			let compsList = [];
 			let obj = new Object();
 			obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
 			obj.optCd = $("#cartForm  input[name=optCd]").val();
@@ -1073,10 +1072,13 @@
 			obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
 			obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
 			obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
-			params.push(obj);
+			compsList.push(obj);
+			
+			// 장바구니담기
+			cfnAddCart(compsList);
 
 		}else if (goodsType == 'G056_S'){  //수정요
-		
+			
 			let target=$('.select_custom.item_opt2');
 			let targetSize = target.length;	//구성품 갯수
 			let itemSize = 0;
@@ -1091,6 +1093,11 @@
 				return false;
 			}
 			
+			let cartGoodsList = [];
+			let compsList = [];
+			let goodsList = {
+				cartCompsList : new Array()
+			}
 			target.each(function() {
 				var arrInfo = $(this).find('input[name=opt2]').val().split('|');	// 상품코드|사이즈|구성수량
 				
@@ -1105,13 +1112,17 @@
 				obj.ithrCd =$("#cartForm  input[name=ithrCd]").val();
 				obj.contentsLoc =$("#cartForm  input[name=contentsLoc]").val();
 				obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
-				params.push(obj);
+				compsList.push(obj);
 				
 			});
+			
+			goodsList.cartCompsList = compsList;
+			cartGoodsList.push(goodsList);
+			
+			// 장바구니담기
+			cfnAddCart(cartGoodsList);
 		}
 		
-		// 장바구니담기
-		cfnAddCart(params);
 	}
 
 	// 룩북속 상품 쇼핑백 담기
@@ -1212,7 +1223,8 @@
 						tag += '<li class="selected" id="goodsOpt2'+item.goodsCd+'">선택</li>\n';	
 					}
 					let soldoutYn = ""; 
-					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
+					let saleQty = (Number(qty) * Number(minOrdQty));
+					if ("Y" == item.soldoutYn || item.stockQty <= saleQty)soldoutYn = "true";
 					if (selfGoodsYn == "Y"){
 						tag += '<li aria-disabled="'+soldoutYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{

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

@@ -304,7 +304,7 @@
 								</th:block>
 							</div>
 							<div class="pic" th:unless="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
-								<span class="thumb" th:style="${'background-image:url('+imgGoodsUrl+ '/'+goodsInfo.sysImgNm+');'}">
+								<span class="thumb" th:style="${'background-image:url('+imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=365);'}">
 								</span>
 							</div>
 							<div class="star_score" th:with="starScore=${#numbers.formatDecimal((bestReview.score*100/5), 0,0)}">

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

@@ -66,7 +66,7 @@
 <div class="shareWrap" th:with="stylelUrl=${@environment.getProperty('domain.front')}, imgGoodsUrl=${@environment.getProperty('upload.goods.view')}">
 	<div id="layerShare" class="setShare open">
 		<span>
-			<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm}');|"><span>카카오톡</span></button>
+			<button type="button" class="kk" th:attr="onclick=|cfnSendToKakao('${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '${imgGoodsUrl+ '/'+goodsInfo.sysImgNm+'?RS=80'}');|"><span>카카오톡</span></button>
 			<button type="button" class="fb" th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm}', '', '');|"><span>페이스북</span></button>
 			<button type="button" class="tw" th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/goods/detail/form?goodsCd='+goodsInfo.goodsCd}', '${goodsInfo.goodsFullNm+ '#style24몰'}', '', '');|"><span>트위터</span></button>
 			<button type="button" class="url btn_copy"><span>URL</span></button>
@@ -104,7 +104,7 @@
 										<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
 									</div>
 									<div class="itemPic">
-										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=285'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									</div>
 									<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 									<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
@@ -131,7 +131,7 @@
 											<div class="item_state">
 												<a href="javascript:void(0)" class="itemLink">
 													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 													</div>
 													<div class="itemName">선택</div>
 												</a>
@@ -146,7 +146,7 @@
 												<div class="item_state">
 													<a href="#none" class="itemLink">
 														<div class="itemPic">
-															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
@@ -182,7 +182,7 @@
 											<div class="item_state">
 												<a href="javascript:void(0)" class="itemLink">
 													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 													</div>
 													<div class="itemName">선택</div>
 												</a>
@@ -197,7 +197,7 @@
 												<div class="item_state">
 													<a href="#none" class="itemLink">
 														<div class="itemPic">
-															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
@@ -233,7 +233,7 @@
 											<div class="item_state">
 												<a href="javascript:void(0)" class="itemLink">
 													<div class="itemPic">
-														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+														<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 													</div>
 													<div class="itemName">선택</div>
 												</a>
@@ -248,7 +248,7 @@
 												<div class="item_state">
 													<a href="#none" class="itemLink">
 														<div class="itemPic">
-															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+															<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 														</div>
 														<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 														<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 </div>
@@ -284,7 +284,7 @@
 													<div class="item_state">
 														<a href="javascript:void(0)" class="itemLink">
 															<div class="itemPic">
-																<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+																<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 															</div>
 															<div class="itemName">선택</div>
 														</a>
@@ -299,7 +299,7 @@
 														<div class="item_state">
 															<a href="javascript:void(0);" class="itemLink">
 																<div class="itemPic">
-																	<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+																	<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 																</div>
 																<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 																<div class="itemName" ><span class="tit_option" th:text="${'[상품'+status.count+']'}">[상품1]</span><th:block th:text="${goodsInfo.goodsFullNm}"></th:block></div>
@@ -391,7 +391,7 @@
 										<div class="item_state">
 											<a href="javascript:void(0)" class="itemLink">
 												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+													<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 												</div>
 												<div class="itemName">선택</div>
 											</a>
@@ -404,7 +404,7 @@
 										<div class="item_state">
 											<a href="javascript:void(0);" class="itemLink" th:onclick="fnGoodsDealDesc([[${goodsInfo.compsGoodsCd}]], [[${goodsInfo.currPrice}]], [[${goodsInfo.selfGoodsYn}]], [[${(goodsInfo.goodsStat != 'G008_90' or goodsInfo.stockQty <= 0)? 'Y':'N' }]])">
 												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+													<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 												</div>
 												<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 												<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -31,7 +31,7 @@
 						<div class="item_state">
 							<a href="javascript:void(0);" class="itemLink">
 								<div class="itemPic">
-									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}">
+									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}">
 								</div>
 								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 								<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

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

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

@@ -25,7 +25,7 @@
 			<div class="item_state">
 				<a href="javascript:void(0);" class="itemLink">
 					<div class="itemPic">
-						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 					</div>
 					<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 					<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -3,8 +3,8 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : GoodsReviewBestFormWeb.html
- * @desc	: 베스트 상품평 팝업
+ * * @source  : GoodsReviewDetailFormWeb.html
+ * @desc	: 상품평 상세 팝업
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
@@ -14,7 +14,7 @@
  * 1.0  2021.03.02   eskim		최초 작성
  *******************************************************************************
  -->
-<div class="modal-dialog" role="document" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, imgUrl=${@environment.getProperty('upload.image.view')}">
+<div class="modal-dialog" role="document" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="modal-content">
 		<div class="modal-header">
 			<th:block th:if="${review.bestYn == 'Y'}">
@@ -49,7 +49,7 @@
 									</th:block>
 									<th:block th:unless="${review.reviewAttachList != null and !review.reviewAttachList.empty}">
 									<span class="thumb">
-										<img th:src="${imgGoodsUrl+'/'+review.sysImgNm}" alt="">
+										<img th:src="${imgGoodsUrl+'/'+review.sysImgNm+'?RS=365'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 									</span>
 									</th:block>
 								</div>
@@ -75,7 +75,7 @@
 												<dl>
 													<div>
 														<dt>키/몸무게</dt>
-														<dd><th:block th:if="${not #strings.isEmpty(review.height)}" th:text="|${review.height}cm|"></th:block> /
+														<dd><th:block th:if="${not #strings.isEmpty(review.height)}" th:text="|${review.height}cm / |"></th:block> 
 															<th:block th:if="${not #strings.isEmpty(review.weight)}" th:text="|${review.weight}kg|"></th:block>
 														</dd>
 													</div>

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

@@ -25,7 +25,7 @@
 			<div class="item_state">
 				<a href="javascript:void(0);" class="itemLink">
 					<div class="itemPic">
-						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+						<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=80'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 					</div>
 					<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">NBA 키즈</p>
 					<div class="itemName" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업 유니 삼단블록 플리스 집업</div>

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

@@ -3,8 +3,8 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : GoodsInstockAlarmFormWeb.html
- * @desc	: 재입고알림 팝업
+ * @source  : GoodsReviewPhotoFormWeb.html
+ * @desc	: 상품평 - 포토/영상 리스트 팝업
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
@@ -23,13 +23,6 @@
 			<div class="pop_cont">
 				<div class="photo_list">
 					<ul id="ulGoodsReviewPhoto">
-						<li>
-							<a href="">
-								<div class="pic">
-									<span class="thumb mov" style="background-image:url('/images/pc/thumb/tmp_pdLookbook3.jpg');"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
-								</div>
-							</a>
-						</li>
 					</ul>
 				</div>
 				<div class="ui_row">
@@ -42,7 +35,7 @@
 	</div>
 	<form id="goodsReviewPhotoForm" name="goodsReviewPhotoForm" action="#" th:action="@{'/goods/review/list'}">
 		<input type="hidden" name="pageNo" value ="1"/>
-		<input type="hidden" name="pageSize" value ="1"/>
+		<input type="hidden" name="pageSize" value ="20"/>
 		<input type="hidden" name="photoYn" value ="Y"/>
 		<input type="hidden" name="goodsCd" th:value ="${params.goodsCd}"/>
 	</form>

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

@@ -82,7 +82,7 @@ var ajaxWishList = function () {
 				html+='	<div class="itemsGrp">';
 				
 				$.each(result, function (idx, item) {
-					if (item.regDt == month[i].regDt) {
+					if (item.regDtMonth == month[i].regDt) {
 						html+='		<div class="item_prod">';
 						html+='			<div class="item_state">';
 						html+='				<button type="button" class="itemLike active" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>';

+ 8 - 4
src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

@@ -98,7 +98,7 @@
 								</div>
 								<div class="benefit_txt">
 									<p id="etcGrade">
-										<span id="ordSpan">	구매 건수 <strong id="ordCnt" class="c_primary" >0회</strong> </span>
+										<span id="ordSpan">	구매 건수 <strong id="ordCnt" class="c_primary">0회</strong> </span>
 										<span id="realOrdAmtSpan">, 구매 금액 <strong id="realOrdAmt" class="c_primary">0원 </span>
 										</strong> 더 구매하시면 <strong>
 										<span id="nextGrde" class="c_black"></span>로 등급UP!</strong>
@@ -269,11 +269,11 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
- 	let exptCustGrdeMap = [[${exptCustGrdeMap}]]
+ 	let exptCustGradeMap = [[${exptCustGradeMap}]]
 	let custGradeNm = [[${customerInfo.custGradeNm}]];
 
  	var fnInit = function () {
-		let expctCustGrade = exptCustGrdeMap.expctCustGrade;	// 예상등급
+		let expctCustGrade = exptCustGradeMap.expctCustGrade;	// 예상등급
 
 		//expctCustGrade.custGradeNo 10:VIP, 20: GOLD, 30:SILVER, 40:BRONZE, 50:WELCOME
 
@@ -290,7 +290,7 @@
 
  	// 다음 등급정책
  	var fnGetNextGradePolicyInfo = function (nextGradeNo) {
-		let custGradePolicy = exptCustGrdeMap.custGradePolicy;	// 등급별정책
+		let custGradePolicy = exptCustGradeMap.custGradePolicy;	// 등급별정책
 		let nextCustGradePolicy;
 		$(custGradePolicy).each(function(idx, item) {
 			if (Number(item.gradeCdNo) === nextGradeNo ) {
@@ -359,6 +359,10 @@
 		}
 	}
 
+	$('#btnDownGradeCoupon').on('click', function () {
+		gagajf.ajaxJsonSubmit('')
+	});
+
 	$(document).ready(function() {
 
 		fnInit();

+ 174 - 28
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -33,6 +33,9 @@
 					<div class="cont_head">
 						<div>
 							<h3 th:text="${planInfo.planNm}"></h3>
+							<div class="period">
+								<span th:text="${planInfo.dispStdt}"></span> ~ <span th:text="${planInfo.dispEddt}"></span>
+							</div>
 							<div class="shareSet">
 								<button class="btn_share" data-name="openShare">공유하기</button>
 								<div class="shareWrap">
@@ -59,7 +62,6 @@
 							</div>
 						</div>
 					</div>
-				</div>
 				<div class="cont_body" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
                     <!-- 프로모션배너 type1 --> 
                     <!-- <div class="promotion_visual type1" th:if="${fsrcInfoTop != null and planInfo.planGb == 'P'}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}"></div> -->
@@ -83,6 +85,7 @@
                     </div> -->
                     <!-- 프로모션배너 type2 -->                    
                 </div>
+            </div>
             <!-- //상단 프로모션 배너 -->
             
             <th:block th:each="a, template : ${templateOrd}">
@@ -108,6 +111,85 @@
 						<div class="content dp_special" th:id="${a.tmplType + a.planContSq}"></div>
 				</th:block>
 			</th:block>
+			
+			 <!-- 댓글리스트 -->
+			<th:block th:if="${planInfo.replyYn == 'Y'}">
+			<div class="content wide cmt">
+				<div class="cont_body">
+					<div class="cmt_wrap">
+						<div class="cmt_write">
+							<form class="form_wrap">
+								<div class="cmt_tarea">
+									<textarea class="cmt_ans" name="replyText" id="replyText" placeholder="댓글을 입력해주세요.(500자 이내)" onclick="fnTextConfirm()"></textarea>
+									<p class="txt_cnt"><span id="cmt_cnt" class="c_primary">0</span>/500</p>
+								</div>
+								<div class="cmt_thumb">
+									<div class="form_field">
+										<div class="imgUpload">
+											<label for="fileAdd" class="fileAdd" >업로드</label>
+											<input type="file" id="fileAdd" name="files[]" />
+										</div>
+									</div>
+								</div>
+								<button type="submit" class="btn btn_dark"><span>등록</span></button>
+							</form>
+						</div>
+						<div class="cmt_group" id="replyList">
+					   <!-- <div class="cmt_list_tit">
+								<strong>댓글</strong><span class="cnt">(9,999)</span>
+							</div>
+							데이터 있을 시
+							<ul class="cmt_list">
+								<li>
+									<div class="cmt_top">
+										<span class="writer">DI2****</span>
+										<span class="date">2020.12.30</span>
+									</div>
+									<div class="cmt_cont">
+										<p>
+											애용하는 회원으로서 스타일24의 리뉴얼은 저의 일처럼 기쁘네요 ^^ 깔끔하고 세련된 느낌으로 단장해서 사이트 들어왔을 때 기분이 좋답니다! 사이트 리뉴얼 겸 겨울옷을  사려고 한창 둘러보았어요. <br/>
+											따뜻한 느낌 풀풀 내는아이템들로 찜꽁 해놓았답니다! 이왕 이벤트도 당첨되어서 포인트도 얻고, 또 구매도 하고 싶네요ㅋㅋㅋ <br/>
+											리뉴얼 하신거  축하드려요!!!  당첨되길 바랍니다.^^ 
+										</p>
+									</div>
+								</li>
+								<li>
+									<div class="cmt_top">
+										<span class="writer">ety****</span>
+										<span class="date">2020.12.30</span>
+									</div>
+									<div class="cmt_cont">
+										<div class="img_wrap clear">
+											<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img01.jpg" alt="썸네일"></span>
+											<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img02.jpg" alt="썸네일"></span>
+											<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img03.jpg" alt="썸네일"></span>
+											<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img04.jpg" alt="썸네일"></span>
+										</div>
+										<p>모처럼 스타일24를 다시 애용해야 겠어요! 축하축하 ^^</p>
+										<button class="btn btn_default btn_del"><span>삭제</span></button>
+									</div>
+								</li>
+							</ul> -->
+							<!-- 데이터 있을 시 -->
+							<!-- 데이터 없을 시 -->
+							<div class="nodata" style="display:none;">
+								<div class="txt_box">
+									<p>
+										등록된 댓글이 없습니다.
+									</p>
+								</div>
+							</div>
+							<!-- //데이터 없을 시 -->
+						</div>
+						<div class="paging_wrap">
+							<ul class="pageNav" id="paging">
+								
+							</ul>
+						</div>
+					</div>
+				</div>
+			</div>
+			</th:block>            
             
             <!-- 관련상품 리스트 -->
 			<div class="content sticky_nav_list" th:if="${planCornerListLength>0}">
@@ -157,17 +239,16 @@
                                     </div>
                                 </div>  
                                 </th:block>          
-                            </div>
-                            </th:block>
-                        </div>                
-                    </div>
-                </div>
-		    </div>
+                          	</div>
+                          </div>
+                      </th:block>
+                  </div>         
+              </div>
+          </div>
 		  
             <!-- //관련상품 리스트 -->  
-
-            <!-- 다른 기획전 보기 -->
-            <div class="content other_dp_slide" th:if="${listSize > 0}">
+             <!-- 다른 기획전,이벤트 보기 -->
+            <div class="content other_promotion_slide">
                 <div class="cont_head">
                     <div>
                         <h4 th:if="${planInfo.planGb == 'P'}">다른 기획전 보기</h4>
@@ -179,7 +260,7 @@
                 <div class="cont_body">
                     <div class="swiper-container">
                         <div class="swiper-wrapper">
-                        	<th:block th:each="PlanData, PlanStat : ${planList}">
+                           <th:block th:each="PlanData, PlanStat : ${planList}">
                             <div class="swiper-slide">                   
                                 <a th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])">
                                     <div class="thumb">
@@ -197,14 +278,15 @@
                     <div class="swiper-button-next"></div>
                 </div>
             </div>
-            <!-- //다른 기획전 보기 -->
-        </div>
-        <form id="pollListForm" name="pollListForm" th:action="@{'/planning/event/poll/form'}" th:method="post">
-				<input type="hidden" name="planSq" th:value="${planInfo.planSq}"/>
-		</form>
-<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
-
-</div>
+       </div>
+  </div>       
+  
+
+<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true"></div>
+<form id="pollListForm" name="pollListForm" th:action="@{'/planning/event/poll/form'}" th:method="post">
+	<input type="hidden" name="planSq" th:value="${planInfo.planSq}"/>
+</form>
+
 <script th:inline="javascript">
 
 let review = [[${reviewInfo}]];
@@ -215,6 +297,7 @@ let goods1 = [[${goods1Info}]];
 let goods2 = [[${goods2Info}]];
 let goods4 = [[${goods4Info}]];
 let template =[[${templateOrd}]];
+let replyList = [[${replyList}]];
 let _mall = [[${@environment.getProperty('domain.front')}]];
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
@@ -652,15 +735,56 @@ var fnJoinConfirm = function () {
 			document.pollListForm.submit();
 		}
 	})
-		
-	
-
 }
 
+// 댓글 입력 확인
+var fnTextConfirm = function() {
+	//로그인 확인
+	if (!cfCheckLogin()) {
+		mcxDialog.alert("로그인 후 참여 가능합니다.");
+		$("#replyText").val('');
+		return false;
+	}
+}
 
+var ajaxReplyList = function () {
+	 $.getJSON('/planning/reply/list?planSq='+plan.planSq, function(result, status) {
+		 console.log(result);
+		 if (status == 'success') {
+			 $("#replyList").html('');
+			 var html = '';
+			 html += '<div class="cmt_list_tit">';
+			 html += '	<strong>댓글</strong><span class="cnt">('+result.replyList.length.addComma()+')</span>';
+			 html += '</div>';
+			 html += '<ul class="cmt_list">';
+			 $.each(result.replyList, function (idx, item) {
+				 html += '	<li>';
+				 html += '		<div class="cmt_top">';
+				 html += '			<span class="writer">'+item.maskingCustId+'</span>';
+				 html += '			<span class="date">'+item.entryDt+'</span>';
+				 html += '		</div>';
+				 html += '		<div class="cmt_cont">';
+				 html += '			<div class="img_wrap clear">';
+				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img01.jpg" alt="썸네일"></span>';
+				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img02.jpg" alt="썸네일"></span>';
+				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img03.jpg" alt="썸네일"></span>';
+				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img04.jpg" alt="썸네일"></span>';
+				 html += '			</div>';
+				 html += '			<p>'+item.entryVal1+'</p>';
+				 if (item.entryCustNo == result.custNo) {
+					 html += '			<button class="btn btn_default btn_del"><span>삭제</span></button>';
+				}
+				 html += '		</div>';
+				 html += '	</li>';
+			 });
+			 html += '</ul>';
+		 }
+		 $("#replyList").append(html);
+	 });
+}
 
 $(document).ready( function() {
-
+	ajaxReplyList();
 	//공유 버튼 토글 
 	$("button[data-name=openShare]").on("click", function(){
 		$(this).toggleClass("on").next(".shareWrap").toggleClass("on");
@@ -761,16 +885,38 @@ $(document).ready( function() {
             clickable: true,
         },
     });
-
-    /* SLIDE - 다른 기획전 보기 */
-    var other_dp_slide_slide = new Swiper ('.other_dp_slide .swiper-container', {
+    /* SLIDE - 다른 기획전,이벤트 보기 */
+    var other_slide_slide = new Swiper ('.other_promotion_slide .swiper-container', {
 		slidesPerView: 5,
         spaceBetween: 20,
 		navigation: {
-			nextEl: '.other_dp_slide .swiper-button-next',
-			prevEl: '.other_dp_slide .swiper-button-prev',
+			nextEl: '.other_promotion_slide .swiper-button-next',
+			prevEl: '.other_promotion_slide .swiper-button-prev',
 		},
 	});            
+    
+	 // 첨부파일 갯수제한
+	$('.imgUpload .fileAdd').click(function(){
+		var maxFileLength = 10; /* 최대 파일 갯수를 입력해 주세요 */
+		var imgFiles=$('.imgUpload .pics');
+		if (imgFiles.length >= maxFileLength) {
+			alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.');
+			$('#fileAdd').attr("disabled",true);
+		} else if(imgFiles.length < maxFileLength){
+			$('#fileAdd').removeAttr("disabled");
+		}
+	});			
+
+	//댓글 작성시 글자 카운트
+	$('.cmt_ans').keyup(function (e){
+		var content = $(this).val();
+		$('#cmt_cnt').html(content.length);
+		if (content.length > 500){
+			alert("최대 500자까지 입력 가능합니다.");
+			$(this).val(content.substring(0, 500));
+			$('#cmt_cnt').html("500");
+		}
+	});
 
 });
 </script>

+ 25 - 22
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -66,7 +66,7 @@
 						<div class="event_calander">
 							<div class="check_title">
 								<p>출석할수록 늘어나는 혜택!</p>
-								<div class="title"><strong>1월</strong> 출석체크</div>
+								<div class="title"><strong></strong> 출석체크</div>
 							</div>
 							<div class="check_info">
 								<span class="today">오늘</span>
@@ -76,7 +76,7 @@
 								<div class="my_attend_day">
 									<p>나의 출석 일수는?</p>
 									<span class="day">
-										<span>11</span>일
+										<span></span>일
 									</span>
 								</div>
 								<div class="tbl">
@@ -155,12 +155,12 @@
 							<img src="/images/pc/ico_content_find.png" alt="유의사항">
 							<p>유의사항</p>
 						</div>
-						<div class="announce_list">
-							<ul>
+						<div class="announce_list" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
+							<!-- <ul>
 								<li>본 이벤트는 ID당 1회만 참여 가능합니다.</li>
 								<li>설문조사 참여 시 포인트를 지급해드립니다. (이벤트 종료 후, 일괄 지급)</li>
 								<li>지급된 포인트는 [ 마이페이지 > 나의 지갑 ] 메뉴에서 확인할 수 있습니다.</li>
-							</ul>
+							</ul> -->
 						</div>
 					</div> 
 				</div>
@@ -283,14 +283,15 @@ var appendHtml = function () {
 		html += '</tr>\n';
 
 		$("#monthTbody").append(html);
-		
-		$.each(custAttendList, function(idx1, item1) {
-			if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
-					|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
-				$("#td_"+item.tue).attr("class","complete");
-			}
-		})
-	
+		if (cfCheckLogin()) {
+			$.each(custAttendList, function(idx1, item1) {
+				$('.day').html('<span>' + custAttendList.length + '</span>일');
+				if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
+						|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
+					$("#td_"+item1.entryDt).attr("class","complete");
+				}
+			})
+		}
 	})    
 } 
 
@@ -315,19 +316,21 @@ var fnInfoConfirmCallBack = function(result) {
 };
 
 $(document).ready(function() {
+	appendHtml();
+	
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
+	}else{
+		$.each(custAttendList, function(idx, item) {
+			$('.day').html('<span>' + custAttendList.length + '</span>일');
+			if(item.entryDt == date){
+				$("#td_"+date).attr("class","complete");
+			}else{
+				$("#td_"+date).attr("class","today"); 
+			}
+		})
 	}
 	
-	appendHtml();
-	
-	$.each(custAttendList, function(idx, item) {
-		if(item.entryDt == date){
-			$("#td_"+date).attr("class","complete");
-		}else{
-			$("#td_"+date).attr("class","today"); 
-		}
-	})
 	
 	
 	

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

@@ -104,7 +104,7 @@ let fnGetEventList = function() {
 				if (result.length > 0) {
 					$('#eventTotCnt').html('<span>' + result.length.addComma() + '</span>개의 이벤트');
 					
-					$('#eventList').html('');
+					$("#divEventList").html('');
 					let tag = '';
 					tag += '<div  class="thumb_list">';
 					tag += '	<ul>';

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

@@ -30,6 +30,7 @@
 			<div class="content wide dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
 				<div class="cont_body">
                     <div class="hotdeal">
+                    <img src="/images/pc/thumb/hotdeal_bg2.jpg" alt="핫한 아이템을 핫한 가격에 LAST DAY DEAL">
                         <div id="countdown">
                             <span id="h-hours"></span>
                             <span id="h-minutes"></span>

+ 363 - 0
src/main/webapp/biz/goodsSession.js

@@ -0,0 +1,363 @@
+//****************상품목록  start **********************************
+var categoryGoodsList = [];
+var cnt = 1;
+var email = '';
+var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow) {
+	console.log('fnCreateGoodsList');
+
+	var tag = '';
+	var rank = 0;
+	if(lastPage!='1'){
+		rank = endRow;
+	}
+	$.each(result.dataList, function(idx, item) {
+		if (idx < 4) {
+			categoryGoodsList.push(item.goodsCd);
+		}
+
+		tag += '<div class="item_prod">';
+		tag += '	<div class="item_state">';
+		tag += '		<button type="button" class="itemLike">관심상품 추가</button>';
+		tag += '		<a href="#none" class="itemLink">';
+		tag += '			<div class="rank ranker"><span>'+(rank+(idx+1))+'</span></div>';
+		tag += '			<div class="itemPic">';
+		tag += '				<img alt="BLUE-a" class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'">';
+		tag += '			</div>';
+		tag += '			<p class="itemBrand">BRAND NAME</p>';
+		tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
+		tag += '			<p class="itemPrice">80,100';
+		tag += '				<span class="itemPrice_original">89,000</span>';
+		tag += '				<span class=" itemPercent">10%</span>';
+		tag += '			</p>';
+		tag += '			<div class="itemcolorchip">';
+		tag += '				<span class="chip_color35" value="ABM">BEIGE</span>';
+		tag += '				<span class="chip_color54" value="BDS">BLACK</span>';
+		tag += '				<span class="chip_color40" value="YBR">WHITE</span>';
+		tag += '			</div>';
+		tag += '			<p class="itemBadge">';
+		tag += '				<span class="badge13">베스트 </span>';
+		tag += '			</p>';
+		tag += '			<div class="itemComment">#주문 폭주 상품</div>';
+		tag += '		</a>';
+		tag += '	</div>';
+		tag += '</div>';
+	});
+	console.log('fnCreateGoodsList11');
+	if (cnt == 1) {
+		// <!-- Criteo 카테고리/리스팅 태그 -->
+		window.criteo_q = window.criteo_q || [];
+		var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
+		window.criteo_q.push(
+			{event: "setAccount", account: 26073}, // 이 라인은 업데이트하면 안됩니다
+			{event: "setEmail", email: email}, // 유저가 로그인이 안되 있는 경우 빈 문자열을 전달
+			{event: "setSiteType", type: deviceType},
+			{event: "viewList", item: categoryGoodsList} // 가장 위에있는 3개의 상품 ID를 전달
+		);
+		// <!-- END 카테고리/리스팅 태그 -->
+		cnt++;
+	}
+	console.log('fnCreateGoodsList1122233');
+	return tag;
+}
+
+
+// 인피니트 스크롤 초기화
+var fnCategoryGoodsInfiniteScrollInit = function(){
+	sessionStorage.removeItem(document.location.href);
+	//History 초기화
+	$("#listBox").html("");
+}
+
+//****************상품목록  end **********************************
+
+//****************상품상세  start **********************************
+// 브랜드 인기상품 (모바일)
+var jfGoodsCustRecommendSearch = function(params) {
+	gagajf.ajaxSubmit("/goods/detail/goodsOther/frame", "html", "goodsCustRecommendArea", params);
+}
+
+//상품베너, 다른컬러, 함께본(카테고리 ) 상품
+var jfGoodsOtherSearch = function(params) {
+	gagajf.ajaxSubmit("/goods/detail/goodsOther/frame", "html", "goodsOtherArea", params);
+}
+
+//상품평
+var jfGoodsReviewSearch = function(params) {
+	gagajf.ajaxSubmit("/goods/detail/goodsReview/frame", "html", "goodsReviewArea", params);
+}
+
+//상품문의
+var jfGoodsQnaSearch = function(params) {
+	gagajf.ajaxSubmit("/goods/detail/goodsQna/frame", "html", "goodsQnaArea", params);
+}
+
+//재고수정시
+var jfStockChange = function(gb){
+
+	var obj = $("#goodsQty");
+	var objQty = parseInt($("#goodsQty").val());
+	if(gb == 'minus'){
+		if(gagajf.isNull($("#cartForm  input[name=sizeCd]").val())){
+			mcxDialog.alert("사이즈를 선택하세요.");
+		} else if(objQty <= parseInt($("#cartForm  input[name=minOrdQty]").val()) && !gagajf.isNull($("#cartForm  input[name=sizeCd]").val())){
+			mcxDialog.alert("구매하실 수 있는 최소 수량입니다.");
+		} else {
+			obj.val(objQty-1);
+		}
+	} else {
+		if(gagajf.isNull($("#cartForm  input[name=sizeCd]").val())){
+			mcxDialog.alert("사이즈를 선택하세요.");
+		}else if(objQty < parseInt($("#cartForm  input[name=maxOrdQty]").val())){
+			obj.val(objQty+1);
+		}else{
+			mcxDialog.alert("구매하실 수 있는 최대 수량입니다.");
+		}
+	}
+
+	$("#cartForm  input[name=ordQty]").val(obj.val());
+}
+
+//장바구니담기(단품)
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 바로구매, 장바구니 담기
+ * <pre>
+ *		addCart(btnType,goodsType);
+ * </pre>
+ * @param  : btnType - 장바구니. '' , 바로구매 : 'DIRECT'. 필수
+ * @param  : layer - 레이어 여부. 딜상품일 경우 . '' : 본창, 'layer':레이어창
+ * @since  : 2020/07/23
+ * @author : eskim
+ */
+var addCart = function(btnType, layer){
+	var params = [];
+	var goodsType = $("#cartForm  input[name=goodsType]").val();
+
+	if (goodsType == 'N'){
+		if (gagajf.isNull($("#cartForm  input[name=sizeCd]").val())) {
+			mcxDialog.alertC('사이즈를 선택해 주십시오.');
+			return;
+		}
+		var obj = new Object();
+
+		obj.btnType = btnType;
+		obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+		obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
+		obj.itemCd = $("#cartForm  input[name=goodsCd]").val();
+		obj.sizeCd = $("#cartForm  input[name=sizeCd]").val();
+		obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
+		obj.itemQty = 1;
+		obj.planDtlSq =$("#cartForm  input[name=planDtlSq]").val();
+		params.push(obj);
+
+	}else if (goodsType == 'S'){
+		var target=$('.sizelistCart');
+		var targetSize=target.length;
+		var itemSize = target.find('.item').find('input[type=radio]:checked').length;
+		if (targetSize != itemSize){
+			mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+			return false;
+		}
+
+		target.find('.item').find('input[type=radio]:checked').each(function() {
+
+			var arrInfo = $(this).val().split('|');	// 상품코드|사이즈|구성수량
+
+			var obj = new Object();
+			obj.btnType = btnType;
+			obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+			obj.goodsCd = $("#cartForm  input[name=goodsCd]").val();
+			obj.itemCd = arrInfo[0];
+			obj.sizeCd = arrInfo[1];
+			obj.goodsQty = $("#cartForm  input[name=ordQty]").val();
+			obj.itemQty = Number(arrInfo[2]);
+			obj.planDtlSq =$("#cartForm  input[name=planDtlSq]").val();
+			params.push(obj);
+
+		});
+
+	}else{
+		if (layer == 'layer'){
+
+			var goodsSize = $("#optionListLayer").children('ul').length
+			if (goodsSize <= 0){
+				mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+				return false;
+			}
+			$('#optionListLayer > ul').each(function() {
+
+				var arrInfo = $(this).find('input[name="coption"]').val().split(':');
+
+				var obj = new Object();
+				obj.btnType = btnType;
+				obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+				obj.goodsCd =  $("#cartForm  input[name=goodsCd]").val();
+				obj.itemCd = arrInfo[0];
+				obj.sizeCd = arrInfo[1];
+				obj.goodsQty = $(this).find('input[name="cea"]').val();
+				obj.itemQty = 1;
+				obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+				params.push(obj);
+
+			});
+		}else{
+			if (_frontGb == "P"){
+				var goodsSize = $("#optionListDiv").children('ul').length
+				if (goodsSize <= 0){
+					mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+					return false;
+				}
+				$('#optionListDiv > ul').each(function() {
+
+					var arrInfo = $(this).find('input[name="coption"]').val().split(':');
+					$(this).find('input[name="coption"]').attr('goodsCd')
+
+					var obj = new Object();
+					obj.btnType = btnType;
+					obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+					obj.goodsCd =  $("#cartForm  input[name=goodsCd]").val();
+					obj.itemCd = arrInfo[0];
+					obj.sizeCd = arrInfo[1];
+					obj.goodsQty = $(this).find('input[name="cea"]').val();
+					obj.itemQty = 1;
+					obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+					params.push(obj);
+				});
+			}else{
+				var goodsSize = $("#optionListDiv").children('dl').length
+				if (goodsSize <= 0){
+					mcxDialog.alert("구성상품들의 사이즈를 선택하세요.");
+					return false;
+				}
+				$('#optionListDiv > dl').each(function() {
+
+					var arrInfo = $(this).find('input[name="coption"]').val().split(':');
+					$(this).find('input[name="coption"]').attr('goodsCd')
+
+					var obj = new Object();
+					obj.btnType = btnType;
+					obj.goodsType = $("#cartForm  input[name=goodsType]").val();
+					obj.goodsCd =  $("#cartForm  input[name=goodsCd]").val();
+					obj.itemCd = arrInfo[0];
+					obj.sizeCd = arrInfo[1];
+					obj.goodsQty = $(this).find('input[name="cea"]').val();
+					obj.itemQty = 1;
+					obj.planDtlSq = $("#cartForm  input[name=planDtlSq]").val();
+					params.push(obj);
+				});
+			}
+		}
+	}
+
+	//DIRECT : 바로 구매. '' : 장바구니
+	cfnPutCartList(params);
+
+}
+
+
+//url 복사
+var jfCopyLinkUrl = function(goodsCd){
+	cfnCopyLinkUrl(location.protocol + _PAGE_GOODS_DETAIL + goodsCd);
+}
+
+//SNS 연동
+var jfSendToSns = function(goodsCd, goodsNm, goodsImg, snsGb) {
+	var linkUrl = location.protocol + _PAGE_GOODS_DETAIL + goodsCd;
+
+	if (goodsImg.indexOf("http") <= -1 || goodsImg.indexOf("https") <= -1){
+		var _goodsImgUrl = _uploadGoodsUrl;
+		goodsImg = "https:"+goodsImg;
+	}
+
+	if (snsGb == "FB"){
+		cfnSendToFaceBook(linkUrl,goodsNm ,goodsImg);
+	}else if (snsGb == "KK"){
+		if (_frontGb == "P"){
+			cfnSendToKakao(linkUrl,goodsNm ,goodsImg);
+		}else{
+			cfnSendToKakaoMob(linkUrl,goodsNm ,goodsImg);
+		}
+	}
+}
+
+//****************상품상세  end **********************************
+
+//****************상품검색  start **********************************
+// 상품 정렬
+var fnSortChange = function(sortGb) {
+	if($("#searchForm input:hidden[name=sortGb]").val()==sortGb){
+		return;
+	}
+	if (_frontGb == "P"){
+		$('.productsection .filterbutton').html('필터 열기<span>현재 상태 : 닫힘</span>').removeClass('active');
+		$('.filterlist').css({'height':'0'});
+	}else{
+		areaClose();
+	}
+	$("#searchForm input[name=sortGb]").val(sortGb);
+	fnCategoryGoodsInfiniteScrollInit();
+	fnGoodsListSearch();
+}
+
+
+var filterHtml = '';
+var filterStatHtml = '';
+// 필터 적용
+var fnFilterSearch = function() {
+	$(".filterstate .filter_div").empty();
+	fnCategoryGoodsInfiniteScrollInit();
+	filterHtml = '';
+	filterStatHtml = '';
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnFilterSet('brand');
+	fnFilterSet('size');
+	fnFilterSet('color');
+	fnFilterSet('price');
+	if (_frontGb == "P"){
+		$('.productsection .filterbutton').html('필터 열기<span>현재 상태 : 닫힘</span>').removeClass('active');
+		$('.filterlist').css({'height':'0'});
+	}else{
+		areaClose();
+	}
+	fnGoodsListSearch();
+}
+
+var fnFilterSet = function(searchId) {
+
+	$("#searchForm input:hidden[name="+searchId+"Search]").remove();
+	$(".filterstate li[name="+searchId+"Stat]").remove();
+	var tag = '';
+	$('#filterForm input[name='+searchId+']:checked').each(function(){
+		tag = '<input type="hidden" name="'+searchId+'Search" value="'+$(this).val()+'"/>\n';
+		$("#searchForm").append(tag);
+		filterHtml += tag;
+		if(_frontGb != "P"){
+			tag = '<button type="button" class="removefilter" onclick="fnFilterStatRemove(\''+searchId+'\', \''+$(this).val()+'\');">'+$(this).closest('li').children('label').text()+'</button>';
+			$(".filterstate .filter_div").append(tag);
+		}else{
+			tag = '<li name="'+searchId+'Stat">'+$(this).closest('li').children('label').text()+'<button type="button" onclick="fnFilterStatRemove(\''+searchId+'\', \''+$(this).val()+'\');">DELETE</button></li>';
+			$(".filterstate").append(tag);
+		}
+		filterStatHtml += tag;
+	});
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+}
+
+var fnFilterStatRemove = function(searchId, val){
+	$('#filterForm input[name='+searchId+']:checked').each(function(){
+		if($(this).val()==val){
+			$(this).attr("checked", false);
+			$(this).parent().removeClass("active");
+		}
+	});
+	fnFilterSearch();
+}
+
+// 필터 초기화
+var fnFilterReset = function() {
+	filterReset();
+}
+//****************상품검색  end **********************************

+ 12 - 4
src/main/webapp/ux/mo/css/common_m.css

@@ -258,14 +258,14 @@ input[type="reset"], input[type="button"], input[type="submit"], button {line-he
 .form_field input[type="checkbox"]:Disabled + label, 
 .form_field input[type="radio"]:Disabled + label{cursor: default;opacity: .45;} 
 .form_field input[type="checkbox"]:checked + label:after{ 
-  content: ''; position:absolute; top:50%; margin-top:-10px; left:0; width:20px; height:20px; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
+  content: ''; position:absolute; top:50%; margin-top:-1rem; left:0; width:2.0rem; height:2.0rem; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
   background: url('/images/mo/ico_chk_rdi.png') no-repeat;
-  background-position: -20px 0px;
+  background-position: -2rem 0px;
 }
 .form_field input[type="checkbox"]:Disabled + label:after{ 
-  content: ''; position:absolute; top:3px; left:0; width:20px; height:20px; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
+  content: ''; position:absolute; top:-1.0rem; left:0; width:2.0rem; height:2.0rem; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
   background: url('/images/mo/ico_chk_rdi.png') no-repeat;
-  background-position: -40px 0px;
+  background-position: -4rem 0px;
 }
 
 /* 라디오 */
@@ -372,6 +372,14 @@ input[type="file"] {
 .select_dress:active, .select_dress.active {background-color: #ffffff;border: 1px solid #222222;border-bottom: 1px solid #dddddd;}
 .select_dress:active:after, .select_dress.active:after {top: 9px;border-color: transparent transparent #888888 transparent;}
 
+/* select-pure */
+/* pure-setting */.select.pure select {-webkit-appearance: none;-moz-appearance: none;-ms-appearance: none;appearance: none;outline: 0;box-shadow: none;border: 0 !important;background-image: none;}
+/* Remove IE arrow */.select.pure select::-ms-expand {display: none;}
+.select.pure {position: relative;display: flex;line-height: 3;overflow: hidden;width: 10rem;right: 0;top: 0;}
+.select.pure select {flex: 1;padding: 0 .5em;cursor: pointer;position: relative;box-sizing: border-box;height: 4.5rem;line-height: 1;cursor: pointer;padding: 0.5rem;background-color: #ffffff;border: 0px solid #dddddd;font-size: 1.2rem;}
+.select.pure::after {content: '';width: 0;height: 0;box-sizing: border-box;position: absolute;top: 2.0rem;right: 0rem;border: 0.4rem solid transparent;border-color: #222222 transparent transparent transparent;cursor: pointer;pointer-events: none;-webkit-transition: .25s all ease;-o-transition: .25s all ease;transition: .25s all ease;}
+.select.pure:hover::after {color: #666666;}
+
 /* select-custom */
 .select_custom {
 	cursor: pointer;

+ 25 - 13
src/main/webapp/ux/mo/css/layout_m.css

@@ -445,6 +445,7 @@
 .pd_detail .option_box .opt_size .form_field .lap{margin:-0.25rem -0.25rem 0; overflow:hidden;}
 .pd_detail .option_box .opt_size .form_field .lap > div {margin:0.25rem; float:left; width:auto;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label {display:block; width:6rem; height:3.4rem; padding:0; line-height:3.4rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.2rem;}
+.pd_detail .option_box .opt_size .form_field input[type="radio"]:checked + label{border: 1px solid red;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label::before,
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label::after {display:none;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #fd4802;}
@@ -458,7 +459,7 @@
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle{margin-bottom:1.5rem;}
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle:last-child{margin-bottom:0;}
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_name {margin-bottom:0.5rem; color:#222; font-size:1.3rem; font-weight:300;}
-.pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_option {font-size:1.1rem; color:#666; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:30rem;overflow:hidden;}
+.pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_option {font-size:1.1rem; color:#666; text-overflow:ellipsis;white-space:normal;word-wrap:normal;width:26rem;overflow:hidden;}
 .pd_detail .option_box .opt_result .result_item .item_price {position:absolute; right:2rem; bottom:3.2rem; color:#222; font-size:1.5rem; font-weight:500;}
 .pd_detail .option_box .opt_result .result_item .item_price em{font-weight:600;}
 .pd_detail .option_box .opt_result .result_item .btn_delete_item {position:absolute; right:2rem; top:2rem; width:1.3rem; height:1.3rem; font-size:0; overflow:hidden; background:url('/images/mo/btn_delete_item.png') no-repeat 50% 50%;}
@@ -681,13 +682,23 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc}
 .pd_qnalist_pop .foldGroup > ul > li{border-bottom:0px none;}
 .pd_qnalist_pop .fold_cont .fold_answer{border-top:0px none;}
+.pd_qnalist .fold_cont .fold_answer{border-top:0px none;}
 .pd_qnalist_pop .fold_cont > div:first-of-type{border-bottom:1px solid #dcdcdc}
 .pd [class*="pd_descrp"] .cont_body.on{overflow: visible;}
 .pd .mdhtml_box a{margin:0 -2rem; display:block;}
-
+.pd_descrp_pop .mdhtml_box a{margin:0 -2rem; display:block;}
 .option_box .opt_size .form_field > div {margin-left:8px; margin-top:8px;}
-/*.option_box .opt_size .form_field > div:nth-child(7n-6) {margin-left:0px;}*/
 .option_box .opt_size .form_field > div {float:left; width:auto;}
+/* 210407 */
+.pd.deal .pd_detail .foldGroup > ul > li{border-bottom:0px none;}
+.pd_listDescrp_pop .deal_list_select .list li{border-bottom:0px none;}
+/*.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemBrand{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:20rem;overflow:hidden; background:red;}
+.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemName{overflow: hidden;text-overflow: ellipsis;display: -webkit-box; -webkit-box-orient: vertical; line-height: 1.2em; -webkit-line-clamp: 3; height: 3.6em}*/
+.pd_descrp_pop .item_prod .itemPrice_original{margin-left:0.6rem; margin-right:-0.6rem;}
+.Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
+.Purchase_pop .item_prod .itemPercent{left:10.2rem}
+/*.Purchase_pop .option_box .opt_size .form_field input[type="radio"]:checked + label{border:1px solid #fd4802;}*/
+
 
 
 /* 플롯팅 메뉴 > 구매하기 */
@@ -709,7 +720,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 
 .container.btPop_full.pd_open::after, 
 .container.btPop_open.pd::after{position:fixed; z-index: 100;}
-.pd_pop.Purchase_pop .btPop_body{max-height:30rem;}
+.pd_pop.Purchase_pop .btPop_body{max-height:40rem;}
 .btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:auto;}
 .btPop_open .btPop.Purchase_pop .btPop_close{width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png);}
 .pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0;}
@@ -840,7 +851,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop[class*="bnf_"] .benefit_blk {margin-top:3rem}
 .modal.pd_pop[class*="bnf_"] .benefit_blk:first-child {margin-top:0}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 {border-top:1px solid #000; border-bottom:1px solid #ddd;} 
-.modal.pd_pop[class*="bnf_"] .tbl.type1 table {width:100%; text-align:left; word-break:keep-all;}
+.modal.pd_pop[class*="bnf_"] .tbl.type1 table {width:100%; text-align:left; word-break:break-all;}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table th,
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table td {position:relative; padding:1.4rem 1.2rem; font-weight:300; font-size:1.3rem; letter-spacing:-0.025em;}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table th {font-weight:400;}
@@ -943,13 +954,13 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap .itemPercent {position:relative;}
 .modal.pd_pop.push_restock_pop .select_blk {margin-top:3rem;}
 .modal.pd_pop.push_restock_pop .select_blk h6 {margin-bottom:1rem; font-size:1.4rem; font-weight:500;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field {display:block; margin-top:-0.8rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field {display:block; margin-top:-0.8rem; margin-left:-0.8rem !important;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div {margin-left:0.8rem; margin-top:0.8rem;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div:nth-child(7n-6) {margin-left:0px;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label {display:block; width:6.6rem; height:4.2rem; padding:0; line-height:4.2rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.4rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div:nth-child(7n-6) {margin-left:0.8rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label {display:block; width:6rem; height:3.4rem; padding:0; line-height:3.4rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.2rem;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label::before,
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label::after {display:none;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #222;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #fd4802;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:disabled + label {text-decoration:line-through; background:#f5f5f5; border-color:#f5f5f5; color:#bbb; opacity:1;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div {float:left; width:auto;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_select .select_blk {display:block; max-height:30.0rem; overflow-y:scroll;}
@@ -1021,7 +1032,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_delivery .change .pop_table { width: 100%; margin: 2rem 0 1rem; border-top: 0.1rem solid #222222;}
 .pd_delivery .change .pop_table tr th,
 .pd_delivery .change .pop_table tr td { font-size: 1.2rem; padding: 2.5rem 0 2.5rem 1.2rem; align-items: center; border-bottom: 1px solid #eeeeee; }
-.pd_delivery .change .pop_table tr th {width: 10rem; padding: 0 0 0 1.2rem; color:#222; font-weight:500; background: #f5f5f5;}
+.pd_delivery .change .pop_table tr th {width: 10rem; padding: 0 0 0 1.2rem; color:#222; font-weight:500; background: #f5f5f5; text-align:left; word-break: break-all;}
 
 /* pd_pop > 상품리뷰 페이지 */
 .modal.pd_pop.pd_review_pop .modal-header{border-bottom:0; box-shadow:0 0 5px rgba(0,0,0,.2);}
@@ -1170,7 +1181,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review .category_open > li > span:after{display:block; content:''; position:absolute; right:0; top:50%; margin-top:-2px; border:5px solid transparent; border-bottom-color:#222; -webkit-transform:rotate(180deg); transform:rotate(180deg);}
 .pd_review .category_box{display:none; position:fixed; width:100%; height:100%; top:0; left:0; background:rgba(0,0,0,.5); z-index:500;}
 .pd_review .category_box .lap{position:absolute; bottom:0; left:0; padding:3rem 0; width:100%; background:#fff;}
-.pd_review .category_box .category_list{min-height:25rem; max-height:40rem; overflow-y:auto;}
+.pd_review .category_box .category_list{max-height:40rem; overflow-y:auto;}
 .pd_review .category_box .category_list .category {display:none; padding:0 1.33rem;}
 .pd_review .category_box .category_list .category ul {margin:0 -0.6rem;}
 .pd_review .category_box .category_list .category ul li { padding:0.4rem 0.6rem; background:#fff; text-align:center;}
@@ -1231,7 +1242,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd.deal .tab_detail_nav ul::after {content:''; clear:both; display:block;}
 .pd.deal .tab_detail_nav ul li {float:left; width:25%; text-align:center; background:#fff; box-sizing:border-box;}
 .pd.deal .tab_detail_nav ul li.active {background:#fff;}
-.pd.deal .tab_detail_nav ul li a {position:relative; display:block; color:#888; font-size:1.2rem; font-weight:300; padding:1.4rem 0;}
+.pd.deal .tab_detail_nav ul li a {position:relative; display:block; color:#888; font-size:1.2rem; font-weight:300; padding:1.4rem 0;color: rgb(31, 31, 31);}
+.pd.deal .tab_detail_nav ul li a em{font-size:1rem; color: rgb(137, 137, 137);}
 .pd.deal .tab_detail_nav ul li a:after{display:block; content:''; position:absolute; left:0; bottom:0; width:0; height:3px; background-color:#fd4802;}
 .pd.deal .tab_detail_nav ul li.active a {color:#fd4802; font-weight:500;}
 .pd.deal .tab_detail_nav ul li.active a:after {width:100%;}
@@ -1302,7 +1314,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .deal_list_select .list li:first-child{margin-top:0;}
 .deal_list_select .list li.selected:after{border:1px solid #fd4802;}
 .deal_list_select .list li {position: relative; display:table; width:100%; box-sizing: border-box; z-index:1;}
-.deal_list_select .list li:after{content:''; position:absolute; width:100%; height:100%; top:0; left:0; border:1px solid #fff; box-sizing:border-box; z-index:2;}
+.deal_list_select .list li:after{content:''; position:absolute; width:100%; height:100%; top:0; left:0; box-sizing:border-box; z-index:2;}
 .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;}

+ 84 - 45
src/main/webapp/ux/mo/css/style24_m.css

@@ -840,7 +840,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev_rank .member_level_area .level_content.one_row .birth_info {width: 100%;}
 
 /* 배송관련 아이콘  */
-.tag {display:inline-block; height:22px; padding:5px 8px; /*background:#fff;*/ border:1px solid #ddd; color:#666; font-size:11px; font-weight:300; text-align:center; line-height:1;}
+.tag {display:inline-block; height:2.2rem; padding:0.5rem 0.8rem; /*background:#fff;*/ border:1px solid #ddd; color:#666; font-size:1.1rem; font-weight:300; text-align:center; line-height:1;}
 .tag.gray {background:#f5f5f5; border-color:#f5f5f5; color:#666;}
 .tag.deepgray {background:#aaa; border-color:#aaa; color:#fff;}
 .tag.primary {background:#fd4802; border-color:#fd4802; color:#fff;}
@@ -850,7 +850,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my {background: #f5f5f5;}
 .my .pnb{background: #ffffff;}
 .my .mypage {background: #f5f5f5;}
-.my .inner {padding-bottom: 0; background: #fff;}
+.my .inner {margin-bottom: 1.2rem; padding-bottom: 0; background: #fff;}
 .my .inner.bg_gray {background: #f5f5f5;}
 .my .help_block {margin-top: 1rem;font-size: 1.2rem;}
 .my .tbl_wrap {padding: 3rem 0;}
@@ -905,13 +905,13 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .goods_btn_wrap > div > .btn.btn_primary {background-color:#fff; border-color:#fd4802; color: #fd4802;}
 
 /* my_index */
-main.container.my .inner:last-child {padding-bottom: 0;}
+/* main.container.my .inner:last-child {padding-bottom: 0;} */
 .my .lnb_list {margin-top: 1.2rem; padding-bottom: 6rem;}
 .my .lnb_list li { border-bottom: 1px solid #ddd;}
 .my .lnb_list li a {display: block; padding: 2rem; background: url(/images/mo/ico_lnb_arrow.png) no-repeat right 2rem center; background-size:0.7rem 1.26rem;}
 
 .my .mem_rank {position: relative; padding:1.6rem 0; padding-left: 6rem;}
-.my .mem_rank .mem_name {dib font-size: 1.8rem; font-weight: 300;}
+.my .mem_rank .mem_name {font-size: 1.8rem; font-weight: 300;}
 .my .mem_rank .mem_name strong {font-weight: 500;}
 .my .mem_rank .rank_txt {display: inline-block; font-size: 1.8rem; color: #666; font-weight: 500; padding-right: 1.7rem; background: url(/images/mo/ico_btn_detail03.png) no-repeat right top 5px; background-size:0.7rem 1.3rem;}
 .my .mem_rank .rank_txt02 button {display: inline-block; font-size: 14px; padding-right: 13px; margin-right: 20px; background: url(/images/pc/ico_mysm_arrow.png) no-repeat right top 6px;}
@@ -952,7 +952,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .goods_top .delete_btn {position: absolute; bottom: 1.5rem; right: 0; font-size: 1.3rem; color: #8d8d8d; padding-right: 1.4rem; background: url(/images/mo/ico_btn_cls.png) no-repeat right top 3px; background-size:0.9rem 0.9rem;}
 .my .goods_top .purchase_btn {position: absolute; bottom: 1.5rem; right: 0; font-size: 1.3rem; color: #8d8d8d; padding-right: 1.6rem; background: url(/images/mo/ico_check01.png) no-repeat right top 3px; background-size:1.06rem 0.8rem;}
 .my .badge_wrap {display: inline-block;}
-.my .order_badge {font-size: 1rem; border-radius: 0.1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: top;}
+.my .order_badge {font-size: 1rem; border-radius: 0.1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: middle;}
 .my .order_bullet_badge {background: #fff6f2; color: #fd4802; border:1px solid #fd4802;}
 
 .my .part_goods {position:relative;}
@@ -978,13 +978,14 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .part_goods .goods_detail .thumb_box {width:9rem; height:13.5rem; position: absolute; left: 0; top: 0;}
 .part_goods .goods_detail .thumb_box a {display:block; background:#f5f5f5;}
 
-.part_goods .goods_detail .info_box {min-height:13.5rem;}
+.part_goods .goods_detail .info_box {min-height:13.5rem; padding-top: 1rem;}
 .part_goods .goods_detail .info_box .od_name a {display:block;}
-.part_goods .goods_detail .info_box .od_name .name {display:inline-block; font-size: 1.3rem; line-height:1.4; margin:0.5rem 0; display:-webkit-box; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:keep-all;}
-.part_goods .goods_detail .info_box .od_name .brand {color:#888; font-size: 1.1rem; font-weight:300; padding-top: 1rem;}
+.part_goods .goods_detail .info_box .od_name .name {display:inline-block; font-size: 1.3rem; line-height:1.4; margin:0.3rem 0; display:-webkit-box; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:keep-all;}
+.part_goods .goods_detail .info_box .od_name .brand {color:#888; font-size: 1.1rem; font-weight:300;}
 .part_goods .goods_detail .info_box .od_name .brand span {display: inline-block; margin-bottom: 0.5rem; margin-right: 0.2rem;}
 .part_goods .goods_detail .info_box .od_name .reserv_date {position:relative; padding-left:10px; margin-left:10px; color:#fd4802; font-size:14px; font-weight:200;}
 .part_goods .goods_detail .info_box .od_name .reserv_date::before {content:''; position:absolute; left:-1px; top:50%; transform:translateY(-50%); width:1px; height:10px; border-left:1px solid #ddd;}
+.part_goods .goods_detail .info_box > div:last-child {margin-bottom: 0;}
 
 .part_goods .goods_detail .od_opt, .part_goods .goods_detail .od_exchange_opt {color:#666; font-size:1.1rem; margin-bottom: 0.8rem;}
 .part_goods .goods_detail .od_opt .option, .part_goods .goods_detail .od_exchange_opt .option {display:block;}
@@ -1012,21 +1013,24 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .part_goods .goods_gift .gift_wrap {padding:1.5rem; margin-top: 1.8rem; background: #fff6f2; border:1px solid #ffe4d9;}
 .my .part_goods .goods_gift .title {font-size: 1.3rem; font-weight: 500; color: #fd4802; padding-left: 1.7rem; background: url(/images/mo/ico_gift.png) no-repeat left top 1px; background-size:1.1rem 1.2rem; margin-bottom: 1rem;}
 .my .part_goods .goods_gift .li_gift {}
-.my .part_goods .goods_gift .li_gift li {padding-left: 15px; background: url(/images/mo/ico_bracket.png) no-repeat left top; background-size:0.7rem; font-size: 1.1rem; margin-bottom: 0.8rem; line-height: 1;}
+.my .part_goods .goods_gift .li_gift li {padding-left: 15px; background: url(/images/mo/ico_bracket.png) no-repeat left top; background-size:0.7rem; font-size: 1.1rem; margin-bottom: 0.8rem; line-height: 1; vertical-align: middle; width: 100%;}
 .my .part_goods .goods_gift .li_gift li:last-child {margin-bottom: 0;}
-.my .part_goods .goods_gift .li_gift li .gift_name {display: inline-block; white-space: nowrap; overflow:hidden; text-overflow: ellipsis; vertical-align: middle; width: 80%;}
+.my .part_goods .goods_gift .li_gift li .gift_name {display: inline-block; color:#666;}
 .my .part_goods .goods_gift .li_gift .deduct_p {display: inline-block; color: #fd4802; width: 15%;}
 .my .part_goods .order_confirm {background: #f5f5f5; text-align: center; padding:1.5rem 0;}
 
 
 /* my_review_1 */
+.my .review .inner:last-child .goods_btn_wrap {padding:0 0 6rem;}
+.my .review .tab_cont .inner .goods_btn_wrap {padding: 0; margin-top: 2.4rem;}
 .my .review .inner {margin-bottom: 0;}
+.my .review .inner:last-child {padding-bottom: 0;}
 .my .review .inner.wide {background: #f5f5f5;}
 /* .my .review .inner .tabWrap .inner{margin-bottom:1.3rem;} */
 .my .review .tabIndex{margin-bottom: 0.85em;}
 .my .review .tabIndex li .count{font-size:1.0rem; font-weight: 300; padding-left: 0.5rem;color: #888888;}
 .my .review .tabIndex li.active a .count{color: #888888;}
-.my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem);}
+.my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem); padding:1.3rem 1.6rem;}
 .my .review .tip2 .tip_contents{width: 31.5rem;transform: translate(-62%, 1.0rem);}
 .my .review .tip1 .tip_contents:before,
 .my .review .tip1 .tip_contents:after{left: 79.5%;}
@@ -1034,13 +1038,23 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .tip2 .tip_contents:after{left: 64.5%;}
 .my .review .tip_wrap ul li{position: relative;padding-left: 1.0rem;font-weight: 200;}
 .my .review .tip_wrap ul li::before{content: '';position: absolute;top: 7px;left: 0;background: #858585;width: 3px;height: 3px;}
-.my .review .part_goods .goods_section:last-of-type {margin-bottom: 0;border-bottom: 1px solid #ddd;}
+.my .review .tab_cont .inner:first-child {margin-top: 0;}
+.my .review .tab_cont .inner {margin-top: 1.2rem;}
+.my .review .tab_cont .inner .reviewMy {padding: 2.4rem 0 6rem; font-weight: 200;}
+.my .review .part_goods {padding-top: 2.4rem;}
+.my .review .part_goods:first-child {margin-top: 0;}
+.my .review .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 1px solid #eee;}
+.my .review .part_goods .goods_detail .info_box {padding-top: 1.6rem;}
+.my .review .part_goods .goods_detail .info_box .goods_date {font-size: 1.3rem;}
+.my .review .part_goods .goods_detail .info_box .od_name .brand {padding-top: 1.5rem;}
 .my .review .part_goods .goods_detail .info_box .od_name .name{-webkit-line-clamp: 1;}
+.my .review .part_goods .goods_btn_wrap {margin-top: 1.5rem;}
+.my .review .tip_close {position: absolute; top: 0; right: 0; width: 3rem; height: 3rem; background: url(/images/mo/ico_btn_cls.png) no-repeat center; background-size: 1rem; background-position: center;}
 
 /* my_review_2 */
 .my .review > ul > li .reviewMy {}
-.my .review .once {background: #ffffff;padding: 0;margin-top: -1.5rem;text-align: center;}
-.my .review .alert {position: relative;display: inline-block;height: 7.4rem;width: 100%;max-width: calc(100% - 4.0rem);margin: 2.33rem 0 1.5rem;padding: 1.5rem;text-align: center;font-size: 1.2rem;color: #fd4802;border-color: #ffe4d9;background-color: #fff6f2;border-radius: 0;}
+.my .review .once {background: #ffffff;padding: 0;margin-top: -1.5rem;text-align: center; margin-bottom: -1.2rem;}
+.my .review .alert {position: relative;display: inline-block;height: 7.4rem;width: 100%;max-width: calc(100% - 4.0rem);margin: 2.33rem 0 0;padding: 1.5rem;text-align: center;font-size: 1.2rem;color: #fd4802;border-color: #ffe4d9;background-color: #fff6f2;border-radius: 0;}
 .my .review .formOnly {position: relative;display: inline-block;color: #666666;text-align: center;}
 .my .review .formOnly::after {content: '';display: inline-block;width: 1rem;height: 1.5rem;position: absolute;top: 5px;right: -1.5rem;background: url(/images/mo/ico_btn_detail02.png);background-size: 0.6rem 1.0rem;background-repeat: no-repeat;}
 .my .review button.alertCls {font-size: 0;position: absolute;top: 0;left: 0;width: 100%;height: 100%;}
@@ -1052,42 +1066,48 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .reviewMy .info_box .star_score .star::after {content:''; position:absolute; left:0; top:0; z-index:3; width:100%; height:100%; background:url('/images/pc/star_empty_big.png') no-repeat 0 0; background-size:100% 100%; image-rendering:pixelated;}
 .my .review .reviewMy .info_box .star_score .star .progbar {display:inline-block; height:100%; background:#fd4802}
 .my .review .reviewMy .info_box .writer {float:right;}
-.my .review .reviewMy .info_box .writer span {position:relative; margin-left:2.0rem; padding-left:2.0rem; color:#888; font-size:1.4rem; line-height: 1.8rem;}
+.my .review .reviewMy .info_box .writer span {position:relative; margin-left:2.0rem; padding-left:2.0rem; color:#888; font-size:1.1rem; line-height: 1.8rem;}
 .my .review .reviewMy .info_box .writer span::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); height:1.2rem; width:0.1rem; background:#ddd;}
 .my .review .reviewMy .info_box .writer span:first-child {margin-left:0; padding-left:0}
 .my .review .reviewMy .info_box .writer span:first-child::after {display:none;}
-.my .review .reviewMy .response_box {margin-top:2.5rem}
+.my .review .reviewMy .response_box {margin-top:1rem}
 .my .review .reviewMy .response_box > div {margin-top:1.5rem;}
 .my .review .reviewMy .response_box > div:first-child {margin-top:0}
-/* .my .review .reviewMy .response_box > div dl div {margin-right:3.0rem} */
-.my .review .reviewMy .response_box > div dl div dt {color:#888;display: inline-block;width: 6.5rem;}
-.my .review .reviewMy .response_box > div dl div dd {display: inline-block;width: calc(100% - 8.05rem);margin-left:1.2rem; color:#fd4802}
-.my .review .reviewMy .response_box2 {margin-top:2.5rem}
+.my .review .reviewMy .response_box > div dl div {font-size: 1.1rem;}
+.my .review .reviewMy .response_box > div dl div dt {color:#888;display: inline-block;width: 6.5rem; font-size: 1.1rem;}
+.my .review .reviewMy .response_box > div dl div dd {display: inline-block;width: calc(100% - 8.05rem); /*margin-left:1.2rem;*/ font-size: 1.1rem; color:#fd4802;}
+.my .review .reviewMy .response_box2 {margin-top:1.4rem}
 .my .review .reviewMy .response_box2 > div {margin-top:1.5rem;}
 .my .review .reviewMy .response_box2 > div:first-child {margin-top:0}
 /* .my .review .reviewMy .response_box2 > div dl div {margin-right:3.0rem} */
+.my .review .reviewMy .response_box2 > div dl div {float:left; width: 50%;}
 .my .review .reviewMy .response_box2 > div dl div dt {position:relative;color:#888;display: inline-block;width: auto;font-size: 1.1rem;padding-left: 0.85rem;}
-.my .review .reviewMy .response_box2 > div dl div dt::before {content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.3rem;height: 0.3rem;}
+.my .review .reviewMy .response_box2 > div dl div dt::before {content: '';position: absolute;top: 0.6rem;left: 0;background: #858585;width: 0.2rem;height: 0.2rem;}
 .my .review .reviewMy .response_box2 > div dl div dd {display: inline-block;width: calc(49.45% - 8.05rem);font-size: 1.1rem;margin-left:0.2rem; color:#222222;}
-.my .review .reviewMy .photo_box {margin-top:2.0rem}
+.my .review .reviewMy .photo_box {margin-top:1.4rem}
 .my .review .reviewMy .photo_box .photo_list {}
-.my .review .reviewMy .photo_box .photo_list > ul li {float:left; width:calc((100% - 9.0rem)/10); margin-left:1.0rem}
+.my .review .reviewMy .photo_box .photo_list > ul {white-space: nowrap; overflow-x:auto; -ms-overflow-style:none; font-size: 0;}
+.my .review .reviewMy .photo_box .photo_list > ul::-webkit-scrollbar { display:none; }
+.my .review .reviewMy .photo_box .photo_list > ul li {display: inline-block; /*width:calc((100% - 9.0rem)/10);*/ width: 7.2rem; margin-left:0.8rem}
 .my .review .reviewMy .photo_box .photo_list > ul li:nth-child(10n-9) {margin-left:0;}
-.my .review .reviewMy .txt_review_box {margin-top:25px; font-size: 1.3rem; line-height:2.1rem;}
-.my .review .reviewMy .reply_box {margin-top:3.0rem; padding-top:1.5rem}
-.my .review .reviewMy .reply_box .reply {position:relative; padding:3.0rem; background:#f5f5f5;}
+.my .review .reviewMy .photo_box .photo_list .pic {width: 7.2rem; height: 7.2rem;}
+.my .review .reviewMy .photo_box .photo_list .pic span {display: block; width: 100%; height: 100%; background-size:100%;}
+.my .review .reviewMy .txt_review_box {margin-top:1.9rem; font-size: 1.3rem; line-height:2.1rem;}
+.my .review .reviewMy .reply_box {margin-top:1.5rem; padding-top:1.5rem;}
+.my .review .reviewMy .reply_box .reply {position:relative; padding:2.0rem; background:#f5f5f5;}
 .my .review .reviewMy .reply_box .reply::after {content:''; position:absolute; left:0px; top:-1.5rem; width:0px; height:0px; border:1.5rem solid #f5f5f5; border-top-color:transparent; border-right-color:transparent;}
-.my .review .reviewMy .reply_box .reply .reply_writer {}
+.my .review .reviewMy .reply_box .reply .reply_writer {font-size: 1.3rem;}
 .my .review .reviewMy .reply_box .reply .reply_writer span {display:inline-block; position:relative;}
 .my .review .reviewMy .reply_box .reply .reply_writer .wr_name {padding-left:2.4rem; font-weight:300;}
-.my .review .reviewMy .reply_box .reply .reply_writer .wr_name::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.6rem; height:1.6rem; background:url('/images/pc/ico_admin.png') no-repeat 0 0;}
-.my .review .reviewMy .reply_box .reply .reply_writer .wr_date {padding-left:2.0rem; margin-left:2.0rem; color:#888; font-weight:200;}
+.my .review .reviewMy .reply_box .reply .reply_writer .wr_name::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.6rem; height:1.6rem; background:url('/images/mo/ico_admin2.png') no-repeat 0 0; background-size:1.5rem;}
+.my .review .reviewMy .reply_box .reply .reply_writer .wr_date {padding-left:1.5rem; margin-left:1.5rem; color:#888; font-weight:200;}
 .my .review .reviewMy .reply_box .reply .reply_writer .wr_date::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); height:1.2rem; width:0.1rem; background:#ddd;}
-.my .review .reviewMy .reply_box .reply .reply_txt {margin-top:2.0rem; color:#666; font-size:1.3rem; line-height:2.4rem;}
-.my .review .reviewMy .goods_btn_wrap {padding: 2.0rem 0;}
+.my .review .reviewMy .reply_box .reply .reply_txt {margin-top:1.2rem; color:#666; font-size:1.3rem; line-height:1.4; font-weight: 200;}
+.my .review .reviewMy .goods_btn_wrap {padding: 2.4rem 0;}
 
 
 /* my_review_3 */
+.my .review .form_wrap .inner {margin-bottom: 0;}
 .my .review_score {margin-top: 14px;padding-bottom: 2.0rem;border-bottom: 1px solid #dddddd;}
 .my .review_score #star_grade {width: 14.0rem;margin:0 auto;}
 .my .review_score #star_grade button {display: inline-block; width: 25px; height: 25px; text-decoration: none; background: url(/images/pc/ico_star01.png) no-repeat center;}
@@ -1108,7 +1128,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 .my .review .desc_txt {margin-top: 1.5rem; font-size: 1.1rem; color: #666; font-weight: 200; position: relative; padding-left: 0.6rem;}
 .my .review .desc_txt:before {content:''; position: absolute; left: 0; top: 0.6rem; width: 0.2rem; height: 0.2rem; background: #888;}
-.my .review .btn_group_flex {padding:0 0 6rem; margin:0; background: #fff;}
+.my .review .btn_group_flex {/*padding:0 0 6rem;*/ margin:0; background: #fff;}
 .my .review .tbl_wrap .tbl td .certi_wrap {display: block;}
 .my .review .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 
@@ -1272,10 +1292,23 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .my_page_edit .tbl_wrap .tbl td input {width: 100%;}
 .my .my_page_edit .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 
-.my .my_page_edit .btn_group_flex {padding:0 0 6rem; margin:0; background: #fff;}
+.my .my_page_edit .btn_group_flex {padding:0; margin:0; background: #fff;}
 .my .my_page_edit .tbl_wrap .tbl td .certi_wrap {display: block;}
 .my .my_page_edit .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 
+/* my_mypage_2 비밀번호 변경 팝업 */
+.modal.password_change_pop .modal-header {padding: 0; height: 5.5rem;}
+.password_change_pop .htop {position: relative;height: 55px;-webkit-box-sizing: border-box;box-sizing: border-box;background-color: #fff;}
+.password_change_pop #htopSub {border-bottom: 1px solid #e5e5e5;box-sizing: border-box;}
+.password_change_pop #htopSubs {border-bottom: 1px solid #000000;box-sizing: border-box;}
+.password_change_pop .htop h5 {display: inline-block;position: relative;height: 3.5rem;line-height: 3.5rem;vertical-align: top; font-size: 1.8rem;color: #222; margin:1rem 0 0 2rem;}
+.password_change_pop .htop h5 img {position: relative;top: 50%;left: 0;right: 0;transform: translate(0, -50%);margin: 0px 0;}
+.password_change_pop .modal-body {padding:0 2rem;}
+.password_change_pop .modal-body .pop_cont {font-size: 1.1rem;}
+.password_change_pop .pass_confirm .form_field:first-child {margin-top: 0;}
+.password_change_pop .pass_confirm .form_field {margin-top: 1rem;}
+.password_change_pop .form_control {width: 100%;}
+
 /* my_mypage_3 */
 .my .my_page_edit .authen_wrap {text-align: center; padding:5rem 0 3rem;}
 .my .my_page_edit .authen_wrap img {width: 3.4rem;}
@@ -1295,6 +1328,9 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .my_return .tbl_tarea .textarea_wrap {position: relative;}
 .my .my_return .tbl_tarea .textarea_wrap .txt_cnt {position: absolute; right: 1.5rem; bottom: 1.5rem;}
 .my .my_return .tbl_tarea .textarea_wrap textarea {resize:none; height: 15rem; width: 100%; padding:1.7rem 1.5rem;}
+.my .my_return .retrieve_box.direct input[type="number"] {width: 100%; padding:0 1rem;}
+.my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%;}
+.my .my_return .retrieve_box.direct .ship_info dl > div:first-child dd {font-weight: 300;}
 
 /* my_exchange_optionPOP_옵션변경 팝업 */
 .container.my.btPop_open::after, .container.od.btPop_open::after {display: none;}
@@ -1343,6 +1379,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .refund_account_pop .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 .refund_account_pop .tbl_wrap .tbl table tr:last-child th, .refund_account_pop .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}
 .refund_account_pop .tbl_wrap .tbl table tr:last-child th {padding-bottom: 1.5rem;}
+.refund_account_pop .btn_group_flex {margin-top: 0;}
 
 /* my_delivery_1 */
 .my .my_delivery {}
@@ -1398,6 +1435,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .myMbLeave .message .msg_tit {font-size: 1.3rem; color: #fd4802; margin-bottom: 1rem; font-weight: 500; padding-top: 1.5rem;   padding-left: 2rem;}
 .my .myMbLeave .message .msg_tit.t_err {text-indent: -2rem;}
 .my .myMbLeave .message .content {font-size: 1.3rem; padding-bottom: 1.5rem;padding-left: 2rem;color: #888888;}
+.my .myMbLeave .btn_group_flex {margin-top: 0;}
 
 
 /* my_point */
@@ -1414,7 +1452,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .have_amount dl div:first-child::before {display:none;}
 .my .have_amount dl div > * {vertical-align:top;}
 .my .have_amount dl div dt {float:left; color:#666; font-size: 1.3rem;}
-.my .have_amount dl div dt .tag {margin-top:-4px;margin-left:0.5rem;padding: 0.5rem; height:auto;}
+.my .have_amount dl div dt .tag {margin-left:0.5rem;padding: 0.5rem; height:auto;}
 .my .have_amount dl div dd {float:right; margin-left:1.0rem; color:#222; font-weight: 300;}
 .my .point .tag.primary_line {background:#fff3f2; border-color:#fd4802; color:#fd4802;border: 1px solid;font-size: 0.4rem;}
 .my .point .select_box {  width: auto;  background: #fff;position: relative;}
@@ -1467,14 +1505,14 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 
 /* popup_쿠폰사용안내 */
 .modal.couponInfo_pop {max-width:none; height:auto;}
-.modal.couponInfo_pop .modal-title {word-break:keep-all;}
+.modal.couponInfo_pop .modal-title {word-break:keep-all; line-height: 1.4;}
 .modal.couponInfo_pop .modal-body .pop_cont {line-height:1; max-height:none; padding-bottom: 2rem;}
 .modal.couponInfo_pop button span {line-height:1;}
 .modal.couponInfo_pop .form_field,
 .modal.couponInfo_pop .form_field > div {display:block; width:100%;}
 .modal.couponInfo_pop dl {font-size:14px; line-height:1;}
 .modal.couponInfo_pop dl > div:first-child {margin-top:0}
-.modal.couponInfo_pop dl > div {margin-top:20px}
+.modal.couponInfo_pop dl > div {margin-top:2rem;}
 .modal.couponInfo_pop dl > div::after {content:''; clear:both; display:block;}
 .modal.couponInfo_pop dl dt {position:relative; padding-left:1rem; color:#222; font-weight:300;}
 .modal.couponInfo_pop dl dt::before {content:''; position:absolute; left:0; top:5px; width:3px; height:3px; background:#888}
@@ -1494,7 +1532,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .myVoucher .have_amount dl div:first-child::before {display:none;}
 .my .myVoucher .have_amount dl div > * {vertical-align:top;}
 .my .myVoucher .have_amount dl div dt {float:left; color:#666;    font-size: 1.2rem;}
-.my .myVoucher .have_amount dl div dt .tag {margin-top:-4px;margin-left:0.5rem;padding: 0rem 0.3rem;}
+.my .myVoucher .have_amount dl div dt .tag {margin-left:0.5rem;padding: 0rem 0.3rem;}
 .my .myVoucher .have_amount dl div dd {float:right; margin-left:1.0rem; color:#222;}
 .my .myVoucher .tag.primary_line {background:#fff3f2; border-color:#fd4802; color:#fd4802;border: 1px solid;font-size: 0.4rem;}
 .my .myVoucher .select_box {  width: auto;  background: #fff;position: relative;}
@@ -1526,12 +1564,13 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .restock .inner.bg_gray {background: transparent;padding-bottom: 1.3rem;}
 .my .restock .announce_txt {padding:0;}
 .my .restock .announce_txt .announce_list {padding:1.6rem 0 1.6rem;}
+.my .restock .btn_group_flex  {margin-top: 1.5rem;}
 .my .restock .btn_group_flex > div > .btn {font-size: 1.4rem;}
 .my .restock .btn_group_flex > div > .btn.btn_primary {color: #ffffff;background-color: #fd4802;border-color: #fd4802;}
 .my .restock .part_goods .goods_detail .info_box .od_name .brand span{margin-bottom: 0;}
-.my .restock .restock_ready {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#222; background:url('/images/pc/ico_restock_ready.png') no-repeat 0% 29%;background-size: 1.5rem;}
-.my .restock .restock_remain {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#fd4802; background:url('/images/pc/ico_restock_remain.png') no-repeat 0% 29%;background-size: 1.5rem;}
-.my .restock  .restock_past {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#888; background:url('/images/pc/ico_restock_past.png') no-repeat 0% 29%;background-size: 1.5rem;}
+.my .restock .restock_ready {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#222; background:url('/images/mo/ico_restock_ready.png') no-repeat 0% 45%;background-size: 1.1rem;}
+.my .restock .restock_remain {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#fd4802; background:url('/images/mo/ico_restock_remain.png') no-repeat 0% 45%;background-size: 1.1rem;}
+.my .restock .restock_past {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#888; background:url('/images/mo/ico_restock_past.png') no-repeat 0% 45%;background-size: 1.1rem;}
 
 /* my_wishlist */
 .my .my_wishlist .wishlist {padding-top: 3rem;}
@@ -1625,11 +1664,10 @@ background-size:100%;}
 .od .part_goods .goods_status .dlvr_desc {display: inline-block; font-size: 1.3rem; color: #888; font-weight: 300;}
 
 .od .part_goods .goods_btn_wrap {margin: 1.8rem 0;}
-.od .part_goods .goods_txt {background: #f5f5f5; text-align: center; padding:1.5rem 0; margin: 1.8rem 0 0;}
+.od .part_goods .goods_txt {background: #f5f5f5; color: #666666; text-align: center; padding:1.5rem 0; margin: 1.8rem 0 0;}
 .od .part_goods .goods_txt.reserv {background: #fff6f2;}
-.od .part_goods .goods_txt span {position: relative;}
-.od .part_goods .goods_txt span:first-child {margin-right: 0.8rem; padding-right: 0.8rem; border-right:1px solid #ddd;}
-.od .part_goods .goods_txt span:first-child:after { position: absolute; top: 0; right: -1rem; width: 0.1rem; height: 1rem; background: #ddd;}
+.od .part_goods .goods_txt span {position: relative;color: #666666;}
+.od .part_goods .goods_txt span:nth-last-child(2) {margin-right: 0.8rem; padding-right: 0.8rem; color: #222222; font-weight: 400; border-right:1px solid #ddd;}
 .od .part_goods .goods_txt p {font-size: 1.1rem; font-weight: 300;}
 .od .part_goods .goods_txt .period {color: #fd4802; margin-top: 0.5rem;}
 .od .part_goods .goods_alert {text-align: center; margin-bottom: 1.8rem;}
@@ -1956,7 +1994,7 @@ background-size:100%;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .list > li {line-height:1; padding:0; border-top:1px solid #ddd;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon {padding:1.5rem; }
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .name {color:#222; font-size:1.3rem; font-weight:300;}
-.od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt {margin-top:10px; color:#888; font-size:1.1rem; font-weight:200;}
+.od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt {margin-top:1rem; color:#888; font-size:1.1rem; font-weight:200;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt span {font-weight:300;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .discount {margin-top:10px;  color:#fd4802; font-size:1.5rem; font-weight:300;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .discount span {font-weight:500;}
@@ -2170,6 +2208,7 @@ main.container .shopping_bag .inner:last-child {padding-bottom: 0;}
 
 .shopping_bag .part_goods .goods_btn_wrap {margin: 1.8rem 0 0; padding-left: 3rem;}
 .goods_btn_wrap > div > .btn.btn_primary_line {border:1px solid #fd4802;}
+.goods_btn_wrap > div > button[disabled] {background: #000;color: #fff;border: 1px solid #000000 !important;}
 .shopping_bag .goods_dlvr_save {margin-top: 1.8rem; text-align: center;}
 .shopping_bag .goods_dlvr_save a.btn_popup_save {display:inline-block; padding-right:20px; text-align: center; color:#fd4802; font-size:1.1rem; font-weight:200; line-height:14px; text-decoration:underline; background:url('/images/mo/ico_go_save.png') no-repeat 98% 45%; background-size:1.1rem;}
 

+ 97 - 58
src/main/webapp/ux/mo/js/common_m.js

@@ -160,62 +160,6 @@ $(document).ready(function() {
             });
     });
 
-//Select Custom
-$( document ).ready(function() {
-	$('select').each(function(){
-		var $this = $(this), numberOfOptions = $(this).children('option').length;
-	
-		$this.addClass('select_hidden'); 
-		$this.wrap('<div class="select"></div>');
-		$this.after('<div class="select_dress"></div>');
-
-		var $dressSelect = $this.next('div.select_dress');
-		$dressSelect.text($this.children('option').eq(0).text());
-	
-		var $selList = $('<ul />', {
-			'class': 'select_options'
-		}).insertAfter($dressSelect);
-	
-		for (var i = 0; i < numberOfOptions; i++) {
-			$('<li />', {
-				text: $this.children('option').eq(i).text(),
-				rel: $this.children('option').eq(i).val(),
-				class: $this.children('option').eq(i).attr('disabled')
-			}).appendTo($selList);
-		}
-	
-		var $selListItems = $selList.children('li');
-	
-		$dressSelect.click(function(e) {
-			e.stopPropagation();
-			$('div.select_dress.active').not(this).each(function(){
-				$(this).removeClass('active').next('ul.select_options').hide();
-			});
-			$(this).toggleClass('active').next('ul.select_options').toggle();
-		});
-	
-		$selListItems.click(function(e) {
-			e.stopPropagation();
-			
-			if($(this).hasClass('disabled')){
-				$this.val($(this).attr('rel',false));
-			} 
-			else{
-				$dressSelect.text($(this).text()).removeClass('active');
-				$this.val($(this).attr('rel'));
-				$selList.hide();
-			}
-		});
-	
-		$(document).click(function() {
-			$dressSelect.removeClass('active');
-			$selList.hide();
-		});
-
-	});
-});
-
-
 // Select-Combo-Custom
 function sCombo(selector){
 	this.$selectBox = null,
@@ -704,11 +648,13 @@ $(document).ready(function () {
             }
             return false;
         });
+
         // 210405_사이즈 선택시 구매하기 팝업 추가
         $('.opt_size .form_field div').click(function(){
             popOpenScroll();
             //$('.btPop_body .lap span').css('color', 'red')
             //console.log($(this)[0]);
+            console.log();
             $('.container').addClass('btPop_open');
             // autome.style.top  = autotop /10 + "vh";
             if (autotop > 251) {
@@ -719,6 +665,97 @@ $(document).ready(function () {
             return false;
         });
 
+        // 210407_사이즈 선택유지 스크립트
+        $('.option_box .form_field div label').click(function(){
+            var a = [];
+            a = document.querySelectorAll(".option_box .form_field div label span");
+            sizeLine = document.querySelectorAll(".option_box .form_field div label");
+            sizeGap = this.innerText;
+
+            if(sizeGap === "90"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "90"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "95"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "95"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "100"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "100"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "105"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "105"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "110"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "110"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "115"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "115"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+            if(sizeGap === "free"){
+                for(var i=0; i<a.length; i++){
+                    sizeLine[i].style.border="1px solid #ddd";
+                    if(a[i].innerText === "free"){
+                        sizeLine[i].style.border="1px solid #fd4802";
+                    }
+                }
+            }
+        });
+
+        // 210407_텍스트 카운팅
+        $('.doc_itemqna').keyup(function (e){
+            var content = $(this).val();
+            $('#itemqna_cnt').html("<em class='c_primary'>"+content.length+"</em>/500자");//글자수 실시간 카운팅
+        
+            if (content.length > 200){
+                alert("최대 500자까지 입력 가능합니다.");
+                $(this).val(content.substring(0, 500));
+                $('#itemqna_cnt').html("<em class='c_primary'>500</em>/500자");
+            }
+        });
+
+        // 210407_스크롤감지 헤더 그림자
+        $('.pd_delivery_pop').scroll(function(){
+            $(".pd_delivery_pop .modal-header").css("box-shadow", "0px -50px 81px 8px rgba(0,0,0,0.80)");
+            if($(".pd_delivery_pop").scrollTop() === 0){
+                $(".pd_delivery_pop .modal-header").css("box-shadow", "rgb(0 0 0 / 20%) 0px 0px 5px");
+            }
+        });
+        $('.pd_review_pop').scroll(function(){
+            $(".pd_review_pop .modal-header").css("box-shadow", "0px -50px 81px 8px rgba(0,0,0,0.80)");
+            if($(".pd_review_pop").scrollTop() === 0){
+                $(".pd_review_pop .modal-header").css("box-shadow", "rgb(0 0 0 / 20%) 0px 0px 5px");
+            }
+        });
+
 
         // 쇼핑백팝업
         $("#btn_shoppingBag_pop").click(function() {
@@ -756,8 +793,10 @@ $( document ).ready( function() {
 
         /* 상품문의_accordion */
         $(document).on('click','.pd_qnalist .fold_head .fold_tit',function(e){	
-            $('.fold_head').removeClass('on');
-            $('.fold_cont').slideUp(100);
+            //$('.fold_head').removeClass('on');
+            //$('.fold_cont').slideUp(100);
+            //$(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
+            //$(this).parents('.fold_head').toggleClass('on');
             $(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
             $(this).parents('.fold_head').toggleClass('on');
             return false;

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 333 - 333
src/main/webapp/ux/pc/css/common.css


+ 10 - 6
src/main/webapp/ux/pc/css/layout.css

@@ -2563,7 +2563,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	/***** pd_detail *****/
 	.pd_detail {}
-	.pd_detail .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; background:#f5f5f5; overflow:hidden;}
+	.pd_detail .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; overflow:hidden;background:#f5f5f5;background: #ffffff;border: 1px solid #f5f5f5;box-sizing: content-box;}
 	.pd_detail .thumb img,
 	.pd_detail .thumb video {position:absolute; left:0; top:50%; width:100%; transform:translateY(-50%) ; z-index:2;}
 	.pd_detail .btn_popup {display:inline-block; padding:0px; box-sizing:border-box;}
@@ -3271,7 +3271,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist {}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul {height:50px; width:max-content;}
-	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul::after {content:''; clear:both;}
+	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul::after {content:''; clear:both; display:;}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist li {float:left; margin-right:8px;}
     .modal[class*="reviewdetail_pop"] .detail .review .thumblist li .pic {position:relative; width:50px; height:50px; cursor:pointer; z-index:2;}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist li .pic .thumb img,
@@ -3916,7 +3916,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.myOrderView .tbl table td .select_custom .combo .list > li {padding:0 15px;}
 	.myOrderView .tbl table td .input_wrap {width:100%;}
 	.myOrderView .tbl table td .input_wrap textarea {width:100%; height:82px; padding:14px 15px; font-size:14px; color:#222;}
-	.myOrderView .tbl table td .input_wrap .txt_cnt {margin-top:10px}
+	.myOrderView .tbl table td .input_wrap .txt_cnt {margin-top:10px;}
+	.myOrderView .tbl.type6 {position: relative;}
+	.myOrderView .tbl.type6 table + p {position: absolute;top: auto;bottom: -25px;left: 0;right: auto;}
 	.myOrderView .retrieve_method .form_field > div {margin-right:30px}
 	.myOrderView .retrieve_method .form_field span {color:#222; font-size:16px; font-weight:200;}
 	.myOrderView .retrieve_method .form_field span em {margin-left:5px; color:#fd4802; font-size:14px;}
@@ -4576,17 +4578,19 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.refund_pop .modal-title {margin-top:0;}
 	.modal.refund_pop .modal-footer {margin-top:40px}
 	.modal.refund_pop .modal-footer .btn {width:255px}
-	.modal.refund_pop .modal-body .pop_cont {overflow:auto; max-height:none;}
+	.modal.refund_pop .modal-body .pop_cont {overflow:visible; position: relative; max-height:none;}
 	.modal.refund_pop .select_custom {color:#666; font-size:14px;}
 	.modal.refund_pop .select_custom .combo {min-width:300px; width:100%;}
 	.modal.refund_pop .select_custom .combo .select {padding:14px 15px; color:#666; font-size:14px;}
+	.modal.refund_pop .select_custom .combo .list {max-height: 200px;}
 	.modal.refund_pop .select_custom .combo .list > li {padding:0 15px;}
 	.modal.refund_pop table {width:470px;}
 	.modal.refund_pop table th {padding:10px 0; color:#222; font-size:14px; font-weight:500; vertical-align:top;}
 	.modal.refund_pop table th span {display:inline-block; line-height:42px;}
 	.modal.refund_pop table td {padding:10px 0;}
-	.modal.refund_pop .input_wrap .form_control {float:left; width:275px;}
-	.modal.refund_pop .input_wrap .form_control:disabled {float:none; width:100%;}
+	.modal.refund_pop .input_wrap .form_control {float:left; width:100%;}
+	.modal.refund_pop .input_wrap .form_control:disabled {}
+	.modal.refund_pop .input_wrap > *:nth-last-child(2) {width:275px;}
 	.modal.refund_pop .input_wrap .form_control + .btn.btn_sm {width:95px; height:42px; font-size:14px; font-weight:300;}
 	.modal.refund_pop .txt_info {margin-top:10px; color:#888; font-size:14px; font-weight:200;}
 	.modal.refund_pop .txt_info ul li {position:relative; padding-left:10px; margin-top:5px}

+ 5 - 4
src/main/webapp/ux/pc/js/common-ui.js

@@ -457,13 +457,14 @@ $(document).ready( function() {
 	$(function(){
 		/* 스크롤시 효과 */
 		$(window).scroll(function(){
+
 			var windScroll = $(window).scrollTop();
-			var miniGnbH = $('.common_header > .gnb').outerHeight();
-			var stickyTopNavH = $('.common_header > .gnb').outerHeight();
-			var navOffsetTop = $('.sticky_nav_list').offset().top - miniGnbH;
+			var miniGnbH = $('.common_header .gnb').outerHeight();
+			var stickyTopNavH = $('.common_header .gnb').outerHeight();
+			var navOffsetTop = $('.sticky_nav_list').size() ? $('.sticky_nav_list').offset().top : 0;
 			var navOffsetBottom = navOffsetTop + $('.list_content').outerHeight();
 			var arr = [];
-			
+
 			if (windScroll > navOffsetTop){
 				$('.sticky_nav_list').css('padding-top',stickyTopNavH);
 				$(".sticky_nav").addClass("sticky");

+ 205 - 0
src/main/webapp/ux/plugins/gaga/gaga.infinite.scroll.js

@@ -0,0 +1,205 @@
+/*
+ * Inifinite Scroll Java Script written by gagamel.
+ *
+ * Copyright (c) 2016 gagamel (nogdoo.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2016-04-28 $
+ *
+ * 사용 예)
+ * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 하며
+ * 		// id 명칭은 infiniteContainer, listBoxOuter, listBox 가 필요하다.
+ * 		<section id="infiniteContainer">
+ * 			<div id="listBoxOuter">
+ * 				<ul id="listBox">
+ * 				</ul>
+ *			</div>
+ *		</section>
+ *
+ * 		// JQUERY History 파일과 인피니트 스크롤 관련 자바스크립트 파일을 import 되어 있어야 한다.
+ * 		<script type="text/javascript" src="/ux/plugins/jquery.history.min.js"></script>
+ * 		<script type="text/javascript" src="/ux/plugins/gaga.infinite.scroll.js"></script>
+ *
+ * 		<script type="text/javascript">
+ * 			// 인피니트 스크롤에 대한 History 정보를 가져오기 위해 함수를 호출한다.
+ *			// History 정보가 없을 경우 fnGetInfiniteScrollDataList 함수가 호출된다.
+ * 			$(function() { gagaInfiniteScroll.getHistory(); });
+ *
+ *			// 인피니트 스크롤 이벤트 발생 시 데이터 가져오기
+ *			var fnGetInfiniteScrollDataList = function(pageNum) {
+ *				// 콜백함수인 gagaInfiniteScroll.jsonToHtml 에서는 fnDrawInfiniteScrollData 함수를 호출한다.
+ *				gagajf.ajaxSubmitForm(document.searchForm, "/goods/list", "json", gagaInfiniteScroll.jsonToHtml);
+ *			}
+ *
+ *			// 인피니트 스크롤 이벤트 발생 시 가져온 데이터를 특정 태그에 append
+ *			// fnDrawInfiniteScrollData(result, pageNum) 함수 구현
+ *			// 		이 함수 내에서의 로직은
+ *			//		1. 가져온 데이터로 HTML 태그를 만든다.
+ *			// 		2. 만든 태그를 append 하는 gagaInfiniteScroll.draw() 함수를 호출
+ *		</script>
+ */
+
+var gagaInfiniteScroll = {
+	pageStatus : {
+		  pageNum : []      // [0,1,2...] 로드된 페이지 (Array)
+		, loadPage : 0      // 로드할 페이지
+		, loadAlign : 'not' // 로드 상태(prev, next, not)
+		, historyScroll : 0 //
+		, nowPage : null    // 현재 페이지
+		, pageUrl : {       // page url
+		}
+	},
+	obj : {
+		  $ajaxBoxOuter : $('#listBoxOuter')
+		, $ajaxBox : $('#listBox')
+		, $window : $(window)
+		, $loadingBar : '<div style="width: 100%; padding-top: 50px; text-align: center;" id="loadingBar"><img src="/ux/plugins/gaga/loader.gif" style="width:25px; height:25px;"/></div>'
+//		, $loadingBar : '<div style="width: 100%; padding-top: 50px; text-align: center;" id="loadingBar"><img src="/images/hsmob/common/loading_bar_01.gif" width="24px" height=" 22px"/></div>'
+	},
+	scrollCheck : function() {
+		var obj = this.obj, stat = this.pageStatus;
+
+		if (obj.$window.scrollTop() >= obj.$ajaxBox.offset().top + obj.$ajaxBox.height() - obj.$window.height()) { // 더보기
+			if (stat.loadAlign == 'not') {
+				var pageLen = this.pageStatus.pageNum.length - 1;
+				var nextPageNum = this.pageStatus.pageNum[pageLen] + 1;
+				this.pageStatus.pageNum.push(nextPageNum);
+				this.pageStatus.loadPage = nextPageNum;
+				stat.loadAlign = 'next';
+				this.getDataList();
+			};
+		}
+	},
+	getDataList : function() {
+		/*if (this.pageStatus.loadAlign == 'prev') {
+			this.obj.$ajaxBoxOuter.prepend($(this.obj.$loadingBar));
+		} else if (this.pageStatus.loadAlign == 'next') {
+			this.obj.$ajaxBoxOuter.append($(this.obj.$loadingBar));
+		};*/
+
+		$(".wrap-loading").removeClass('display-none');
+
+		// 인피니트 스크롤 이벤트에서 호출될 함수(데이터 가져오기 등)
+		// fnGetInfiniteScrollDataList 함수는 개발단에서 구현해야 한다.
+		fnGetInfiniteScrollDataList(this.pageStatus.loadPage);
+	},
+	getHistory : function() {
+		var historyData = History.getState();
+
+		if (historyData.data.pageNum === undefined || historyData.data.pageNum === '' || historyData.data.htm === undefined || historyData.data.htm == '') {
+			this.pageStatus.loadPage = 0;
+			this.pageStatus.pageNum[0] = 0;
+			this.pageStatus.loadAlign = 'next';
+			this.pageStatus.historyScroll = 0;
+
+			this.getDataList();
+		} else {
+			this.pageStatus.loadPage = historyData.data.pageNum;
+			this.pageStatus.pageNum[0] = historyData.data.pageNum;
+			this.pageStatus.historyScroll = historyData.data.dataIndex;
+			this.pageStatus.loadAlign = 'next';
+
+			gagaInfiniteScroll.draw(historyData.data.htm);
+		};
+
+		$(window).on('scroll', function() {
+			gagaInfiniteScroll.scrollCheck();
+		});
+	},
+	draw : function(htm, scrollTop, containerHeight) {
+		if (htm == 'not') {
+			$(".wrap-loading").addClass('display-none');
+			this.pageStatus.loadAlign = 'top';
+		} else {
+			var startH = $('#infiniteContainer').height();
+			var $addHtm = $(htm);
+			var $imgs = $addHtm.find('img');
+			var loadCheck = 0;
+			var len = $imgs.length;
+
+			if (scrollTop && containerHeight) {
+			} else {
+			}
+
+			$addHtm.find('img.lazy').lazyload({root: null,
+						rootMargin: "100px",
+						threshold: 0});
+
+			$.each($imgs, function(index) {
+				$imgs.eq(index).on('load',function() {
+					loadCheck++;
+					imgLpadComp();
+				});
+			});
+
+			var imgLpadComp = function() {
+				if (len - 1 == loadCheck) {
+					gagaInfiniteScroll.pushHistory(
+							  gagaInfiniteScroll.pageStatus.nowPage
+							, $(window).scrollTop()
+							, $('#infiniteContainer').height()
+							, gagaInfiniteScroll.pageStatus.loadPage
+							, 0
+							, gagaInfiniteScroll.obj.$ajaxBox.html());
+					if (scrollTop && containerHeight) {
+						gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+					} else {
+						gagaInfiniteScroll.obj.$window.scrollTop(gagaInfiniteScroll.obj.$window.scrollTop() + 1);
+					}
+				};
+			};
+
+			$(".wrap-loading").addClass('display-none');
+
+			// Append HTML
+			this.obj.$ajaxBox.append($addHtm);
+
+			if (scrollTop && containerHeight) {
+				gagaInfiniteScroll.obj.$window.scrollTop.scrollTop(0).scrollTop(scrollTop);
+			} else {
+				$(window).scrollTop($(window).scrollTop() + 1);
+			}
+
+			this.pageStatus.loadAlign = 'not';
+		}
+	},
+	pushHistory : function(page, sScrollTop, sHeight, sPageNum, sDataIndex, sHtml) {
+		History.replaceState({
+			  state: page
+			, scroll: sScrollTop
+			, height: sHeight
+			, pageUrl: gagaInfiniteScroll.pageStatus.pageUrl
+			, name: gagaInfiniteScroll.pageStatus.nowPage
+			, pageNum : sPageNum
+			, dataIndex : sDataIndex
+			, htm : sHtml
+		}, "", "");
+	},
+	pushLinkHistory : function(pageNum, dataIndex, obj) { // 링크에서 사용
+		var $pageNum = (pageNum || pageNum == 0) ? pageNum : '';
+		var $dataIndex = (dataIndex || dataIndex == 0) ? dataIndex : '';
+		var $html = (obj) ? $(obj).parents('#listBox').html() : '';
+
+		History.replaceState({
+			  state : gagaInfiniteScroll.pageStatus.nowPage
+			, scroll : $(window).scrollTop()
+			, height : $('#infiniteContainer').height()
+			, pageUrl : gagaInfiniteScroll.pageStatus.pageUrl
+			, name : gagaInfiniteScroll.pageStatus.nowPage
+			, pageNum : $pageNum
+			, dataIndex : $dataIndex
+			, htm : $html
+		}, "", "");
+
+		return false;
+	},
+	jsonToHtml : function(result) {
+		// Data 가져온 후 실행될 함수
+		// fnDrawInfiniteScrollData 함수는 개발단에서 구현해야 한다.
+		if (result.dataList == "not") // data가 더 이상 없으면
+			fnDrawInfiniteScrollData('not', result.CURRENT_PAGE - 1);
+		else
+			fnDrawInfiniteScrollData(result, result.CURRENT_PAGE - 1);
+	}
+};

+ 0 - 4
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

@@ -137,10 +137,6 @@ var gagaInfiniteScroll = {
 			} else {
 			}
 
-			$addHtm.find('img.lazy').lazyload({root: null,
-						rootMargin: "100px",
-						threshold: 0});
-
 			$.each($imgs, function(index) {
 				$imgs.eq(index).on('load',function() {
 					loadCheck++;

+ 26 - 7
src/main/webapp/ux/style24_link.js

@@ -266,9 +266,21 @@ function cfnAddCart(cartList) {
 					}
 					$("#directOrderForm").html(orderHtml);
 					
-					$("#directOrderForm").submit();
-					
-					//location.href='/cart/list/form';
+					if(result.custNo == 0) {
+						var btn = ["비회원 구매", "로그인 후 구매"];
+						mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
+							btn: btn,
+							btnClick: function(index){
+								if (index == 1) { //button1 일때 처리문
+									$("#directOrderForm").submit();
+								} else {
+									location.href="/signin";
+								}
+							}
+						});
+					} else {
+						$("#directOrderForm").submit();
+					}
 				} else {
 					mcxDialog.alert("쇼핑백담기, 바로구매가 아닌 상태입니다. 해당 요청이 맞다면 새로고침 후 다시시도해주세요.");
 				}
@@ -572,6 +584,9 @@ function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
 */
 function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq) {
 	var str = '<div class="modal fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="pdBestReviewLabel" aria-hidden="true"></div>';
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
 
 	if ($('#layer_review_best').length == 0) {
 		$('body').append(str);
@@ -595,7 +610,10 @@ function cfGoodsReviewDetail(goodsCd, bestYn, photoYn, reviewSq) {
 */
 function cfGoodsReviewPhoto(goodsCd) {
 	var str = '<div class="modal fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="pdPhotoReviewListLabel" aria-hidden="true"></div>';
-
+	if ("P" != _frontGb){
+		str = '<div class="modal pop_full fade pd_pop pd_photoreviewlist_pop" id="layer_review_photo" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
+	
 	if ($('#layer_review_photo').length == 0) {
 		$('body').append(str);
 	}
@@ -992,8 +1010,9 @@ var cfnGoToCategoryMain = function(cateGb, cate1No) {
  * @access : public
  * @desc   : 품목메인 페이지로 이동
  * <pre>
- *		cfnGoToGoodsList('G032_10', 1100);
+ *		cfnGoToGoodsList(0, 'G032_10', 1100);
  * </pre>
+ * @param  : brandGroupNo - 브랜드그룹번호(BYITEM 기준이면 0. 이외는 브랜드그룹번호). 필수
  * @param  : cateGb - 카테고리구분. 필수
  * @param  : cate1No - 카테고리1번호. 필수
  * @param  : cate2No - 카테고리2번호. 옵션
@@ -1003,8 +1022,8 @@ var cfnGoToCategoryMain = function(cateGb, cate1No) {
  * @since  : 2021/03/22
  * @author : gagamel
  */
-var cfnGoToGoodsList = function(cateGb, cate1No, cate2No, cate3No, cate4No, cate5No) {
-	var params = '?cateGb=' + cateGb + '&cate1No=' + cate1No;
+var cfnGoToGoodsList = function(brandGroupNo, cateGb, cate1No, cate2No, cate3No, cate4No, cate5No) {
+	var params = '?brandGroupNo=' + brandGroupNo + '&cateGb=' + cateGb + '&cate1No=' + cate1No;
 	if (typeof (cate2No) != 'undefined') params += '&cate2No=' + cate2No;
 	if (typeof (cate3No) != 'undefined') params += '&cate3No=' + cate3No;
 	if (typeof (cate4No) != 'undefined') params += '&cate4No=' + cate4No;

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio