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

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

xodud1202 5 лет назад
Родитель
Сommit
cc1889e2da
49 измененных файлов с 2360 добавлено и 548 удалено
  1. 10 0
      src/main/java/com/style24/front/biz/dao/TsfCouponDao.java
  2. 22 4
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  3. 71 21
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  4. 8 32
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 42 1
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  6. 2 1
      src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java
  7. 20 7
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  8. 87 30
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  9. 1 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  10. 7 2
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  11. 2 2
      src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java
  12. 2 1
      src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java
  13. 6 0
      src/main/java/com/style24/persistence/domain/BrandGroup.java
  14. 2 1
      src/main/java/com/style24/persistence/domain/Cate4Srch.java
  15. 4 0
      src/main/java/com/style24/persistence/domain/Social.java
  16. 4 5
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  17. 4 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  18. 55 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  19. 9 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml
  20. 19 10
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  21. 164 154
      src/main/webapp/WEB-INF/views/mob/SigninFormMob.html
  22. 143 0
      src/main/webapp/WEB-INF/views/mob/SnsCallBackFormMob.html
  23. 2 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html
  24. 331 0
      src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html
  25. 32 0
      src/main/webapp/WEB-INF/views/mob/customer/NiceCallbackFormMob.html
  26. 37 0
      src/main/webapp/WEB-INF/views/mob/customer/NiceCellPhoneFormMob.html
  27. 37 0
      src/main/webapp/WEB-INF/views/mob/customer/NiceIpinFormMob.html
  28. 210 0
      src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html
  29. 373 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html
  30. 19 7
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  31. 26 3
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  32. 4 4
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  33. 11 0
      src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html
  34. 6 0
      src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html
  35. 168 0
      src/main/webapp/WEB-INF/views/web/display/AllBrandFormWeb.html
  36. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  37. 13 12
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  38. 99 90
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  39. 8 1
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  40. 4 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html
  41. 18 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html
  42. 26 6
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  43. 1 1
      src/main/webapp/biz/goodsSession.js
  44. 17 7
      src/main/webapp/ux/mo/css/common_m.css
  45. 170 88
      src/main/webapp/ux/mo/css/layout_m.css
  46. 54 37
      src/main/webapp/ux/mo/css/style24_m.css
  47. 4 2
      src/main/webapp/ux/pc/css/common.css
  48. 1 1
      src/main/webapp/ux/pc/css/layout.css
  49. 4 4
      src/main/webapp/ux/style24_link.js

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

@@ -106,6 +106,16 @@ public interface TsfCouponDao {
 	 */
 	 */
 	Collection<Coupon> getPlanCouponInfo(Coupon coupon);
 	Collection<Coupon> getPlanCouponInfo(Coupon coupon);
 
 
+	/**
+	 * 등급정책 쿠폰 발급 여부(지급월 1일 ~ 말일)
+	 *
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author jsshin
+	 * @since 2021.04.08
+	 */
+	int getCustGradePolicyCouponCount(Coupon coupon);
+
 	/**
 	/**
 	 * 등급정책 쿠폰 정보
 	 * 등급정책 쿠폰 정보
 	 *
 	 *

+ 22 - 4
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -13,10 +13,10 @@ import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Cate5;
 import com.style24.persistence.domain.Cate5;
 import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.GnbTab;
 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.MainLayout;
 import com.style24.persistence.domain.Popup;
 import com.style24.persistence.domain.Popup;
-import com.style24.persistence.domain.GoodsSearch;
-import com.style24.persistence.domain.Goods;
 
 
 /**
 /**
  * 전시 Dao
  * 전시 Dao
@@ -125,7 +125,7 @@ public interface TsfDisplayDao {
 	 * @date 2021. 3. 16
 	 * @date 2021. 3. 16
 	 */
 	 */
 	Cate4Srch getCate4srch(Cate4Srch cate4Srch);
 	Cate4Srch getCate4srch(Cate4Srch cate4Srch);
-	
+
 	/**
 	/**
 	 * 팝업 목록
 	 * 팝업 목록
 	 *
 	 *
@@ -136,7 +136,6 @@ public interface TsfDisplayDao {
 	 */
 	 */
 	Collection<Popup> getPopupList(Popup popup);
 	Collection<Popup> getPopupList(Popup popup);
 
 
-
 	/**
 	/**
 	 * 몰메인 브랜드픽 조회
 	 * 몰메인 브랜드픽 조회
 	 * @param
 	 * @param
@@ -190,4 +189,23 @@ public interface TsfDisplayDao {
 	 * @date 2021. 4. 9
 	 * @date 2021. 4. 9
 	 */
 	 */
 	Collection<Contents> getBestItemCategoryList(Contents contents);
 	Collection<Contents> getBestItemCategoryList(Contents contents);
+
+	/**
+	 * 전체 브랜드
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 12
+	 */
+	Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup);
+
+	/**
+	 * 브랜드그룹의 기본카테고리여부 조회
+	 * @param brandGroupNo - 브랜드그룹번호
+	 * @return
+	 * @author gagamel
+	 * @date 2021. 4. 12
+	 */
+	String getBrandGroupDefaultCategoryYn(Integer brandGroupNo);
+
 }
 }

+ 71 - 21
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -1,7 +1,10 @@
 package com.style24.front.biz.service;
 package com.style24.front.biz.service;
 
 
 import java.util.Collection;
 import java.util.Collection;
+import java.util.List;
 
 
+import com.gagaframework.web.util.GagaDateUtil;
+import com.style24.persistence.domain.CustGrade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -309,6 +312,7 @@ public class TsfCouponService {
 			custCoupon.setEndAlimSendYn("N");		// 알림 발송 여부(발송되면 Y)
 			custCoupon.setEndAlimSendYn("N");		// 알림 발송 여부(발송되면 Y)
 			custCoupon.setUpdNo(coupon.getCustNo());
 			custCoupon.setUpdNo(coupon.getCustNo());
 			custCoupon.setRegNo(coupon.getCustNo());
 			custCoupon.setRegNo(coupon.getCustNo());
+			coreCouponDao.saveCouponCustPub(custCoupon);
 		}
 		}
 	}
 	}
 
 
@@ -494,45 +498,91 @@ public class TsfCouponService {
 		return count;
 		return count;
 	}
 	}
 
 
+	/*
+	 * 정책 등급쿠폰 발급
+	 *
+	 * @param  custGrade - 고객번호
+	 * @return int : 받은 쿠폰 수량
+	 * @author jsshin
+	 * @since 2021. 04. 06
+	 */
+	@Transactional("shopTxnManager")
+	public int downloadCustGradeCoupon(Integer custNo) {
+		// 1. 고객정보 조회
+		Customer custInfo = customerService.getCustomerFindByCustNo(custNo);
+
+		// 2. 등급쿠폰 조회
+		CustGrade params = new CustGrade();
+		params.setCustNo(custInfo.getCustNo());
+		params.setSiteCd(custInfo.getSiteCd());
+		params.setGradeCd(custInfo.getCustGrade());
+		List<CustGrade> custGradeCollection = (List<CustGrade>)customerService.getCustGradePolicy(params);
+		CustGrade custGradePolicy = custGradeCollection.get(0);
+
+		// 3.WELCOME 등급 - 첫번째 쿠폰은 회원 가입시 지급
+		if (TscConstants.CustGrade.WELCOME.value().equals(custGradePolicy.getGradeCd())) {
+			custGradePolicy.setGradeCpnId1("0");
+		}
+
+		String frontGb = TsfSession.getFrontGb();
+		// 4. 회원등급 정책 쿠폰1 발급
+		Coupon couponFirst = new Coupon();
+		couponFirst.setCustNo(custNo);
+		couponFirst.setCpnId(Integer.parseInt(custGradePolicy.getGradeCpnId1()));
+		couponFirst.setFrontGb(frontGb);
+		int custGradeCpnFirst = saveCustGradeCoupon(couponFirst);
+
+		// 5. 회원등급 정책 쿠폰2 발급
+		Coupon couponSecond = new Coupon();
+		couponSecond.setCustNo(custNo);
+		couponSecond.setCpnId(Integer.parseInt(custGradePolicy.getGradeCpnId2()));
+		couponSecond.setFrontGb(frontGb);
+		int custGradeCpnSecond = saveCustGradeCoupon(couponSecond);
+
+		// 6. 회원등급 정책 쿠폰3 발급(생일쿠폰)
+		int birthCpn = 0;
+		if (org.apache.commons.lang3.StringUtils.isNotBlank(custInfo.getBirthYmd()) && custInfo.getBirthYmd().length() > 7) {
+			String currentMonth = GagaDateUtil.getToday().substring(4, 6);
+			String birthMonth = custInfo.getBirthYmd().substring(4, 6);
+			log.info("currentMonth ===> {}, birthMonth ===> {}", currentMonth, birthMonth);
+			if (currentMonth.equals(birthMonth)) {
+				Coupon couponThird = new Coupon();
+				couponThird.setCustNo(custNo);
+				couponThird.setCpnId(Integer.parseInt(custGradePolicy.getGradeCpnId3()));
+				couponThird.setFrontGb(frontGb);
+				birthCpn = saveCustGradeCoupon(couponThird);
+			}
+		}
+		return custGradeCpnFirst + custGradeCpnSecond + birthCpn;
+	}
+
 	/**
 	/**
 	 * 등급쿠폰 발급
 	 * 등급쿠폰 발급
 	 *
 	 *
-	 * @param cpnId - 쿠폰 아이디
+	 * @param coupon - 쿠폰 아이디, 고객번호
 	 * @return int - 결과
 	 * @return int - 결과
 	 * @author jsshin
 	 * @author jsshin
 	 * @since 2021.04.08
 	 * @since 2021.04.08
 	 */
 	 */
-	public int saveCustGradeCoupon(String cpnId) {
+	@Transactional("shopTxnManager")
+	public int saveCustGradeCoupon(Coupon coupon) {
 		int resultCnt = 0;
 		int resultCnt = 0;
-		if (org.apache.commons.lang3.StringUtils.isNotBlank(cpnId)) {
-			Coupon params = new Coupon();
-			Coupon custGradeCoupon = couponDao.getCustGradePolicyCoupon(params);
-
+		if (coupon.getCpnId() > 0) {
+			Coupon custGradeCoupon = couponDao.getCustGradePolicyCoupon(coupon);
 			if (custGradeCoupon != null) {
 			if (custGradeCoupon != null) {
 				CustCoupon custCoupon = new CustCoupon();
 				CustCoupon custCoupon = new CustCoupon();
+				custCoupon.setCustNo(coupon.getCustNo());
 				custCoupon.setCpnId(custGradeCoupon.getCpnId());
 				custCoupon.setCpnId(custGradeCoupon.getCpnId());
 				custCoupon.setAvailStdt(custGradeCoupon.getAvailStdt());
 				custCoupon.setAvailStdt(custGradeCoupon.getAvailStdt());
 				custCoupon.setAvailEddt(custGradeCoupon.getAvailEddt());
 				custCoupon.setAvailEddt(custGradeCoupon.getAvailEddt());
 				custCoupon.setPubReason(TscConstants.PubReason.CHANGE_CUSTOMER_GRADE.value());
 				custCoupon.setPubReason(TscConstants.PubReason.CHANGE_CUSTOMER_GRADE.value());
 				custCoupon.setEndAlimSendYn("N");		// 알림 발송 여부(발송되면 Y)
 				custCoupon.setEndAlimSendYn("N");		// 알림 발송 여부(발송되면 Y)
-				custCoupon.setUpdNo(custGradeCoupon.getCustNo());
-				custCoupon.setRegNo(custGradeCoupon.getCustNo());
+				custCoupon.setUpdNo(coupon.getCustNo());
+				custCoupon.setRegNo(coupon.getCustNo());
+				resultCnt = coreCouponDao.saveCouponCustPub(custCoupon);
 			}
 			}
-
-			resultCnt = 1;
 		}
 		}
 		return resultCnt;
 		return resultCnt;
 	}
 	}
 
 
-	/**
-	 * 생일쿠폰 발급
-	 *
-	 * @param cpnId - 쿠폰 아이디
-	 * @return int - 결과
-	 * @author jsshin
-	 * @since 2021.04.08
-	 */
-	public int saveCustBirthDayCoupon(String cpnId) {
-		return 0;
-	}
 }
 }

+ 8 - 32
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -7,6 +7,7 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpSession;
 
 
+import com.gagaframework.web.util.GagaDateUtil;
 import com.style24.persistence.domain.CustGrade;
 import com.style24.persistence.domain.CustGrade;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -689,6 +690,8 @@ public class TsfCustomerService {
 		GagaMap resultMap = new GagaMap();
 		GagaMap resultMap = new GagaMap();
 		customer.setRegNo(customer.getCustNo());
 		customer.setRegNo(customer.getCustNo());
 		customer.setUpdNo(customer.getCustNo());
 		customer.setUpdNo(customer.getCustNo());
+		customer.setHypenCellPhone();
+		customer.encryptData();
 		boolean isSuccess = false;
 		boolean isSuccess = false;
 		// CI 유효성 체크
 		// CI 유효성 체크
 		Customer custInfo = getCustomerFindByCi(customer.getCi());
 		Customer custInfo = getCustomerFindByCi(customer.getCi());
@@ -985,42 +988,15 @@ public class TsfCustomerService {
 		return result;
 		return result;
 	}
 	}
 
 
-
 	/*
 	/*
-	 * 정책 등급쿠폰 발급
+	 * 고객 정책정보
 	 *
 	 *
 	 * @param  custGrade - 고객번호
 	 * @param  custGrade - 고객번호
-	 * @return CustGrade
+	 * @return Collection<CustGrade>
 	 * @author jsshin
 	 * @author jsshin
-	 * @since 2021. 04. 06
+	 * @since 2021. 04. 12
 	 */
 	 */
-	public GagaMap downloadCustGradeCoupon(Integer custNo) {
-		GagaMap result = new GagaMap();
-		Customer custInfo = getCustomerFindByCustNo(custNo);
-		CustGrade params = new CustGrade();
-		params.setCustNo(custInfo.getCustNo());
-		params.setSiteCd(custInfo.getSiteCd());
-		params.setGradeCd(custInfo.getCustGrade());
-		List<CustGrade> custGradeCollection = (List<CustGrade>)customerDao.getCustGradePolicy(params);
-		CustGrade custGrade = custGradeCollection.get(0);
-
-		// WELCOME 등급 첫 번째 쿠폰은 회원가입시 쿠폰
-		if (TscConstants.CustGrade.WELCOME.value().equals(custGrade.getGradeCd())) {
-			custGrade.setGradeCpnId1("");
-			// 1. 회원등급 정책 쿠폰1, 쿠폰2 발급
-			int gradeCpn1 = couponService.saveCustGradeCoupon(custGrade.getGradeCpnId1());
-			int gradeCpn2 = couponService.saveCustGradeCoupon(custGrade.getGradeCpnId2());
-
-			// 2. 생일쿠폰 발급
-			int birthCpn = 0;
-			if (StringUtils.isNotBlank(custInfo.getBirthYmd()) && custInfo.getBirthYmd().length() > 7) {
-				birthCpn = couponService.saveCustBirthDayCoupon(custGrade.getGradeCpnId3());
-			}
-			result.setInt("gradeCpn1", gradeCpn1);
-			result.setInt("gradeCpn2", gradeCpn2);
-			result.setInt("birthCpn", birthCpn);
-
-		}
-		return result;
+	public Collection<CustGrade> getCustGradePolicy(CustGrade custGrade) {
+		return customerDao.getCustGradePolicy(custGrade);
 	}
 	}
 }
 }

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

@@ -263,6 +263,36 @@ public class TsfDisplayService {
 		return cate1List;
 		return cate1List;
 	}
 	}
 
 
+	/**
+	 * 브랜드 카테고리 목록
+	 * @param brandGroupNo - 브랜드그룹번호
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 12
+	 */
+	@Cacheable(value = "cate", key = "'brandCate-'.concat(#brandGroupNo)")
+	public Collection<Cate1> getBrandCategoryList(Integer brandGroupNo) {
+		// 브랜드그룹의 기본카테고리여부 조회
+		String defaultCateYn = displayDao.getBrandGroupDefaultCategoryYn(brandGroupNo);
+
+		Cate4Srch cate = new Cate4Srch();
+		cate.setSiteCd(TscConstants.Site.STYLE24.value()); // 사이트코드
+
+		// 카테고리구분
+		if (defaultCateYn.equals("Y")) { // 기본카테고리이면
+			cate.setCateGb(TsfConstants.CateGb.BYITEM.value());
+		} else {
+			cate.setCateGb(TsfConstants.CateGb.BYBRAND.value());
+		}
+
+		cate.setCateType(TsfConstants.CateType.GOODS.value()); // 상품분류카테고리
+		cate.setBrandGroupNo(brandGroupNo);
+		cate.setSoldoutGoodsDispYn(envsetService.getSoldoutGoodsDisplayYn(TscConstants.Site.STYLE24.value()));
+		cate.setDefaultCateYn(defaultCateYn);
+
+		return this.getAllCategoryList(cate);
+	}
+
 	/**
 	/**
 	 * 메인 레이아웃 목록
 	 * 메인 레이아웃 목록
 	 * @param cateNo - 카테고리No
 	 * @param cateNo - 카테고리No
@@ -336,7 +366,7 @@ public class TsfDisplayService {
 		Collection<Contents> contentsList = displayDao.getBestItemCategoryList(contents);
 		Collection<Contents> contentsList = displayDao.getBestItemCategoryList(contents);
 		Cate4Srch tempCate = new Cate4Srch();
 		Cate4Srch tempCate = new Cate4Srch();
 
 
-		for(Contents data : contentsList){
+		for (Contents data : contentsList) {
 			tempCate.setContentsLoc(data.getContentsLoc());
 			tempCate.setContentsLoc(data.getContentsLoc());
 			tempCate.setMaxRow(10);
 			tempCate.setMaxRow(10);
 			tempCate.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
 			tempCate.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
@@ -395,4 +425,15 @@ public class TsfDisplayService {
 		return goodsList;
 		return goodsList;
 	}
 	}
 
 
+	/**
+	 * 전체 브랜드
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 12
+	 */
+	public Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup){
+		return displayDao.getAllBrandList(brandGroup);
+	}
+
 }
 }

+ 2 - 1
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

@@ -185,6 +185,7 @@ public class NiceCertify {
 
 
 
 
 		String sRequestNo = TsfSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
 		String sRequestNo = TsfSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
+		log.info("sRequestNo ===> {}, sRequestNumber ===> {}",sRequestNo ,sRequestNumber);
 		if (!sRequestNo.equals(sRequestNumber)) {
 		if (!sRequestNo.equals(sRequestNumber)) {
 			sResponseNumber = "";
 			sResponseNumber = "";
 			sAuthType = "";
 			sAuthType = "";
@@ -260,7 +261,7 @@ public class NiceCertify {
 
 
 		GagaMap resultMap = new GagaMap();
 		GagaMap resultMap = new GagaMap();
 		resultMap.setString("sEncData", ipinClinet.getCipherData());
 		resultMap.setString("sEncData", ipinClinet.getCipherData());
-
+		resultMap.setString("CPREQUEST", sCPRequestNo);
 		return resultMap;
 		return resultMap;
 	}
 	}
 
 

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

@@ -69,11 +69,15 @@ public class TsfCustomerController extends TsfBaseController {
 	 * @since 2021. 02. 05
 	 * @since 2021. 02. 05
 	 */
 	 */
 	@RequestMapping("/id/find/form")
 	@RequestMapping("/id/find/form")
-	public ModelAndView idFindForm() {
+	public ModelAndView idFindForm(@RequestParam(value = "sEncData", required = false) String sEncData
+			, @RequestParam(value = "authMethod", required = false) String authMethod) {
+
 		ModelAndView mav = new ModelAndView();
 		ModelAndView mav = new ModelAndView();
 
 
-		mav.setViewName(super.getDeviceViewName("customer/IdFindForm"));
+		mav.addObject("sEncData", sEncData);
+		mav.addObject("authMethod", authMethod);
 
 
+		mav.setViewName(super.getDeviceViewName("customer/IdFindForm"));
 		return mav;
 		return mav;
 	}
 	}
 
 
@@ -350,7 +354,8 @@ public class TsfCustomerController extends TsfBaseController {
 	 * @since 2021. 02. 09
 	 * @since 2021. 02. 09
 	 */
 	 */
 	@GetMapping("/nice/cellphone/form")
 	@GetMapping("/nice/cellphone/form")
-	public ModelAndView niceCellphoneForm(@RequestParam(value = "redirectUrl", required = false) String redirectUrl, @RequestParam(value = "custparams", required = false) String custparams) {
+	public ModelAndView niceCellphoneForm(@RequestParam(value = "redirectUrl", required = false) String redirectUrl
+			, @RequestParam(value = "custparams", required = false) String custparams) {
 		ModelAndView mav = new ModelAndView();
 		ModelAndView mav = new ModelAndView();
 		GagaMap result = niceCertify.certifyCellPhone();
 		GagaMap result = niceCertify.certifyCellPhone();
 
 
@@ -389,13 +394,15 @@ public class TsfCustomerController extends TsfBaseController {
 	 * 나이스 인증 콜백
 	 * 나이스 인증 콜백
 	 * @param encodeData - 휴대폰인증에서 전달받은 인증결과 암호화 데이터 취득
 	 * @param encodeData - 휴대폰인증에서 전달받은 인증결과 암호화 데이터 취득
 	 * @param encData - 아이핀에서 전달받은 인증결과 암호화 데이터 취득
 	 * @param encData - 아이핀에서 전달받은 인증결과 암호화 데이터 취득
+	 * @param redirectUrl - 모바일은 호출한 URL 암호화 데이터 전달
 	 * @return ModelAndView
 	 * @return ModelAndView
 	 * @author jsshin
 	 * @author jsshin
 	 * @since 2021. 02. 09
 	 * @since 2021. 02. 09
 	 */
 	 */
 	@RequestMapping("/nice/certify/callback")
 	@RequestMapping("/nice/certify/callback")
-	public ModelAndView niceCertifyCallback(
-		@RequestParam(value = "EncodeData", required = false) String encodeData, @RequestParam(value = "enc_data", required = false) String encData, @RequestParam(value = "param_r1", required = false) String redirectUrl) {
+	public ModelAndView niceCertifyCallback(@RequestParam(value = "EncodeData", required = false) String encodeData
+			, @RequestParam(value = "enc_data", required = false) String encData
+			, @RequestParam(value = "param_r1", required = false) String redirectUrl) {
 
 
 		ModelAndView mav = new ModelAndView();
 		ModelAndView mav = new ModelAndView();
 		String sEncData = "";
 		String sEncData = "";
@@ -721,9 +728,15 @@ public class TsfCustomerController extends TsfBaseController {
 		if (StringUtils.isBlank(custNo) || StringUtils.isBlank(customer.getEncData())) {
 		if (StringUtils.isBlank(custNo) || StringUtils.isBlank(customer.getEncData())) {
 			throw new IllegalStateException("로그인 다시 시도해 주세요.");
 			throw new IllegalStateException("로그인 다시 시도해 주세요.");
 		}
 		}
-		GagaMap resultInfo = niceCertify.getCertifyCellPhoneResultInfo(customer);
-		customer.setCi(resultInfo.getString("sCi"));
+		GagaMap authInfo = niceCertify.getCertifyCellPhoneResultInfo(customer);
+		customer.setSexGb(authInfo.getString("sGender"));
+		customer.setCustNm(authInfo.getString("sName"));
+		customer.setBirthYmd(authInfo.getString("sBirthDate"));
+		customer.setForeignerYn(authInfo.getString("sforeignerYn"));
+		customer.setCi(authInfo.getString("sCi"));
+		customer.setCellPhnno(authInfo.getString("sMobileNo"));
 		customer.setCustNo(Integer.parseInt(custNo));
 		customer.setCustNo(Integer.parseInt(custNo));
+
 		session.removeAttribute("custNo"); // 고객번호 세션 삭제
 		session.removeAttribute("custNo"); // 고객번호 세션 삭제
 		return customerService.saveCertification(customer);
 		return customerService.saveCertification(customer);
 	}
 	}

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

@@ -7,18 +7,6 @@ import java.util.HashMap;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
-import com.style24.persistence.domain.BrandGroup;
-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.Login;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.mobile.device.Device;
@@ -42,6 +30,19 @@ import com.style24.front.biz.service.TsfSocialService;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.TscPageRequest;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.Cate1;
+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.Login;
+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 lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 
 
@@ -91,7 +92,7 @@ public class TsfDisplayController extends TsfBaseController {
 		MainLayout mallMainLayout = new MainLayout();
 		MainLayout mallMainLayout = new MainLayout();
 		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
 		// 로그인 유무 확인 (로그인이 되어 있지 않으면 regNo 를 0으로 장바구니에 저장한다.)
 		Login login = new Login();
 		Login login = new Login();
-		if(TsfSession.isLogin()) {
+		if (TsfSession.isLogin()) {
 			login = TsfSession.getInfo();
 			login = TsfSession.getInfo();
 		} else {
 		} else {
 			login.setCustNo(0);
 			login.setCustNo(0);
@@ -144,7 +145,7 @@ public class TsfDisplayController extends TsfBaseController {
 				}
 				}
 			}
 			}
 
 
-			if(contentsLoc.equals("SMM004")){
+			if (contentsLoc.equals("SMM004")) {
 				mainLayout.setBestItemList(displayService.getBestItemForGoods(contents));
 				mainLayout.setBestItemList(displayService.getBestItemForGoods(contents));
 			}
 			}
 
 
@@ -365,22 +366,34 @@ public class TsfDisplayController extends TsfBaseController {
 	public ModelAndView categoryMain(Cate4Srch cate) {
 	public ModelAndView categoryMain(Cate4Srch cate) {
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/CategoryMainForm"));
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/CategoryMainForm"));
 
 
-		// 기획전
-		Contents contents = new Contents();
-		contents.setContentsLoc("SCM001");
-		contents.setCateNo(cate.getCate1No());
-		mav.addObject("planningList", displayService.getContentsList(contents));
-
-		// 신상품
-		cate.setContentsLoc("SCM002");
-		cate.setMaxRow(20);
-		mav.addObject("newGoodsList", goodsService.getContentsCategoryGoodsList(cate));
+		MainLayout mainLayout = new MainLayout();
+		mainLayout.setCateNo(cate.getCate1No());
+		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mainLayout);
+		Collection<MainLayout> cateMainLayoutList = new ArrayList<MainLayout>();
+
+		for (MainLayout cateMain : mainLayoutCollection) {
+			if ("SCM001".equals(cateMain.getContentsLoc())) {
+				// 기획전
+				Contents contents = new Contents();
+				contents.setContentsLoc("SCM001");
+				contents.setCateNo(cate.getCate1No());
+				mav.addObject("planningList", displayService.getContentsList(contents));
+			} else if ("SCM002".equals(cateMain.getContentsLoc())) {
+				// 신상품
+				cate.setContentsLoc("SCM002");
+				cate.setMaxRow(20);
+				mav.addObject("newGoodsList", goodsService.getContentsCategoryGoodsList(cate));
+			} else if ("SCM003".equals(cateMain.getContentsLoc())) {
+				// 베스트품
+				cate.setContentsLoc("SCM003");
+				cate.setMaxRow(20);
+				mav.addObject("bestGoodsList", goodsService.getContentsCategoryGoodsList(cate));
+			}
 
 
-		// 베스트품
-		cate.setContentsLoc("SCM003");
-		cate.setMaxRow(20);
-		mav.addObject("bestGoodsList", goodsService.getContentsCategoryGoodsList(cate));
+			cateMainLayoutList.add(cateMain);
+		}
 
 
+		mav.addObject("cateMainLayoutList", cateMainLayoutList);
 		mav.addObject("preview", cate.getPreview());
 		mav.addObject("preview", cate.getPreview());
 		mav.addObject("viewDt", cate.getViewDt());
 		mav.addObject("viewDt", cate.getViewDt());
 		mav.addObject("viewPage", "G037_30");
 		mav.addObject("viewPage", "G037_30");
@@ -510,7 +523,7 @@ public class TsfDisplayController extends TsfBaseController {
 		mav.addObject("filterSeasonList", displayService.getCategoryFilter(cate4Srch, "SEASON"));
 		mav.addObject("filterSeasonList", displayService.getCategoryFilter(cate4Srch, "SEASON"));
 		mav.addObject("filterColorList", displayService.getCategoryFilter(cate4Srch, "COLOR"));
 		mav.addObject("filterColorList", displayService.getCategoryFilter(cate4Srch, "COLOR"));
 		mav.addObject("filterBenefitList", displayService.getCategoryFilterBenefit(cate4Srch));
 		mav.addObject("filterBenefitList", displayService.getCategoryFilterBenefit(cate4Srch));
-		mav.addObject("sortGb" , "new");
+		mav.addObject("sortGb", "new");
 		mav.addObject("cateInfo", cate4Srch);
 		mav.addObject("cateInfo", cate4Srch);
 
 
 		return mav;
 		return mav;
@@ -553,11 +566,55 @@ public class TsfDisplayController extends TsfBaseController {
 		log.info("totalCnt::::::::::{}", totalCnt);
 		log.info("totalCnt::::::::::{}", totalCnt);
 		pageable.setTotalCount(totalCnt);
 		pageable.setTotalCount(totalCnt);
 		goodsSearch.setPageable(pageable);
 		goodsSearch.setPageable(pageable);
-		log.info("getEndRow:::::{}",pageable.getEndRow());
+		log.info("getEndRow:::::{}", pageable.getEndRow());
 		result.set("paging", goodsSearch);
 		result.set("paging", goodsSearch);
 		result.set("totalCnt", totalCnt);
 		result.set("totalCnt", totalCnt);
 		result.set("endRow", pageable.getEndRow());
 		result.set("endRow", pageable.getEndRow());
 		result.set("dataList", displayService.getCategoryGoodsList(goodsSearch));
 		result.set("dataList", displayService.getCategoryGoodsList(goodsSearch));
 		return result;
 		return result;
 	}
 	}
+
+	/**
+	 * 전체 브랜드
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 12
+	 */
+	@GetMapping("/all/brand/form")
+	public ModelAndView allBrandMain(BrandGroup brandGroup) {
+		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/AllBrandForm"));
+
+		brandGroup.setSelfYn("Y");
+		mav.addObject("mainBrandList", displayService.getAllBrandList(brandGroup));
+
+		return mav;
+	}
+
+	/**
+	 * 전체 브랜드 리스트
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 12
+	 */
+	@GetMapping("/all/brand/list")
+	@ResponseBody
+	public Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup) {
+		return displayService.getAllBrandList(brandGroup);
+	}
+
+	/**
+	 * 브랜드 카테고리 목록
+	 * @param brandGroupNo - 브랜드그룹번호
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 12
+	 */
+	@GetMapping("/brand/cate/list")
+	@ResponseBody
+	public Collection<Cate1> getBrandCategoryList(Integer brandGroupNo) {
+		return displayService.getBrandCategoryList(brandGroupNo);
+	}
+
 }
 }

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

@@ -1074,7 +1074,7 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 12
 	 * @since 2021. 03. 12
 	 */
 	 */
 	@GetMapping("/gift/card/form")
 	@GetMapping("/gift/card/form")
-	public ModelAndView mypageGiftcardForm(GiftCard giftcard) {
+	public ModelAndView mypageGiftcardForm(GiftCard giftcard,Device device) {
 		ModelAndView mav = new ModelAndView();
 		ModelAndView mav = new ModelAndView();
 		// 상품권 기본정보
 		// 상품권 기본정보
 		mav.addObject("giftcardInfo", giftcardService.getGiftcardInfo(giftcard));
 		mav.addObject("giftcardInfo", giftcardService.getGiftcardInfo(giftcard));

+ 7 - 2
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -513,9 +513,14 @@ public class TsfPlanningController extends TsfBaseController {
 	 * @author jsshin
 	 * @author jsshin
 	 * @since 2021. 04. 08
 	 * @since 2021. 04. 08
 	 */
 	 */
-	@GetMapping("/event/custgrade/coupon/down")
+	@PostMapping("/event/custgrade/coupon/down")
+	@ResponseBody
 	public GagaMap downCustGradeCoupon() {
 	public GagaMap downCustGradeCoupon() {
-		return customerService.downloadCustGradeCoupon(TsfSession.getInfo().getCustNo());
+		GagaMap result = new GagaMap();
+		int downloadCnt = couponService.downloadCustGradeCoupon(TsfSession.getInfo().getCustNo());
+		boolean isDownload = downloadCnt > 0;
+		result.setBoolean("isDownload", isDownload);
+		return result;
 	}
 	}
 
 
 	
 	

+ 2 - 2
src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java

@@ -88,8 +88,8 @@ public class TsfRedisSessionConfig extends AbstractHttpSessionApplicationInitial
 		serializer.setUseBase64Encoding(false);
 		serializer.setUseBase64Encoding(false);
 
 
 		// SSL인증서 적용 시 주석 제거
 		// SSL인증서 적용 시 주석 제거
-//		serializer.setUseSecureCookie(true);
-//		serializer.setSameSite("NONE");
+		serializer.setUseSecureCookie(true);
+		serializer.setSameSite("NONE");
 
 
 		return serializer;
 		return serializer;
 	}
 	}

+ 2 - 1
src/main/java/com/style24/front/support/security/handler/TsfLoginSuccessHandler.java

@@ -43,7 +43,8 @@ public class TsfLoginSuccessHandler implements AuthenticationSuccessHandler {
 		"/customer/join/form",						// 회원가입
 		"/customer/join/form",						// 회원가입
 		"/customer/sns/join/form",					// SNS 회원가입
 		"/customer/sns/join/form",					// SNS 회원가입
 		"/customer/id/find/form",					// 아이디찾기
 		"/customer/id/find/form",					// 아이디찾기
-		"/customer/pwd/find/form",					// 비밀번호찾기
+		"/customer/password/find/form",				// 비밀번호찾기
+		"/customer/password/change/form",			// 비밀번호 변경 화면
 		"/customer/join/complete/form",				// 회원가입완료
 		"/customer/join/complete/form",				// 회원가입완료
 		"/customer/join/type/form",					// 회원가입유형
 		"/customer/join/type/form",					// 회원가입유형
 		"/customer/dormant/certify/complete/form",	// 휴면해제
 		"/customer/dormant/certify/complete/form",	// 휴면해제

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

@@ -22,5 +22,11 @@ public class BrandGroup extends TscBaseDomain {
 	private String logoFileNm;		// 로고파일명
 	private String logoFileNm;		// 로고파일명
 	private int dispOrd;			// 표시순서
 	private int dispOrd;			// 표시순서
 	private String rgbCd;			// RGB코드(front 브랜드메인 GNB 색상)
 	private String rgbCd;			// RGB코드(front 브랜드메인 GNB 색상)
+	private String defaultCateYn;	// 기본카테고리여부
+	private Integer brandCateNo;	// 브랜드카테고리번호
 
 
+	// 브랜드 전체에서 사용
+	private String brandInitial;
+	private String selfYn;
+	private String dispNmLang;
 }
 }

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

@@ -36,6 +36,7 @@ public class Cate4Srch extends TscBaseDomain {
 	private String contentsLoc;
 	private String contentsLoc;
 
 
 	private Integer brandGroupNo;		// 브랜드그룹번호
 	private Integer brandGroupNo;		// 브랜드그룹번호
+	private String defaultCateYn;		// 기본카테고리여부
 
 
 	private String soldoutGoodsDispYn;
 	private String soldoutGoodsDispYn;
 
 
@@ -44,7 +45,7 @@ public class Cate4Srch extends TscBaseDomain {
 	private String custGb;				// 고객구분
 	private String custGb;				// 고객구분
 	private int maxRow;					// 최대ROW수
 	private int maxRow;					// 최대ROW수
 	private String[] exceptGoodsArr;	// 제외상품배열
 	private String[] exceptGoodsArr;	// 제외상품배열
-	
+
 	private String dispDt;			// 기획전 기간
 	private String dispDt;			// 기획전 기간
 	private String viewDt;			// 미리보기 일시
 	private String viewDt;			// 미리보기 일시
 	private String preview;			// 미리보기 여부 (Y:미리보기)
 	private String preview;			// 미리보기 여부 (Y:미리보기)

+ 4 - 0
src/main/java/com/style24/persistence/domain/Social.java

@@ -61,6 +61,10 @@ public class Social extends TscBaseDomain{
 		private String sysImgNm;	//시스템이미지
 		private String sysImgNm;	//시스템이미지
 		private String goodsTnm;	//상품타이틀
 		private String goodsTnm;	//상품타이틀
 		private int stockQtySum;	//상품 재고
 		private int stockQtySum;	//상품 재고
+		private int minOrdQty;		//최소주문수량
+		private String afLinkCd;
+		private String optCd;
+		private String goodsType;
 		
 		
 		// 고객
 		// 고객
 		private Integer custNo;		//고객번호
 		private Integer custNo;		//고객번호

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

@@ -452,8 +452,8 @@
 				     ,TC.MAX_DC_AMT
 				     ,TC.MAX_DC_AMT
 				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
 				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
 				     				 WHEN 'D' THEN '일수' END) AS PD_GB
 				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(TC.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(TC.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
+				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
+				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
 				     ,TC.AVAIL_DAYS
 				     ,TC.AVAIL_DAYS
 				     ,TC.CUST_PUB_LIMIT_QTY
 				     ,TC.CUST_PUB_LIMIT_QTY
 				     ,TC.TOT_PUB_LIMIT_QTY
 				     ,TC.TOT_PUB_LIMIT_QTY
@@ -520,8 +520,8 @@
 				     ,TC.MAX_DC_AMT
 				     ,TC.MAX_DC_AMT
 				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
 				     ,(CASE TC.PD_GB WHEN 'P' THEN '기간' 
 				     				 WHEN 'D' THEN '일수' END) AS PD_GB
 				     				 WHEN 'D' THEN '일수' END) AS PD_GB
-				     ,DATE_FORMAT(TC.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
-				     ,DATE_FORMAT(TC.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
+				     ,DATE_FORMAT(A.AVAIL_STDT, '%Y-%m-%d') AS AVAIL_STDT
+				     ,DATE_FORMAT(A.AVAIL_EDDT, '%Y-%m-%d') AS AVAIL_EDDT
 				     ,TC.AVAIL_DAYS
 				     ,TC.AVAIL_DAYS
 				     ,TC.CUST_PUB_LIMIT_QTY
 				     ,TC.CUST_PUB_LIMIT_QTY
 				     ,TC.TOT_PUB_LIMIT_QTY
 				     ,TC.TOT_PUB_LIMIT_QTY
@@ -720,7 +720,6 @@
 		     , DATE_FORMAT(CONCAT(LAST_DAY(NOW()), ' 23:59:59'), '%Y%m%d%H%i%S')               AS AVAIL_EDDT
 		     , DATE_FORMAT(CONCAT(LAST_DAY(NOW()), ' 23:59:59'), '%Y%m%d%H%i%S')               AS AVAIL_EDDT
 		FROM  TB_COUPON CP
 		FROM  TB_COUPON CP
 		WHERE CP.CPN_ID = #{cpnId}
 		WHERE CP.CPN_ID = #{cpnId}
-		AND   CP.SITE_CD = #{siteCd}
 		AND   NOT EXISTS (
 		AND   NOT EXISTS (
 		                  SELECT 1
 		                  SELECT 1
 		                  FROM   TB_CUST_COUPON CC
 		                  FROM   TB_CUST_COUPON CC

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

@@ -523,6 +523,10 @@
 		/* TsfCustomer.updateCustomerCi */
 		/* TsfCustomer.updateCustomerCi */
 		UPDATE TB_CUSTOMER
 		UPDATE TB_CUSTOMER
 		SET    CI = #{ci}
 		SET    CI = #{ci}
+		     , CUST_NM = #{encodedCustNm}
+		     , CELL_PHNNO = #{encodedCellPhnno}
+		     , SEX_GB = #{encodedSexGb}
+		     , BIRTH_YMD = #{encodedBirthYmd}
 		     , AUTH_DT = NOW()
 		     , AUTH_DT = NOW()
 		     , UPD_NO = #{updNo}
 		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
 		     , UPD_DT = NOW()

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

@@ -276,6 +276,12 @@
 		<if test="cate1No != null and cate1No != ''">
 		<if test="cate1No != null and cate1No != ''">
 		AND    CATE1_NO = #{cate1No}
 		AND    CATE1_NO = #{cate1No}
 		</if>
 		</if>
+		<if test='defaultCateYn != null and defaultCateYn != "" and defaultCateYn == "N"'> <!-- 별도카테고리이면 -->
+		AND    CATE1_NO = (SELECT BRAND_CATE_NO
+		                   FROM   TB_BRAND_GROUP
+		                   WHERE  BRAND_GROUP_NO = #{brandGroupNo}
+		                  )
+		</if>
 		AND    DISP_YN = 'Y'
 		AND    DISP_YN = 'Y'
 		AND    USE_YN = 'Y'
 		AND    USE_YN = 'Y'
 		AND    EXISTS (SELECT 1
 		AND    EXISTS (SELECT 1
@@ -289,7 +295,7 @@
 		               AND    FORMAL_GB = #{formalGb}
 		               AND    FORMAL_GB = #{formalGb}
 		               </if>
 		               </if>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
 		               <if test='soldoutGoodsDispYn != null and soldoutGoodsDispYn =="N"'>
-		               AND    STOCK_QTY > 0 /*품절상품전시여부:N일 때 재고가 있는 카테고리만*/
+		               AND    STOCK_QTY > 0 /*품절상품전시여부N일 때 재고가 있는 카테고리만*/
 		               </if>
 		               </if>
 		              )
 		              )
 		ORDER  BY DISP_ORD
 		ORDER  BY DISP_ORD
@@ -870,4 +876,52 @@
 		AND CATE_TYPE = 'G031_20'
 		AND CATE_TYPE = 'G031_20'
 		AND	CONTENTS_LOC = #{contentsLoc}
 		AND	CONTENTS_LOC = #{contentsLoc}
 	</select>
 	</select>
+
+	<!-- 브랜드 전체 조회 -->
+	<select id="getAllBrandList" parameterType="BrandGroup" resultType="BrandGroup">
+		/* TsfDisplay.getAllBrandList */
+		SELECT	Z.BRAND_GROUP_NO
+		      , FN_GET_BRAND_INITIAL(Z.BRAND_GROUP_NM) AS BRAND_INITIAL
+		      , Z.BRAND_GROUP_NM
+		      , Z.DISP_NM_LANG
+		      , Z.BRAND_GROUP_ENM
+		      , Z.BRAND_GROUP_KNM
+		      , Z.LOGO_FILE_NM
+		FROM (
+		      SELECT  BG.BRAND_GROUP_NO
+		            , (CASE WHEN BG.DISP_NM_LANG = 'EN' THEN BG.BRAND_GROUP_ENM ELSE BG.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
+		            , BG.DISP_NM_LANG
+		            , BG.BRAND_GROUP_ENM
+		            , BG.BRAND_GROUP_KNM
+		            , BG.LOGO_FILE_NM
+		      FROM	TB_BRAND B
+		      INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		      WHERE	1=1
+		      AND	B.USE_YN = 'Y'
+		      AND	BG.USE_YN = 'Y'
+		      <if test='selfYn != null and selfYn == "Y"'>
+		      AND	B.SELF_YN = 'Y'
+		      AND	(BG.LOGO_FILE_NM <![CDATA[<>]]> '' AND BG.LOGO_FILE_NM IS NOT NULL)
+		      </if>
+		      <if test="brandGroupNo != null and brandGroupNo != ''">
+		      AND	B.BRAND_GROUP_NO = #{brandGroupNo}
+		      </if>
+		      <if test="brandGroupNm != null and brandGroupNm != ''">
+		      AND	(BG.BRAND_GROUP_ENM LIKE CONCAT('%',#{brandGroupNm},'%') OR BG.BRAND_GROUP_KNM LIKE CONCAT('%',#{brandGroupNm},'%'))
+		      </if>
+		      GROUP BY BG.BRAND_GROUP_NO
+		) Z
+		WHERE	1=1
+		ORDER BY (CASE  WHEN ASCII(SUBSTRING(Z.BRAND_GROUP_NM,1)) BETWEEN 48 AND 57 THEN 3
+		                WHEN ASCII(SUBSTRING(Z.BRAND_GROUP_NM,1)) <![CDATA[<]]> 128 THEN 2 ELSE 1 END), Z.BRAND_GROUP_NM
+	</select>
+	
+	<!-- 브랜드그룹의 기본카테고리여부 조회 -->
+	<select id="getBrandGroupDefaultCategoryYn" parameterType="Integer" resultType="String">
+		/* TsfDisplay.getBrandGroupDefaultCategoryYn */
+		SELECT DEFAULT_CATE_YN
+		FROM   TB_BRAND_GROUP
+		WHERE  BRAND_GROUP_NO = #{brandGroupNo}
+	</select>
+	
 </mapper>
 </mapper>

+ 9 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfSocial.xml

@@ -41,11 +41,12 @@
 		         , G.PARALLEL_IMPORT_YN                                      /*병행수입여부*/
 		         , G.PARALLEL_IMPORT_YN                                      /*병행수입여부*/
 		         , G.ORDER_MADE_YN                                           /*주문제작여부*/
 		         , G.ORDER_MADE_YN                                           /*주문제작여부*/
 		         , G.LIST_PRICE                                              /*정상가*/
 		         , G.LIST_PRICE                                              /*정상가*/
-		         , SG.CURR_APRICE                          AS CURR_PRICE     /*변경후현재판매가*/
+		         , FN_GET_BENEFIT_PRICE( 'P' /**P*/,G.GOODS_CD,SG.CURR_APRICE, 'G100_10' /**P*/)                     AS CURR_PRICE    /*현재판매가*/
 		         , SG.DC_ARATE                             AS DC_RATE        /*변경후할인율*/
 		         , SG.DC_ARATE                             AS DC_RATE        /*변경후할인율*/
 		         , SG.DISP_ORD                                               /*노출순서*/
 		         , SG.DISP_ORD                                               /*노출순서*/
 		         , G.GOODS_TYPE                                              /*상품유형*/
 		         , G.GOODS_TYPE                                              /*상품유형*/
 		         , G.GOODS_STAT                                              /*상품상태*/
 		         , G.GOODS_STAT                                              /*상품상태*/
+		         , G.MIN_ORD_QTY 											 /*최소 주문수량*/
 		         , ROW_NUMBER() OVER(ORDER BY SG.DISP_ORD
 		         , ROW_NUMBER() OVER(ORDER BY SG.DISP_ORD
 		                                    , SG.GOODS_CD) AS NUMB
 		                                    , SG.GOODS_CD) AS NUMB
 		    FROM   TB_SOCIAL S
 		    FROM   TB_SOCIAL S
@@ -88,6 +89,7 @@
 		, TAB_STOCK AS (
 		, TAB_STOCK AS (
 		    SELECT G.GOODS_CD
 		    SELECT G.GOODS_CD
 		         , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY_SUM
 		         , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY_SUM
+		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
 		    FROM   TAB_GOODS G
 		    FROM   TAB_GOODS G
 		         , VW_STOCK S
 		         , VW_STOCK S
 		    WHERE  G.GOODS_CD = S.GOODS_CD
 		    WHERE  G.GOODS_CD = S.GOODS_CD
@@ -97,6 +99,7 @@
 		    UNION ALL 
 		    UNION ALL 
 		    SELECT G.GOODS_CD
 		    SELECT G.GOODS_CD
 		         , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY_SUM
 		         , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY_SUM
+		         , MIN(CASE WHEN S.SOLDOUT_YN = 'N' THEN S.OPT_CD ELSE 'XXX' END) AS OPT_CD 
 		    FROM   TAB_GOODS G
 		    FROM   TAB_GOODS G
 		         , VW_STOCK_COMPOSE S
 		         , VW_STOCK_COMPOSE S
 		    WHERE  G.GOODS_CD = S.GOODS_CD
 		    WHERE  G.GOODS_CD = S.GOODS_CD
@@ -108,13 +111,16 @@
 		     , G.GOODS_CD
 		     , 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명*/
 		     , 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.GOODS_TNM
+		     , G.GOODS_TYPE
 		     , G.MAIN_COLOR_CD
 		     , G.MAIN_COLOR_CD
 		     , G.LIST_PRICE
 		     , G.LIST_PRICE
-		     , G.CURR_PRICE    /*현재판매가*/
-		     , G.DC_RATE
+		     , FN_GET_BENEFIT_PRICE(#{frontGb},G.GOODS_CD,G.CURR_PRICE,#{custGb})                     AS CURR_PRICE    /*현재판매가*/
+		     , 100 - ROUND((G.CURR_PRICE / G.LIST_PRICE) * 100 ,0) AS DC_RATE 
 		     , GI.SYS_IMG_NM
 		     , GI.SYS_IMG_NM
 		     , GI.SYS_IMG_NM2
 		     , GI.SYS_IMG_NM2
 		     , S.STOCK_QTY_SUM
 		     , S.STOCK_QTY_SUM
+		     , S.OPT_CD
+		     , G.MIN_ORD_QTY 
 		     <choose>
 		     <choose>
 		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
 		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/

+ 19 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml

@@ -55,18 +55,10 @@
 			         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
 			         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
 			         , G.CURR_PRICE                                             /*현재판매가*/
 			         , G.CURR_PRICE                                             /*현재판매가*/
 			         , G.MIN_ORD_QTY                                            /*최소주문수량*/  				
 			         , G.MIN_ORD_QTY                                            /*최소주문수량*/  				
-			         , S.OPT_CD
 			         , GS.STOCK_QTY
 			         , GS.STOCK_QTY
+			         , MIN(CASE WHEN SOLDOUT_YN = 'N' THEN OPT_CD ELSE 'XXX' END) AS OPT_CD
 			    FROM   TB_WISHlIST W
 			    FROM   TB_WISHlIST W
-			         , TB_GOODS G LEFT OUTER JOIN (SELECT GOODS_CD
-		                                                   , SUM(CASE WHEN SOLDOUT_YN = 'Y' THEN 0
-		                                                                                       ELSE CURR_STOCK_QTY END) AS STOCK_QTY
-		                                                    , MIN(SOLDOUT_YN) AS SOLDOUT_YN
-		                                                    , MIN(CASE WHEN SOLDOUT_YN = 'N' THEN OPT_CD 
-		                                                                                       ELSE 'XXX' END) AS OPT_CD 
-		                                                  FROM VW_STOCK
-		                                                  WHERE DISP_YN = 'Y'
-		                                                  GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
+			         , TB_GOODS G LEFT OUTER JOIN VW_STOCK VS ON G.GOODS_CD = VS.GOODS_CD 
 			         , TB_GOODS_STOCK GS
 			         , TB_GOODS_STOCK GS
 			         , TB_BRAND B
 			         , TB_BRAND B
 			         , TB_BRAND_GROUP BG
 			         , TB_BRAND_GROUP BG
@@ -80,6 +72,23 @@
 			    AND    BG.USE_YN = 'Y'
 			    AND    BG.USE_YN = 'Y'
 			    AND    W.CUST_NO = #{custNo}
 			    AND    W.CUST_NO = #{custNo}
 			    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 			    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
+			    GROUP BY W.AF_LINK_CD 
+			          ,W.CONTENTS_LOC 
+			          ,W.CUST_NO 
+			          ,W.REG_DT
+			         , G.GOODS_CD                                               /*상품코드*/
+			         , G.GOODS_NM                                               /*상품명*/
+			         , G.GOODS_GB                                               /*상품구분*/
+			         , G.GOODS_TYPE 											/*상품타입*/
+			         , 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.MIN_ORD_QTY                                            /*최소주문수량*/  				
+			         , GS.STOCK_QTY
 			)
 			)
 			, TAB_GOODS_IMG AS (
 			, TAB_GOODS_IMG AS (
 			    SELECT PG.GOODS_CD
 			    SELECT PG.GOODS_CD

+ 164 - 154
src/main/webapp/WEB-INF/views/mob/SigninFormMob.html

@@ -20,19 +20,19 @@
 
 
 <th:block layout:fragment="content">
 <th:block layout:fragment="content">
 	<main class="container mb">
 	<main class="container mb">
-		<div class="close">
-			<a href="javascript:history.back(-1);" class="btn_close"><span></span><span></span></a>
-		</div>
-
 		<!-- ★ 컨텐츠 시작 -->
 		<!-- ★ 컨텐츠 시작 -->
 		<section class="content mb_login">
 		<section class="content mb_login">
-
+			<div class="inner">
+				<div class="close"><a href="javascript:history.back(-1);" class="btn_close"><span></span><span></span></a></div>
+			</div>
 			<div class="inner">
 			<div class="inner">
 				<h2 class="title">로그인</h2>
 				<h2 class="title">로그인</h2>
 			</div>
 			</div>
 			<div class="inner">
 			<div class="inner">
 				<form class="form_wrap form_full" name="loginForm" id="loginForm" th:action="@{/login}" method="post">
 				<form class="form_wrap form_full" name="loginForm" id="loginForm" th:action="@{/login}" method="post">
-					<div class="form_head"><h3 class="title sr-only">로그인</h3></div>
+					<div class="form_head">
+						<h3 class="title sr-only">로그인</h3>
+					</div>
 					<div class="form_field mt0">
 					<div class="form_field mt0">
 						<input type="text" name="loginId" placeholder="아이디" class="form_control"minlength="4" maxlength="12" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디"/>
 						<input type="text" name="loginId" placeholder="아이디" class="form_control"minlength="4" maxlength="12" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디"/>
 					</div>
 					</div>
@@ -47,37 +47,23 @@
 						</div>
 						</div>
 						<div class="right">
 						<div class="right">
 							<ul>
 							<ul>
-								<li><a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a></li>
-								<li><a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a></li>
+								<li>
+									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
+								</li>
+								<li>
+									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a>
+								</li>
 							</ul>
 							</ul>
 						</div>
 						</div>
 					</div>
 					</div>
 					<div class="help_block">
 					<div class="help_block">
 						<!-- 보안문자 입력시 -->
 						<!-- 보안문자 입력시 -->
-						<div>
-							<div class="captcha" style="display: none;"> <!-- 캡차영역 -->
-								<ul>
-									<li class="lap"> <!-- 캡차이미지 -->
-										<div class="captcha_box"> <!-- 캡차이미지 -->
-											<img src="" id="imgCaptcha"/>
-										</div>
-										<div class="captcha_btn_dual">
-											<button type="button" id="play_audio" onclick="fnReloadCaptchaImage();">새로고침</button>
-											<button type="button" id="swap_captcha">음성듣기</button>
-										</div>
-									</li>
-									<li class="captcha_area">
-										<label for="captcha" id="label_captcha_area" class="sr-only">보안문자 입력</label>
-										<input type="text" id="captcha" name="captcha" placeholder="위 보안문자 이미지에 보이는 문자 입력" title="문자입력"/>
-									</li>
-								</ul>
-							</div>
-							<p class="t_err mt10 t_err_login_fail" style="display: none;">
+							<div id="recaptcha" class="g-recaptcha" style="display: none;" data-callback="fnRecaptchaCallback" th:data-sitekey="${sitekey}"></div>
+							<p class="t_err t_err_login_fail" style="display: none;">
 								<span id="err_msg">보안문자 입력을 다시 시도해 주세요.</span><br>
 								<span id="err_msg">보안문자 입력을 다시 시도해 주세요.</span><br>
 								(10회 이상 실패하면 180초 동안 로그인이 불가능 합니다.)<br>
 								(10회 이상 실패하면 180초 동안 로그인이 불가능 합니다.)<br>
 								<span id="login_fail_cnt">4</span>회 실패 / 잔여 : <span id="login_remain_cnt">6</span>회<span id="blockSecs1" style="display: none;"> / <span id="blockSecs2">180</span>초 남음
 								<span id="login_fail_cnt">4</span>회 실패 / 잔여 : <span id="login_remain_cnt">6</span>회<span id="blockSecs1" style="display: none;"> / <span id="blockSecs2">180</span>초 남음
 							</p>
 							</p>
-						</div>
 						<!-- //보안문자 입력시 -->
 						<!-- //보안문자 입력시 -->
 					</div>
 					</div>
 					<div class="ui_row mt20">
 					<div class="ui_row mt20">
@@ -88,128 +74,56 @@
 					<h3 class="sr-only">간편로그인</h3>
 					<h3 class="sr-only">간편로그인</h3>
 					<ul class="login_utill">
 					<ul class="login_utill">
 						<li class="lu_kakao">
 						<li class="lu_kakao">
-							<a href="javascript:void(0)">
+							<a href="javascript:void(0)" onclick="cfnLoginKakao();">
 								<div class="ico"></div>카카오로<br>시작하기
 								<div class="ico"></div>카카오로<br>시작하기
 							</a>
 							</a>
 						</li>
 						</li>
 						<li class="lu_naver">
 						<li class="lu_naver">
-							<a href="javascript:void(0)">
+							<a href="javascript:void(0)" onclick="cfnLoginNaver();">
 								<div class="ico"></div>네이버로<br>시작하기
 								<div class="ico"></div>네이버로<br>시작하기
 							</a>
 							</a>
 						</li>
 						</li>
 						<li class="lu_yes24">
 						<li class="lu_yes24">
-							<a href="javascript:void(0)">
+							<a href="javascript:void(0)" onclick="cfnLoginYes24();">
 								<div class="ico"></div>YES24로<br>시작하기
 								<div class="ico"></div>YES24로<br>시작하기
 							</a>
 							</a>
 						</li>
 						</li>
 					</ul>
 					</ul>
 				</div>
 				</div>
-				<div class="t_c mt30"><botton class="btn_nonMb">비회원 주문조회</botton>
+				<div class="t_c mt30">
+					<botton class="btn_nonMb">비회원 주문조회</botton>
 				</div>
 				</div>
-
+			</div>
 		</section>
 		</section>
-		<!-- ★ 컨텐츠 종료 -->
-
+	<!--  컨텐츠 종료 -->
 	</main>
 	</main>
 
 
 <script th:inline="javascript">
 <script th:inline="javascript">
 /*<![CDATA[*/
 /*<![CDATA[*/
 	let ckLoginId = "ckLoginId";
 	let ckLoginId = "ckLoginId";
+	let rechaptchCheck = true;
 
 
-	// 로그인블락시간(초) 설정
-	let fnSetLoginBlockTime = function() {
-		let blockSecs = Number($("#blockSecs2").html()) - 1;
-		$("#blockSecs2").html(blockSecs);
-		if (blockSecs == 0) {
-			clearTimeout(fnSetLoginBlockTime);
-			$('#btnLogin').attr('disabled',false);
-		} else {
-			setTimeout(fnSetLoginBlockTime, 1000);
-		}
-	}
-	
 	// 로그인
 	// 로그인
 	$('#btnLogin').on('click', function() {
 	$('#btnLogin').on('click', function() {
 		if (!gagajf.validation($('#loginForm'))) {
 		if (!gagajf.validation($('#loginForm'))) {
 			return;
 			return;
 		}
 		}
+		if (!rechaptchCheck) {
+			mcxDialog.alert("자동 방지 봇을 확인 한뒤 진행 해 주세요.");
+			return;
+		}
 
 
-		let params = new Object();
+		let params = {};
 		params.loginId = $('#loginForm input[name=loginId]').val();
 		params.loginId = $('#loginForm input[name=loginId]').val();
 		params.passwd = $('#loginForm input[name=passwd]').val();
 		params.passwd = $('#loginForm input[name=passwd]').val();
-		
+
 		$.post($('#loginForm').prop('action')
 		$.post($('#loginForm').prop('action')
 			, $.param(params)
 			, $.param(params)
-			, function(result) {
-				if (result.status != 'OK') {
-
-					if (result.status == 'PWD_5WRONG') {
-						// Do nothing
-					} else if (result.status == 'DORMANT_CUST') {
-						// 휴면회원
-						mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
-							sureBtnText: "확인",
-							sureBtnClick: function() {
-								cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
-							}
-						});
-
-						return;
-					} else if (result.status == 'SECEDE_CUST') {
-						// 탈퇴회원
-					} else if (result.status == 'SESSION_EXPIRED') {
-						// 세션만료
-					}
-
-					if (!gagajf.isNull(result.message)) {
-						let loginFailCnt = Number(result.loginFailInfo.loginFailCnt);
-						
-						$("#err_msg").html(result.message);
-						$("#login_fail_cnt").html(loginFailCnt);
-						$("#login_remain_cnt").html(10 - loginFailCnt);
-						$(".t_err_login_fail").show();
-						
-						if (loginFailCnt >= 5 && loginFailCnt < 10) {
-							// 비밀번호 5회 이상 틀린 경우 캡챠 노출
-							$('.captcha').show();
-						} else if (loginFailCnt >= 10) {
-							$('.captcha').hide();
-							
-							// 비밀번호 10회 이상 틀린 경우 로그인 블락
-							let blockSecs = Number(result.loginFailInfo.blockSecs);
-							if (blockSecs > 0) {
-								$("#blockSecs2").html(blockSecs);
-								fnSetLoginBlockTime();
-								$("#blockSecs1").show();
-								$('#btnLogin').attr('disabled',true);
-							}
-						}
-					}
-
-					return; // 정상적으로 로그인 되지 않았으므로 return
-				}
-				
-				document.location.href = result.returnUrl;
-				
-// 				if (gagajf.isNull(result.returnUrl)) {
-// 					cfnGoToPage(_PAGE_MAIN);
-// 				} else {
-// 					if (result.returnUrl.indexOf(_PAGE_DIRECT_BUY) > -1) {
-// 						// 바로주문
-// 						jfOrderByMember();
-// 					} else if (result.returnUrl.indexOf(_PAGE_CUSTOMER_JOIN) > -1 ||
-// 						result.returnUrl.indexOf(_PAGE_CUSTOMER_ID_FIND) > -1 ||
-// 						result.returnUrl.indexOf(_PAGE_CUSTOMER_PW_FIND) > -1 ||
-// 						result.returnUrl.indexOf(_PAGE_CUSTOMER_JOIN_COMPLETE) > -1) {
-// 						cfnGoToPage(_PAGE_MAIN);
-// 					} else {
-// 						document.location.href = result.returnUrl;
-// 					}
-// 				}
-			}
+			, fnReloadAfterLogin
 			, 'json');
 			, 'json');
 	});
 	});
-	
+
+
 	// Save ID
 	// Save ID
 	$('#chkSaveId').on('click', function() {
 	$('#chkSaveId').on('click', function() {
 		if ($(this).is(":checked")) {
 		if ($(this).is(":checked")) {
@@ -222,15 +136,115 @@
 			}
 			}
 		}
 		}
 	});
 	});
-	
-	// 캡챠 이미지 로딩
-	let fnReloadCaptchaImage = function() {
-		$('#imgCaptcha').attr('src', '/common/captcha.do?dummy=' + new Date());
+
+	//엔터키 로그인
+	$('#loginForm input[name=passwd]').keypress(function (event) {
+		if (event.which === 13) {
+			event.preventDefault();
+			$('#btnLogin').trigger('click');
+		}
+	});
+
+	// 로그인 후 처리
+	var fnReloadAfterLogin = function(result) {
+		if (result.status === 'OK') {
+			document.location.href = result.returnUrl;
+		} else {
+			fnFailLoginProcess(result);
+		}
+	};
+
+	// 로그인 실패 후 과정
+	var fnFailLoginProcess = function (result) {
+		// 탈퇴회원
+		if (result.status === 'SECEDE_CUST') {
+			mcxDialog.alert("탈퇴 회원 입니다.");
+			return;
+		}
+		// 휴면회원
+		if (result.status === 'DORMANT_CUST') {
+			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+				}
+			});
+			return;
+		}
+		// CI(본인인증)정보 없는 회원
+		if (result.status === 'CI_EMPTY') {
+			// 본인이증 필요한 회원
+			mcxDialog.alertC("본인인증 후 다시 로그인 하시기 바랍니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_CERTIFICATION);
+				}
+			});
+			return;
+		}
+		// 비밀번호 틀린 경우
+		if (!gagajf.isNull(result.message)) {
+			grecaptcha.reset(); // 리캡챠 리셋
+			let loginFailCnt = Number(result.loginFailInfo.loginFailCnt);
+			$("#err_msg").html(result.message);
+			$("#login_fail_cnt").html(loginFailCnt);
+			$("#login_remain_cnt").html(10 - loginFailCnt);
+			$(".t_err_login_fail").show();
+
+			// 비밀번호 5회 이상 틀린 경우 캡챠 노출
+			if (loginFailCnt >= 5 && loginFailCnt < 10) {
+				$('#recaptcha').show();
+				rechaptchCheck = false;
+			// 비밀번호 10회 이상 틀린 경우 로그인 블락
+			} else if (loginFailCnt >= 10) {
+				$('#recaptcha').hide();
+				rechaptchCheck = true;
+				let blockSecs = Number(result.loginFailInfo.blockSecs);
+				if (blockSecs > 0) {
+					$("#blockSecs2").html(blockSecs);
+					fnSetLoginBlockTime();
+					$("#blockSecs1").show();
+					$('#btnLogin').attr('disabled',true);
+				}
+			}
+		}
+
+		return; // 정상적으로 로그인 되지 않았으므로 return
 	}
 	}
 
 
-	// SNS 로그인 콜백함수
+
+	// 구글 캡챠 콜백함수
+	var fnRecaptchaCallback = function () {
+		let token = $("#g-recaptcha-response").val();
+		let params = {};
+		params.token = token;
+		gagajf.ajaxSubmit('/verify/recaptcha','', fnVerifyReCaptchaCallback, params);
+	};
+
+	// Token 인증
+	var fnVerifyReCaptchaCallback = function (result) {
+		if (result.success) {
+			rechaptchCheck = true;
+		} else {
+			rechaptchCheck = false;
+		}
+	};
+
+	// 로그인블락시간(초) 설정
+	let fnSetLoginBlockTime = function() {
+		let blockSecs = Number($("#blockSecs2").html()) - 1;
+		$("#blockSecs2").html(blockSecs);
+		if (blockSecs <= 0) {
+			clearTimeout(fnSetLoginBlockTime);
+			$('#btnLogin').attr('disabled',false);
+		} else {
+			setTimeout(fnSetLoginBlockTime, 1000);
+		}
+	}
+
+	// SNS 로그인 콜백함수(네이버, 카카오, YES24)
 	var fnSnsSigninCallback = function(userInfo) {
 	var fnSnsSigninCallback = function(userInfo) {
-		// Ci이 조회 시 없음
+		// 1. CI 정보로 사용자가 없어서 회원가입 프로세스 처리 중 이메일, 휴대전화 중복
 		if (userInfo.custStat === 'DUP_PHONE_CUST') {
 		if (userInfo.custStat === 'DUP_PHONE_CUST') {
 			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
 			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
 			return;
 			return;
@@ -239,58 +253,54 @@
 			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
 			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
 			return;
 			return;
 		}
 		}
-		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
-		}
-		// Ci이 조회 시 있음
+		// 2. SNS 로그인 정보로 탈퇴확인
 		if (userInfo.custStat === 'SECEDE_CUST') {
 		if (userInfo.custStat === 'SECEDE_CUST') {
 			mcxDialog.alert("탈퇴 회원 입니다.");
 			mcxDialog.alert("탈퇴 회원 입니다.");
 			return;
 			return;
 		}
 		}
+		// 3. SNS 로그인 정보로 휴면확인
 		if (userInfo.custStat === 'DORMANT_CUST') {
 		if (userInfo.custStat === 'DORMANT_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+				}
+			});
+			return;
 		}
 		}
-		if (userInfo.custStat === 'FAIL_CUST') {
-			mcxDialog.alert("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.");
+		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
+		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
+			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+		}
+		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
+		if (userInfo.custStat === 'NEED_AGREE_CUST') {
+			cfnConsentUseInfo(userInfo.custNm);
 			return;
 			return;
 		}
 		}
+		// 6. SNS 정보로 가입 성공시 가입완료 페이지 이동
 		if (userInfo.custStat === 'NEW_CUST') {
 		if (userInfo.custStat === 'NEW_CUST') {
 			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
 			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
+			return;
 		}
 		}
-
-
+		// 7.SNS 정보로 가입 실패시 안내 창 알림
+		if (userInfo.custStat === 'FAIL_CUST') {
+			mcxDialog.alert("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.");
+			return;
+		}
+		// 8. SNS 로그인 연동 성공 및 기존 SNS 연동된 회원 로그인 시도
 		if (userInfo.custStat === 'SUCC_CUST') {
 		if (userInfo.custStat === 'SUCC_CUST') {
 			let params = {};
 			let params = {};
 			params.snsType = userInfo.snsType;
 			params.snsType = userInfo.snsType;
 			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
 			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
 			$.post(_frontUrl + '/login'
 			$.post(_frontUrl + '/login'
 				, $.param(params)
 				, $.param(params)
-				, function(result) {
-					fnReloadAfterLogin(result);
-				}
+				,fnReloadAfterLogin
 				, "json");
 				, "json");
 		}
 		}
-
-
-	};
-
-	var fnReloadAfterLogin = function(result) {
-		if (result.status === 'OK') {
-			document.location.href = result.returnUrl;
-		} else if (result.status === 'EMAIL_DUP') {
-
-		} else if(result.status === 'DORMANT_CUST') {
-			cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
-		} else if(result.status === 'SECEDE_CUST') {
-
-		} else {
-			//cfnGoToPage(_PAGE_CUSTOMER_JOIN_CERTIFY_SNS);
-		}
 	};
 	};
 
 
-
-
 	$(document).ready(function() {
 	$(document).ready(function() {
+
 		$('#loginForm input[name=loginId]').val(gagajf.getCookie(ckLoginId));
 		$('#loginForm input[name=loginId]').val(gagajf.getCookie(ckLoginId));
 		if (gagajf.isNull($('#loginForm input[name=loginId]').val())) {
 		if (gagajf.isNull($('#loginForm input[name=loginId]').val())) {
 			$('#loginForm input[name=loginId]').focus();
 			$('#loginForm input[name=loginId]').focus();
@@ -306,4 +316,4 @@
 </th:block>
 </th:block>
 
 
 </body>
 </body>
-</html>
+</html>

+ 143 - 0
src/main/webapp/WEB-INF/views/mob/SnsCallBackFormMob.html

@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : SigninFormWeb.html
+ * @desc    : 로그인 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.15   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
+<th:block th:replace="~{mob/common/fragments/VariablesMob :: variables}"></th:block>
+<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+<body>
+
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	const resultMap = [[${resultMap}]];
+
+	// SNS 로그인 콜백함수(네이버, 카카오, YES24)
+	var fnSnsSigninCallback = function(userInfo) {
+		// 1. CI 정보로 사용자가 없어서 회원가입 프로세스 처리 중 이메일, 휴대전화 중복
+		if (userInfo.custStat === 'DUP_PHONE_CUST') {
+			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
+			return;
+		}
+		if (userInfo.custStat === 'DUP_EMAIL_CUST') {
+			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
+			return;
+		}
+		// 2. SNS 로그인 정보로 탈퇴확인
+		if (userInfo.custStat === 'SECEDE_CUST') {
+			mcxDialog.alert("탈퇴 회원 입니다.");
+			return;
+		}
+		// 3. SNS 로그인 정보로 휴면확인
+		if (userInfo.custStat === 'DORMANT_CUST') {
+			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+				}
+			});
+			return;
+		}
+		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
+		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
+			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
+		}
+		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
+		if (userInfo.custStat === 'NEED_AGREE_CUST') {
+			cfnConsentUseInfo(userInfo.custNm);
+			return;
+		}
+		// 6. SNS 정보로 가입 성공시 가입완료 페이지 이동
+		if (userInfo.custStat === 'NEW_CUST') {
+			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
+			return;
+		}
+		// 7.SNS 정보로 가입 실패시 안내 창 알림
+		if (userInfo.custStat === 'FAIL_CUST') {
+			mcxDialog.alert("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.");
+			return;
+		}
+		// 8. SNS 로그인 연동 성공 및 기존 SNS 연동된 회원 로그인 시도
+		if (userInfo.custStat === 'SUCC_CUST') {
+			let params = {};
+			params.snsType = userInfo.snsType;
+			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
+			$.post(_frontUrl + '/login'
+				, $.param(params)
+				,fnReloadAfterLogin
+				, "json");
+		}
+	};
+
+	// 로그인 후 처리
+	var fnReloadAfterLogin = function(result) {
+		if (result.status === 'OK') {
+			document.location.href = result.returnUrl;
+		} else {
+			fnFailLoginProcess(result);
+		}
+	};
+
+	// 로그인 실패 후 과정
+	var fnFailLoginProcess = function (result) {
+		// 탈퇴회원
+		if (result.status === 'SECEDE_CUST') {
+			mcxDialog.alert("탈퇴 회원 입니다.");
+			return;
+		}
+		// 휴면회원
+		if (result.status === 'DORMANT_CUST') {
+			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
+				}
+			});
+			return;
+		}
+		// CI(본인인증)정보 없는 회원
+		if (result.status === 'CI_EMPTY') {
+			// 본인이증 필요한 회원
+			mcxDialog.alertC("본인인증 후 다시 로그인 하시기 바랍니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_CUSTOMER_CERTIFICATION);
+				}
+			});
+			return;
+		}
+
+		return; // 정상적으로 로그인 되지 않았으므로 return
+	}
+	$(document).ready(function() {
+		if (gagajf.isNull(resultMap.snsId) && gagajf.isNull(resultMap.snsType)){
+			mcxDialog.alertC("인증에 실패하였습니다.<br> 로그인 정보를 확인해주시기 바랍니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_LOGIN);
+				}
+			});
+		} else {
+			fnSnsSigninCallback(resultMap);
+		}
+	});
+
+
+/*]]>*/
+</script>
+
+
+</body>
+</html>

+ 2 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html

@@ -63,6 +63,8 @@
 	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 	<script type="text/javascript" src="https://ssl.daumcdn.net/dmaps/map_js_init/postcode.v2.js"></script>
 	<script src="/ux/plugins/lazyload.min.js"></script>
 	<script src="/ux/plugins/lazyload.min.js"></script>
 
 
+	<script src="https://www.google.com/recaptcha/api.js" async defer></script>
+
 	<!-- Global site tag (gtag.js) - Google Analytics -->
 	<!-- Global site tag (gtag.js) - Google Analytics -->
 <!-- 	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-168660512-1"></script> -->
 <!-- 	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-168660512-1"></script> -->
 	<script>
 	<script>

+ 331 - 0
src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html

@@ -0,0 +1,331 @@
+<!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/LoginLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : IdFindFormMob.html
+ * @desc    : 아이디 찾기 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.12   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<main class="container mb">
+		<!-- ★ 컨텐츠 시작 -->
+		<section class="content mb_idInquiry_1">
+			<div class="inner">
+				<div class="close">
+					<a href="javascript:history.back(-1);" class="btn_close"><span></span><span></span></a>
+				</div>
+			</div>
+			<div class="inner">
+				<h2 class="title">아이디/비밀번호찾기</h2>
+			</div>
+			<div class="inner">
+				<div class="registration_nav">
+					<ul class="tab_btn">
+						<li class="active">
+							<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
+						</li>
+						<li>
+							<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a>
+						</li>
+					</ul>
+				</div>
+				<div class="registration_tap">
+					<div class="form_group">
+						<!-- 라디오탭 -->
+						<div id="searchDiv" class="radio_nav">
+							<ul class="form_field">
+								<li class="ui_col_4 active">
+									<input type="radio" name="radio1" id="rdi1-1" value="1" checked><label for="rdi1-1"> <span>회원정보인증</span> </label>
+								</li>
+								<li class="ui_col_4">
+									<input type="radio" name="radio1" id="rdi1-2" value="2"><label for="rdi1-2"> <span>휴대폰인증</span> </label>
+								</li>
+								<li class="ui_col_4">
+									<input type="radio" name="radio1" id="rdi1-3" value="3"><label for="rdi1-3"> <span>아이핀인증</span> </label>
+								</li>
+							</ul>
+						</div>
+						<!-- //라디오탭 -->
+						<!-- 라디오탭 -->
+						<div class="radio_tap">
+							<div class="form_group">
+								<form id="searchCustInfo" name="searchCustInfo" class="form_wrap form_full" method="post">
+									<div>
+										<div class="form_field mt0">
+											<input type="text" name="custNm" placeholder="이름" id="custNm" class="form_control" maxlength="30"/>
+										</div>
+										<div class="form_field">
+											<input type="text" name="birthYmd" placeholder="생년월일 8자리 (예:19880912)" id="birthYmd" class="form_control"/>
+										</div>
+										<div class="form_field">
+											<input type="text" name="email" placeholder="이메일" id="email" class="form_control"/>
+										</div>
+										<div class="ui_row mt20">
+											<button type="button" id="btnInfoConfirm" class="btn btn_dark">확인</button>
+										</div>
+									</div>
+								</form>
+							</div>
+							<div class="form_group" style="display: none;">
+								<div class="form_wrap form_full">
+									<div>
+										<div class="txt">
+												회원님의 명의로 등록된 휴대폰으로<br>
+												본인확인을 진행합니다.
+										</div>
+											<div class="ui_row mt20">
+												<button type="button" id="btnCellPhoneCertify" class="btn btn_dark">
+													본인명의 휴대폰으로 인증
+												</button>
+											</div>
+									</div>
+								</div>
+							</div>
+							<div class="form_group hide" style="display: none;">
+								<div class="form_wrap form_full">
+									<div>
+										<div class="txt">
+											아이핀 인증을 통해 찾을 수 있습니다.
+										</div>
+										<div class="ui_row mt20">
+											<button type="button" id="btnIpinCertify" class="btn btn_dark">
+												아이핀 인증
+											</button>
+										</div>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- 아이디찾기 결과 -->
+				<div id="succeedCustId" class="form_wrap form_full" style="display: none;">
+					<div class="find_result clear">
+						<div class="form_info">
+							<span class="ico_content_find"></span>
+							<p>아이디 찾기 결과 안내</p>
+						</div>
+						<div class="form_print_bar mt40">
+							<ul>
+								<li>
+									<span class="t_span">아이디</span>
+									<span id="resultId" name="resultId" class="c_primary bold" data-font="lato"></span>
+								</li>
+								<li>
+									<span class="t_span">가입일자</span>
+									<span id="joinDt" name="joinDt" class="bold" data-font="lato"></span>
+								</li>
+								<li id="liJoinPath">
+									<span class="t_span">가입경로</span>
+									<span id="joinPath" name="joinPath" class="bold" data-font="lato"></span>
+								</li>
+							</ul>
+						</div>
+						<div class="ui_row mt20">
+							<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_LOGIN);">로그인 하기</button>
+						</div>
+					</div>
+				</div>
+				<!-- //아이디찾기 결과 -->
+				<!-- 회원정보로 아이디찾기 실패일경우 -->
+				<div id="failCustId" class="form_wrap form_full" style="display: none;">
+					<div class="find_result clear">
+						<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" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+									<span>회원가입</span>
+								</button>
+							</div>
+							<div class="ui_col_6">
+								<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+									<span>다시 찾기</span>
+								</button>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- //회원정보로 아이디찾기 실패일경우 -->
+				<!-- 휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
+				<div id="failAuthentication" class="form_wrap form_full" style="display: none;">
+					<div class="find_result clear">
+						<div class="form_info">
+							<span class="ico_content_none"></span>
+							<p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+							<p class="t_info mt10">
+								<span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
+							</p>
+						</div>
+						<div class="btn_group_block btn_group_md ui_row">
+							<div class="ui_col_12">
+								<button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+									<span>회원가입</span>
+								</button>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- //휴대폰,아이핀 본인인증으로 아이디찾기 실패일경우 -->
+			</div>
+		</section>
+		<!-- ★ 컨텐츠 종료 -->
+	</main>
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	const sEncData = [[${sEncData}]];   //인증 후 해당 페이지로 리다이렉트함
+	const authMethod = [[${authMethod}]]; //인증 후 해당 페이지로 리다이렉트함
+
+	// 회원정보로 아이디 찾기
+	$('#btnInfoConfirm').on('click', function() {
+		let custInfo = $('#searchCustInfo').serializeObject();
+
+		if (gagajf.isNull(custInfo.custNm)) {
+			mcxDialog.alert('이름을 형식에 맞게 입력해주세요.');
+			return;
+		}
+
+		if (gagajf.isNull(custInfo.email)) {
+			mcxDialog.alert('이메일을 입력하여 주세요.');
+			return;
+		}
+
+		if (!fnCheckValidationEmail(custInfo.email)) {
+			mcxDialog.alert('이메일 형식에 맞게 입력해주세요.');
+			return;
+		}
+		custInfo.authMethod = 'custInfo';
+
+		let jsonData = JSON.stringify(custInfo);
+		//console.log('jsonData', jsonData);
+		gagajf.ajaxJsonSubmit('/customer/id/find', jsonData, fnInfoConfirmCallBack);
+	});
+
+	// 찾기결과
+	var fnInfoConfirmCallBack = function (result) {
+		$('#btnInfoConfirm').hide();
+		$('#searchDiv').hide();
+		$('.regist_box').hide();
+		$('.form_field').hide();
+		if (result.isFind) {
+			fnGetDisplaySucc(result.authMethod, result);
+		} else {
+			fnGetDisplayFail(result.authMethod);
+		}
+	};
+
+	// 찾기성공
+	var fnGetDisplaySucc = function (authMethod, custInfo) {
+		$('#resultId').text(custInfo.maskingCustId);
+		$('#joinDt').text(fnToDateFormat(custInfo.joinDt));
+		let joinPath = fnSnsJoinPath(custInfo); // 가입경로 : 직접이면 표시 안함, 간편가입 연동 표시
+		if (!gagajf.isNull(joinPath)) {
+			$('#liJoinPath').show();
+			$('#joinPath').text(joinPath);
+		}
+		$('#succeedCustId').show();
+	};
+
+	// 찾기실패
+	var fnGetDisplayFail = function (authMethod) {
+		$('.registration_nav').hide();
+		if (authMethod === 'custInfo') {
+			$('#failCustId').show();
+		}
+		if (authMethod === 'mobile' || authMethod === 'ipin') {
+			$('#failAuthentication').show();
+		}
+	};
+
+	// 가입경로
+	var fnSnsJoinPath = function (custInfo) {
+		let snsType = '';
+		if (!gagajf.isNull(custInfo.ysJoinDt)) {
+			snsType += 'YES24';
+		}
+		if (!gagajf.isNull(custInfo.nvJoinDt)) {
+			if (!gagajf.isNull(snsType)) {
+				snsType += '/'
+			}
+			snsType = 'NAVER'
+		}
+		if (!gagajf.isNull(custInfo.kkJoinDt)) {
+			if (!gagajf.isNull(snsType)) {
+				snsType += '/'
+			}
+			snsType += 'KAKAO';
+		}
+		if (!gagajf.isNull(snsType)) {
+			snsType += ' 연동';
+		} else {
+			snsType += 'STYLE24';
+		}
+		return snsType;
+	};
+
+	// 휴대폰 인증
+	$('#btnCellPhoneCertify').on('click', function () {
+		cfnOpenCellphoneCertify(_PAGE_CUSTOMER_ID_FIND);
+	});
+
+	// 아이핀 인증
+	$('#btnIpinCertify').on('click', function () {
+		cfnOpenIpinCertify(_PAGE_CUSTOMER_ID_FIND);
+	});
+
+	// 나이스 본인인증 후 콜백
+	var fnNiceCallBack = function(encData, authMethod) {
+		if (!gagajf.isNull(encData)) {
+			let custInfo = {};
+			custInfo.encData = encData;
+			custInfo.authMethod = authMethod;
+			let jsonData = JSON.stringify(custInfo);
+			gagajf.ajaxJsonSubmit('/customer/id/find', jsonData, fnInfoConfirmCallBack)
+		}
+	};
+
+	$(document).ready(function () {
+		if (!gagajf.isNull(sEncData)) {
+			fnNiceCallBack(sEncData, authMethod);
+		}
+
+		/* 회원정보인증/휴대폰인증/아이핀인증_taps */
+		$('.radio_tap > .form_group').hide();
+		$('.radio_tap > .form_group').eq(0).show();
+		$('.radio_tap').each(function(){
+			$(this).find('.form_group').hide();
+			$(this).find('.form_group').eq(0).show();
+		});
+
+		$(document).on('click','.radio_nav > ul > li',function(e){
+			$(this).addClass('active').siblings().removeClass('active');
+			$(this).find('input').prop("checked", true);
+			$(this).parent().parent().parent().find('.radio_tap > .form_group').hide();
+			$(this).parent().parent().parent().find('.radio_tap > .form_group').eq($(this).index()).show();
+			return false;
+		});
+	});
+
+/*]]>*/
+</script>
+
+</th:block>
+</body>
+</html>

+ 32 - 0
src/main/webapp/WEB-INF/views/mob/customer/NiceCallbackFormMob.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : NiceCallbackFormWeb.html
+ * @desc    : NICE 인증콜백 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.09   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+	<form name="niceCallbackForm" id="niceCallbackForm" method="post" th:action="${redirectUrl}">
+		<input type="hidden" name="sEncData" th:value="${sEncData}"/>
+		<input type="hidden" name="authMethod" th:value="${authMethod}"/>
+	</form>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	window.onload = function () {
+		document.niceCallbackForm.submit();
+	}
+
+	/*]]>*/
+</script>
+
+</body>
+</html>

+ 37 - 0
src/main/webapp/WEB-INF/views/mob/customer/NiceCellPhoneFormMob.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : NiceCellPhoneFormWeb.html
+ * @desc    : NICE 휴대폰 인증 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.09   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<form name="niceAuthForm" id="niceAuthForm" method="post" >
+	<input type="hidden" name="m" value="checkplusSerivce" />
+	<input type="hidden" name="EncodeData" th:value="${sEncData}" />
+	<input type="hidden" name="param_r1" th:value="${redirectUrl}"/>
+</form>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+
+	window.onload = function () {
+		document.niceAuthForm.action="https://nice.checkplus.co.kr/CheckPlusSafeModel/checkplus.cb";
+		document.niceAuthForm.submit();
+	};
+	/*]]>*/
+</script>
+
+
+</body>
+</html>

+ 37 - 0
src/main/webapp/WEB-INF/views/mob/customer/NiceIpinFormMob.html

@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : NiceIpinFormWeb.html
+ * @desc    : NICE 아이핀 인증 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.09   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<form name="niceAuthForm" id="niceAuthForm" method="post" >
+	<input type="hidden" name="m" value="pubmain" />
+	<input type="hidden" name="enc_data" th:value="${sEncData}" />
+	<input type="hidden" name="param_r1" th:value="${redirectUrl}"/>
+</form>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+
+	window.onload = function () {
+		document.niceAuthForm.action="https://cert.vno.co.kr/ipin.cb";
+		document.niceAuthForm.submit();
+	};
+	/*]]>*/
+</script>
+
+
+</body>
+</html>

+ 210 - 0
src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html

@@ -0,0 +1,210 @@
+<!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/LoginLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : PasswordFindFormMob.html
+ * @desc    : 비밀번호 찾기 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.12   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+	<div class="app">
+
+		<a href="#mainCon" class="skipNav">본문바로가기</a>
+		<header></header>
+
+		<main role="" id="" class="container mb">
+			
+			<!-- ★ 컨텐츠 시작 -->
+			<section class="content mb_idInquiry_1">
+				<div class="inner">
+                    <div class="close">
+                        <a href="#none" class="btn_close"><span></span><span></span></a>
+                    </div>
+                </div>
+				<div class="inner">
+					<h2 class="title">아이디/비밀번호찾기</h2>
+				</div>
+				<div class="inner">
+                        <div class="registration_nav">
+                            <ul class="tab_btn">
+                                <li class="active">아이디찾기</li>
+                                <li>비밀번호찾기</li>
+                            </ul>
+                        </div>
+                        <div class="registration_tap">
+                            <div class="form_group">
+                                <!-- 라디오탭 -->
+                                <div class="radio_nav">
+                                    <ul class="form_field">
+                                        <li class="ui_col_4 active">
+                                            <input type="radio" name="radio1" id="rdi1-1" value="1" checked><label for="rdi1-1"> <span>회원정보인증</span> </label>
+                                        </li>
+                                        <li class="ui_col_4">
+                                            <input type="radio" name="radio1" id="rdi1-2" value="2"><label for="rdi1-2"> <span>휴대폰인증</span> </label>
+                                        </li>
+                                        <li class="ui_col_4">
+                                            <input type="radio" name="radio1" id="rdi1-3" value="3"><label for="rdi1-3"> <span>아이핀인증</span> </label> 
+                                        </li>
+                                    </ul>
+                                </div>
+                                 <!-- //라디오탭 -->
+                                  <!-- 라디오탭 -->
+                                <div class="radio_tap">
+                                    <div class="form_group">
+                                        <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="form_field mt0"><input type="text" placeholder="이름" class="form_control"></div>
+                                                <div class="form_field"><input type="password" placeholder="생년월일 8자리(예:19880912)" class="form_control"></div>
+                                                <div class="form_field"><input type="text" placeholder="이메일" class="form_control"></div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">확인</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                    <div class="form_group">
+                                        <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="txt">
+                                                    회원님의 명의로 등록된 휴대폰으로<br>
+                                                    본인확인을 진행합니다.
+                                                </div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">본인명의 휴대폰으로 인증</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                    <div class="form_group">
+                                        <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="txt">
+                                                    아이핀 인증을 통해 찾을 수 있습니다.
+                                                </div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">아이핀 인증</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                </div>
+                                 <!-- //라디오탭 -->
+                                
+                            </div>
+                            <div class="form_group">
+                                <!-- 라디오탭 -->
+                                <div class="radio_nav">
+                                    <ul class="form_field">
+                                        <li class="ui_col_4 active">
+                                            <input type="radio" name="radios" id="rdi-4" value="4" checked><label for="rdi-4"> <span>회원정보인증</span> </label>
+                                        </li>
+                                        <li class="ui_col_4">
+                                            <input type="radio" name="radios" id="rdi-5" value="5"><label for="rdi-5"> <span>휴대폰인증</span> </label>
+                                        </li>
+                                        <li class="ui_col_4">
+                                            <input type="radio" name="radios" id="rdi-6" value="6"><label for="rdi-6"> <span>아이핀인증</span> </label> 
+                                        </li>
+                                    </ul>
+                                </div>
+                                 <!-- //라디오탭 -->
+                                  <!-- 라디오탭 -->
+                                <div class="radio_tap">
+                                    <div class="form_group">
+                                         <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="form_field mt0"><input type="text" placeholder="이름" class="form_control"></div>
+                                                <div class="form_field"><input type="password" placeholder="생년월일 8자리(예:19880912)" class="form_control"></div>
+                                                <div class="form_field"><input type="text" placeholder="이메일" class="form_control"></div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">확인</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                    <div class="form_group">
+                                        <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="txt">
+                                                    회원님의 명의로 등록된 휴대폰으로<br>
+                                                    본인확인을 진행합니다.
+                                                </div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">본인명의 휴대폰으로 인증</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                    <div class="form_group">
+                                        <form class="form_wrap form_full">
+                                            <div>
+                                                <div class="txt">
+                                                    아이핀 인증을 통해 찾을 수 있습니다.
+                                                </div>
+                                                <div class="ui_row mt20"><button class="btn btn_dark">아이핀 인증</button></div>
+                                            </div>
+                                        </form>
+                                    </div>
+                                </div>
+                                 <!-- //라디오탭 -->
+                                
+                            </div>
+                        </div>
+
+			</section>
+			<!-- ★ 컨텐츠 종료 -->	
+
+		</main>
+
+		<footer></footer>
+
+	</div>
+
+    <script>
+        $(document).ready(function () {
+            /* 아이디/비밀번호 찾기_taps */
+            $('.registration_tap > .form_group').hide();	
+            $('.registration_tap > .form_group').eq(0).show();
+            $(document).on('click','.registration_nav > ul > li',function(e){
+                $(this).addClass('active').siblings().removeClass('active');
+                $('.registration_tap > .form_group').hide();		
+                $('.registration_tap > .form_group').eq($(this).index()).show();
+                return false;
+            });
+
+            /* 회원정보인증/휴대폰인증/아이핀인증_taps */
+            $('.radio_tap > .form_group').hide();	
+            $('.radio_tap > .form_group').eq(0).show();
+            $('.radio_tap').each(function(){
+                $(this).find('.form_group').hide();
+                $(this).find('.form_group').eq(0).show();
+            });
+
+            $(document).on('click','.radio_nav > ul > li',function(e){
+                $(this).addClass('active').siblings().removeClass('active');
+                $(this).find('input').prop("checked", true);
+                $(this).parent().parent().parent().find('.radio_tap > .form_group').hide();		
+                $(this).parent().parent().parent().find('.radio_tap > .form_group').eq($(this).index()).show();
+                return false;
+            });
+        });
+    </script>
+
+    <script type="text/javascript">
+        $(document).ready(function(){
+            setHtop();
+        });
+
+        function setHtop() {
+            if($('header').hasClass('main')) {
+                $('#htopMain').show();
+                $('#htopSub').hide();
+            } else {
+                $('#htopMain').hide();
+                $('#gnb').hide();
+                $('#htopSub').show();
+            }
+        }
+    </script>
+</body>
+
+</html>

+ 373 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html

@@ -0,0 +1,373 @@
+<!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  : MypageGiftcardFormMob.html
+ * @desc    : 마이페이지 > 상품권 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.12   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<!-- 상단헤드 //? -->
+<th:block layout:fragment="content">
+		<main role="" id="" class="container my">
+			<section class="content myVoucher">
+
+				<div class="inner">
+					<div class="highlight_area">
+						<div class="have_amount">
+							<div class="total_amount">
+								보유 금액&nbsp;<span><em th:text="${#numbers.formatInteger(giftcardInfo.useGift,0,'COMMA')}"></em>원</span>
+							</div>
+						</div>
+					</div>
+					<div class="have_amount">
+						<dl>
+							<div>
+								<dt>보유 상품권</dt>
+								<dd><em th:text="${#numbers.formatInteger(giftcardInfo.totalCount,0,'COMMA')}"></em>장</dd>
+							</div>
+						</dl>
+						<dl>
+							<div>
+								<dt>한 달 이내 소멸 예정<span class="tag primary_line">D-<em>30</em></span></dt>
+								<dd><em th:text="${#numbers.formatInteger(giftcardInfo.expireCount,0,'COMMA')}"></em>원</dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+
+				<div class="inner">
+						
+					<div class="ADwrap">
+						<span class="adcopy">상품권 등록</span>
+						<div class="tip_wrap tip1" >
+							<div class="tip_tit">?</div>
+							<div class="tip_contents">
+								<p class="tip_txt">
+									<ul>
+										<li>상품권은 상품 구매 시 현금과 동일하게 사용됩니다.</li>
+										<li>상품권은 등록한 해당 몰에서만  사용이 가능합니다.<br>(YES24와 중복 사용 불가)</li>
+										<li>사용 후 남은 잔액은 상품권 잔액으로 환불되며, 유효 기간 내에 사용가능합니다.</li>
+										<li>유효 기간이 지난 상품권의 잔액은 자동 소멸됩니다.</li>
+										<li>상품권은 현금성 결제 수단에 포함되어 주문시 포인트 적립이 가능합니다.</li>
+										<li>상품권으로 결제한 금액은 마이페이지 &gt; 주문 상세 페이지에서 현금영수증을 발급 받으실 수 있습니다.</li>
+									</ul>
+								</p>
+							</div>
+						</div>
+					</div>
+					<div class="form_field">
+						<div class="input_wrap certi_wrap">
+							<input type="text" class="form_control"  id="gift_input" placeholder="상품권 번호를 입력해주세요.">
+							<button type="button" id="btn_gift_confirm" class="btn btn_dark" onclick="giftcardSave()"><span>등록</span></button> <!-- 210409_추가 : btn_gift_confirm id 추가 -->
+						</div>
+					</div>
+
+				</div>
+
+				<div class="inner wide">
+					<div class="select_box">
+						<div class="form_field">
+							<div class="select_custom month sup">
+								<!-- 210408_ 수정 : 스크립트없는 기본 셀렉터 사용으로 변경 -->
+								<div class="select pure">
+									<select name="month" id="month" onchange='fnChangeDate(this.value)' >
+									</select>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="tabWrap">
+						<ul class="tabIndex">
+							<li id="SearchUseGiftcard"><a href="javascript:void(0);" >사용내역</a></li>
+							<li id="SearchOwnGiftcard"><a href="javascript:void(0);" >보유상품권</a></li>
+						</ul>
+						<div class="tabContents">
+							<div class="tab_cont" id="giftcardList">
+								<!-- tab_cont 사용내역 Start -->
+								<ul>
+									<li>
+										<div>
+											<span class="tag deepgray">차감</span>
+											<span class="tag_name">상품구매</span>
+											<span class="txt_content">남성 라그란 소매배색 F67M-TS927A</span>
+											<span class="txt_time">2020.10.06 22:50:14</span>
+										</div>
+										<div>
+											<span class="amount_minus">
+												<em>-10,000</em>원
+											</span>
+										</div>
+									</li>
+								</ul>
+								<!-- // tab_cont End -->
+							</div>
+							<div class="tab_cont ">
+										<div class="voucher">
+											<div>
+												<p class="vch_name">
+													STYLE24 상품권
+												</p>
+												<p class="vch_price">
+													<span class="tag primary_line"><em>300,900</em>원권</span>
+												</p>
+												<p class="vch_remain">
+													잔액<span><em>200,000</em>원</span>
+												</p>
+												<p class="vch_code">
+													1234-ABCD-3342-ADLS
+												</p>
+											</div>
+											<div class="vch_date">
+												~&nbsp;<span>2021.12.30</span>
+											</div>
+										</div>
+
+										<div class="voucher disable">
+											<div>
+												<p class="vch_name">
+													STYLE24 상품권
+												</p>
+												<p class="vch_price">
+													<span class="tag primary_line"><em>300,900</em>원권</span>
+												</p>
+												<p class="vch_remain">
+													전액소진
+												</p>
+												<p class="vch_code">
+													1234-ABCD-3342-ADLS
+												</p>
+											</div>
+											<div class="vch_date">
+												~&nbsp;<span>2021.12.30</span>
+											</div>
+										</div>
+
+								// tab_cont End
+							</div> 
+						</div>
+					</div>
+				</div>
+
+			</section>
+		</main>
+<script th:inline="javascript">
+let date = [[${date}]];
+let year = date[0].year;
+let month = date[0].month;
+
+//동적으로 날짜 년도 append
+function appendYear() {
+	for (var i = 0; i < date.length; i++) {
+		$("#month").append(	"<option value='"+ date[i].year + "" + date[i].month + "'>" + date[i].year	+ "년" + date[i].month + "월 </option>")
+	}
+	//$(".month").append("<option class='selected' value='"+date[0].year+""+date[0].month+"'>"+ date[0].year + "년" + date[0].month + "월 </option>"); // 현재년도 선택 */ 
+}
+appendYear($("#month"));
+
+//사용내역 조회
+$("#SearchUseGiftcard").click(function() {
+	// class제거 추가
+	$("#SearchOwnGiftcard").removeClass("active");
+	$("#SearchUseGiftcard").addClass("active");
+	$("#giftcardList").attr("class", "tab_cont active");
+	$(".select_box").show();
+
+	// 날짜 필드 
+	$("#dateField").css("display", "block");
+
+	let data = {
+		searchDt : year + "" + month,
+		month : month
+	};
+
+	var jsonData = JSON.stringify(data);
+
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/mypage/gift/use/list',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			useGiftcard(result);
+		}
+	})
+});
+
+function useGiftcard(result) {
+
+	let giftcardUseList = result.giftcardUseList;
+
+	let tmtbHtml = '';
+	
+	tmtbHtml += '<ul>                                                                   ';
+	for (let i = 0; i < giftcardUseList.length; i++) {
+		let useGiftcard = giftcardUseList[i];
+		tmtbHtml += '	<li>                                                               ';
+		tmtbHtml += '		<div>                                                          ';
+		tmtbHtml += '			<span class="tag deepgray">차감</span>                       ';
+		tmtbHtml += '			<span class="tag_name">상품구매</span>                         ';
+		tmtbHtml += '			<span class="txt_content">'	+ useGiftcard.goodsNm + '</span>   ';
+		tmtbHtml += '			<span class="txt_time">'+useGiftcard.regDt+'</span>          ';
+		tmtbHtml += '		</div>                                                         ';
+		tmtbHtml += '		<div>                                                          ';
+		tmtbHtml += '			<span class="amount_minus">                                ';
+		tmtbHtml += '				<em>'+useGiftcard.gfcdAmt.addComma()+'</em>원                                      ';
+		tmtbHtml += '			</span>                                                    ';
+		tmtbHtml += '		</div>                                                         ';
+		tmtbHtml += '	</li>                                                              ';
+	}
+	
+	tmtbHtml += '</ul>                                                                  ';
+
+	$("#giftcardList").html(tmtbHtml);
+}
+
+// 보유상품권 조회
+$("#SearchOwnGiftcard").click(function() {
+	$("#SearchUseGiftcard").removeClass("active");
+	$("#SearchOwnGiftcard").addClass("active");
+	$("#giftcardList").attr("class", "tab_cont active");
+	$(".select_box").hide();
+
+	let data = {};
+
+	var jsonData = JSON.stringify(data);
+
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/mypage/gift/own/list',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			ownGiftcard(result);
+		}
+	})
+});
+
+function ownGiftcard(result) {
+
+	let giftcardOwnList = result.giftcardOwnList;
+
+	let tmtbHtml2 = "";
+
+	if (giftcardOwnList == null) {
+		tmtbHtml2 += '<div class="nodata">';
+		tmtbHtml2 += '<div class="txt_box">';
+		tmtbHtml2 += '<p>보유한 상품권이 없습니다.<br></p>';
+		tmtbHtml2 += '</div>';
+		tmtbHtml2 += '</div>';
+	} else {
+		
+		for (let i = 0; i < giftcardOwnList.length; i++) {
+			let ownGiftcard = giftcardOwnList[i];
+			if (ownGiftcard.rmGfcdAmt == 0 || ownGiftcard.useYn == 'N') {
+				tmtbHtml2 += '<div class="voucher disable">';
+			} else {
+				tmtbHtml2 += '<div class="voucher">';
+			}
+			tmtbHtml2 += '	<div>';
+			tmtbHtml2 += '		<p class="vch_name">'+ ownGiftcard.gfcdNm +'</p>';
+			tmtbHtml2 += '		<p class="vch_price">';
+			tmtbHtml2 += '			<span class="tag primary_line"><em>'+ ownGiftcard.chgGfcdAmt.addComma()	+ '</em>원권</span>';
+			tmtbHtml2 += '		</p>';
+			if (ownGiftcard.rmGfcdAmt > 0) {
+				tmtbHtml2 += '<p class="vch_remain">잔액<span><em>'+ ownGiftcard.rmGfcdAmt.addComma()+ '</em>원</span></p>';
+			} else {
+				tmtbHtml2 += '<p class="vch_remain">전액소진</p>';
+			}
+			tmtbHtml2 += '		<p class="vch_code">'	+ ownGiftcard.gfcdNo + '</p>';
+			tmtbHtml2 += '	</div>';
+			tmtbHtml2 += '	<div class="vch_date">';
+			tmtbHtml2 += '		~&nbsp;<span>'	+ ownGiftcard.useExpDate + '</span>';
+			tmtbHtml2 += '	</div>';
+			tmtbHtml2 += '</div>';
+		}
+	}
+	$("#giftcardList").html(tmtbHtml2);
+
+}
+
+function fnChangeDate(obj) {
+	console.log(obj);
+	var seletedDate = obj.toString();
+	var splitMonth = seletedDate.substr(4);
+
+	data = {
+		month : splitMonth,
+		searchDt : seletedDate
+	};
+
+	var jsonData = JSON.stringify(data);
+
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/mypage/gift/use/list',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			useGiftcard(result);
+		}
+	})
+}
+
+//상품권 등록 버튼 누를 시 
+function giftcardSave() {
+	if ($("#gift_input").val() == ""
+			|| $("#gift_input").val() == null) {
+		mcxDialog.alert("상품권 번호를 입력해주세요.");
+		return;
+	}
+
+	data = {
+		gfcdNo : $("#gift_input").val()
+	};
+
+	var jsonData = JSON.stringify(data);
+
+	mcxDialog.confirm("상품권을 등록 하시겠습니까?", {
+		cancelBtnText : "취소",
+		sureBtnText : "확인",
+		sureBtnClick : function() {
+
+			gagajf.ajaxJsonSubmit(
+					'/mypage/gift/use/confirm', jsonData,
+					function() {
+						$("#gift_input").val('');
+						//cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
+					});
+		}
+	});
+
+}
+
+
+
+/*<![CDATA[*/
+$(document).ready(function() {
+	// 전체내역 표시
+	$("#SearchUseGiftcard").trigger('click');
+	// 셀렉트박스 활성화
+	$('.select').each(function(index) {
+		var selecter01 = new sCombo($(this));
+	});
+});
+/*]]>*/
+</script>
+	</th:block>
+
+</body>
+</html>

+ 19 - 7
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -109,15 +109,24 @@
 		return tag;
 		return tag;
 	}
 	}
 	
 	
+	// 브랜드 카테고리 생성
+	let fnCreateBrandCategory = function() {
+		$.getJSON('/display/brand/cate/list?brandGroupNo=' + [[${brandGroupInfo.brandGroupNo}]]
+			, function(result, status) {
+				if (status == 'success') {
+					if (result.length > 0) {
+						$('#ulGnbCate').html('');
+						$.each(result, function(idx, item) {
+							let gnbCate = fnGetGnbCategory(item);
+							$('#ulGnbCate').append(gnbCate);
+						});
+					}
+				}
+			});
+	}
+	
 	// GNB탭 생성
 	// GNB탭 생성
 	let fnCreateGnbTab = function() {
 	let fnCreateGnbTab = function() {
-		$('#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}]]
 		$.getJSON('/display/brand/gnb/tab/list?brandGroupNo=' + [[${brandGroupInfo.brandGroupNo}]]
 			, function(result, status) {
 			, function(result, status) {
 				if (status == 'success') {
 				if (status == 'success') {
@@ -164,6 +173,9 @@
 			$(this).siblings('li').find('> ul').hide();
 			$(this).siblings('li').find('> ul').hide();
 		});
 		});
 		
 		
+		// 브랜드 카테고리 생성
+		fnCreateBrandCategory();
+		
 		// GNB탭 생성
 		// GNB탭 생성
 		fnCreateGnbTab();
 		fnCreateGnbTab();
 	});
 	});

+ 26 - 3
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -446,7 +446,7 @@
 					<h3><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_WISHLIST);">위시리스트</a></h3>
 					<h3><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_WISHLIST);">위시리스트</a></h3>
 				</div>
 				</div>
 				<div class="quick_body" id="quickMenuWishList"> <!-- 최근 본 상품 없을 시 nodata 클래스 추가 --> <!-- 비로그인 시 need_login 클래스 추가 -->
 				<div class="quick_body" id="quickMenuWishList"> <!-- 최근 본 상품 없을 시 nodata 클래스 추가 --> <!-- 비로그인 시 need_login 클래스 추가 -->
-					<div class="product_count"><span class='c_primary' id="quickMenuWishListCount">50</span>개의 상품</div>
+<!-- 					<div class="product_count"><span class='c_primary' id="quickMenuWishListCount">50</span>개의 상품</div>
 					<div class="itemsGrp">
 					<div class="itemsGrp">
 						<div class="item_prod">
 						<div class="item_prod">
 							<div class="item_state">
 							<div class="item_state">
@@ -484,7 +484,7 @@
 							<p>로그인 후 이용 가능한 서비스입니다.</p>
 							<p>로그인 후 이용 가능한 서비스입니다.</p>
 							<button type="button" class="btn btn_sm"><span>로그인</span></button>
 							<button type="button" class="btn btn_sm"><span>로그인</span></button>
 						</div>
 						</div>
-					</div>
+					</div> -->
 				</div>
 				</div>
 			</div>
 			</div>
 			<div class="coupon quick_con quick04"> <!-- 퀵메뉴_나의 쿠폰 -->
 			<div class="coupon quick_con quick04"> <!-- 퀵메뉴_나의 쿠폰 -->
@@ -1201,7 +1201,7 @@
 								tag += '			</a>';	
 								tag += '			</a>';	
 								tag += '			<div class="hover_con">';
 								tag += '			<div class="hover_con">';
 								if (item.stockQty>0) {
 								if (item.stockQty>0) {
-									tag += '				<button type="button" class="btn btn_sm cart_btn on"><span>쇼핑백 담기</span></button>';
+									tag += '				<button type="button" class="btn btn_sm cart_btn on" afLinkCd="'+item.afLinkCd+'" goodsCd="'+item.goodsCd+'" optCd="'+item.optCd+'" minOrdQty="'+item.minOrdQty+'" goodsType="'+item.goodsType+'" contentsLoc="'+item.contentLoc+'" onclick="wishCardAdd(this)"><span>쇼핑백 담기</span></button>';
 								}
 								}
 								tag += '			</div>';	    
 								tag += '			</div>';	    
 								tag += '		</div>';	    
 								tag += '		</div>';	    
@@ -1228,6 +1228,29 @@
 		fnGetWishList();
 		fnGetWishList();
 	}
 	}
 	
 	
+	var wishCardAdd = function (obj) {
+		let btnType = "C";
+		let params = [];
+		
+		let cart = new Object();
+	    cart.goodsCd = $(obj).attr("goodsCd");
+		cart.optCd = $(obj).attr("optCd");
+		cart.goodsQty = $(obj).attr("minOrdQty");
+		cart.goodsType = $(obj).attr("goodsType");
+		cart.cartGb = btnType;
+		cart.afLinkCd = $(obj).attr("afLinkCd");
+		cart.ithrCd = $(obj).attr("ithrCd");
+		//cart.contentsLoc = $(obj).attr("contentsLoc");
+		cart.contentsLoc = '';
+		cart.planDtlSq = '';
+		params.push(cart); 
+		
+		// 장바구니담기
+		if (params.length > 0){
+			cfnAddCart(params);	
+		}
+	}
+	
 	// 팝업
 	// 팝업
 	let fnGetPopup = function(){
 	let fnGetPopup = function(){
 		let data = {viewPage : [[${viewPage}]]
 		let data = {viewPage : [[${viewPage}]]

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

@@ -728,7 +728,7 @@
 						$('#divTopbanner').html('');
 						$('#divTopbanner').html('');
 						let tag = '';
 						let tag = '';
 						if(item.contentsType == 'OPEN'){
 						if(item.contentsType == 'OPEN'){
-							tag +='<div class="bnrtype_open" style="background-color:'+item.strVar5+';">';
+							tag +='<div class="bnrtype_open" style="background-color:#'+item.strVar5+';">';
 							tag +=' 	<a href="'+item.strVar1+'" target="">';
 							tag +=' 	<a href="'+item.strVar1+'" target="">';
 							tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
 							tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
 							tag +=' 		<div class="open_bnr_area">';
 							tag +=' 		<div class="open_bnr_area">';
@@ -748,15 +748,15 @@
 								tag+='</div>';
 								tag+='</div>';
 							}
 							}
 						}else if(item.contentsType == 'IMG'){
 						}else if(item.contentsType == 'IMG'){
-							tag+='<div class="bnrtype_img" style="background-color:'+item.strVar5+';">';
+							tag+='<div class="bnrtype_img" style="background-color:#'+item.strVar5+';">';
 							tag+=' 	<a href="'+item.strVar1+'" target="">';
 							tag+=' 	<a href="'+item.strVar1+'" target="">';
 							tag+=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt=""/>';
 							tag+=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt=""/>';
 							tag+=' 	</a>';
 							tag+=' 	</a>';
 							tag+='</div>';
 							tag+='</div>';
 						}else{
 						}else{
-							tag+='<div class="bnrtype_text" style="background-color:'+item.strVar5+';">';
+							tag+='<div class="bnrtype_text" style="background-color:#'+item.strVar5+';">';
 							tag+=' 	<a href="'+item.strVar1+'" target="">';
 							tag+=' 	<a href="'+item.strVar1+'" target="">';
-							tag+=' 		<div style="color:'+item.strVar6+'; font-size:20px; font-weight:300;">';
+							tag+=' 		<div style="color:#'+item.strVar6+'; font-size:20px; font-weight:300;">';
 							tag+=' 			<span style="font-weight:500">'+item.strTitle1+'</span>';
 							tag+=' 			<span style="font-weight:500">'+item.strTitle1+'</span>';
 							tag+=' 		</div>';
 							tag+=' 		</div>';
 							tag+=' 	</a>';
 							tag+=' 	</a>';

+ 11 - 0
src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html

@@ -277,6 +277,7 @@
 
 
 		// 찾기실패
 		// 찾기실패
 		var fnGetDisplayFail = function (authMethod) {
 		var fnGetDisplayFail = function (authMethod) {
+			$('.registration_nav').hide();
 			if (authMethod === 'custInfo') {
 			if (authMethod === 'custInfo') {
 				$('#failCustId').show();
 				$('#failCustId').show();
 			}
 			}
@@ -312,6 +313,16 @@
 		};
 		};
 
 
 		$(document).ready( function() {
 		$(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();
 			$('#searchCustInfo')[0].reset();
 		});
 		});
 
 

+ 6 - 0
src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html

@@ -278,6 +278,12 @@
 		};
 		};
 
 
 		$(document).ready( function() {
 		$(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();
 			$('#searchCustInfo')[0].reset();
 		});
 		});
 
 

+ 168 - 0
src/main/webapp/WEB-INF/views/web/display/AllBrandFormWeb.html

@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/DefaultLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : AllBrandFormWeb.html
+ * @desc    : 전체브랜드 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.12   bin2107     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<div id="container" class="container br">
+	<div class="breadcrumb">
+		<ul>
+			<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
+			<li class="bread_2depth">전체 브랜드</li>
+		</ul>
+	</div>
+	<div class="wrap">
+		<div class="content br_sch_result"> <!-- 페이지특정 클래스 = br_sch_result -->
+			<div class="cont_head">
+				<h2 class="displayH t_c">전체 브랜드</h2>
+				<div class="brand_banner_list" th:if="${mainBrandList != null}" th:with="imgUrl=${@environment.getProperty('upload.image.view')}">
+					<ul>
+						<li th:each="item, status : ${mainBrandList}">
+							<a href="javascript:void(0);" th:style="${'background-image:url('+imgUrl+ item.logoFileNm+');'}">
+								<span><em th:text="${item.brandGroupNm}">BUCKAROO</em></span>
+							</a>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<div class="cont_body">
+				<div class="area_input">
+					<form id="searchBrandForm" name="searchBrandForm">
+						<fieldset>
+							<legend>브랜드명 검색</legend>
+							<input type="text" id="search" name="search" value="" placeholder="브랜드명 입력" class="search_input" title="검색어 입력" maxlength="100">
+							<button type="button" class="sch_btn" onclick="fnSearchBrand();"><span>브랜드 검색</span></button>
+						</fieldset>
+					</form>
+				</div>
+				<div class="area_result">
+					<!-- 브랜드 검색어 입력 전 -->
+					<div class="default_box">
+						<h3 class="sr-only">브랜드 전체 리스트</h3>
+						<div class="brand_list" id="idBrandList">
+							<!--<div class="list_blk">
+								<span class="title_abbr">ㄱ</span>
+								<ul>
+									<li>
+										<a id="#" href="#none">
+											<span class="name_large">가르맨디</span>
+											<span class="name_small">GARMENDI</span>
+										</a>
+									</li>
+									<li>
+										<a id="" href="#none">
+											<span class="name_large">공동구매북</span>
+											<span class="name_small">GONGDONGGUMAEBOOK</span>
+										</a>
+									</li>
+								</ul>
+							</div>-->
+						</div>
+					</div>
+					<!-- //브랜드 검색어 입력 전 -->
+					
+					<!-- 브랜드 검색 결과 없을 시 노출 -->
+					<div class="empty_box" id="idNodata" style="display:none;">
+						<div class="nodata">
+							<div class="txt_box">
+								<p>
+									브랜드 검색 결과가 없습니다.
+								</p>
+							</div>
+							<div class="btn_box">
+								<button class="btn btn_default" onclick="cfnGoToPage(_PAGE_ALL_BRAND);"><span>브랜드 전체보기</span></button>
+							</div>
+						</div>
+					</div>
+					<!-- //브랜드 검색 결과 없을 시 노출 -->
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	$(document).ready(function() {
+		fnCreateAllBrandList();
+	});
+
+	let fnSearchBrand = function(){
+		var searchBrand = $("#searchBrandForm").find("input[name=search]").val();
+		fnCreateAllBrandList(searchBrand);
+	}
+
+	let fnCreateAllBrandList = function (brandGroupNm){
+		let actionUrl = '/display/all/brand/list'
+		if(!gagajf.isNull(brandGroupNm)){
+			actionUrl += '?brandGroupNm='+brandGroupNm;
+		}
+
+		$.getJSON(actionUrl
+			, function(result, status){
+					if(result.length>0){
+						$("#idBrandList").html('');
+						let tag = '';
+						let prevNav = '';
+						$.each(result, function (idx, item){
+							if(prevNav != item.brandInitial){
+								if(idx>0){
+									tag += '	</ul>\n';
+									tag += '</div>\n';
+								}
+								tag += '<div class="list_blk">\n';
+								tag += '	<span class="title_abbr">'+item.brandInitial+'</span>\n';
+								tag += '		<ul>\n';
+								tag += '			<li>\n';
+								tag += '				<a href="javascript:void(0);" onclick="cfnGoToBrandMain('+item.brandGroupNo+');">\n';
+								tag += '					<span class="name_large">'+item.brandGroupNm+'</span>\n';
+								if(item.dispNmLang=='KR'){
+									tag += '					<span class="name_small">'+item.brandGroupEnm+'</span>\n';
+								}else{
+									tag += '					<span class="name_small">'+item.brandGroupKnm+'</span>\n';
+								}
+								tag += '				</a>\n'
+								tag += '			</li>\n';
+							}else{
+								tag += '			<li>\n';
+								tag += '				<a href="javascript:void(0);" onclick="cfnGoToBrandMain('+item.brandGroupNo+');">\n';
+								tag += '					<span class="name_large">'+item.brandGroupNm+'</span>\n';
+								if(item.dispNmLang=='KR'){
+									tag += '					<span class="name_small">'+item.brandGroupEnm+'</span>\n';
+								}else{
+									tag += '					<span class="name_small">'+item.brandGroupKnm+'</span>\n';
+								}
+								tag += '				</a>\n'
+								tag += '			</li>\n';
+							}
+							prevNav = item.brandInitial;
+						});
+						tag += '	</ul>\n';
+						tag += '</div>\n';
+						$("#idBrandList").html(tag);
+					}else{
+						$("#idBrandList").html('');
+						$("#idNodata").show();
+					}
+			});
+	}
+/*]]>*/
+</script>
+
+</th:block>
+</body>
+</html>

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

@@ -336,7 +336,7 @@
 						<div class="cont_body">
 						<div class="cont_body">
 							<div class="itemsGrp">
 							<div class="itemsGrp">
 								<th:block th:each="goodsData, goodsStat : ${brandMainLayoutData.goodsList}">
 								<th:block th:each="goodsData, goodsStat : ${brandMainLayoutData.goodsList}">
-									<div class="item_prod" th:if="${goodsStat.index<5}">
+									<div class="item_prod">
 										<div class="item_state">
 										<div class="item_state">
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM013');">
 											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SBM013');">
 												<div class="itemPic">
 												<div class="itemPic">

+ 13 - 12
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -407,12 +407,13 @@
 		}
 		}
 
 
 		let fnGetCategoryList = function (cate1){
 		let fnGetCategoryList = function (cate1){
-			var brandGroupNo = [[${brandGroupNo}]];
-			var formalGb = [[${formalGb}]];
-			var cate1No = [[${cate1No}]];
-			var cate2No = [[${cate2No}]];
-			var cate3No = [[${cate3No}]];
-			var cate4No = [[${cate4No}]];
+			var brandGroupNo = [[${cateInfo.brandGroupNo}]];
+			var cateGb =  [[${cateInfo.cateGb}]];
+			var formalGb = [[${cateInfo.formalGb}]];
+			var cate1No = [[${cateInfo.cate1No}]];
+			var cate2No = [[${cateInfo.cate2No}]];
+			var cate3No = [[${cateInfo.cate3No}]];
+			var cate4No = [[${cateInfo.cate4No}]];
 
 
 			var navNm = "";
 			var navNm = "";
 			var formTitle = "";
 			var formTitle = "";
@@ -424,7 +425,7 @@
 						tag += ' class="on"';
 						tag += ' class="on"';
 					}
 					}
 				tag += '>\n';
 				tag += '>\n';
-				tag += '	<a href="javascript:;"';
+				tag += '	<a href="javascript:javascript:void(0);"';
 				if(cate1.cate1No == cate1No){
 				if(cate1.cate1No == cate1No){
 					tag += ' class="on"';
 					tag += ' class="on"';
 					formTitle = cate1.cate1Nm;
 					formTitle = cate1.cate1Nm;
@@ -432,7 +433,7 @@
 					$("#navNm").text(navNm);
 					$("#navNm").text(navNm);
 					$("#formTitle").text(formTitle);
 					$("#formTitle").text(formTitle);
 				}
 				}
-				tag += '	>' + cate1.cate1Nm + '</a>\n';
+				tag += '	onclick="cfnGoToGoodsList('+brandGroupNo+',\''+cateGb+'\','+cate1.cate1No+');" >' + cate1.cate1Nm + '</a>\n';
 				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 				if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 					tag += '<div class="sub_cate"';
 					tag += '<div class="sub_cate"';
 					if(cate1.cate1No == cate1No){
 					if(cate1.cate1No == cate1No){
@@ -446,13 +447,13 @@
 							tag += ' class="on"';
 							tag += ' class="on"';
 						}
 						}
 						tag += '		>\n';
 						tag += '		>\n';
-						tag += '		<a href="javascript:;" ';
+						tag += '		<a href="javascript:javascript:void(0);" ';
 						if(cate2.cate2No == cate2No){
 						if(cate2.cate2No == cate2No){
 							tag += ' class="on"';
 							tag += ' class="on"';
 							navNm = navNm +' > ' + cate2.cate2Nm;
 							navNm = navNm +' > ' + cate2.cate2Nm;
 							$("#navNm").text(navNm);
 							$("#navNm").text(navNm);
 						}
 						}
-						tag += '		>' + cate2.cate2Nm + '</a>\n';
+						tag += '	onclick="cfnGoToGoodsList('+brandGroupNo+',\''+cateGb+'\','+cate1.cate1No+','+cate2.cate2No+');">' + cate2.cate2Nm + '</a>\n';
  						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
  						if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
 							tag += '<div class="sub_cate"';
 							tag += '<div class="sub_cate"';
 							if(cate2.cate2No == cate2No){
 							if(cate2.cate2No == cate2No){
@@ -466,13 +467,13 @@
 									tag += ' class="on"';
 									tag += ' class="on"';
 								}
 								}
 								tag += '>';
 								tag += '>';
-								tag += '<a href="javascript:;"';
+								tag += '		<a href="javascript:javascript:void(0);" ';
 								if(cate3.cate3No == cate3No){
 								if(cate3.cate3No == cate3No){
 									tag += ' class="on"';
 									tag += ' class="on"';
 									navNm = navNm +' > ' + cate3.cate3Nm;
 									navNm = navNm +' > ' + cate3.cate3Nm;
 									$("#navNm").text(navNm);
 									$("#navNm").text(navNm);
 								}
 								}
-								tag += '>' + cate3.cate3Nm + '</a>';
+								tag += ' onclick="cfnGoToGoodsList('+brandGroupNo+',\''+cateGb+'\','+cate1.cate1No+','+cate2.cate2No+','+cate3.cate3No+');">' + cate3.cate3Nm + '</a>';
 								tag += '</li>\n';
 								tag += '</li>\n';
 							});
 							});
 							tag += '	</ul>\n';
 							tag += '	</ul>\n';

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

@@ -29,114 +29,123 @@
 	</div>
 	</div>
 
 
 	<div class="wrap">
 	<div class="wrap">
-		<div class="content dp_submain" > <!-- 페이지특정 클래스 = dp_list -->
-			<div class="cont_head">
-				<div>
-					<h3 class="cate1Nm"></h3>
-				</div>
-			</div>
-			<div class="cont_body" th:if="${planningList != null and !planningList.empty}">
-				<div class="dp_sum_slide dp_inner">
-					<div class="swiper-container">
-						<div class="swiper-wrapper">
-							<div class="swiper-slide" th:each="item, status : ${planningList}">
-								<a th:href="${item.strVar1}">
-									<div class="img">
-										<img  th:src="${@environment.getProperty('domain.image') + '/' + item.imgPath1}" alt="서브메인 썸네일"/>
-									</div>
-									<div class="txt">
-										<p class="subject" th:text="${item.strTitle1}"></p>
-										<span th:text="${item.subText1}"></span>
+		<th:block th:if="${cateMainLayoutList}" th:each="mainLayoutData, mainStat : ${cateMainLayoutList}" th:with="contentsLoc=${#strings.replace(mainLayoutData.contentsLoc,'SCM','')}">
+			<th:block th:if="${contentsLoc=='001'}">
+				<div class="content dp_submain" > <!-- 페이지특정 클래스 = dp_list -->
+					<div class="cont_head">
+						<div>
+							<h3 class="cate1Nm"></h3>
+						</div>
+					</div>
+					<div class="cont_body" th:if="${planningList != null and !planningList.empty}">
+						<div class="dp_sum_slide dp_inner">
+							<div class="swiper-container">
+								<div class="swiper-wrapper">
+									<div class="swiper-slide" th:each="item, status : ${planningList}">
+										<a th:href="${item.strVar1}">
+											<div class="img">
+												<img  th:src="${@environment.getProperty('domain.image') + '/' + item.imgPath1}" alt="서브메인 썸네일"/>
+											</div>
+											<div class="txt">
+												<p class="subject" th:text="${item.strTitle1}"></p>
+												<span th:text="${item.subText1}"></span>
+											</div>
+										</a>
 									</div>
 									</div>
-								</a>
+								</div>
+								<div class="swiper-controls">
+									<div class="swiper-scrollbar"></div>
+								</div>
 							</div>
 							</div>
-						</div>
-						<div class="swiper-controls">
-							<div class="swiper-scrollbar"></div>
+							<!-- Add Arrows -->
+							<div class="swiper-button-next"></div>
+							<div class="swiper-button-prev"></div>
 						</div>
 						</div>
 					</div>
 					</div>
-					<!-- Add Arrows -->
-					<div class="swiper-button-next"></div>
-					<div class="swiper-button-prev"></div>
 				</div>
 				</div>
-			</div>
-		</div>
-		
-		<div class="content wide dp_category">
-			<div class="cont_head">
-				<h3 class="displayH">카테고리 바로가기</h3>
-			</div>
-			<div class="cont_body">
-				<div class="">
-					<div class="dp_cate_list">
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='004'}">
+				<div class="content wide dp_category">
+					<div class="cont_head">
+						<h3 class="displayH">카테고리 바로가기</h3>
+					</div>
+					<div class="cont_body">
+						<div class="">
+							<div class="dp_cate_list">
+							</div>
+						</div>
 					</div>
 					</div>
 				</div>
 				</div>
-			</div>
-		</div>
-		
-		<!-- 신상품 -->
-		<div class="content wide new_item" th:if="${newGoodsList != null}">
-			<div class="cont_head">
-				<h3 class="displayH">신상품</h3>
-			</div>
-			<div class="cont_body">
-				<div class="swiper-container post-trendy">
-					<div class="swiper-wrapper">
-						<div class="swiper-slide" th:each="item, status : ${newGoodsList}">
-							<div class="item_prod">
-								<div class="item_state">
-									<button type="button" class="itemLike" th:classappend="${item.likeIt}">관심상품 추가</button>
-									<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
-										<div class=" itemPic">
-											<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='002'}">
+				<!-- 신상품 -->
+				<div class="content wide new_item" th:if="${newGoodsList != null}">
+					<div class="cont_head">
+						<h3 class="displayH">신상품</h3>
+					</div>
+					<div class="cont_body">
+						<div class="swiper-container post-trendy">
+							<div class="swiper-wrapper">
+								<div class="swiper-slide" th:each="item, status : ${newGoodsList}">
+									<div class="item_prod">
+										<div class="item_state">
+											<button type="button" class="itemLike" th:classappend="${item.likeIt}">관심상품 추가</button>
+											<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM001');">
+												<div class=" itemPic">
+													<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+												</div>
+												<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
+												<div class="itemName" th:text="${item.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
+												<p class="itemPrice" th:text="${#numbers.formatInteger(item.currPrice,3,'POINT') + '원'}">488,000원</p>
+												<div class="itemComment" th:if="${not #strings.isEmpty(item.goodsTnm)}" th:text="${item.goodsTnm}">#가을느낌 물씬!</div>
+											</a>
 										</div>
 										</div>
-										<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
-										<div class="itemName" th:text="${item.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
-										<p class="itemPrice" th:text="${#numbers.formatInteger(item.currPrice,3,'POINT') + '원'}">488,000원</p>
-										<div class="itemComment" th:if="${not #strings.isEmpty(item.goodsTnm)}" th:text="${item.goodsTnm}">#가을느낌 물씬!</div>
-									</a>
+									</div>
 								</div>
 								</div>
 							</div>
 							</div>
 						</div>
 						</div>
+						<div class="swiper-pagination"></div>
+						<div class="swiper-button-prev"></div>
+						<div class="swiper-button-next"></div>
 					</div>
 					</div>
 				</div>
 				</div>
-				<div class="swiper-pagination"></div>
-				<div class="swiper-button-prev"></div>
-				<div class="swiper-button-next"></div>
-			</div>
-		</div>
-		<!-- //신상품 -->
-		
-		<div class="content dp_best_list" th:if="${bestGoodsList != null}">
-			<div class="cont_head">
-				<h3 class="displayH">베스트</h3>
-			</div>
-			<div class="cont_body">
-				<div class="list_content">
-					<div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
-						<div class="item_prod" th:each="item, status : ${bestGoodsList}">
-							<div class="item_state" >
-								<button type="button" class="itemLike" th:classappend="${item.likeIt}">관심상품 추가</button>
-								<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
-									<div class="rank ranker"><span th:text="${status.index+1}">1</span></div>
-									<div class="itemPic">
-										<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+				<!-- //신상품 -->
+			</th:block>
+			<th:block th:if="${contentsLoc=='003'}">
+				<div class="content dp_best_list" th:if="${bestGoodsList != null}">
+					<div class="cont_head">
+						<h3 class="displayH">베스트</h3>
+					</div>
+					<div class="cont_body">
+						<div class="list_content">
+							<div class="itemsGrp"> <!-- itemsGrp rank hot deal -->
+								<div class="item_prod" th:each="item, status : ${bestGoodsList}">
+									<div class="item_state" >
+										<button type="button" class="itemLike" th:classappend="${item.likeIt}">관심상품 추가</button>
+										<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${item.goodsCd}]], '', '', 'SCM002');">
+											<div class="rank ranker"><span th:text="${status.index+1}">1</span></div>
+											<div class="itemPic">
+												<img class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + item.sysImgNm}" th:alt="${item.goodsCd}"/>
+											</div>
+											<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
+											<div class="itemName" th:text="${item.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+											<p class="itemPrice">
+												<span th:text="${#numbers.formatInteger(item.currPrice,3,'POINT') + '원'}">80,100</span>
+												<span class="itemPrice_original" th:if="${item.currPrice != item.listPrice}" th:text="${#numbers.formatInteger(item.listPrice,3,'POINT') + '원'}">89,000</span>
+												<span class="itemPercent" th:if="${item.currPrice != item.listPrice}" th:text="${(item.listPrice == 0 ? 0 : #numbers.formatDecimal((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
+											</p>
+											<div class="itemComment" th:if="${not #strings.isEmpty(item.goodsTnm)}" th:text="${item.goodsTnm}">#주문 폭주 상품</div>
+										</a>
 									</div>
 									</div>
-									<p class="itemBrand" th:text="${item.brandGroupNm}">BRAND NAME</p>
-									<div class="itemName" th:text="${item.goodsFullNm}">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
-									<p class="itemPrice">
-										<span th:text="${#numbers.formatInteger(item.currPrice,3,'POINT') + '원'}">80,100</span>
-										<span class="itemPrice_original" th:if="${item.currPrice != item.listPrice}" th:text="${#numbers.formatInteger(item.listPrice,3,'POINT') + '원'}">89,000</span>
-										<span class="itemPercent" th:if="${item.currPrice != item.listPrice}" th:text="${(item.listPrice == 0 ? 0 : #numbers.formatDecimal((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
-									</p>
-									<div class="itemComment" th:if="${not #strings.isEmpty(item.goodsTnm)}" th:text="${item.goodsTnm}">#주문 폭주 상품</div>
-								</a>
+								</div>
 							</div>
 							</div>
 						</div>
 						</div>
 					</div>
 					</div>
 				</div>
 				</div>
-			</div>
-		</div>
+			</th:block>
+		</th:block>
 	</div>
 	</div>
 </div>
 </div>
 
 

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

@@ -218,7 +218,7 @@
 				<th:block th:if="${contentsLoc=='006'}">
 				<th:block th:if="${contentsLoc=='006'}">
 					<div class="content wide main_deal" th:if="${mainLayoutData.socialInfo != null}">
 					<div class="content wide main_deal" th:if="${mainLayoutData.socialInfo != null}">
 						<div class="cont_head">
 						<div class="cont_head">
-							<p class="displayH" th:text="${mainLayoutData.contentsTitle}">오늘만<br>이 가격에 만나요</p>
+							<p class="displayH" id="id006" th:text="${mainLayoutData.contentsTitle}">오늘만<br>이 가격에 만나요</p>
 							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);"><span>전체보기</span></a>
 							<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);"><span>전체보기</span></a>
 							<div class="deal_progress">
 							<div class="deal_progress">
 								<div class="bar_current" style="width:33.333%"><span>HERE</span></div>
 								<div class="bar_current" style="width:33.333%"><span>HERE</span></div>
@@ -1102,6 +1102,13 @@ var main_tv_slide = new Swiper ('.main_tv .post-tv', {
 		clickable: true,
 		clickable: true,
 	},
 	},
 });
 });
+
+	$(document).ready(function() {
+		// $("#id006").text();
+		// var brCheck = "오늘만 <br> 이 가격@".split("<br>");
+		// console.log(brCheck[0]);
+		// console.log(brCheck[1]);
+	});
 /*]]>*/
 /*]]>*/
 </script>
 </script>
 
 

+ 4 - 5
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -94,8 +94,7 @@
 								<div>
 								<div>
 									<ul>
 									<ul>
 										<li id="SearchUseGiftcard"><a href="javascript:void(0);" >사용내역</a></li>
 										<li id="SearchUseGiftcard"><a href="javascript:void(0);" >사용내역</a></li>
-										<li id="SearchOwnGiftcard"><a href="javascript:void(0);" >보유
-												상품권</a></li>
+										<li id="SearchOwnGiftcard"><a href="javascript:void(0);" >보유상품권</a></li>
 									</ul>
 									</ul>
 								</div>
 								</div>
 							</div>
 							</div>
@@ -208,7 +207,7 @@
 				tmtbHtml += '<div class="txt_content">'	+ useGiftcard.goodsNm + '</div>';
 				tmtbHtml += '<div class="txt_content">'	+ useGiftcard.goodsNm + '</div>';
 				tmtbHtml += '</td>';
 				tmtbHtml += '</td>';
 				tmtbHtml += '<td><span class="amount_minus"> <em>'
 				tmtbHtml += '<td><span class="amount_minus"> <em>'
-						+ '-'
+						/* + '-' */
 						+ ' '
 						+ ' '
 						+ useGiftcard.gfcdAmt.addComma()
 						+ useGiftcard.gfcdAmt.addComma()
 						+ '</em>원';
 						+ '</em>원';
@@ -280,7 +279,7 @@
 				tmtbHtml2 += '<p class="vch_name">'	+ ownGiftcard.gfcdNm + '</p>';
 				tmtbHtml2 += '<p class="vch_name">'	+ ownGiftcard.gfcdNm + '</p>';
 				tmtbHtml2 += '<p class="vch_price"><span class="tag primary_line"><em>'	+ ownGiftcard.chgGfcdAmt.addComma()	+ '</em>원권</span></p>';
 				tmtbHtml2 += '<p class="vch_price"><span class="tag primary_line"><em>'	+ ownGiftcard.chgGfcdAmt.addComma()	+ '</em>원권</span></p>';
 				if (ownGiftcard.rmGfcdAmt > 0) {
 				if (ownGiftcard.rmGfcdAmt > 0) {
-					tmtbHtml2 += '<p class="vch_remain">'+ ownGiftcard.rmGfcdAmt.addComma()+ '원</p>';
+					tmtbHtml2 += '<p class="vch_remain">잔액<span><em>'+ ownGiftcard.rmGfcdAmt.addComma()+ '</em></span></p>';
 				} else {
 				} else {
 					tmtbHtml2 += '<p class="vch_remain">전액소진</p>';
 					tmtbHtml2 += '<p class="vch_remain">전액소진</p>';
 				}
 				}
@@ -301,7 +300,7 @@
 	}
 	}
 
 
 	function fnChangeDate(obj) {
 	function fnChangeDate(obj) {
-
+		
 		var seletedDate = obj.toString();
 		var seletedDate = obj.toString();
 		var splitMonth = seletedDate.substr(4);
 		var splitMonth = seletedDate.substr(4);
 
 

+ 18 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

@@ -43,7 +43,7 @@
 									이번 달 회원등급은<br />
 									이번 달 회원등급은<br />
 									<span class="my_rank" th:text="${customerInfo.custGradeNm}">GOLD</span> 입니다.
 									<span class="my_rank" th:text="${customerInfo.custGradeNm}">GOLD</span> 입니다.
 								</p>
 								</p>
-								<button type="button" id="btnDownGradeCoupon" class="btn btn_dark cou_btn" >등급 쿠폰 다운로드</button>
+								<button type="button" id="btnGradeCoupon" class="btn btn_dark cou_btn" >등급 쿠폰 다운로드</button>
 							</div>
 							</div>
 							<!-- 회원 등급 progress바 -->
 							<!-- 회원 등급 progress바 -->
 							<div class="my_rank_progress">
 							<div class="my_rank_progress">
@@ -359,10 +359,25 @@
 		}
 		}
 	}
 	}
 
 
-	$('#btnDownGradeCoupon').on('click', function () {
-		gagajf.ajaxJsonSubmit('')
+	$('#btnGradeCoupon').on('click', function () {
+		let params = JSON.stringify({});
+		gagajf.ajaxJsonSubmit('/planning/event/custgrade/coupon/down', params, fnDownloadCallback)
 	});
 	});
 
 
+ 	var fnDownloadCallback = function (result) {
+ 		let message = '이미 쿠폰을 다운로드하셨습니다.';
+		if (result.isDownload) {
+			message = '모두 다운로드되었습니다. 쿠폰 정보는 마이페이지 > 나의 쿠폰에서 확인하실 수 있습니다.';
+		}
+
+		mcxDialog.alertC(message, {
+			sureBtnText: "확인",
+			sureBtnClick: function () {
+			}
+		});
+
+	}
+
 	$(document).ready(function() {
 	$(document).ready(function() {
 
 
 		fnInit();
 		fnInit();

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

@@ -43,25 +43,25 @@
                             <div class="item_prod" th:class="${SocialData.stockQtySum == 0 ? 'item_prod sold_out' : 'item_prod'}">
                             <div class="item_prod" th:class="${SocialData.stockQtySum == 0 ? 'item_prod sold_out' : 'item_prod'}">
                                 <div class="item_state"> <!-- item_state AD soldout -->
                                 <div class="item_state"> <!-- item_state AD soldout -->
                                     <button type="button" th:class="${SocialData.likeIt == 'likeit'}? 'itemLike active' : 'itemLike'" onclick="cfnPutWishList(this);" th:attr="goodsCd=${SocialData.goodsCd}, ithrCd='', contentsLoc='', planDtlSq=''">관심상품 추가</button>
                                     <button type="button" th:class="${SocialData.likeIt == 'likeit'}? 'itemLike active' : 'itemLike'" onclick="cfnPutWishList(this);" th:attr="goodsCd=${SocialData.goodsCd}, ithrCd='', contentsLoc='', planDtlSq=''">관심상품 추가</button>
-                                    <a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${SocialData.goodsCd}]])">
+                                    <a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${SocialData.goodsCd}]])" >
                                         <div class="itemPic">
                                         <div class="itemPic">
                                             <img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + SocialData.sysImgNm}">
                                             <img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + SocialData.sysImgNm}">
                                         </div>
                                         </div>
                                         <div class="itemSpecialPrice"><span>특가</span></div>
                                         <div class="itemSpecialPrice"><span>특가</span></div>
                                         <p class="itemBrand" th:text="${SocialData.brandKnm}"></p>
                                         <p class="itemBrand" th:text="${SocialData.brandKnm}"></p>
                                         <div class="itemName" th:text="${SocialData.goodsNm}"></div>
                                         <div class="itemName" th:text="${SocialData.goodsNm}"></div>
-                                        <!-- <div class="itemComment">#주문 폭주 상품</div> -->
+                                       <div class="itemComment" th:if="${SocialData.goodsTnm!=null}" th:text="${SocialData.goodsTnm}"></div>
                                         <p class="itemPrice">
                                         <p class="itemPrice">
                                              [[${#numbers.formatInteger(SocialData.currPrice,0,'COMMA')} + 원]]
                                              [[${#numbers.formatInteger(SocialData.currPrice,0,'COMMA')} + 원]]
                                             <span class="itemPrice_original" th:text="${#numbers.formatInteger(SocialData.listPrice,0,'COMMA')} + '원'"></span>
                                             <span class="itemPrice_original" th:text="${#numbers.formatInteger(SocialData.listPrice,0,'COMMA')} + '원'"></span>
 											<span class=" itemPercent" th:text="${#numbers.formatDecimal(SocialData.dcRate,1,0)} + '%'"></span>
 											<span class=" itemPercent" th:text="${#numbers.formatDecimal(SocialData.dcRate,1,0)} + '%'"></span>
-                                        </p>
-                                        <div class="shopBagBtn">
-                                            <button class="btn btn_defalt" onclick="AddCart(this)">
+                                        </p>100 - ROUND((Z.CURR_PRICE / Z.LIST_PRICE) * 100 ,0) AS DC_RATE 
+                                    </a>
+                                    	 <div class="shopBagBtn">
+                                            <button type="button" class="btn btn_defalt" onclick="socialAddCart(this)" th:attr="goodsCd=${SocialData.goodsCd}, minOrdQty=${SocialData.minOrdQty}, goodsType=${SocialData.goodsType}, optCd=${SocialData.optCd}">
                                                 <span>쇼핑백 담기</span>
                                                 <span>쇼핑백 담기</span>
                                             </button>
                                             </button>
                                         </div>
                                         </div>
-                                    </a>
                                 </div>
                                 </div>
                             </div>
                             </div>
                             </th:block>
                             </th:block>
@@ -73,7 +73,27 @@
     </div>   
     </div>   
 <script th:inline="javascript">
 <script th:inline="javascript">
 var socialInfo = [[${socialInfo}]];
 var socialInfo = [[${socialInfo}]];
+var socialAddCart = function (obj) {
+	let btnType = "C";
+	let params = [];
 
 
+	let cart = new Object();
+    cart.goodsCd = $(obj).attr("goodsCd");
+	cart.optCd = $(obj).attr("optCd");
+	cart.goodsQty = $(obj).attr("minOrdQty");
+	cart.goodsType = $(obj).attr("goodsType");
+	cart.cartGb = btnType;
+	cart.afLinkCd = $(obj).attr("afLinkCd");
+	cart.ithrCd = "";
+	cart.contentsLoc =  "";
+	cart.planDtlSq = "";
+	params.push(cart); 
+	
+	// 장바구니담기
+	if (params.length > 0){
+		cfnAddCart(params);	
+	} 
+}
 $(function(){
 $(function(){
        /* 핫딜 countDown */
        /* 핫딜 countDown */
        function hotdealTimer() {
        function hotdealTimer() {

+ 1 - 1
src/main/webapp/biz/goodsSession.js

@@ -19,7 +19,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		tag += '	<div class="item_state">';
 		tag += '	<div class="item_state">';
 		tag += '		<button type="button" class="itemLike">관심상품 추가</button>';
 		tag += '		<button type="button" class="itemLike">관심상품 추가</button>';
 		tag += '		<a href="#none" class="itemLink">';
 		tag += '		<a href="#none" class="itemLink">';
-		tag += '			<div class="rank ranker"><span>'+(rank+(idx+1))+'</span></div>';
+		// tag += '			<div class="rank ranker"><span>'+(rank+(idx+1))+'</span></div>';
 		tag += '			<div class="itemPic">';
 		tag += '			<div class="itemPic">';
 		tag += '				<img alt="BLUE-a" class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'">';
 		tag += '				<img alt="BLUE-a" class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'">';
 		tag += '			</div>';
 		tag += '			</div>';

+ 17 - 7
src/main/webapp/ux/mo/css/common_m.css

@@ -674,7 +674,7 @@ header .htop {position: relative;height: 55px;-webkit-box-sizing: border-box;box
 header .htop:after {content: '';display: block; clear: both;}
 header .htop:after {content: '';display: block; clear: both;}
 header #htopSub{border-bottom: 0px solid #e5e5e5;box-sizing: border-box;}
 header #htopSub{border-bottom: 0px solid #e5e5e5;box-sizing: border-box;}
 header #htopSubs{border-bottom: 0px solid #000000;box-sizing: border-box;}
 header #htopSubs{border-bottom: 0px solid #000000;box-sizing: border-box;}
-header #htopSub.my_main {background-color: #f5f5f5 !important; border-bottom: 1px solid rgba(0, 0, 0, 0.0)!important;}
+header #htopSub.my_main {background-color: #f5f5f5; border-bottom: 1px solid rgba(0, 0, 0, 0.0)!important;}
 header .htop h1 {display: inline-block;position: relative;width: 10.666rem;height: 100%;line-height: 4.5rem;vertical-align: middle;margin: 0px 0 0 2.0rem;font-size: 1.8rem;color: #222;}
 header .htop h1 {display: inline-block;position: relative;width: 10.666rem;height: 100%;line-height: 4.5rem;vertical-align: middle;margin: 0px 0 0 2.0rem;font-size: 1.8rem;color: #222;}
 header .htop h1#htopTitle {display: inline-block;position: relative;max-width: 18rem;width: auto;height: 100%;line-height: 4.5rem;vertical-align: middle;padding: 0px 1.5rem 0px 0rem;font-size: 1.8rem;color: #222;}
 header .htop h1#htopTitle {display: inline-block;position: relative;max-width: 18rem;width: auto;height: 100%;line-height: 4.5rem;vertical-align: middle;padding: 0px 1.5rem 0px 0rem;font-size: 1.8rem;color: #222;}
 header .htop h1 a {height: 100%;width: 100%;display: block;}
 header .htop h1 a {height: 100%;width: 100%;display: block;}
@@ -690,9 +690,9 @@ header .htop .btn_back:active span i {left: -20px;}
 
 
 header .htop .button_wrap {height: 5.5rem; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
 header .htop .button_wrap {height: 5.5rem; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
 header .htop .button_wrap .home {display:none;}
 header .htop .button_wrap .home {display:none;}
-header .htop .button_wrap .home {margin:0 1.1666rem 0 0; }
+header .htop .button_wrap .home {margin:0; }
 header .htop .button_wrap .home img{width: 2.0rem;}
 header .htop .button_wrap .home img{width: 2.0rem;}
-header .htop .button_wrap .search { margin:0 1.1666rem 0 0; }
+header .htop .button_wrap .search { margin:0 1.1666rem 0 1.1666rem; }
 header .htop .button_wrap .search img{width: 2.0rem;}
 header .htop .button_wrap .search img{width: 2.0rem;}
 header .htop .button_wrap .store{position: relative;}
 header .htop .button_wrap .store{position: relative;}
 header .htop .button_wrap .store img{width: 1.6rem;}
 header .htop .button_wrap .store img{width: 1.6rem;}
@@ -1209,7 +1209,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .fold_head .id{font-size:12px; font-weight: 200; color:#888;}
 .fold_head .id{font-size:12px; font-weight: 200; color:#888;}
 .fold_head .id{position:relative; padding-right:1rem; margin-right:1rem;}
 .fold_head .id{position:relative; padding-right:1rem; margin-right:1rem;}
 .fold_head .id:after{display:block; content:''; position:absolute; right:0; top:2px; width:1px; height:0.8rem; background-color:#dddddd;}
 .fold_head .id:after{display:block; content:''; position:absolute; right:0; top:2px; width:1px; height:0.8rem; background-color:#dddddd;}
-.foldGroup .fold_cont {display:none; padding: 0; position: relative; color:#666; font-weight:200; font-size:14px; line-height:1.625;}
+.foldGroup .fold_cont {display:none; padding: 0; position: relative; color:#000; font-weight:200; font-size:14px; line-height:1.625;}
 .fold_cont > div:first-of-type {border-top:none;}
 .fold_cont > div:first-of-type {border-top:none;}
 .fold_cont .img_group .thumb_pic {position:relative; display:inline-block; width:74px; height:74px; border:1px solid #ddd; margin-right:4px; box-sizing:border-box; overflow:hidden;} 
 .fold_cont .img_group .thumb_pic {position:relative; display:inline-block; width:74px; height:74px; border:1px solid #ddd; margin-right:4px; box-sizing:border-box; overflow:hidden;} 
 .fold_cont .img_group .thumb_pic img {position:absolute; top:50%; transform: translateY(-50%); width:100%; height: auto;}
 .fold_cont .img_group .thumb_pic img {position:absolute; top:50%; transform: translateY(-50%); width:100%; height: auto;}
@@ -1263,8 +1263,8 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .btPop_full .btPop_head {padding: 20px;border-bottom: 1px solid #ddd;font-size:1.8rem;position: relative;}
 .btPop_full .btPop_head {padding: 20px;border-bottom: 1px solid #ddd;font-size:1.8rem;position: relative;}
 .btPop_full .btPop_body {padding: 20px;font-size:1.4rem;}
 .btPop_full .btPop_body {padding: 20px;font-size:1.4rem;}
 .btPop {background: #ffffff;width: 100%;height: 100%;/* height: 100% */margin: 0;padding: 0;transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);top: 100%;position: fixed;left: 0;text-align: left;z-index: 999;}
 .btPop {background: #ffffff;width: 100%;height: 100%;/* height: 100% */margin: 0;padding: 0;transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);top: 100%;position: fixed;left: 0;text-align: left;z-index: 999;}
-.btPop .btPop_head {padding: 20px;border-bottom: 1px solid #ddd;font-size:1.8rem;position: relative;}
-.btPop .btPop_body {padding: 20px;font-size:1.4rem;/*max-height: 24rem;*/overflow-x: hidden;overflow-y: auto;}
+.btPop .btPop_head {padding: 2.0rem;border-bottom: 1px solid #ddd;font-size:1.8rem;position: relative;}
+.btPop .btPop_body {padding: 2.0rem;font-size:1.4rem;/*max-height: 24rem;*/overflow-x: hidden;overflow-y: auto;}
 .container .btPop_full .btPop_full_close,
 .container .btPop_full .btPop_full_close,
 .container .btPop .btPop_close{transition: all 10ms ease;opacity: 0;}
 .container .btPop .btPop_close{transition: all 10ms ease;opacity: 0;}
 .container.btPop_full_open .btPop_full {top: 0;/* top: auto; */top: 55px;}
 .container.btPop_full_open .btPop_full {top: 0;/* top: auto; */top: 55px;}
@@ -1907,7 +1907,17 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .app-only .guidance{width: auto;}
 .app-only .guidance{width: auto;}
 .app-only .guidance{overflow: hidden;position: fixed;bottom: 0;left: 50%;z-index: 9;width: 88.888%;height: auto;margin-left: -44.444%;padding: 1.2rem 0 1.0rem;background-color: rgba(0,0,0,0.8);text-align: center;opacity: 0;}
 .app-only .guidance{overflow: hidden;position: fixed;bottom: 0;left: 50%;z-index: 9;width: 88.888%;height: auto;margin-left: -44.444%;padding: 1.2rem 0 1.0rem;background-color: rgba(0,0,0,0.8);text-align: center;opacity: 0;}
 .app-only .guidance:after{content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}
 .app-only .guidance:after{content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}
-.app-only .guidance{box-shadow: 0 0px 30px rgb(0 0 0 / 20%), 0 0px 30px rgb(0 0 0 / 20%);} /* mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);-webkit-mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);-webkit-mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);mask-position: bottom left, bottom right, top left, top right;-webkit-mask-position: bottom left, bottom right, top left, top right;mask-repeat: no-repeat;-webkit-mask-repeat: no-repeat;*/
+.app-only .guidance{
+    box-shadow: 0 0px 30px rgb(0 0 0 / 20%), 0 0px 30px rgb(0 0 0 / 20%);
+    mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
+    -webkit-mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
+	mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);
+    -webkit-mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);
+    mask-position: bottom left, bottom right, top left, top right;
+    -webkit-mask-position: bottom left, bottom right, top left, top right;
+    mask-repeat: no-repeat;
+    -webkit-mask-repeat: no-repeat;
+}
 .app-only .guidance p{font-size:1.3rem;font-weight: 300;color: #fff;}
 .app-only .guidance p{font-size:1.3rem;font-weight: 300;color: #fff;}
 .app-only .guidance p.tit{font-size: 1.4rem;margin-bottom: 1.53rem;}
 .app-only .guidance p.tit{font-size: 1.4rem;margin-bottom: 1.53rem;}
 .app-only .guidance p.date{opacity: 0.7;font-size:1.1rem;margin-bottom: 1.2rem;}
 .app-only .guidance p.date{opacity: 0.7;font-size:1.1rem;margin-bottom: 1.2rem;}

+ 170 - 88
src/main/webapp/ux/mo/css/layout_m.css

@@ -238,7 +238,7 @@
 .mb .find_result .form_print_bar ul li span.t_span {width:7.5rem; color:#888;}	
 .mb .find_result .form_print_bar ul li span.t_span {width:7.5rem; color:#888;}	
 .mb .btn_group_block {float:none; margin-top:3rem; display:flex;}
 .mb .btn_group_block {float:none; margin-top:3rem; display:flex;}
 .mb [class^="ico_content_"]::before {margin: 0px auto 1.5rem;}
 .mb [class^="ico_content_"]::before {margin: 0px auto 1.5rem;}
-.ico_content_find::before {width:3.6rem; height:4.6rem; background:url(../images/ico_content_find.png) no-repeat 50% 50%;}
+.ico_content_find::before {width:3.6rem; height:4.6rem; background:url('/images/mo/ico_content_find.png') no-repeat 50% 50%;}
 
 
 /* mb_login */
 /* mb_login */
 .mb .mb_login .login_check{font-size:1.2rem; line-height:1.8rem;}
 .mb .mb_login .login_check{font-size:1.2rem; line-height:1.8rem;}
@@ -377,11 +377,20 @@
 .pd .dot_info::before {content:'·'; position:absolute; left:0; top:0; line-height:inherit;}
 .pd .dot_info::before {content:'·'; position:absolute; left:0; top:0; line-height:inherit;}
 
 
 /* pd_detail */
 /* pd_detail */
+.pd .pd_detail {}
+.pd .pd_detail .pd_info{ position: relative;z-index: 0;}
+.pd .pd_detail .pd_info:before {content: "";display: block;width: 100%;height: 150vw;}
+.pd .pd_detail .pd_info .pd_info1{position: absolute;position: fixed;top: 0;left: 0;right: 0;-webkit-box-sizing: border-box;box-sizing: border-box;overflow: hidden;}
+.pd .pd_detail .inner{background: #ffffff;}
+/* .pd .pd_detail .inner:after{content: '';display:inline-block;width: 100%;padding: 2.0rem 0; background: #f5f5f5;} */
+.pd_detail .pd_info > .inner:last-child {margin-bottom: 1.2rem;padding-bottom: 3rem;}
 /* 1 */
 /* 1 */
 .pd_detail{background-color:#f5f5f5;}
 .pd_detail{background-color:#f5f5f5;}
+.pd_detail .pd_info > .inner,
 .pd_detail > .inner{margin-bottom:1.2rem; padding-bottom:3rem; background-color:#fff;}
 .pd_detail > .inner{margin-bottom:1.2rem; padding-bottom:3rem; background-color:#fff;}
 .pd_detail > .inner:first-child{margin-bottom:0;}
 .pd_detail > .inner:first-child{margin-bottom:0;}
 .pd_detail > .inner:last-child{margin-bottom:0;}
 .pd_detail > .inner:last-child{margin-bottom:0;}
+.pd_detail .pd_info > .inner.wide,
 .pd_detail > .inner.wide{padding-left:0!important; padding-right:0!important; padding-bottom:0;}
 .pd_detail > .inner.wide{padding-left:0!important; padding-right:0!important; padding-bottom:0;}
 .pd_detail .thumb_box{position: relative;}
 .pd_detail .thumb_box{position: relative;}
 .pd_detail .thumb_box:after{position:absolute; content:''; left:0; bottom:0; width:100%; height:3rem; background-color:rgba(255,255,255,.95); z-index:2;}
 .pd_detail .thumb_box:after{position:absolute; content:''; left:0; bottom:0; width:100%; height:3rem; background-color:rgba(255,255,255,.95); z-index:2;}
@@ -418,18 +427,20 @@
 .pd_detail .descript_box .btn_group_flex button{border:1px solid #fd4802; color:#fd4802; background: #fff;}
 .pd_detail .descript_box .btn_group_flex button{border:1px solid #fd4802; color:#fd4802; background: #fff;}
 /* 2 */
 /* 2 */
 .pd_detail .desc_status{padding:1.5rem 2rem; margin-bottom:-1.2rem; color: #fd4802; border-bottom:1px solid #dddddd;}
 .pd_detail .desc_status{padding:1.5rem 2rem; margin-bottom:-1.2rem; color: #fd4802; border-bottom:1px solid #dddddd;}
-.pd_detail .timer_box{position: absolute; height:3.6rem; line-height:3.6rem; font-size:1.2rem; color:#fff; text-align:center; background-color: #000; left: 2rem; right: 2rem; top: -5.5rem; z-index: 10;}
+.pd_detail .timer_box{position: relative;position: absolute;width: 32.0rem;top:-4.5rem;left: 50%;transform: translateX(-50%);z-index: 2;}
+.pd_detail .timer_box p{padding: 0;text-align: center;background: #222;height: 3.6rem;}
 /* .pd_detail .timer_box::after{content:''; position:absolute; right:-1.2rem; bottom:-1.8rem; border:1.2rem solid transparent; border-top:1.2rem solid #fff; transform:rotate(-45deg);} */
 /* .pd_detail .timer_box::after{content:''; position:absolute; right:-1.2rem; bottom:-1.8rem; border:1.2rem solid transparent; border-top:1.2rem solid #fff; transform:rotate(-45deg);} */
-.pd_detail .timer_box::after{content:''; position:absolute; right:0; bottom:0; display:block; width:0px; border:0.5rem solid transparent; border-bottom-color:#fff; border-right-color:#fff;}
+.pd_detail .timer_box::after{content:''; position: absolute;right: 0;bottom: 0;display: block;width: 0px;border: 0.5rem solid transparent;border-bottom-color: #fff;border-right-color: #fff;}
 .pd_detail .timer_box p::after {content:''; clear:both; display:block;}
 .pd_detail .timer_box p::after {content:''; clear:both; display:block;}
 .pd_detail .timer_box p span {display:inline-block; position:relative; }
 .pd_detail .timer_box p span {display:inline-block; position:relative; }
-.pd_detail .timer_box p .tt {position:relative; padding-left:2.8rem; color:#fff; font-size:1.3rem;}
+.pd_detail .timer_box p .tt {position:relative; padding-left:2.8rem; color:#fff; font-size:1.3rem; line-height: 3.8rem;}
 .pd_detail .timer_box p .tt::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.8rem; height:1.8rem; background:url('/images/mo/ico_timer2.png') no-repeat 0 50%;}
 .pd_detail .timer_box p .tt::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.8rem; height:1.8rem; background:url('/images/mo/ico_timer2.png') no-repeat 0 50%;}
 .pd_detail .timer_box p .timer {color:#fff; font-size:1.4rem; font-weight:300;}
 .pd_detail .timer_box p .timer {color:#fff; font-size:1.4rem; font-weight:300;}
 .pd_detail .timer_box p .timer em {display:inline-block; position:relative; padding-left:0.6rem;}
 .pd_detail .timer_box p .timer em {display:inline-block; position:relative; padding-left:0.6rem;}
 .pd_detail .timer_box p .timer em::before {content:':'; position:absolute; left:-1px; top:50%; transform:translateY(-50%);}
 .pd_detail .timer_box p .timer em::before {content:':'; position:absolute; left:-1px; top:50%; transform:translateY(-50%);}
 .pd_detail .timer_box p .timer em:first-of-type {padding-left:0.8rem;}
 .pd_detail .timer_box p .timer em:first-of-type {padding-left:0.8rem;}
 .pd_detail .timer_box p .timer em:first-of-type::before {display:none;}
 .pd_detail .timer_box p .timer em:first-of-type::before {display:none;}
+.pd_detail .descript_box {padding-top: 1.5rem;}
 .pd_detail .option_box .opt_color{padding:3rem 0;}
 .pd_detail .option_box .opt_color{padding:3rem 0;}
 .pd_detail .option_box .opt_color ul {margin:0 -2rem; padding-left:2rem; overflow-x:auto; font-size:0; white-space:nowrap;}
 .pd_detail .option_box .opt_color ul {margin:0 -2rem; padding-left:2rem; overflow-x:auto; font-size:0; white-space:nowrap;}
 .pd_detail .option_box .opt_color ul::after {content:''; position: relative; display:inline-block; width:2rem; height:1px;}
 .pd_detail .option_box .opt_color ul::after {content:''; position: relative; display:inline-block; width:2rem; height:1px;}
@@ -459,7 +470,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{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: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_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:normal;word-wrap:normal;width:26rem;overflow:hidden;}
+.pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_option {font-size:1.1rem; color:#666; white-space:normal;word-wrap:break-word;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 {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 .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%;}
 .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%;}
@@ -471,7 +482,7 @@
 .pd_detail .option_box .opt_result .result_item .number_count span::after {content:''; position:absolute; left:50%; top:50%; transform: translate(-50%, -50%);; width:1.2rem; height:1.2rem; background:url('/images/pc/btn_count.png') no-repeat 100% 0; image-rendering:pixelated;}
 .pd_detail .option_box .opt_result .result_item .number_count span::after {content:''; position:absolute; left:50%; top:50%; transform: translate(-50%, -50%);; width:1.2rem; height:1.2rem; background:url('/images/pc/btn_count.png') no-repeat 100% 0; image-rendering:pixelated;}
 .pd_detail .option_box .opt_result .result_item .number_count .plus::after {content:''; background-position:100% 0;}
 .pd_detail .option_box .opt_result .result_item .number_count .plus::after {content:''; background-position:100% 0;}
 .pd_detail .option_box .opt_result .result_item .number_count .minus::after {content:''; background-position:0 0;}
 .pd_detail .option_box .opt_result .result_item .number_count .minus::after {content:''; background-position:0 0;}
-.pd_detail .option_box .opt_result .result_item .number_count input[type='text'] {width:3.2rem; height:3.2rem; padding:0; text-align:center; color:#222; font-size:1.3rem; font-weight:300; border:none; font-family:'LATO','Noto Sans CJK kr','Noto Sans kr',sans-serif;}
+.pd_detail .option_box .opt_result .result_item .number_count input[type='text'] {width:3.2rem; height:3.2rem; padding:0; text-align:center; color:#222; font-size:1.3rem; font-weight:300; border:none; font-family:'LATO','Noto Sans CJK kr','Noto Sans kr',sans-serif; background:#fff;}
 .option_box .opt_size .form_field2 {display:block;}
 .option_box .opt_size .form_field2 {display:block;}
 .option_box .opt_size .form_field2 .lap{margin:-0.25rem -0.25rem 0; overflow:hidden;}
 .option_box .opt_size .form_field2 .lap{margin:-0.25rem -0.25rem 0; overflow:hidden;}
 .option_box .opt_size .form_field2 .lap > div {margin:0.25rem; float:left; width:auto;}
 .option_box .opt_size .form_field2 .lap > div {margin:0.25rem; float:left; width:auto;}
@@ -492,7 +503,7 @@
 .pd_detail .option_box .opt_count .number_count span::after {content:''; position:absolute; left:50%; top:50%; transform: translate(-50%, -50%);; width:1.2rem; height:1.2rem; background:url('/images/pc/btn_count.png') no-repeat 100% 0; image-rendering:pixelated;}
 .pd_detail .option_box .opt_count .number_count span::after {content:''; position:absolute; left:50%; top:50%; transform: translate(-50%, -50%);; width:1.2rem; height:1.2rem; background:url('/images/pc/btn_count.png') no-repeat 100% 0; image-rendering:pixelated;}
 .pd_detail .option_box .opt_count .number_count .plus::after {content:''; background-position:100% 0;}
 .pd_detail .option_box .opt_count .number_count .plus::after {content:''; background-position:100% 0;}
 .pd_detail .option_box .opt_count .number_count .minus::after {content:''; background-position:0 0;}
 .pd_detail .option_box .opt_count .number_count .minus::after {content:''; background-position:0 0;}
-.pd_detail .option_box .opt_count .number_count input[type='text'] {width:3.2rem; height:3.2rem; padding:0; text-align:center; color:#222; font-size:1.5rem; font-weight:200; border:none; font-family:'LATO','Noto Sans kr',sans-serif;}
+.pd_detail .option_box .opt_count .number_count input[type='text'] {width:3.2rem; height:3.2rem; padding:0; text-align:center; color:#222; font-size:1.5rem; font-weight:200; border:none; font-family:'LATO','Noto Sans kr',sans-serif; background:#fff;}
 .pd_detail .price_box {padding:1rem 2rem; border-top:1px solid #222;}
 .pd_detail .price_box {padding:1rem 2rem; border-top:1px solid #222;}
 .pd_detail .price_box::after {content:''; clear:both; display:block;}
 .pd_detail .price_box::after {content:''; clear:both; display:block;}
 .pd_detail .price_box .number {float:left; color:#666; font-size:1.2rem; font-weight:200; margin-top:0.3rem}
 .pd_detail .price_box .number {float:left; color:#666; font-size:1.2rem; font-weight:200; margin-top:0.3rem}
@@ -609,7 +620,7 @@
 .riview_box .best_review a .lap > div{display:table-cell; vertical-align:middle;}
 .riview_box .best_review a .lap > div{display:table-cell; vertical-align:middle;}
 .riview_box .best_review a .lap > div.pic{position:relative; width:7.2rem;}
 .riview_box .best_review a .lap > div.pic{position:relative; width:7.2rem;}
 .riview_box .best_review a .lap > .pic + div.txt_best_review{padding-left:1.6rem;}
 .riview_box .best_review a .lap > .pic + div.txt_best_review{padding-left:1.6rem;}
-.riview_box .best_review a .lap > div.txt_best_review p{height:5.5rem; overflow:hidden; line-height:1.6; color:#666; font-size:1.3rem; font-weight:200; display:-webkit-box; text-overflow:ellipsis; -webkit-line-clamp:3; -webkit-box-orient:vertical;}
+.riview_box .best_review a .lap > div.txt_best_review p{height:7.2rem; overflow:hidden; line-height:1.6; color:#666; font-size:1.3rem; font-weight:200; display:-webkit-box; text-overflow:ellipsis; -webkit-line-clamp:3; -webkit-box-orient:vertical;}
 .riview_box .best_review a .star_score {display:block; margin-bottom:0.7rem; vertical-align:middle; image-rendering:pixelated;}
 .riview_box .best_review a .star_score {display:block; margin-bottom:0.7rem; vertical-align:middle; image-rendering:pixelated;}
 .riview_box .best_review a .star_score .star{vertical-align:middle;}
 .riview_box .best_review a .star_score .star{vertical-align:middle;}
 .riview_box .best_review a .pic .thumb {display:block; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
 .riview_box .best_review a .pic .thumb {display:block; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
@@ -676,8 +687,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-footer button{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-footer button{height:5.3rem;}
 .modal.pd_pop.pd_qnawrite_pop .modal-header{border-bottom:0px none;}
 .modal.pd_pop.pd_qnawrite_pop .modal-header{border-bottom:0px none;}
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:100%;overflow:hidden;}
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:100%;}
+/*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 30%);overflow:hidden;}*/
+.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width : calc(100% - 20%)}
 .select_custom .combo .list>li[aria-disabled="true"]{background:#fff;}
 .select_custom .combo .list>li[aria-disabled="true"]{background:#fff;}
 .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc}
 .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 .foldGroup > ul > li{border-bottom:0px none;}
@@ -718,8 +729,27 @@ header .htop.trans{position:absolute; background:transparent !important;}
 #pd_photoreview_close{z-index:1000;}
 #pd_photoreview_close{z-index:1000;}
 #pd_bestreview_close{z-index:1000;}
 #pd_bestreview_close{z-index:1000;}
 #pd_photoreviewlist_close{z-index:1000;}
 #pd_photoreviewlist_close{z-index:1000;}
-
-
+/* 210409 */
+/* pd_pop > 상품썸네일 크게보기 */
+.pd_pop.full_pop.pd_itemthumb_pop {margin-top:0; height:100%;}
+.full_pop.pd_itemthumb_pop .full_pop_container {width:100%; padding:0px;}
+.full_pop.pd_itemthumb_pop .full_pop_container .scaleview {position:relative; display:block; text-align:center; margin-top:40px; z-index:1;}
+.full_pop.pd_itemthumb_pop .full_pop_container .scaleview:first-child {margin-top:0}
+.full_pop.pd_itemthumb_pop .full_pop_container .scaleview video {width:100%;}
+.full_pop.pd_itemthumb_pop .full_pop_container .scaleview img {max-width:100%; cursor:url('/images/pc/cursor_zoomout.png') 0 0, zoom-out;}
+.pd_pop.full_pop {display:none; position:fixed; top:0; bottom:0; left:0; right:0; margin-top:160px; width:100%; height:calc(100% - 160px); overflow-y:auto; z-index:110; background:#fff; line-height:1;}
+.pd_pop .full_popup_wrap .btn_close {position:fixed; right:30px; top:30px; display:inline-block; z-index:130; cursor:pointer;}
+.pd_pop .full_popup_wrap .btn_close a {display:block; width:25px; height:25px; text-indent:-9999px; background:url('/images/pc/ico_pop_cls.png') no-repeat 50% 50%; background-size:100% auto;}
+.salecoupon_pop .close-modal{left:50%; transform:translate(-50%); top:-3.5rem !important;background-image: url(/images/mo/ico_pop_cls_w.png) !important;}
+.pd_detail .size{color:#666666}
+.pd_clickother .item_prod .itemName{display: block;max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
+.pic_list .item_prod .itemName{display: block;max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
+.foldGroup.case2 .fold_answer{padding-top:0;}
+.pd .item_prod{display:block;}
+.pd .itemBrand{width:calc(100% - 10%);}
+.pd .select_custom .combo .list{max-height:100%;}
+.opt_name {margin-bottom:-2rem;}
+.form_field.mb20{margin-bottom:2rem !important}
 
 
 /* 플롯팅 메뉴 > 구매하기 */
 /* 플롯팅 메뉴 > 구매하기 */
 .product_floormenu{position:fixed; bottom:0; left:0; width:100%; height:5.8rem; line-height:5.8rem; z-index:20;}
 .product_floormenu{position:fixed; bottom:0; left:0; width:100%; height:5.8rem; line-height:5.8rem; z-index:20;}
@@ -740,8 +770,9 @@ header .htop.trans{position:absolute; background:transparent !important;}
 
 
 .container.btPop_full.pd_open::after, 
 .container.btPop_full.pd_open::after, 
 .container.btPop_open.pd::after{position:fixed; z-index: 100;}
 .container.btPop_open.pd::after{position:fixed; z-index: 100;}
-.pd_pop.Purchase_pop .btPop_body{max-height:40rem;}
-.btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:auto;}
+/* .pd_pop.Purchase_pop .btPop_body{max-height:70rem;} */
+.pd_pop.Purchase_pop .btPop_body{max-height:calc(100% - 14%);}
+.btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:93%;}
 .btPop_open .btPop.Purchase_pop .btPop_close{width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png);}
 .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;}
 .pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0;}
 .pd_pop.Purchase_pop{}
 .pd_pop.Purchase_pop{}
@@ -760,7 +791,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
     background: linear-gradient(135deg, #ff7800 0%,#fd4b02 100%);
     background: linear-gradient(135deg, #ff7800 0%,#fd4b02 100%);
     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7800', endColorstr='#fd4b02',GradientType=1 );
     filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7800', endColorstr='#fd4b02',GradientType=1 );
 }
 }
-.pd_pop.Purchase_pop .btn_box button.gift > span > span:after{content:''; display:block; position:absolute; bottom:-1rem; left:0.4rem; border:0.5rem solid transparent; border-bottom-color:#fd4801; -webkit-transform:rotate(180deg); transform:rotate(180deg);}
+.pd_pop.Purchase_pop .btn_box button.gift > span > span:after{content:''; display:block; position:absolute; bottom:-1rem; left:0.4rem; border:0.5rem solid transparent; border-bottom-color:#ff7800; -webkit-transform:rotate(180deg); transform:rotate(180deg);}
 .pd_pop.Purchase_pop .btn_box button.cart{background-color:#222222;}
 .pd_pop.Purchase_pop .btn_box button.cart{background-color:#222222;}
 .pd_pop.Purchase_pop .btn_box button.buyNow{background-color:#fd4801;}
 .pd_pop.Purchase_pop .btn_box button.buyNow{background-color:#fd4801;}
 .pd_pop.Purchase_pop .npay_box{margin-top:2.8rem; margin-bottom:2.5rem; border-top:2px solid #222; height:7.4rem;}
 .pd_pop.Purchase_pop .npay_box{margin-top:2.8rem; margin-bottom:2.5rem; border-top:2px solid #222; height:7.4rem;}
@@ -777,7 +808,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 
 
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */
 /* 토스트팝업 > 구매하기 > 옵션선택팝업 */
 .pd_pop.Purchase_pop .pop_option_select{display:none; position:absolute; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:500; background: #fff;}
 .pd_pop.Purchase_pop .pop_option_select{display:none; position:absolute; bottom:0; left:0; width:100%; box-sizing:border-box; z-index:500; background: #fff;}
-.pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:auto; min-height:50rem; max-height:50rem; background-color:#fff;}
+.pd_pop.Purchase_pop .pop_option_select .pp_body{position:relative; padding:2rem; overflow:auto; min-height:80rem; max-height:80rem; background-color:#fff;}
 .pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
 .pd_pop.Purchase_pop .pop_option_select .close{opacity: 1; position: absolute; z-index: 98; top: -3.8rem; left: 50%; transform: translate(-50%); display: block; border: 0; width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png); text-indent: -9999px; background-size: contain; background-repeat: no-repeat; background-position: center center; background-color: transparent;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header{margin-bottom:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header{margin-bottom:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header:after{display:block; content:''; clear:both;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header:after{display:block; content:''; clear:both;}
@@ -785,12 +816,17 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .check_excluding{float:right; width:auto;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .check_excluding{float:right; width:auto;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .check_excluding.form_field input[type="checkbox"] + label{ font-size:1.3rem; color:#222;}
 .pd_pop.Purchase_pop .pop_option_select .opt_header .check_excluding.form_field input[type="checkbox"] + label{ font-size:1.3rem; color:#222;}
 .pd_pop.Purchase_pop .pop_option_select .text_excluding{margin-top:-1rem; padding:1.2rem; background-color:#383838; font-size:1.3rem; color:#fff; text-align:center;}
 .pd_pop.Purchase_pop .pop_option_select .text_excluding{margin-top:-1rem; padding:1.2rem; background-color:#383838; font-size:1.3rem; color:#fff; text-align:center;}
-.pd_pop.Purchase_pop .select_custom .combo .select{font-size:1.4rem;}
+.pd_pop.Purchase_pop .select_custom .combo .select{font-size:1.4rem; height:auto;}
 .pd_pop.Purchase_pop .pop_option_select .setOption{}
 .pd_pop.Purchase_pop .pop_option_select .setOption{}
 .pd_pop.Purchase_pop .pop_option_select .setOption .title{margin-bottom:1rem;}
 .pd_pop.Purchase_pop .pop_option_select .setOption .title{margin-bottom:1rem;}
 .pd_pop.Purchase_pop .pop_option_select .setOption .form_wrap{margin-top:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .setOption .form_wrap{margin-top:2rem;}
 .pd_pop.Purchase_pop .pop_option_select .setOption .form_wrap:first-child{margin-top:0;}
 .pd_pop.Purchase_pop .pop_option_select .setOption .form_wrap:first-child{margin-top:0;}
 
 
+.pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field .select {padding-left: 5rem;}
+.pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field:nth-child(1) .select:before {content: '옵션1';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem;}
+.pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field:nth-child(2) .select:before {content: '옵션2';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem;}
+
+
 /* pd_popup 공통 */
 /* pd_popup 공통 */
 .modal.pd_pop .opt_select .form_field {margin-top:0.5rem;}
 .modal.pd_pop .opt_select .form_field {margin-top:0.5rem;}
 .modal.pd_pop .info_txt ul li {position:relative; font-size:1.1rem; color:#888; padding-left:0.8rem; margin-bottom:0.3rem;}
 .modal.pd_pop .info_txt ul li {position:relative; font-size:1.1rem; color:#888; padding-left:0.8rem; margin-bottom:0.3rem;}
@@ -924,7 +960,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont {display:none; position:relative;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont {display:none; position:relative;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont::after {content:''; clear:both; display:block;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont::after {content:''; clear:both; display:block;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont:first-of-type {display:block}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont:first-of-type {display:block}
-.modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {display:block; text-align:center; background-color:#b2ffff;}
+.modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {display:block; text-align:center; border:0.1rem solid #eeeeee; padding:8rem 3rem;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl {text-align:left; margin-top:3rem; font-size:1.3rem; word-break:keep-all;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl {text-align:left; margin-top:3rem; font-size:1.3rem; word-break:keep-all;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div {padding:0 0 2rem}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div {padding:0 0 2rem}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div dt {margin-bottom:0.5rem; color:#222; font-weight:300;}
 .modal.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div dt {margin-bottom:0.5rem; color:#222; font-weight:300;}
@@ -968,8 +1004,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state {padding:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state {padding:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink {display:table-cell; width:100%; height:10.5rem; padding-left:9.0rem; vertical-align:middle;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink {display:table-cell; width:100%; height:10.5rem; padding-left:9.0rem; vertical-align:middle;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; width:7.0rem; height:10.5rem; padding:0; margin-bottom:0; z-index:2;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; width:7.0rem; height:10.5rem; padding:0; margin-bottom:0; z-index:2;}
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; margin:0;}
-.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-left:0;}
+.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemBrand {display:block; margin:0; width : calc(100% - 20%)}
+/*.modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-left:0;}*/
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice {margin:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice {margin:0;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap{position: relative;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap{position: relative;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap .itemPercent {position:relative;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap .itemPercent {position:relative;}
@@ -1245,6 +1281,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .txt_review_box{height:1.8rem; overflow:hidden;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .txt_review_box{height:1.8rem; overflow:hidden;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .response_box2{display:none;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .response_box2{display:none;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .reply_box{display:none;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .reply_box{display:none;}
+/*.modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active{position:absolute; bottom:0; z-index:999;}*/
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .txt_review_box{height:auto; overflow:hidden;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .txt_review_box{height:auto; overflow:hidden;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .response_box2{display:block;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .response_box2{display:block;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .reply_box{display:block;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .reply_box{display:block;}
@@ -1368,8 +1405,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .item_blk .item_prod .item_state {position: relative; display:table; width:100%; box-sizing: border-box;}
 .item_blk .item_prod .item_state {position: relative; display:table; width:100%; box-sizing: border-box;}
 .item_blk .item_prod .itemLink{position: relative; display:table-cell; width: 100%; height:60px; padding-left:56px; vertical-align: middle;}
 .item_blk .item_prod .itemLink{position: relative; display:table-cell; width: 100%; height:60px; padding-left:56px; vertical-align: middle;}
 .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding: 0; width:40px; height:60px; z-index:2;}
 .item_blk .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding: 0; width:40px; height:60px; z-index:2;}
-.item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:30rem;overflow:hidden;}
-.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:30rem;}
+.item_blk .item_prod .item_state .itemLink .itemBrand {display:block; font-size:1rem; color:#888888; font-weight:300; margin-left:0; margin-right:0; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width : calc(100% - 20%);overflow:hidden;}
+.item_blk .item_prod .item_state .itemLink .itemName {display:block; margin-top:0.5rem; font-size:1.3rem; max-height: 3.3rem; margin-left:0; margin-right:0; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-height: 3.3rem; overflow: hidden; white-space: normal; overflow-wrap: break-word; width:calc(100% - 20%);}
 .item_blk .item_prod .item_state .itemLink .itemPrice{margin-left:0; margin-right:0;}
 .item_blk .item_prod .item_state .itemLink .itemPrice{margin-left:0; margin-right:0;}
 /*select_custom > item_prod*/
 /*select_custom > item_prod*/
 .select_custom .select .item_prod{margin:0; padding-right:0; overflow:hidden;}
 .select_custom .select .item_prod{margin:0; padding-right:0; overflow:hidden;}
@@ -2142,33 +2179,43 @@ header .htop.trans{position:absolute; background:transparent !important;}
 
 
 
 
 /*===================== 검색 ===================*/
 /*===================== 검색 ===================*/
+.modal.pop_full.sch {overflow-x:hidden;}
+.modal.pop_full.sch .modal-header {border-bottom: 0;}
+.modal.pop_full.sch .modal-body {padding:0;}
+.sch {font-size: 1.4rem;}
 .sch .sch_result{background-color:#f5f5f5;}
 .sch .sch_result{background-color:#f5f5f5;}
 .sch .sch_result .inner{background-color:#fff;}
 .sch .sch_result .inner{background-color:#fff;}
-.sch .sch_result .brand_title { width: 100%; height: 4.3rem; margin: 2.4rem 0 0; border-bottom: 0.2rem solid black; }
-.sch .sch_result .brand_title input { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 100; color: #888; border-bottom:0.2rem solid #000; margin-bottom:1.6rem;}
-.sch .sch_result .brand_title .btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1.2rem; right: 5.5rem; }
-.sch .sch_result .brand_title button img { width: 2rem; height: 2rem; position: absolute; top: 1.2rem; right: 2.5rem;}
+.sch .sch_result .sch_title { width: 100%; height: 4.3rem; margin: 2rem 0 0.7rem; border-bottom: 0.2rem solid black; }
+.sch .sch_result .sch_title input { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 200; color: #888; border-bottom:0.2rem solid #000; margin-bottom:0rem;}
+.sch .sch_result .sch_title .btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1.2rem; right: 5.5rem; background:#aaa url(/images/mo/ico_sch_del_w.png) no-repeat center; background-size:1.1rem; text-indent:-999em;}
+.sch .sch_result .sch_title button img { width: 2rem; height: 2rem; position: absolute; top: 1.2rem; right: 2.5rem;}
 .sch .sch_result .hot-key{font-size:1.6rem; margin-bottom:1.6rem; margin-left:2rem}
 .sch .sch_result .hot-key{font-size:1.6rem; margin-bottom:1.6rem; margin-left:2rem}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper{}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper{}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper .swiper-slide{}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper .swiper-slide{}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper .swiper-slide > a{display:inline-block; background-color:#f5f5f5; padding:0.8rem 1.3rem; border-radius:2rem;}
 .sch .sch_result .related_keyword .sch_list_slide .swiper-wrapper .swiper-slide > a{display:inline-block; background-color:#f5f5f5; padding:0.8rem 1.3rem; border-radius:2rem;}
-.sch .sch_result .area_taps{}
-.sch .sch_result .area_taps > ul{display:flex; border-top:1px solid #eeeeee; border-bottom:1px solid #eeeeee;}
-.sch .sch_result .area_taps > ul > li{width:33.3%; text-align:center;}
-.sch .sch_result .area_taps > ul > li > a{display:block; padding:1.5rem 0; font-size:1.4rem; color:#000; font-weight:600; margin-top:0.3rem;}
-.sch .sch_result .area_taps > ul > li > a.on{color:#fd4802; border-bottom:0.2rem solid #fd4802;}
-.sch .sch_result .area_taps > ul > li > a > span{font-size:0.8rem; color:#888888; margin-left:0.2rem}
-.sch .sch_result .tbj_product .swiper-container{overflow:visible;}
-.sch .sch_result .tbj_product .swiper-wrapper{}
-.sch .sch_result .tbj_product .swiper-slide{display:flex; margin-right:0.6rem;}
-.sch .sch_result .tbj_product .itemPrice_original{width:3rem;}
-.sch .sch_result .tbj_product .item_prod .s-text{margin-top:1.5rem;}
-.sch .sch_result .tbj_product > h3{padding:4rem 0 2rem; font-size:1.5rem;}
-.sch .sch_result .tbj_product.no-slide .filter-list{margin:4rem 0 0}
-.sch .sch_result .tbj_product.no-slide > h1{font-size:1.8rem; margin-bottom:2.3rem; font-weight:bold;}
-.sch .sch_result .tbj_product.no-slide .item_prod{width:49%; float:left; margin-bottom:3.6rem; position:relative;}
-.sch .sch_result .tbj_product.no-slide .item_prod:nth-of-type(even){float:right;}
-.sch .sch_result .tbj_product.no-slide .item_prod .s-text{margin-top:1.5rem}
+
+.sch .sch_result .tabWrap{}
+/* .sch .sch_result .tabWrap > ul{display:flex; border-top:1px solid #eeeeee; border-bottom:1px solid #eeeeee;} */
+/* .sch .sch_result .tabWrap > ul > li{width:33.3%; text-align:center;} */
+/* .sch .sch_result .tabWrap > ul > li > a{display:block; padding:1.5rem 0; font-size:1.4rem; color:#000; font-weight:600; margin-top:0.3rem;} */
+/* .sch .sch_result .tabWrap > ul > li > a.on{color:#fd4802; border-bottom:0.2rem solid #fd4802;} */
+.sch .sch_result .tabWrap > ul > li > a > span{font-size:0.8rem; color:#888888; margin-left:0.2rem}
+
+/* .sch .sch_result .store_product {padding-bottom: 4.7rem;} */
+.sch .sch_result .store_product .swiper-container{overflow:visible;}
+.sch .sch_result .store_product .swiper-wrapper{}
+.sch .sch_result .store_product .swiper-slide{display:flex;}
+.sch .sch_result .store_product .itemPrice_original{width:3rem;}
+.sch .sch_result .store_product .item_prod .s-text{margin-top:1.5rem;}
+.sch .sch_result .store_product > h3{padding:4rem 0 2rem; font-size:1.5rem;}
+
+.sch .sch_result .store_product.no-slide .filter-list{margin:4rem 0 0}
+.sch .sch_result .store_product.no-slide > h1{font-size:1.8rem; margin-bottom:2.3rem; font-weight:bold;}
+.sch .sch_result .store_product.no-slide .item_prod{width:49%; float:left; margin-bottom:3.6rem; position:relative;}
+.sch .sch_result .store_product.no-slide .item_prod:nth-of-type(even){float:right;}
+.sch .sch_result .store_product.no-slide .item_prod .s-text{margin-top:1.5rem}
+.sch .sch_result .recommand_product {margin-top: 1.2rem; padding-bottom: 4.7rem;}
+.sch .sch_result .recommand_product h3{padding:4rem 0 2rem; font-size:1.5rem;}
 .sch .sch_result .banner{margin:0 -2rem;}
 .sch .sch_result .banner{margin:0 -2rem;}
 .sch .sch_result .banner > img{width:100%; margin-bottom:4rem;}
 .sch .sch_result .banner > img{width:100%; margin-bottom:4rem;}
 .sch .sch_result .btPop_full{margin-top:59rem}
 .sch .sch_result .btPop_full{margin-top:59rem}
@@ -2177,8 +2224,11 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .btPop_full .btPop_body > ul > li > a{display:block; border:0.1rem solid #eeeeee; text-align:center; padding:1.4rem 0; font-weight:600; border-radius:3rem; margin-bottom:0.8rem; color:#686868}
 .sch .sch_result .btPop_full .btPop_body > ul > li > a{display:block; border:0.1rem solid #eeeeee; text-align:center; padding:1.4rem 0; font-weight:600; border-radius:3rem; margin-bottom:0.8rem; color:#686868}
 .sch .sch_result .btPop_full .btPop_body > ul > li > a.on{border:0.1rem solid #fd4802; color:#fd4802}
 .sch .sch_result .btPop_full .btPop_body > ul > li > a.on{border:0.1rem solid #fd4802; color:#fd4802}
 
 
-.filter-list{border-bottom: 0.2rem solid #f4f4f4; display:flex; justify-content:space-between;padding-bottom:2rem; font-size:1.2rem}
+.filter-list{display:flex; justify-content:space-between; font-size:1.2rem}
+.filter-list .f_left h3 {font-size: 1.6rem;}
 .filter-list .f_left > span{color:#fd4802; font-weight:bold;}
 .filter-list .f_left > span{color:#fd4802; font-weight:bold;}
+.filter-list .f_right .allxBtn {font-size: 1.2rem; color:#888;}
+.filter-list .f_right > a {padding-right: 1.1rem; font-size: 1.3rem; color:#666; background: url(/images/mo/ico_btn_detail.png) no-repeat right 0.1rem; background-size:0.5rem 0.9rem;}
 .filter-list .f_right > a:nth-of-type(1) > span{display:inline-block; width:0.7rem; height:0.4rem; background:url(/images/mo/shc_arrow.png); position:relative; top:-0.2rem; margin-left:0.5rem}
 .filter-list .f_right > a:nth-of-type(1) > span{display:inline-block; width:0.7rem; height:0.4rem; background:url(/images/mo/shc_arrow.png); position:relative; top:-0.2rem; margin-left:0.5rem}
 .filter-list .f_right > a:nth-of-type(2){margin-left:1rem}
 .filter-list .f_right > a:nth-of-type(2){margin-left:1rem}
 .filter-list .f_right > a:nth-of-type(2) > span{display:inline-block; width:1rem; height:1rem; background:url(/images/mo/shc_filter.png); position:relative; top:0.1rem; margin-left:0.5rem}
 .filter-list .f_right > a:nth-of-type(2) > span{display:inline-block; width:1rem; height:1rem; background:url(/images/mo/shc_filter.png); position:relative; top:0.1rem; margin-left:0.5rem}
@@ -2189,14 +2239,34 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .list_content .brand{display:none;}
 .sch .sch_result .list_content .brand{display:none;}
 .sch .sch_result .list_content.nodata .brand{display:block;}
 .sch .sch_result .list_content.nodata .brand{display:block;}
 .sch .sch_result .inner.nodata:last-child {margin-bottom: 14rem;}
 .sch .sch_result .inner.nodata:last-child {margin-bottom: 14rem;}
-.sch .sch_result .brand.nodata { text-align: center;}
-.sch .sch_result .brand.nodata p { padding: 0 0 2.4rem; font-size: 1.4rem; color: #666;}
-.sch .sch_result .brand.nodata p.type2 > span{color:#fd4802}
-.sch .sch_result .brand.nodata .btn { font-size: 1.2rem; border: 0.1rem solid #888; height: 3rem; padding: 0 1rem;}
-.sch .sch_result .tbj_product.no-slide .product-wrapper{overflow:hidden;}
-.sch .sch_result .tbj_product.no-slide.upline{margin-top:1.2rem;}
-
-/* sch_result 기획전 */
+.sch .sch_result .nodata { text-align: center;}
+.sch .sch_result .nodata p { padding: 0 0; font-size: 1.4rem; color: #666;}
+.sch .sch_result .nodata p > span{color:#fd4802}
+.sch .sch_result .nodata .btn {margin-top: 1rem; font-size: 1.2rem; border: 0.1rem solid #888; height: 3rem; padding: 0 1rem;}
+.sch .sch_result .store_product.no-slide .product-wrapper{overflow:hidden;}
+.sch .sch_result .store_product.no-slide.upline{margin-top:1.2rem;}
+
+/* sch_result 이벤트 */
+.sch .area_thumb_list {}
+.sch .area_thumb_list .thumb_list {}
+.sch .area_thumb_list .thumb_list ul {}
+.sch .area_thumb_list .thumb_list ul li {width:100%;margin-top:3.0rem;}
+.sch .area_thumb_list .thumb_list ul li a {display:block; position:relative;}
+.sch .area_thumb_list .thumb_list ul li a .rank {z-index:2;}
+.sch .area_thumb_list .thumb_list ul li a .thumb {display:block; position:relative; width:100%; height:0; padding-top:100%; background:#f5f5f5;}
+.sch .area_thumb_list .thumb_list ul li a .thumb img {position:absolute; left:0; top:50%; transform:translateY(-50%); width:100%; z-index:1}
+.sch .area_thumb_list .thumb_list ul li a .txt {margin-top:1.5rem; padding:0 0.5rem 0;}
+.sch .area_thumb_list .thumb_list ul li a .txt .title {display:block; display: -webkit-box; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; height:auto; line-height:2.2rem; color:#222; font-weight:500; font-size:1.4rem; word-break:keep-all; white-space:normal;}
+.sch .area_thumb_list .thumb_list ul li a .txt .date {display:block; margin-top:1.5rem; color:#888; font-size:1.4rem; font-weight:300;}
+.sch .area_thumb_list .nodata {padding:8.0rem 0 10.0rem;  text-align:center;}
+.sch .area_thumb_list .nodata .txt_box {color:#666; font-size:1.6rem; font-weight:300; line-height:2.6rem;}
+.sch .area_thumb_list .nodata .txt_box::before {content:''; display:block; width:3.6rem; height:4.6rem; margin:0 auto 2.4rem; background:url('/images/mo/ico_content_none.png') no-repeat;}
+.sch .area_thumb_list .nodata .txt_box span {color:#fd4802; font-weight:500;}
+.sch .area_thumb_list .nodata .btn_box {margin-top:4.0rem;}
+.sch .area_thumb_list .nodata .btn_box .btn span {color:#222; font-size:1.4rem; font-weight:300;}
+
+
+
 .sch .sch_result .item_prod{width:100%;}
 .sch .sch_result .item_prod{width:100%;}
 .sch .sch_result .item_prod .itemName{margin-top:1rem; color:#535353}
 .sch .sch_result .item_prod .itemName{margin-top:1rem; color:#535353}
 .sch .sch_result .item_prod .rank::after{background-color:#fd4802;}
 .sch .sch_result .item_prod .rank::after{background-color:#fd4802;}
@@ -2209,32 +2279,44 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .item_prod .itemEvent p:nth-of-type(1){font-size:1.4rem;}
 .sch .sch_result .item_prod .itemEvent p:nth-of-type(1){font-size:1.4rem;}
 .sch .sch_result .item_prod .itemEvent p:nth-of-type(2){font-size:0.9rem; color:#8b8b8b}
 .sch .sch_result .item_prod .itemEvent p:nth-of-type(2){font-size:0.9rem; color:#8b8b8b}
 
 
-.sch .sch_result.all .tbj_product{margin-top:1.2rem}
-.sch .sch_result.all .search-list{margin:0 -2rem; padding:0 2rem; max-height:41rem; overflow:auto;}
-.sch .sch_result.all .search-list > ul{margin-top:1.4rem; margin-bottom:5rem;}
-.sch .sch_result.all .search-list > ul > li > a{display:flex; justify-content:space-between; padding:1rem 0 1rem 2rem;}
-.sch .sch_result.all .search-list > ul > li > a > p{position:relative;}
-.sch .sch_result.all .search-list > ul > li > a > p::after{content:""; background:url(/images/mo/shc_clock.png) no-repeat; width:1.5rem; height:1.6rem; display:inline-block; position:absolute; left:-2rem; top:-0.1rem}
-.sch .sch_result.all .search-list > ul > li > a > span{color:#8d8d8d}
-.sch .sch_result.all .allresult-tit{display:flex; justify-content:space-between;}
-.sch .sch_result.all .allresult-tit > h3{font-size:1.5rem; margin-top:2.5rem; margin-bottom:2rem}
-.sch .sch_result.all .allresult-tit > p{margin-right:1.9rem; margin-top:2.5rem; font-size:1.2rem; color:#888888}
-.sch .sch_result.all .allresult-tit > p::after{content:""; background:url(/images/mo/shc_refresh.png) no-repeat; width:1.1rem; height:1.1rem; display:inline-block; position:absolute; margin-top:0.2rem; right:2.1rem;}
-.sch .sch_result.all .allresult-tit > button{margin-right:1.9rem; font-size:1.2rem; color:#888888}
-.sch .sch_result.all .allresult-tit > button::after{content:""; background:url(/images/mo/shc_refresh.png) no-repeat; width:1.1rem; height:1.1rem; display:inline-block; position:absolute; margin-top:0.2rem; right:2.1rem;}
-.sch .sch_result.all .itemTag{border:0.1rem solid #fd4802; display:inline; padding:0.3rem 0.6rem; border-radius:1rem; position:relative; top:1rem; font-size:0.6rem; color:#fd4802}
-.sch .sch_result.all .relative-list{margin:0 -2rem; padding:0 2rem; max-height:33rem; overflow-y:scroll;}
-.sch .sch_result.all .relative-list > ul{padding-top:1.4rem;}
-.sch .sch_result.all .relative-list > ul > li > a {display:block; padding:0.6rem 0;}
-.sch .sch_result.all .relative-list > ul > li > a > p{font-weight:500;}
-.sch .sch_result.all .relative-list > ul > li > a > p > span{color:#fd4802;}
-.sch .sch_result.all .category{margin-top:1.2rem;}
-.sch .sch_result.all .category > h3{font-size:1.5rem; padding-top:2.4rem}
-.sch .sch_result.all .category > ul{margin-top:1.2rem}
-.sch .sch_result.all .category > ul > li > p{display:block; padding:0.5rem 0; color:#a5a5a5; font-size:1.2rem;}
-.sch .sch_result.all .category > ul > li > p > span{color:#222222}
-.sch .sch_result.all .brand.nodata > p > span{color:#fd4802;}
-.sch .sch_result.all .tbj_product.no-slide > h2{font-size:1.5rem; padding-top:2.3rem; margin-bottom:2rem; font-weight:500;}
+.sch .sch_result .now_view{margin-top:1.2rem; padding-bottom: 4.7rem;}
+.sch .sch_result .search-list{margin:0 -2rem; padding:0 2rem; max-height:41rem; overflow:hidden;}
+.sch .sch_result .search-list.nodata {margin: 0;}
+.sch .sch_result .search-list.nodata > ul {display: none;}
+.sch .sch_result .search-list.nodata .nodata_txt {display: block;}
+.sch .sch_result .search-list .nodata_txt {display: none; width: 100%; height: 100%; margin:0; padding:14rem 0;}
+.sch .sch_result .search-list > ul{margin-top:1rem; margin-bottom:5rem;}
+.sch .sch_result .search-list > ul > li {position: relative;}
+.sch .sch_result .search-list > ul > li .xBtn {position: absolute; top: 0; right: 0; width: 3.9rem; height: 3.9rem; text-indent: -999em; background: url(/images/mo/ico_btn_cls.png) no-repeat right center; background-size:0.9rem;}
+.sch .sch_result .search-list > ul > li > a{display:flex; justify-content:space-between; padding:1rem 0 1rem 2rem;}
+.sch .sch_result .search-list > ul > li > a > p{position:relative;}
+.sch .sch_result .search-list > ul > li > a > p::after{content:""; background:url(/images/mo/shc_clock.png) no-repeat; width:1.5rem; height:1.6rem; display:inline-block; position:absolute; left:-2rem; top:-0.1rem}
+.sch .sch_result .search-list > ul > li > a > span{color:#8d8d8d}
+.sch .sch_result .allresult-tit{display:flex; justify-content:space-between;}
+.sch .sch_result .allresult-tit > h3{font-size:1.5rem; margin-top:2.5rem; margin-bottom:2rem}
+.sch .sch_result .allresult-tit > p{margin-right:1.9rem; margin-top:2.5rem; font-size:1.2rem; color:#888888}
+.sch .sch_result .allresult-tit > p::after{content:""; background:url(/images/mo/shc_refresh.png) no-repeat; width:1.1rem; height:1.1rem; display:inline-block; position:absolute; margin-top:0.2rem; right:2.1rem;}
+.sch .sch_result .allresult-tit > button{padding-right:1.9rem; font-size:1.2rem; color:#888888; position: relative;}
+.sch .sch_result .allresult-tit > button::after{content:""; background:url(/images/mo/ico_btn_brand.png) no-repeat center/100%; width:1.1rem; height:1.1rem; display:inline-block; position:absolute; top: 50%; right:0; transform:translateY(-50%);}
+.sch .sch_result .itemTag{border:0.1rem solid #fd4802; display:inline-block; padding:0.3rem 0.6rem; border-radius:1rem; position:relative; font-size:0.6rem; color:#fd4802}
+.sch .sch_result .relative-list{margin:0 -2rem; padding:0 2rem; max-height:33rem; overflow-y:scroll;}
+.sch .sch_result .relative-list > ul{padding-top:1.4rem;}
+.sch .sch_result .relative-list > ul > li > a {display:block; padding:0.6rem 0;}
+.sch .sch_result .relative-list > ul > li > a > p{font-weight:500;}
+.sch .sch_result .relative-list > ul > li > a > p > span{color:#fd4802;}
+.sch .sch_result .sch_category{margin-top:1.2rem;}
+.sch .sch_result .sch_category > h3{font-size:1.6rem; padding-top:2.4rem}
+.sch .sch_result .sch_category > ul{margin-top:1.5rem}
+.sch .sch_result .sch_category > ul > li {width: 100%; font-size: 0; white-space: nowrap; text-overflow: ellipsis; overflow:hidden; margin-bottom: 1.5rem;}
+.sch .sch_result .sch_category > ul > li span {position: relative; display: inline-block; font-size: 1.2rem; color: #888; padding-right: 2.5rem; line-height: 1;}
+.sch .sch_result .sch_category > ul > li span:before {content:''; background: url(/images/mo/ico_cate_arrow.png) no-repeat center/100%; position: absolute; top: 0.2rem; right: 1rem; width: 0.5rem; height: 0.9rem;}
+.sch .sch_result .sch_category > ul > li span:last-child {padding-right: 0;}
+.sch .sch_result .sch_category > ul > li span:last-child:before {display: none;}
+.sch .sch_result .sch_category > ul > li span > em {color: #222;}
+.sch .sch_result .sch_category > ul > li > p{display:block; padding:0.5rem 0; color:#a5a5a5; font-size:1.2rem;}
+.sch .sch_result .sch_category > ul > li > p > span{color:#222222}
+.sch .sch_result .brand.nodata > p > span{color:#fd4802;}
+.sch .sch_result .store_product.no-slide > h2{font-size:1.5rem; padding-top:2.3rem; margin-bottom:2rem; font-weight:500;}
 
 
 
 
 /* .sch .sch_result.brand_all .tbj_product{margin-top:1.2rem} */
 /* .sch .sch_result.brand_all .tbj_product{margin-top:1.2rem} */
@@ -2262,15 +2344,16 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result.brand_all .category > ul{margin-top:1.2rem}
 .sch .sch_result.brand_all .category > ul{margin-top:1.2rem}
 .sch .sch_result.brand_all .category > ul > li > p{display:block; padding:0.5rem 0; color:#a5a5a5; font-size:1.2rem;}
 .sch .sch_result.brand_all .category > ul > li > p{display:block; padding:0.5rem 0; color:#a5a5a5; font-size:1.2rem;}
 .sch .sch_result.brand_all .category > ul > li > p > span{color:#222222}
 .sch .sch_result.brand_all .category > ul > li > p > span{color:#222222}
-.sch .sch_result.brand_all .brand.nodata > p > span{color:#fd4802;}
-.sch .sch_result.brand_all .tbj_product.no-slide > h2{font-size:1.5rem; padding-top:2.3rem; margin-bottom:2rem; font-weight:500;}
-.sch .sch_result.brand_all .filter-list{margin-bottom:0 !important}
+.sch .sch_result.brand_all .nodata > p > span{color:#fd4802;}
+.sch .sch_result.brand_all .store_product.no-slide > h2{font-size:1.5rem; padding-top:2.3rem; margin-bottom:2rem; font-weight:500;}
+.sch .sch_result.brand_all .filter-list{margin-bottom:0 !important; border-bottom: 0;}
 .sch .sch_result.brand_all .related_keyword{border-bottom:0.1rem solid #eeeeee; margin:-1.3rem -2rem 0; padding:0 2rem 1.3rem;}
 .sch .sch_result.brand_all .related_keyword{border-bottom:0.1rem solid #eeeeee; margin:-1.3rem -2rem 0; padding:0 2rem 1.3rem;}
 
 
 
 
 /* 전시상품리스트 공통(default) */
 /* 전시상품리스트 공통(default) */
-.sch .sub_category{padding:0.8rem 0; position:relative; top:-0.7rem}
-.sch .sub_category .cate_wrap{white-space:nowrap; overflow-x:scroll;}
+.sch .sub_category{padding:0.8rem 0; position:relative; top:-0.7rem;}
+.sch .sub_category:after {content:''; position: absolute; top: 0; right: 0; height: 100%; width: 6rem; background: linear-gradient(90deg, rgba(0,0,0,0) 0%, #fff 100%);}
+.sch .sub_category .cate_wrap{position: relative; width: 100%; white-space:nowrap; overflow-x:scroll;}
 .sch .sub_category .cate_wrap a{float:none; display:inline-block; margin-bottom:0; background: #f5f5f5; padding:1.2rem 1.4rem; font-size: 1.3rem; color: #000; border-radius:2rem; line-height: 1;}
 .sch .sub_category .cate_wrap a{float:none; display:inline-block; margin-bottom:0; background: #f5f5f5; padding:1.2rem 1.4rem; font-size: 1.3rem; color: #000; border-radius:2rem; line-height: 1;}
 .sch .sub_category .cate_wrap a:first-child{margin-left:2rem;}
 .sch .sub_category .cate_wrap a:first-child{margin-left:2rem;}
 .sch .sub_category .cate_wrap a:last-child{margin-right:2rem;}
 .sch .sub_category .cate_wrap a:last-child{margin-right:2rem;}
@@ -2292,11 +2375,9 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .list_content .list_defult{display:none; text-align:center; padding:11rem 0;}
 .sch .sch_result .list_content .list_defult{display:none; text-align:center; padding:11rem 0;}
 .sch .sch_result .list_content .list_defult p{text-align:center; font-size:1.3rem; color:#888888; font-weight:300;} 
 .sch .sch_result .list_content .list_defult p{text-align:center; font-size:1.3rem; color:#888888; font-weight:300;} 
 .sch .sch_result .list_content .list_defult .btn{margin-top:2.4rem; font-size:1.1rem; height:3rem;}
 .sch .sch_result .list_content .list_defult .btn{margin-top:2.4rem; font-size:1.1rem; height:3rem;}
-.sch .sch_result .list_content .list_last{ padding: 2.5rem 0; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
 .sch .sch_result .list_content .list_defult{display:none; text-align:center; padding:11rem 0;}
 .sch .sch_result .list_content .list_defult{display:none; text-align:center; padding:11rem 0;}
 .sch .sch_result .list_content .list_defult p{text-align:center; font-size:1.3rem; color:#888888; font-weight:300;} 
 .sch .sch_result .list_content .list_defult p{text-align:center; font-size:1.3rem; color:#888888; font-weight:300;} 
 .sch .sch_result .list_content .list_defult .btn{margin-top:2.4rem; font-size:1.1rem; height:3rem;}
 .sch .sch_result .list_content .list_defult .btn{margin-top:2.4rem; font-size:1.1rem; height:3rem;}
-.sch .sch_result .list_content .list_last{ padding: 2.5rem 0; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
 .sch .sch_result .list_content.nodata .lookbookGrp,
 .sch .sch_result .list_content.nodata .lookbookGrp,
 .sch .sch_result .list_content.nodata .itemsGrp,
 .sch .sch_result .list_content.nodata .itemsGrp,
 .sch .sch_result .list_content.nodata .list_item,
 .sch .sch_result .list_content.nodata .list_item,
@@ -2304,9 +2385,10 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .list_content.nodata .list_defult{display:block;} 
 .sch .sch_result .list_content.nodata .list_defult{display:block;} 
 .sch .sch_result .list_item.pro .itemName{font-size:1.1rem; color:#000; width:20rem;}
 .sch .sch_result .list_item.pro .itemName{font-size:1.1rem; color:#000; width:20rem;}
 .sch .sch_result .list_item.pro .itemPrice .itemPrice_sale{font-size:0.9rem; color:#888888}
 .sch .sch_result .list_item.pro .itemPrice .itemPrice_sale{font-size:0.9rem; color:#888888}
-.sch .sch_result .now_view{padding-bottom:3rem; margin-bottom:1.2rem;}
-.sch .sch_result_cont{background-color:#f5f5f5;}
-.sch .sch_result_cont > div{padding:0 2rem; background-color:#fff;}
+.sch .sch_result .now_view{}
+.sch .sch_result .list_last{ padding: 2.5rem 0;margin-top: 5rem; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
+.sch .tab_cont{background-color:#f5f5f5;}
+.sch .tab_cont > div{padding:0 2rem; background-color:#fff;}
 
 
 
 
 
 

+ 54 - 37
src/main/webapp/ux/mo/css/style24_m.css

@@ -900,6 +900,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .voucher.disable .vch_remain {font-size:2.8rem !important;}
 .voucher.disable .vch_remain {font-size:2.8rem !important;}
 
 
 
 
+.btn_group_flex > div > .btn {padding:1.2rem 1.3rem;}
 .goods_btn_wrap {display:flex; flex-wrap: wrap; width:100%; align-items:stretch; flex-direction:row;}
 .goods_btn_wrap {display:flex; flex-wrap: wrap; width:100%; align-items:stretch; flex-direction:row;}
 .goods_btn_wrap > div {margin:0px 0.4rem; flex:1;}
 .goods_btn_wrap > div {margin:0px 0.4rem; flex:1;}
 .goods_btn_wrap > div:first-child {margin-left:0}
 .goods_btn_wrap > div:first-child {margin-left:0}
@@ -934,7 +935,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .mem_info .mem_box > .mem_coupon .coupon_txt02 span {font-size: 18px;}
 .my .mem_info .mem_box > .mem_coupon .coupon_txt02 span {font-size: 18px;}
 .my .mem_info .mem_box > div:last-child {margin-right: 0;}
 .my .mem_info .mem_box > div:last-child {margin-right: 0;}
 .my .mem_info .mem_box > div a, .my .mem_info .mem_box > div .coupon_txt01 {font-size: 16px; color: #000; font-weight: 500;}
 .my .mem_info .mem_box > div a, .my .mem_info .mem_box > div .coupon_txt01 {font-size: 16px; color: #000; font-weight: 500;}
-.my .mem_info .mem_box > div .tit {font-size: 1.1rem; font-weight: 300; color: #888; margin-bottom: 0.5rem;}
+.my .mem_info .mem_box > div .tit {font-size: 1.1rem; font-weight: 300; color: #888; margin-bottom: 0.2rem;}
 .my .mem_info .mem_box > div em {display: inline-block; font-size: 1.4rem; font-weight: 500;}
 .my .mem_info .mem_box > div em {display: inline-block; font-size: 1.4rem; font-weight: 500;}
 
 
 .my .order_info {text-align: center; margin-bottom: 2.4rem; margin-top: -1.2rem;}
 .my .order_info {text-align: center; margin-bottom: 2.4rem; margin-top: -1.2rem;}
@@ -958,7 +959,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .part_goods {position:relative;}
 .my .part_goods {position:relative;}
 .my .part_goods:first-child {margin-top: -1.2rem; padding-top:3rem}
 .my .part_goods:first-child {margin-top: -1.2rem; padding-top:3rem}
 .my .part_goods h3.subH2 span {color:#888; font-size:16px; font-weight:200;}
 .my .part_goods h3.subH2 span {color:#888; font-size:16px; font-weight:200;}
-.my .part_goods .goods_section {padding-bottom: 2.4rem; margin-bottom: 2.4rem; border-bottom: 1px solid #ddd;}
+.my .part_goods .goods_section {padding-bottom: 2.4rem; margin-bottom: 2.4rem; border-bottom: 1px solid #eee;}
 .my .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
 .my .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
 .my .part_goods .btn_area {position:absolute; right:0; top:-8px; z-index:2;}
 .my .part_goods .btn_area {position:absolute; right:0; top:-8px; z-index:2;}
 .my .part_goods .btn_area button {padding:8px 14px; background:#f5f5f5; border:none; color:#222; font-size:14px; font-weight:200;}
 .my .part_goods .btn_area button {padding:8px 14px; background:#f5f5f5; border:none; color:#222; font-size:14px; font-weight:200;}
@@ -1007,9 +1008,10 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .part_goods .od_calc .price .selling_price em {font-size:1.6rem;}
 .part_goods .od_calc .price .selling_price em {font-size:1.6rem;}
 .part_goods .od_calc .price .selling_price.msale {color:#fd4802;}
 .part_goods .od_calc .price .selling_price.msale {color:#fd4802;}
 .part_goods .od_calc .price del {display:block; margin-top:8px; margin-bottom:5px; color:#888; font-size:12px; font-weight:300; line-height:1;}
 .part_goods .od_calc .price del {display:block; margin-top:8px; margin-bottom:5px; color:#888; font-size:12px; font-weight:300; line-height:1;}
-.part_goods .od_calc .price .count {font-size: 1.1rem; color: #888; padding-left: 1rem; margin-left: 1rem; border-left: 1px solid #ddd; border-radius: 0;}
+.part_goods .od_calc .price .count {font-size: 1.1rem; color: #888; border-radius: 0;}
+.part_goods .od_calc .price .selling_price + .count {border-left: 1px solid #ddd; padding-left: 1rem; margin-left: 1rem;}
 
 
-.my .part_goods .goods_gift {border-top: 1px solid #ddd; }
+.my .part_goods .goods_gift {border-top: 1px solid #eee; }
 .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 .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 .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 {}
@@ -1027,7 +1029,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .inner:last-child {padding-bottom: 0;}
 .my .review .inner:last-child {padding-bottom: 0;}
 .my .review .inner.wide {background: #f5f5f5;}
 .my .review .inner.wide {background: #f5f5f5;}
 /* .my .review .inner .tabWrap .inner{margin-bottom:1.3rem;} */
 /* .my .review .inner .tabWrap .inner{margin-bottom:1.3rem;} */
-.my .review .tabIndex{margin-bottom: 0.85rem;}
+.my .review .tabIndex{margin-bottom: 0rem;}
 .my .review .tabIndex li .count{font-size:1.0rem; font-weight: 300; padding-left: 0.5rem;color: #888888;}
 .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 .tabIndex li.active a .count{color: #888888;}
 .my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem); padding:1.3rem 1.6rem;}
 .my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem); padding:1.3rem 1.6rem;}
@@ -1036,6 +1038,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .tip1 .tip_contents:after{left: 79.5%;}
 .my .review .tip1 .tip_contents:after{left: 79.5%;}
 .my .review .tip2 .tip_contents:before,
 .my .review .tip2 .tip_contents:before,
 .my .review .tip2 .tip_contents:after{left: 64.5%;}
 .my .review .tip2 .tip_contents:after{left: 64.5%;}
+.my .review .titWrap {margin-top: 1.2rem;}
 .my .review .tip_wrap ul li{position: relative;padding-left: 1.0rem;font-weight: 200;}
 .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 .tip_wrap ul li::before{content: '';position: absolute;top: 7px;left: 0;background: #858585;width: 3px;height: 3px;}
 .my .review .tab_cont .inner:first-child {margin-top: 0;}
 .my .review .tab_cont .inner:first-child {margin-top: 0;}
@@ -1043,18 +1046,20 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .tab_cont .inner .reviewMy {padding: 2.4rem 0 6rem; font-weight: 200;}
 .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 {padding-top: 2.4rem;}
 .my .review .part_goods:first-child {margin-top: 0;}
 .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_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
 .my .review .part_goods .goods_detail .info_box {padding-top: 1.6rem;}
 .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 .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_detail .info_box .od_name .brand {padding-top: 1.5rem; overflow:hidden; text-overflow: ellipsis; white-space: nowrap;}
+.my .review .part_goods .goods_detail .info_box .od_name .brand span {width: 100%; overflow:hidden; text-overflow: ellipsis; white-space: nowrap;}
+.my .review .part_goods .goods_detail .info_box .od_name .name{-webkit-line-clamp: 1; word-break: break-all;}
+.my .review .part_goods .goods_detail .od_opt .option {overflow:hidden; text-overflow: ellipsis; white-space: nowrap;}
 .my .review .part_goods .goods_btn_wrap {margin-top: 1.5rem;}
 .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 .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_2 */
 .my .review > ul > li .reviewMy {}
 .my .review > ul > li .reviewMy {}
 .my .review .once {background: #ffffff;padding: 0;margin-top: -1.5rem;text-align: center; margin-bottom: -1.2rem;}
 .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 .alert {position: relative;display: inline-block;height: 7.4rem;width: 100%;max-width: calc(100% - 4.0rem);margin: 3.1rem 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 {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 .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%;}
 .my .review button.alertCls {font-size: 0;position: absolute;top: 0;left: 0;width: 100%;height: 100%;}
@@ -1157,7 +1162,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review_radio .radio_li span {display: inline-block; font-weight: 300;}
 .my .review_radio .radio_li span {display: inline-block; font-weight: 300;}
 .my .review_tbl .pics, .my .review_tbl .fileAdd {width: 10.5rem; height: 10.5rem;}
 .my .review_tbl .pics, .my .review_tbl .fileAdd {width: 10.5rem; height: 10.5rem;}
 .my .review_tbl .picsThumbs {max-width:10.5rem; max-height:10.5rem;}
 .my .review_tbl .picsThumbs {max-width:10.5rem; max-height:10.5rem;}
-.my .review_desc {position:relative; margin-top: 20px;padding-left:0.8rem;font-size: 1.1rem;font-weight: 200;color: #666;}
+.my .review_desc {position:relative; margin-top: 2rem;padding-left:0.8rem;font-size: 1.1rem;font-weight: 200;color: #666;}
+.my .review_desc + .review_desc {margin-top: 0.5rem;}
 .my .review_desc:after {content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.3rem;height: 0.3rem;}
 .my .review_desc:after {content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.3rem;height: 0.3rem;}
 .my .review .note {padding: 2rem 0 3rem 0;}
 .my .review .note {padding: 2rem 0 3rem 0;}
 .my .review .note li {position:relative; padding-left: 0.8rem;color: #888888; font-size:1.2rem}
 .my .review .note li {position:relative; padding-left: 0.8rem;color: #888888; font-size:1.2rem}
@@ -1165,11 +1171,11 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 
 
 
 /* my_order_1 */
 /* my_order_1 */
+.my .order_sort {padding-top: 2rem; text-align: right;}
+.my .order_sort a {display: inline-block; font-size: 1.2rem; font-weight: 300; padding-right: 1.4rem; background: url('/images/mo/ico_sort_arrow.png') no-repeat right center; background-size:0.7rem 0.43rem;}
+.my .order_sort a:first-child {margin-right: 2rem;}
 .my .my_order .inner .part_goods {margin-bottom: 1.2rem; margin-top: -1.2rem;}
 .my .my_order .inner .part_goods {margin-bottom: 1.2rem; margin-top: -1.2rem;}
 .my .my_order .inner .part_goods:last-child {margin-bottom: 0;}
 .my .my_order .inner .part_goods:last-child {margin-bottom: 0;}
-.my .my_order .order_sort {padding-top: 2rem; text-align: right;}
-.my .my_order .order_sort a {display: inline-block; font-size: 1.2rem; font-weight: 300; padding-right: 1.4rem; background: url('/images/mo/ico_sort_arrow.png') no-repeat right center; background-size:0.7rem 0.43rem;}
-.my .my_order .order_sort a:first-child {margin-right: 2rem;}
 .popup_box .button_list button {width: 100%; padding:1.1rem 0; border:1px solid #eee; text-align: center; margin-bottom: 0.6rem; border-radius:3rem; font-size: 1.4rem; font-weight: 300; color: #666;}
 .popup_box .button_list button {width: 100%; padding:1.1rem 0; border:1px solid #eee; text-align: center; margin-bottom: 0.6rem; border-radius:3rem; font-size: 1.4rem; font-weight: 300; color: #666;}
 .popup_box .button_list button[disabled] {background: #f5f5f5; color: #bbb;}
 .popup_box .button_list button[disabled] {background: #f5f5f5; color: #bbb;}
 .popup_box .button_list button[disabled] span {text-decoration: line-through; }
 .popup_box .button_list button[disabled] span {text-decoration: line-through; }
@@ -1225,7 +1231,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 
 .icon_tag {display:inline-block;}
 .icon_tag {display:inline-block;}
 .icon_tag::after {content:''; clear:both; display:inline-block; font-weight:300;}
 .icon_tag::after {content:''; clear:both; display:inline-block; font-weight:300;}
-.icon_tag [class*="tag_"] {float:left; display:inline-block; height:2rem; box-sizing:border-box; margin:0px 0 0 4px; padding:0 5px; border:1px solid #ddd; background: #fff; color:#888888; font-size: 11px; font-weight:300; vertical-align:top; line-height:2rem;}
+.icon_tag [class*="tag_"] {float:left; display:inline-block; height:1.7rem; box-sizing:border-box; margin:0px 0 0 4px; padding:0 5px; border:1px solid #ddd; background: #fff; color:#888888; font-size: 11px; font-weight:300; vertical-align:middle; line-height:1.7rem;}
 .icon_tag .tag_stype1 {border-color:#f5f5f5; background:#f5f5f5}
 .icon_tag .tag_stype1 {border-color:#f5f5f5; background:#f5f5f5}
 .icon_tag .tag_stype2 {border-color:#fd4802; background:#fff6f2; color:#fd4802;}
 .icon_tag .tag_stype2 {border-color:#fd4802; background:#fff6f2; color:#fd4802;}
 
 
@@ -1235,8 +1241,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .tbl_wrap .tbl {padding:1.5rem 0 0; border-top:1px solid #000; border-bottom:0;} 
 .tbl_wrap .tbl {padding:1.5rem 0 0; border-top:1px solid #000; border-bottom:0;} 
 .tbl_wrap .tbl table {text-align:left; word-break:keep-all; width: 100%;}
 .tbl_wrap .tbl table {text-align:left; word-break:keep-all; width: 100%;}
 .tbl_wrap .tbl table th,
 .tbl_wrap .tbl table th,
-.tbl_wrap .tbl table td {position:relative; padding:0; font-weight:500; font-size:1.3rem; padding-bottom: 1.5rem; vertical-align: top;}
-.tbl_wrap .tbl table th {font-weight:300; color: #888; font-size: 1.3rem;}
+.tbl_wrap .tbl table td {position:relative; padding:0; font-weight:500; font-size:1.3rem; padding-bottom: 1.5rem; vertical-align: top; word-break: break-all;}
+.tbl_wrap .tbl table th {font-weight:300; color: #888; font-size: 1.3rem; padding-right:1rem;}
 .tbl_wrap .tbl table th.sr-only {position: absolute;}
 .tbl_wrap .tbl table th.sr-only {position: absolute;}
 .tbl_wrap .tbl table tr:last-child th, .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}
 .tbl_wrap .tbl table tr:last-child th, .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}
 
 
@@ -1253,10 +1259,13 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* my_order_3 */
 /* my_order_3 */
 .my .my_goodsy .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding:2rem 0;}
 .my .my_goodsy .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding:2rem 0;}
 .my .my_goodsy .inner {margin-bottom: 1.2rem;}
 .my .my_goodsy .inner {margin-bottom: 1.2rem;}
-.my .my_goodsy .goods_tbl  .tblWrap {margin: 0;}
 .my .my_goodsy .goods_tbl .tbltitWrap {margin-top: 0;}
 .my .my_goodsy .goods_tbl .tbltitWrap {margin-top: 0;}
+.my .my_goodsy .goods_tbl .tblWrap {margin: 0;}
 .my .my_goodsy .goods_tbl th {background: #f5f5f5;}
 .my .my_goodsy .goods_tbl th {background: #f5f5f5;}
-.my .my_goodsy .goods_tbl .tblWrap table tr th, .my .my_goodsy .goods_tbl .tblWrap table tr td {border-left: 0;}
+.my .my_goodsy .goods_tbl .tblWrap table {table-layout: fixed;}
+.my .my_goodsy .goods_tbl .tblWrap table tr th {font-size: 1.3rem;}
+.my .my_goodsy .goods_tbl .tblWrap table tr td {font-size: 1.2rem;}
+.my .my_goodsy .goods_tbl .tblWrap table tr th, .my .my_goodsy .goods_tbl .tblWrap table tr td {border-left: 0; word-break: break-all;}
 
 
 /* my_order_4 */
 /* my_order_4 */
 .my .my_gift {}
 .my .my_gift {}
@@ -1320,7 +1329,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* my_return_2 */
 /* my_return_2 */
 .my .my_return .inner {margin-bottom: 1.2rem;}
 .my .my_return .inner {margin-bottom: 1.2rem;}
 .my .my_return .ship_info dl > div.addr {width: 100%;}
 .my .my_return .ship_info dl > div.addr {width: 100%;}
-.my .my_return .desc_txt {margin-top: -1.5rem; margin-bottom: 3rem;}
+.my .my_return .desc_txt,.my .my_exchange .desc_txt {margin-top: -1.5rem; margin-bottom: 3rem;}
 .my .my_return .tbl .desc_txt {margin-top: 1.3rem; margin-bottom: 0;}
 .my .my_return .tbl .desc_txt {margin-top: 1.3rem; margin-bottom: 0;}
 .my .my_return .tbl_radio label span b {display: inline-block; font-weight: 200; margin-left: 5px;}
 .my .my_return .tbl_radio label span b {display: inline-block; font-weight: 200; margin-left: 5px;}
 .my .my_return .pay_wrap .tbl .refund_deduct {margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px dashed #ddd;}
 .my .my_return .pay_wrap .tbl .refund_deduct {margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px dashed #ddd;}
@@ -1328,10 +1337,11 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* my_return_3 */
 /* my_return_3 */
 .my .my_return .tbl_tarea td {font-weight: 300;}
 .my .my_return .tbl_tarea td {font-weight: 300;}
 .my .my_return .tbl_tarea .textarea_wrap {position: relative;}
 .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 .tbl_tarea .textarea_wrap .txt_cnt, .my .my_exchange .tbl_tarea .textarea_wrap .txt_cnt {position: absolute; right: 1.5rem; bottom: 1.5rem;}
+.my .my_return .tbl_tarea .textarea_wrap textarea, .my .my_exchange .tbl_tarea .textarea_wrap textarea {resize:none; height: 15rem; width: 100%; padding:1.7rem 1.5rem;}
+.my .my_return .retrieve_box.direct input[type="tel"] {width: 100%; padding:0 1rem;}
+.my .my_return .retrieve_box.direct .ship_info dt {font-weight: 500;}
+.my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%; margin-bottom: 0.5rem;}
 .my .my_return .retrieve_box.direct .ship_info dl > div:first-child dd {font-weight: 300;}
 .my .my_return .retrieve_box.direct .ship_info dl > div:first-child dd {font-weight: 300;}
 
 
 /* my_exchange_optionPOP_옵션변경 팝업 */
 /* my_exchange_optionPOP_옵션변경 팝업 */
@@ -1359,7 +1369,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .optionChangePop .option_list li .option_box:after {content:''; display: block; clear:both;}
 .optionChangePop .option_list li .option_box:after {content:''; display: block; clear:both;}
 .optionChangePop .option_list li .option_box button {height: 3.4rem; width: 18.4%; float:left; margin: 0 0.78% 1.56%; padding: 0;}
 .optionChangePop .option_list li .option_box button {height: 3.4rem; width: 18.4%; float:left; margin: 0 0.78% 1.56%; padding: 0;}
 .optionChangePop .option_list li .option_box button.on {border:1px solid #fd4802;}
 .optionChangePop .option_list li .option_box button.on {border:1px solid #fd4802;}
-.optionChangePop .option_list li .option_box button:active {background: #fff;}
+.optionChangePop .option_list li .option_box button:active, .optionChangePop .option_list li .option_box button:hover {background: #fff;}
 .optionChangePop .option_list li .option_box button:disabled {background: #f5f5f5;}
 .optionChangePop .option_list li .option_box button:disabled {background: #f5f5f5;}
 .optionChangePop .option_list li .option_box button:disabled span {text-decoration: line-through; color: #bbb;}
 .optionChangePop .option_list li .option_box button:disabled span {text-decoration: line-through; color: #bbb;}
 .optionChangePop .option_list li .option_name {font-size: 1.4rem; font-weight: 500;}
 .optionChangePop .option_list li .option_name {font-size: 1.4rem; font-weight: 500;}
@@ -1455,6 +1465,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .have_amount dl {display:block; display:block; margin-bottom:1.0rem; font-size:1.4rem; font-weight:300;}
 .my .have_amount dl {display:block; display:block; margin-bottom:1.0rem; font-size:1.4rem; font-weight:300;}
 .my .have_amount dl::after {content:''; clear:both; display:block;}
 .my .have_amount dl::after {content:''; clear:both; display:block;}
 .my .have_amount dl div {padding: 0px 0.5rem;}
 .my .have_amount dl div {padding: 0px 0.5rem;}
+.my .have_amount dl div:after {content:''; display: block; clear:both;}
 .my .have_amount dl div::before {content:''; position:absolute; width:1px; height:1.4rem; left:0px; top:50%; transform:translateY(-50%); background:#ddd;}
 .my .have_amount dl div::before {content:''; position:absolute; width:1px; height:1.4rem; left:0px; top:50%; transform:translateY(-50%); background:#ddd;}
 .my .have_amount dl div:first-child::before {display:none;}
 .my .have_amount dl div:first-child::before {display:none;}
 .my .have_amount dl div > * {vertical-align:top;}
 .my .have_amount dl div > * {vertical-align:top;}
@@ -1478,19 +1489,20 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .point .tab_cont li div span{margin-bottom: 0.3rem;}
 .my .point .tab_cont li div span{margin-bottom: 0.3rem;}
 .my .point .tab_cont li div span[class^="tag"]   {display: inline-block;}
 .my .point .tab_cont li div span[class^="tag"]   {display: inline-block;}
 .my .point .tab_cont li div span[class^="txt"]{display: block;font-size: 1.2rem;color: #666666;margin-bottom: 0.2rem;}
 .my .point .tab_cont li div span[class^="txt"]{display: block;font-size: 1.2rem;color: #666666;margin-bottom: 0.2rem;}
+.my .point .tab_cont li div span.tag_name {font-weight: 500;}
 
 
 /* 쿠폰 */
 /* 쿠폰 */
 .coupon {position:relative; border:1px solid #ddd; box-sizing:border-box; background:#fff;}
 .coupon {position:relative; border:1px solid #ddd; box-sizing:border-box; background:#fff;}
 .coupon > div {position:relative;}
 .coupon > div {position:relative;}
 .coupon > div::after {content:''; position:absolute; top:50%; right:-1px; transform:translateY(-50%); width:15px; height:30px; background:#fff; z-index:2; border:1px solid #ddd; border-right:none; border-top-left-radius:15px; border-bottom-left-radius:15px; overflow:hidden;}
 .coupon > div::after {content:''; position:absolute; top:50%; right:-1px; transform:translateY(-50%); width:15px; height:30px; background:#fff; z-index:2; border:1px solid #ddd; border-right:none; border-top-left-radius:15px; border-bottom-left-radius:15px; overflow:hidden;}
-.coupon p {padding:0 20px;}
+.coupon p {padding:0 2rem;}
 .coupon .cp_name {padding-top:2.5rem; color:#222; font-size:1.3rem; font-weight:300;}
 .coupon .cp_name {padding-top:2.5rem; color:#222; font-size:1.3rem; font-weight:300;}
-.coupon .cp_cont {margin-top:10px;}
-.coupon .cp_cont span {color:#fd4802; font-size:2.1rem; font-weight:500;}
-.coupon .cp_cont span em {font-size:28px; font-weight:700;}
-.coupon .cp_condition {margin-top:1rem; padding-bottom:2.5rem; color:#888; font-size:1.2rem; font-weight:300;}
-.coupon .cp_condition span {display:block; margin-top:1.1rem}
-.coupon .tag {padding: 0.5rem; height: auto;}
+.coupon .cp_cont {}
+.coupon .cp_cont span {color:#fd4802; font-size:2.1rem; font-weight:600;}
+.coupon .cp_cont span em {font-size:28px; font-weight:600;}
+.coupon .cp_condition {margin-top:0.5rem; padding-bottom:2.4rem; color:#888; font-size:1.2rem; font-weight:300;}
+.coupon .cp_condition span {display:block; margin-top:0.8rem}
+.coupon .tag {}
 .coupon .btn_coupon_down {}
 .coupon .btn_coupon_down {}
 .coupon .btn_coupon_down span {position:relative; display:inline-block; padding-right:24px;}
 .coupon .btn_coupon_down span {position:relative; display:inline-block; padding-right:24px;}
 .coupon .btn_coupon_down span::after {content:''; position:absolute; right:0; top:50%; transform:translateY(-50%); width:14px; height:15px; margin-left:10px; background:url('/images/pc/ico_cp_down.png') no-repeat 0 0;}
 .coupon .btn_coupon_down span::after {content:''; position:absolute; right:0; top:50%; transform:translateY(-50%); width:14px; height:15px; margin-left:10px; background:url('/images/pc/ico_cp_down.png') no-repeat 0 0;}
@@ -1515,17 +1527,21 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* popup_쿠폰사용안내 */
 /* popup_쿠폰사용안내 */
 .modal.couponInfo_pop {max-width:none; height:auto;}
 .modal.couponInfo_pop {max-width:none; height:auto;}
 .modal.couponInfo_pop .modal-title {word-break:keep-all; line-height: 1.4;}
 .modal.couponInfo_pop .modal-title {word-break:keep-all; line-height: 1.4;}
+.modal.couponInfo_pop .modal-header {padding:2.4rem 2rem 2.0rem;}
+.modal.couponInfo_pop .modal-body {padding:0 2rem;}
+.modal.couponInfo_pop .modal-body .pop_head {margin-bottom: 1.5rem; padding-bottom: 1.5rem; border-bottom: 1px solid #e5e5e5;}
+.modal.couponInfo_pop .modal-body .pop_head h6 {font-size: 1.3rem; line-height: 1.3; font-weight: 300;}
 .modal.couponInfo_pop .modal-body .pop_cont {line-height:1; max-height:none; padding-bottom: 2rem;}
 .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 button span {line-height:1;}
 .modal.couponInfo_pop .form_field,
 .modal.couponInfo_pop .form_field,
 .modal.couponInfo_pop .form_field > div {display:block; width:100%;}
 .modal.couponInfo_pop .form_field > div {display:block; width:100%;}
 .modal.couponInfo_pop dl {font-size:14px; line-height:1;}
 .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:first-child {margin-top:0}
-.modal.couponInfo_pop dl > div {margin-top:2rem;}
+.modal.couponInfo_pop dl > div {margin-top:1.2rem;}
 .modal.couponInfo_pop dl > div::after {content:''; clear:both; display:block;}
 .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}
-.modal.couponInfo_pop dl dd {color:#666; font-weight:200; padding:0 1rem; margin-top: 1rem;}
+.modal.couponInfo_pop dl dt {position:relative; padding-left:0.8rem; color:#222; font-size: 1.1rem; font-weight:300;}
+.modal.couponInfo_pop dl dt::before {content:''; position:absolute; left:0; top:0.4rem; width:0.2rem; height:0.2rem; background:#888}
+.modal.couponInfo_pop dl dd {color:#666; font-size: 1.1rem; font-weight:200; padding:0 0.8rem; margin-top: 0.66rem;}
 
 
 /* my_gift(myVoucher) */
 /* my_gift(myVoucher) */
 .my .myVoucher .inner {background: #fff;}
 .my .myVoucher .inner {background: #fff;}
@@ -1568,6 +1584,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .myVoucher .tab_cont li div span{margin-bottom: 0.3rem;}
 .my .myVoucher .tab_cont li div span{margin-bottom: 0.3rem;}
 .my .myVoucher .tab_cont li div span[class^="tag"]   {display: inline-block;}
 .my .myVoucher .tab_cont li div span[class^="tag"]   {display: inline-block;}
 .my .myVoucher .tab_cont li div span[class^="txt"]{display: block;font-size: 1.2rem;color: #666666;margin-bottom: 0.2rem;}
 .my .myVoucher .tab_cont li div span[class^="txt"]{display: block;font-size: 1.2rem;color: #666666;margin-bottom: 0.2rem;}
+.my .myVoucher .tab_cont li div span.tag_name {font-weight: 500;}
 .my .myVoucher .voucher {margin-bottom: 2.5rem;}
 .my .myVoucher .voucher {margin-bottom: 2.5rem;}
 
 
 /* my_restock */
 /* my_restock */
@@ -1834,7 +1851,7 @@ background-size:100%;}
 .adrsChange_Pop .modal-footer .btn {height: 4.5rem; font-size: 1.4rem;}
 .adrsChange_Pop .modal-footer .btn {height: 4.5rem; font-size: 1.4rem;}
 .adrsChange_Pop .modal-body .pop_cont {font-size: 1.4rem; line-height: 1.4;}
 .adrsChange_Pop .modal-body .pop_cont {font-size: 1.4rem; line-height: 1.4;}
 .adrsChange_Pop .badge_wrap {display: inline-block;}
 .adrsChange_Pop .badge_wrap {display: inline-block;}
-.adrsChange_Pop .order_badge {font-size: 0.9rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.5rem 0.4rem; margin-left: 1px; vertical-align: top;}
+.adrsChange_Pop .order_badge {font-size: 1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: middle;}
 .adrsChange_Pop .order_bullet_badge {color: #fd4802; border:1px solid #fd4802;}
 .adrsChange_Pop .order_bullet_badge {color: #fd4802; border:1px solid #fd4802;}
 
 
 .adrsChange_Pop  {}
 .adrsChange_Pop  {}
@@ -2190,7 +2207,7 @@ background-size:100%;}
 
 
 /* 쇼핑백 */
 /* 쇼핑백 */
 main.container .shopping_bag .inner:last-child {padding-bottom: 0;}
 main.container .shopping_bag .inner:last-child {padding-bottom: 0;}
-.shopping_bag .od_method label span {vertical-align: bottom;}
+.shopping_bag .od_method label span {vertical-align: middle;}
 .shopping_bag .tbl_radio {} 
 .shopping_bag .tbl_radio {} 
 .shopping_bag .tbl_radio table {width: 100%;}
 .shopping_bag .tbl_radio table {width: 100%;}
 .shopping_bag .tbl_radio th, .shopping_bag .tbl_radio td {padding-top: 1.5rem;}
 .shopping_bag .tbl_radio th, .shopping_bag .tbl_radio td {padding-top: 1.5rem;}

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

@@ -755,7 +755,8 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemsGrp.rowtype .item_prod .itemBadge,
 .itemsGrp.rowtype .item_prod .itemBadge,
 .itemsGrp.rowtype .item_prod .itemcolorchip {display: none;}
 .itemsGrp.rowtype .item_prod .itemcolorchip {display: none;}
 .itemsGrp.rowtype .item_prod .item_state {display:table; width:100%; padding:0;}
 .itemsGrp.rowtype .item_prod .item_state {display:table; width:100%; padding:0;}
-.itemsGrp.rowtype .item_prod .itemLink {display:table-cell; position: relative;vertical-align: middle;width: 100%;height: 420px;padding-left: 330px;padding-right: 50px;}
+/* .itemsGrp.rowtype .item_prod .itemLink {display:table-cell; position: relative;vertical-align: middle;width: 100%;height: 420px;padding-left: 330px;padding-right: 50px;} */
+.itemsGrp.rowtype .item_prod .itemLink {display:table-cell; position: relative;vertical-align: middle;width: 100%;height: 338px;padding-left: 330px;padding-right: 50px;}
 .itemsGrp.rowtype .item_prod .itemLike {left:240px; z-index:99;}
 .itemsGrp.rowtype .item_prod .itemLike {left:240px; z-index:99;}
 .itemsGrp.rowtype .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; padding-top: 0; width: 280px; height: 420px;}
 .itemsGrp.rowtype .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; padding-top: 0; width: 280px; height: 420px;}
 .itemsGrp.rowtype .item_prod .itemPic .shape {z-index: 89;}
 .itemsGrp.rowtype .item_prod .itemPic .shape {z-index: 89;}
@@ -768,7 +769,8 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemsGrp.rowtype .item_prod .itemPrice {font-size: 30px; line-height: 1; font-weight:500; margin-left:0; margin-right:0;}
 .itemsGrp.rowtype .item_prod .itemPrice {font-size: 30px; line-height: 1; font-weight:500; margin-left:0; margin-right:0;}
 .itemsGrp.rowtype .item_prod .itemPrice_original {font-size: 20px; font-weight: 200;}
 .itemsGrp.rowtype .item_prod .itemPrice_original {font-size: 20px; font-weight: 200;}
 .itemsGrp.rowtype .item_prod .itemPercent {font-size: 42px; font-weight:300; line-height: 0.8;}
 .itemsGrp.rowtype .item_prod .itemPercent {font-size: 42px; font-weight:300; line-height: 0.8;}
-.itemsGrp.rowtype .item_prod .shopBagBtn {margin-top:30px;}
+/* .itemsGrp.rowtype .item_prod .shopBagBtn {margin-top:30px;} */
+.itemsGrp.rowtype .item_prod .shopBagBtn {margin-top: 0;position: absolute;bottom: -38px;left: 330px;z-index: 50;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn {width:178px; height:52px; border-color:#a7a7a7; color:#222; font-weight:300;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn {width:178px; height:52px; border-color:#a7a7a7; color:#222; font-weight:300;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn span {position:relative; padding-left:25px; line-height:1;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn span {position:relative; padding-left:25px; line-height:1;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn span::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:15px; height:18px; background: url('/images/pc/ico_shopbag.png') no-repeat 50% 50%;}
 .itemsGrp.rowtype .item_prod .shopBagBtn .btn span::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:15px; height:18px; background: url('/images/pc/ico_shopbag.png') no-repeat 50% 50%;}

+ 1 - 1
src/main/webapp/ux/pc/css/layout.css

@@ -2843,7 +2843,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	[class*="pd_descrp"] {width:1200px; margin-top:80px; padding-top:120px}
 	[class*="pd_descrp"] {width:1200px; margin-top:80px; padding-top:120px}
 	[class*="pd_descrp"] .cont_body {max-height:1100px; overflow:hidden;}
 	[class*="pd_descrp"] .cont_body {max-height:1100px; overflow:hidden;}
 	[class*="pd_descrp"] .cont_body.on {max-height:none;}
 	[class*="pd_descrp"] .cont_body.on {max-height:none;}
-	[class*="pd_descrp"] .cont_body > div {position:relative; width:1200px; margin-left:auto; margin-right:auto}
+	[class*="pd_descrp"] .cont_body > div {position:relative; margin-left:auto; margin-right:auto} /* width:1200px; */
 	[class*="pd_descrp"] .descrp_box {}
 	[class*="pd_descrp"] .descrp_box {}
 	[class*="pd_descrp"] .descrp_box > div {margin-top:40px}
 	[class*="pd_descrp"] .descrp_box > div {margin-top:40px}
 	[class*="pd_descrp"] .descrp_box > div:first-child {margin-top:0;}
 	[class*="pd_descrp"] .descrp_box > div:first-child {margin-top:0;}

+ 4 - 4
src/main/webapp/ux/style24_link.js

@@ -133,7 +133,6 @@ var cfnGoToPage = function(page, ithrCd) {
  *		 MO : redirectUrl 호출하는 페이지에서 넣어줘야됨
  *		 MO : redirectUrl 호출하는 페이지에서 넣어줘야됨
  * </pre>
  * </pre>
  * @param  redirectUrl - 모바일에서 사용 페이지이동으로 하기 때문에
  * @param  redirectUrl - 모바일에서 사용 페이지이동으로 하기 때문에
- * @param  custparams - 회원정보수정 화면에서 사용함
  * @since  : 2021/02/09
  * @since  : 2021/02/09
  * @author : jsshin
  * @author : jsshin
  */
  */
@@ -146,6 +145,7 @@ var cfnOpenCellphoneCertify = function (redirectUrl, custparams) {
 	if ('P' === _frontGb) {
 	if ('P' === _frontGb) {
 		window.open(actionUrl, "popupCellphone", "top=" + popupY + ", left=" + popupX + ", width=" + popupWidth + ", height=" + popupHeight + ", fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbar=no");
 		window.open(actionUrl, "popupCellphone", "top=" + popupY + ", left=" + popupX + ", width=" + popupWidth + ", height=" + popupHeight + ", fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbar=no");
 	} else {
 	} else {
+		console.log('redirectUrl', redirectUrl);
 		if (!gagajf.isNull(redirectUrl)) {
 		if (!gagajf.isNull(redirectUrl)) {
 			actionUrl = actionUrl + "?redirectUrl=" + redirectUrl;
 			actionUrl = actionUrl + "?redirectUrl=" + redirectUrl;
 			if (!gagajf.isNull(custparams)) {
 			if (!gagajf.isNull(custparams)) {
@@ -300,7 +300,7 @@ function cfnAddCart(cartList) {
  *	 cfnLoginNaver();
  *	 cfnLoginNaver();
  *	 호출된 페이지에서
  *	 호출된 페이지에서
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
- *	 MO :
+ *	 MO : SnsCallBackFormMob.html 해당 페이지 후 처리
  * </pre>
  * </pre>
  * @since  : 2021/02/23
  * @since  : 2021/02/23
  * @author : jsshin
  * @author : jsshin
@@ -326,7 +326,7 @@ var cfnLoginNaver = function (requestGb, chkRememberMe) {
  *	 cfnLoginKakao();
  *	 cfnLoginKakao();
  *	 호출된 페이지에서
  *	 호출된 페이지에서
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
- *	 MO :
+ *	 MO : SnsCallBackFormMob.html 해당 페이지 후 처리
  * </pre>
  * </pre>
  * @since  : 2021/02/23
  * @since  : 2021/02/23
  * @author : jsshin
  * @author : jsshin
@@ -352,7 +352,7 @@ var cfnLoginKakao = function (requestGb, chkRememberMe) {
  *	 cfnLoginYes24();
  *	 cfnLoginYes24();
  *	 호출된 페이지에서
  *	 호출된 페이지에서
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
  *	 PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
- *	 MO :
+ *	 MO : SnsCallBackFormMob.html 해당 페이지 후 처리
  * </pre>
  * </pre>
  * @since  : 2021/02/23
  * @since  : 2021/02/23
  * @author : jsshin
  * @author : jsshin