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

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

eskim 5 лет назад
Родитель
Сommit
9478a7e6c1
55 измененных файлов с 1767 добавлено и 659 удалено
  1. 1 1
      src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java
  2. 2 2
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  3. 28 1
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  4. 2 2
      src/main/java/com/style24/front/biz/service/TsfGiftcardService.java
  5. 299 22
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  6. 4 0
      src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java
  7. 17 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  8. 28 2
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  9. 14 38
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  10. 2 13
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  11. 18 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  12. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  13. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  14. 4 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfDelivery.xml
  15. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfGiftcard.xml
  16. 6 6
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  17. 1 0
      src/main/resources/config/application-locd.yml
  18. 6 0
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  19. 1 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  20. 7 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  21. 0 5
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  22. 507 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  23. 49 62
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  24. 13 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  25. 21 8
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  26. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  27. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  28. 86 54
      src/main/webapp/WEB-INF/views/mob/mypage/MypageWishListFormMob.html
  29. 33 10
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  30. 6 0
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  31. 14 4
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  32. 5 5
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  33. 12 1
      src/main/webapp/WEB-INF/views/web/common/layout/MypageLayoutWeb.html
  34. 4 4
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  36. 361 305
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  37. 9 6
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  38. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html
  39. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  40. 15 17
      src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html
  41. 7 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  42. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  43. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  44. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageWishListFormWeb.html
  45. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html
  46. 1 6
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html
  47. 2 2
      src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html
  48. 34 9
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  49. 12 17
      src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html
  50. 38 0
      src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html
  51. 29 1
      src/main/webapp/biz/mypage.js
  52. 1 0
      src/main/webapp/ux/mo/css/common_m.css
  53. 22 9
      src/main/webapp/ux/mo/css/layout_m.css
  54. 3 8
      src/main/webapp/ux/mo/css/style24_m.css
  55. 27 0
      src/main/webapp/ux/style24_link.js

+ 1 - 1
src/main/java/com/style24/front/biz/dao/TsfGiftcardDao.java

@@ -49,7 +49,7 @@ public interface TsfGiftcardDao {
 	 * @author sowon
 	 * @since 2021. 3. 15
 	 */	
-	 void getGiftcardUseConfirm(GiftCard giftcard);
+	 void createGiftcardUseConfirm(GiftCard giftcard);
 	 
 	 /**
 	 * 상품권 api 저장

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

@@ -321,7 +321,7 @@ public class TsfCartService {
 
 			if (cartSqList != null && cartSqList.size() > 0) {		// 장바구니 기존재
 				if (cartSqList.size() > 1) {						// 장바구니 조회 결과 이상시 insert or select 수정 필요
-					throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+					throw new IllegalStateException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
 				} else {
 					cart.setCartSq(cartSqList.iterator().next().getCartSq());
 					cartSqs.add(cart.getCartSq());
@@ -405,7 +405,7 @@ public class TsfCartService {
 
 			if (cartSqList != null && cartSqList.size() > 0) {			// 장바구니 기존재
 				if (cartSqList.size() > 1) {							// 장바구니 조회 결과 이상시 insert or select 수정 필요
-					throw new IllegalArgumentException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
+					throw new IllegalStateException("장바구니 조회에 실패하였습니다. 관리자에게 문의해주세요.");
 				} else {
 					item.setCartSq(cartSqList.iterator().next());
 					cartSqs.add(item.getCartSq());

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

@@ -967,7 +967,6 @@ public class TsfCustomerService {
 		params.setCustNo(customer.getCustNo());
 		params.setSiteCd(customer.getSiteCd());
 		Collection<CustGrade> custGradePolicy = customerDao.getCustGradePolicy(params);
-		result.set("custGradePolicy", custGradePolicy);
 
 		CustGrade expctCustGrade;
 		for (CustGrade grade : custGradePolicy) {
@@ -1043,4 +1042,32 @@ public class TsfCustomerService {
 		}
 	}
 
+
+
+	/*
+	 * 고객 예상등급 이후 정보
+	 *
+	 * @param  custGrade - 고객번호
+	 * @return CustGrade
+	 * @author jsshin
+	 * @since 2021. 05. 11
+	 */
+	public GagaMap getNextCustGradeInfo(CustGrade custGrade) {
+		GagaMap result = new GagaMap();
+		// 1.고객 예상등급 이후 정보
+		List<CustGrade> custGradePolicy = (List<CustGrade>) customerDao.getCustGradePolicy(custGrade);
+		CustGrade nextCustGradePolicy = custGradePolicy.get(0);
+		nextCustGradePolicy.setCustNo(custGrade.getCustNo());
+		// 2.고객 예상등급 이후 정보로 주문금액 확인
+		CustGrade nextCustGrade = customerDao.getExpectedCustGrde(nextCustGradePolicy);
+		if (nextCustGrade != null) {
+			nextCustGradePolicy.setOrdCnt(nextCustGrade.getOrdCnt());
+			nextCustGradePolicy.setSumRealOrdAmt(nextCustGrade.getSumRealOrdAmt());
+		} else {
+			nextCustGradePolicy.setOrdCnt(0);
+			nextCustGradePolicy.setSumRealOrdAmt(0);
+		}
+		result.set("nextCustGradePolicy", nextCustGradePolicy);
+		return result;
+	}
 }

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

@@ -84,7 +84,7 @@ public class TsfGiftcardService {
 	 * @throws Exception
 	 * @since 2021. 3. 15
 	 */
-	public void getGiftcardUseConfirm(GiftCard giftcard) throws Exception {
+	public void createGiftcardUseConfirm(GiftCard giftcard) throws Exception {
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();
 		String ip = TsfSession.getIpAddress();
@@ -132,7 +132,7 @@ public class TsfGiftcardService {
 			giftcard.setRmGfcdAmt(Integer.parseInt(param[1])); // 승인금액
 			giftcard.setUseStDate(param2[0]);
 			giftcard.setUseExpDate(param3[0]);
-			giftcardDao.getGiftcardUseConfirm(giftcard);
+			giftcardDao.createGiftcardUseConfirm(giftcard);
 			
 			int custGfcdSq = giftcardDao.getCustGiftCardSq(pubNo);
 			giftcard.setCustGfcdSq(custGfcdSq);

+ 299 - 22
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1,9 +1,14 @@
 package com.style24.front.biz.service;
 
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.net.ssl.HttpsURLConnection;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -543,30 +548,97 @@ public class TsfOrderService {
 		order.setFrontGb(TsfSession.getFrontGb());
 		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(order);
 		
-		int orderDetailCurrPriceSum 	= 0;
-		int orderDetailRealOrdAmtSum 	= 0;
-		int cpn1DcAmtSum				= 0;
-		int tmtb1DcAmtSum				= 0;
-		int tmtb2DcAmtSum				= 0;
-		int goodsCpnDcAmtSum			= 0;
-		int cartCpnDcAmtSum				= 0;
+		int orgGoodsSumAmt 			= 0;
+		int cpn1DcSumAmt			= 0;
+		int tmtb1DcSumAmt			= 0;
+		int tmtb2DcSumAmt			= 0;
+		int goodsCpnDcSumAmt		= 0;
+		int cartCpnDcSumAmt			= 0;
+		int prePntDcSumAmt			= 0;
+		int pntDcSumAmt				= 0;
+		int gfcdUseSumAmt			= 0;
+		int realOrdSumAmt 			= 0;
 		
-		int cartCurrPriceSum 			= 0;
-		int cartRealOrdAmtSum 			= 0;
+		int cartOrgGoodsSumAmt 		= 0;
+		int cartRealOrdSumAmt 		= 0;
 		
 		// 주문서화면 금액정보 체크
 		for (Order orderDetail : orderDetailList) {
-			orderDetailCurrPriceSum 	= orderDetailCurrPriceSum + orderDetail.getCurrPrice();
-			orderDetailRealOrdAmtSum 	= orderDetailRealOrdAmtSum + orderDetail.getRealOrdAmt();
+			orgGoodsSumAmt 				= orgGoodsSumAmt 	+ orderDetail.getCurrPrice();
+			cpn1DcSumAmt 				= cpn1DcSumAmt 		+ orderDetail.getCpn1DcAmt();
+			tmtb1DcSumAmt 				= tmtb1DcSumAmt 	+ orderDetail.getTmtb1DcAmt();
+			tmtb2DcSumAmt 				= tmtb2DcSumAmt 	+ orderDetail.getTmtb2DcAmt();
+			goodsCpnDcSumAmt			= goodsCpnDcSumAmt 	+ orderDetail.getGoodsCpnDcAmt();
+			cartCpnDcSumAmt				= cartCpnDcSumAmt 	+ orderDetail.getCartCpnDcAmt();
+			prePntDcSumAmt				= prePntDcSumAmt 	+ orderDetail.getPrePntDcAmt();
+			pntDcSumAmt					= pntDcSumAmt 		+ orderDetail.getPntDcAmt();
+			gfcdUseSumAmt				= gfcdUseSumAmt 	+ orderDetail.getGfcdUseAmt();
+			realOrdSumAmt 				= realOrdSumAmt 	+ orderDetail.getRealOrdAmt();
 		}
 		
+		realOrdSumAmt = realOrdSumAmt + order.getDelvSumAmt();
+		
+		if (orgGoodsSumAmt != order.getOrgGoodsSumAmt()) {
+			resultStr = "판매가 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (cpn1DcSumAmt != order.getCpn1DcSumAmt()) {
+			resultStr = "즉시할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (tmtb1DcSumAmt != order.getTmtb1DcSumAmt()) {
+			resultStr = "수량다다익선 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (tmtb2DcSumAmt != order.getTmtb2DcSumAmt()) {
+			resultStr = "금액다다익선 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (goodsCpnDcSumAmt != order.getGoodsCpnDcSumAmt()) {
+			resultStr = "상품쿠폰 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (cartCpnDcSumAmt != order.getCartCpnDcSumAmt()) {
+			resultStr = "장바구니쿠폰 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (prePntDcSumAmt != order.getPrePntDcSumAmt()) {
+			resultStr = "선포인트 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (pntDcSumAmt != order.getPntDcSumAmt()) {
+			resultStr = "포인트 할인 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		if (gfcdUseSumAmt != order.getGfcdUseSumAmt()) {
+			resultStr = "상품권 사용 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		
+		
+		if (realOrdSumAmt != order.getRealOrdSumAmt()) {
+			resultStr = "실결제 금액정보가 잘못 되었습니다.";
+			return resultStr;
+		}
+		
+		
+
 		// 장바구니 금액정보 체크
 		for (Order orderDetail : cartGoodsList) {
-			cartCurrPriceSum 			= cartCurrPriceSum + orderDetail.getOrgCurrPrice();
+			cartOrgGoodsSumAmt 			= cartOrgGoodsSumAmt + orderDetail.getOrgCurrPrice();
 		}
 		
 		// 판매가비교
-		if (orderDetailCurrPriceSum != cartCurrPriceSum) {
+		if (orgGoodsSumAmt != cartOrgGoodsSumAmt) {
 			resultStr = "금액정보가 잘못 되었습니다.";
 			return resultStr;
 		}
@@ -924,23 +996,158 @@ public class TsfOrderService {
 		return "SUCCESS";
 	}
 	
-	public GagaMap nPayReq50(Order param) {
+	public GagaMap nPayReq50(Order param, HttpServletRequest request, HttpServletResponse response) {
 		GagaMap result = new GagaMap();
 
+		// 로그인 정보 조회
+		if(TsfSession.isLogin()) {
+			param.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			param.setCustNo(0);
+			param.setJsessionId(TsfSession.getSessionId());
+		}
+
 		try {
-			param.setFrontGb(TsfSession.getFrontGb());
 			param.setSiteCd(TscConstants.Site.STYLE24.value());
-			if(TsfSession.isLogin()) {
-				param.setCustNo(TsfSession.getInfo().getCustNo());
-			} else {
-				param.setCustNo(0);
-				param.setJsessionId(TsfSession.getSessionId());
-			}
+			param.setFrontGb(TsfSession.getFrontGb());	// 디바이스 정보
+			param.setPrePntDcAmtYn("N");				// 네이버페이 : 선포인트 사용하지 않음으로 강제 지정
+			param.setShotDelvYn("N");					// 네이버페이 : 총알배송 여부 설정 N
+			param.setInsuranceYn("N");					// 네이버페이 : 보증보험 신청 여부 N
 
-			// 장바구니 정보 조회
+			// 장바구니 등록된 주문 정보 조회
 			Collection<Order> cartList = coreOrderService.getCartGoodsList(param);
 
+			// 배송비 정보 조회
+			GagaMap delvMap = coreOrderService.getCartDelvGoodsCntList(cartList, param);
+			param.setDelvFeeCdList((Collection<Order>) delvMap.get("delvFeeCdList"));
+
+			// 주문 상세 정보 세팅
+			for(Order item : cartList) {
+				item.setSavePntAmt(0);
+				item.setOrdAmt((item.getCurrPrice() + item.getOptAddPrice()) * item.getGoodsQty());			// ordAmt = (즉시할인가 + 옵션가) * 수량
+				item.setRealOrdAmt(item.getOrdAmt());														// 네이버페이는 할인 없으므로 ordAmt와 동일
+				item.setShotDelvYn("N");
+				item.setGiftPackYn("N");
+				item.setRegNo(param.getCustNo());
+			}
+			param.setOrderDetailList(cartList);
+
+			// 주문 정보 등록
+			coreOrderService.createPreOrder(param);
+
+			// 네이버페이 기본정보
+			String shopId			= env.getProperty("naverPay.shop.id");				// shopId
+			String certificationKey	= env.getProperty("naverPay.certification.key");	// 네이버페이 인증키
+			String cpaInflowCode	= getCookieValue(request, "CPAValidator");
+			String naverInflowCode	= getCookieValue(request, "NA_CO");
+			String saClickId		= getCookieValue(request, "NVADID");
+			String domain 			= env.getProperty("domain.front");					// 도메인 주소
+			String staticUrl		= "/resources";
+			String goodsImgUrl		= env.getProperty("upload.goods.view");				// 상품 이미지 경로
+			int totPrice			= 0;												// 전체 주문 금액
+
+			log.info("CHECK PARAM ::::: {} / {}", param.getBackUrl(), param.getGoodsUrl());
+
+			// 네이버페이 송부용 xml 작성
+			StringBuffer sb = new StringBuffer();
+			sb.append("<order>");
+			sb.append("<merchantId>").append(shopId).append("</merchantId>");								//<!-- 상점ID -->
+			sb.append("<certiKey>").append("<![CDATA[" + certificationKey + "]]>").append("</certiKey>");	//<!-- 인증키 -->
+			sb.append("<backUrl>").append("<![CDATA[" + param.getBackUrl() + "]]>").append("</backUrl>");	//<!-- 이전페이지 -->
+			sb.append("<interface>");
+			sb.append("<merchantCustomCode1>").append(param.getOrdNo()).append("</merchantCustomCode1>");
+			sb.append("<cpaInflowCode>").append(cpaInflowCode).append("</cpaInflowCode>");
+			sb.append("<naverInflowCode>").append(naverInflowCode).append("</naverInflowCode>");
+			sb.append("<saClickId>").append(saClickId).append("</saClickId>");
+			sb.append("</interface>");
+
+			for(Order item : param.getOrderDetailList()) {
+				//<!-- 상품정보 -->
+				sb.append("<product>");
+				sb.append("<id>").append(item.getGoodsCd()).append("</id>");							//<!-- 상품코드 -->
+				sb.append("<ecMallProductId>").append(item.getGoodsCd()).append("</ecMallProductId>");	//<!-- 상품코드 -->
+				sb.append("<name>").append("<![CDATA[" + item.getGoodsNm() + "]]>").append("</name>");	//<!-- 상품명 -->
+				sb.append("<basePrice>").append(item.getCurrPrice() + item.getOptAddPrice()).append("</basePrice>");						//<!-- 상품금액 -->
+				sb.append("<infoUrl>").append("<![CDATA[http:" + param.getGoodsUrl() + item.getGoodsCd() + "]]>").append("</infoUrl>");		//<!-- 상품상세페이지 URL -->
+				sb.append("<imageUrl>").append("<![CDATA[http:" + goodsImgUrl + "/" + item.getSysImgNm() + "]]>").append("</imageUrl>");	//<!-- 상품원본이미지 URL -->
+
+				// 옵션 정보
+				sb.append("<option>");
+				sb.append("<quantity>").append(item.getGoodsQty()).append("</quantity>");							//<!-- 옵션수량-->
+				sb.append("<price>").append(item.getOptAddPrice()).append("</price>");								//<!-- 옵션금액 -->
+				sb.append("<manageCode>").append("<![CDATA[" + item.getOptCd() + "]]>").append("</manageCode>");	//<!-- 옵션관리코드 -->
+
+				// 칼라코드
+				sb.append("<selectedItem>");
+				sb.append("<type>SELECT</type>");//<!-- 옵션유형 -->
+				sb.append("<name>칼라</name>");//<!-- 옵션명 -->
+				sb.append("<value>");
+				sb.append("<id>").append("<![CDATA[" + item.getOptCd1() + "]]>").append("</id>");//<!-- 칼라코드 -->
+				sb.append("<text>").append("<![CDATA[" + item.getColorNm() + "]]>").append("</text>");//<!-- 칼라명 -->
+				sb.append("</value>");
+				sb.append("</selectedItem>");
+
+				// 사이즈코드
+				sb.append("<selectedItem>");
+				sb.append("<type>SELECT</type>");//<!-- 옵션유형 -->
+				sb.append("<name>사이즈</name>");//<!-- 옵션명 -->
+				sb.append("<value>");
+				sb.append("<id>").append("<![CDATA[" + item.getOptCd2() + "]]>").append("</id>");//<!-- 사이즈코드 -->
+				sb.append("<text>").append("<![CDATA[" + item.getOptCd2() + "]]>").append("</text>");//<!-- 사이즈명 -->
+				sb.append("</value>");
+				sb.append("</selectedItem>");
+				sb.append("</option>");
+
+				// 배송비 판단 후 배송비유형 선택 (추가 기본배송비, 무료배송비 기준 조회후 등록)
+				//<!-- 배송정보 -->
+				String delvFeeCrite = "CHARGE";
+				int delvFee = item.getDelvFee();
+				String feePayType = "PREPAYED";
+				// 배송비 조건
+				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(item.getDelvFeeCrite())) {
+					delvFeeCrite = "CONDITIONAL_FREE";		// 조건부 무료(배송비 조건이 무료이거나 배송 방법이 착불일때만 배송비는 0원으로 변경)
+				} else if(TscConstants.DelvFeeCrite.FREE.value().equals(item.getDelvFeeCrite())) {
+					delvFeeCrite = "FREE";
+					feePayType = "FREE";
+					delvFee = 0;
+				}
+
+				sb.append("<shippingPolicy>");
+				sb.append("<groupId>").append(item.getDelvFeeCd()).append("</groupId>");		//<!-- 배송비묶음그룹ID -->
+				sb.append("<method>DELIVERY</method>");											//<!-- 배송방법 : 택배,소포,등기 -->
+				sb.append("<feeType>").append("CONDITIONAL_FREE").append("</feeType>");			//<!-- 배송비유형 : 유료 -->
+				sb.append("<feePayType>").append("PREPAYED").append("</feePayType>");			//<!-- 배송비결제방법 : 선불 -->
+				sb.append("<feePrice>").append(item.getDelvFee()).append("</feePrice>");		//<!-- 기본배송비 -->
+
+				// 조건부 무료일경우에만 송부
+				if(TscConstants.DelvFeeCrite.NORMAL.value().equals(item.getDelvFeeCrite())) {
+					sb.append("<conditionalFree>");
+					sb.append("<basePrice>").append(item.getMinOrdAmt()).append("</basePrice>");	//<!-- 무료배송비기준 -->
+					sb.append("</conditionalFree>");
+				}
+
+				sb.append("</shippingPolicy>");
+				sb.append("</product>");
+
+				totPrice = totPrice + ((item.getCurrPrice() + item.getOptAddPrice()) * item.getGoodsQty());
+			}
+
+			sb.append("</order>");
+
+			log.info("CHECK NAVER PAY SB ::::: \n{}", sb.toString());
+
+			result = sendOrderInfoToNC(sb);
 
+			// 네이버 페이 주문번호 저장
+			param.setNpayOrdNo(Integer.parseInt(result.get("orderKey").toString()));
+
+			log.info("CHECK NAVER PAY ORD NO ::::: {}", param.getNpayOrdNo());
+
+			// 3.주문정보 저장
+			coreOrderDao.updateNaverPayOrderNo(param);
+			result.put("npayOrderUrl", env.getProperty("naverPay.order.url"));
+			result.put("orderkey", result.get("orderKey").toString());
+			result.put("resultNo", result.get("resultNo").toString());
 
 			result.put("state", "sucess");
 		} catch(Exception e) {
@@ -952,6 +1159,76 @@ public class TsfOrderService {
 
 		return result;
 	}
+
+	private GagaMap sendOrderInfoToNC(StringBuffer sb) throws IOException {
+		GagaMap resultMap = new GagaMap();
+
+		// 1.0, 2.0  일때 구분값 처리
+		URL _url = new URL(env.getProperty("naverPay.order.api.url"));
+		String ENCODING = "UTF-8";
+
+		HttpsURLConnection conn = (HttpsURLConnection)_url.openConnection();
+
+		log.info("CHECK URL ::::: {}", env.getProperty("naverPay.order.api.url"));
+
+		conn.setDoInput(true);
+		conn.setDoOutput(true);
+		conn.setUseCaches(false);
+		conn.setRequestMethod("POST");
+		conn.addRequestProperty("Content-Type", "application/xml; charset=UTF-8");
+
+		// 주문 등록 API 호출
+		Writer writer = new OutputStreamWriter(conn.getOutputStream(), ENCODING);
+		writer.write(sb.toString());
+
+		writer.flush();
+		writer.close();
+
+		int respCode = conn.getResponseCode();
+		log.info("CHECK RESP CODE ::::: {}", respCode);
+
+		if (respCode != 200) {
+			throw new RuntimeException(String.format("NC Response fail : %d %s", respCode, conn.getResponseMessage()));
+		}
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+
+		String[] arr = reader.readLine().toString().split(":");
+
+		log.info("CHECK RESULT ARR ::::: {} / {} / {}", arr[0], arr[1], arr[2]);
+		if ("SUCCESS".equals(arr[0])) {
+			resultMap.put("state", 		arr[0]);
+			resultMap.put("orderKey", 	arr[1]);
+			resultMap.put("resultNo", 	arr[2]);
+		} else {
+			throw new IllegalStateException(String.format("NC Response fail : %d %s", reader.readLine().toString()));
+		}
+
+		conn.disconnect();
+
+		return resultMap;
+	}
+
+	/*
+	 * 쿠키값 가져오기
+	 */
+	private String getCookieValue(HttpServletRequest request, String name) {
+		if (name == null || request == null) {
+			return "";
+		}
+
+		Cookie[] cookies = request.getCookies();
+
+		if (cookies != null) {
+			for (int i = 0; i < cookies.length; i++) {
+				if (name.equals(cookies[i].getName())) {
+					return cookies[i].getValue();
+				}
+			}
+		}
+
+		return "";
+	}
 	
 	/**
 	 * 장바구니정보 주문번호 이력 등록

+ 4 - 0
src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java

@@ -2,6 +2,7 @@ package com.style24.front.biz.thirdparty;
 
 import javax.annotation.PostConstruct;
 
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
@@ -10,6 +11,9 @@ import com.style24.persistence.domain.searchengine.SearchEngine;
 
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 검색엔진 - NHN다이퀘스트
  *

+ 17 - 0
src/main/java/com/style24/front/biz/web/TsfDisplayController.java

@@ -921,4 +921,21 @@ public class TsfDisplayController extends TsfBaseController {
 		return diquest.getTrendKeywordList();
 	}
 
+	/**
+	 * 검색어 레이어
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 5. 11
+	 */
+	@PostMapping("/search/layer")
+	public ModelAndView searchLayerForm() {
+		ModelAndView mav = new ModelAndView();
+
+		//TODO : 이걸로 적용해야함
+//		mav.addObject("trendKeywordList",diquest.getTrendKeywordList());
+		mav.addObject("trendKeywordList",null);
+
+		mav.setViewName(super.getDeviceViewName("display/SearchLayer"));
+		return mav;
+	}
 }

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

@@ -1384,6 +1384,30 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 교환 옵션 변경 팝업
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 03. 30
+	 */
+	@PostMapping("/track/withdraw/popup/form")
+	@ResponseBody
+	public ModelAndView trackWithdrawPopupForm(OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 스윗트래커 정보 조회
+		SweetTracker sweetTracker = new SweetTracker();
+		sweetTracker.setShipCompCd(orderChange.getShipCompCd());
+		sweetTracker.setInvoiceNo(orderChange.getWdInvoiceNo());
+		mav.addObject("sweetTrackerInfoList", deliveryService.getSweetTrackerDeliveryInfo(sweetTracker));
+
+		mav.setViewName(super.getDeviceViewName("popup/TrackWithdrawPopupForm"));
+
+		return mav;
+	}
+
 	/**
 	 * 위시리스트 등록처리
 	 *
@@ -1484,8 +1508,8 @@ public class TsfMypageController extends TsfBaseController {
 	 */
 	@PostMapping("/gift/use/confirm")
 	@ResponseBody
-	public GagaResponse getGiftcardUseConfirm(@RequestBody GiftCard giftcard) throws Exception {
-		giftcardService.getGiftcardUseConfirm(giftcard);
+	public GagaResponse createGiftcardUseConfirm(@RequestBody GiftCard giftcard) throws Exception {
+		giftcardService.createGiftcardUseConfirm(giftcard);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
@@ -1556,6 +1580,8 @@ public class TsfMypageController extends TsfBaseController {
 			result.set("message", "쿠폰이 발급되었습니다.");
 		}
 		result.set("status", "200");
+		
+		result.set("couponList", couponService.getQuickCouponDownList(coupon));
 		return result;
 	}
 

+ 14 - 38
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -738,45 +738,11 @@ public class TsfOrderController extends TsfBaseController {
 		// 3. 주문기본정보등록(주문접수)
 		coreOrderService.createPreOrder(order);
 		
-		// 4. 2021.05.10 장바구니정보 정보 삭제
+		// 4. 2021.05.10 장바구니정보 주문번호 업데이트
 		orderService.insertCartHstOrdNo(order);
-		
-		log.info("order.getEntryNo()           ::: {}", order.getEntryNo());
-		log.info("order.getPgGb()              ::: {}", order.getPgGb());
-		log.info("order.getPayMeans()          ::: {}", order.getPayMeans());
-		log.info("order.getOrdNo()             ::: {}", order.getOrdNo());
-		log.info("order.getGoodsNm()           ::: {}", order.getGoodsNm());
-		log.info("order.getOrdGoodsQty()       ::: {}", order.getOrdGoodsQty());
-		log.info("order.getPayAmt()            ::: {}", order.getPayAmt());
-		log.info("order.getOrdNm()             ::: {}", order.getOrdNm());
-		log.info("order.getOrdPhnno()          ::: {}", order.getOrdPhnno());
-		log.info("order.getCustNo()            ::: {}", order.getCustNo());
-		log.info("order.getFreegiftValArr()    ::: {}", order.getFreegiftValArr());
-		log.info("order.getFreegiftSqArr()     ::: {}", order.getFreegiftSqArr());
-		log.info("order.getSexGb()             ::: {}", order.getSexGb());
-		log.info("order.getBirthYmd()          ::: {}", order.getBirthYmd());
-		log.info("order.getGiftMsg()           ::: {}", order.getGiftMsg());
-		
-		for (int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
-			log.info("order.getFreegiftGoodsArr()  ::: {}", order.getFreegiftGoodsArr()[i]);
-		}
-
-		// 필수 데이터
-		// pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
-		// 선택 데이터
-		// ordEmail = 주문자메일, ordTelno = 전화번호
-		
-		/* 
-		=== 카카오페이 & 네이버페이 파라메터 ===
-		ordNo = 주문번호
-		custNo = 고객번호
-		goodsNm = 상품명
-		ordGoodsQty = 주문상품수량
-		payAmt = 결제금액
-		======================
-		*/
 
 		Payment payment = orderService.setPgDataInfo(order);
+		
 		// 2021.05.10 추가
 		payment.setPayUrl("/create/preOrder");
 		payment.setRetUrl("/pay/result/response");
@@ -813,7 +779,8 @@ public class TsfOrderController extends TsfBaseController {
 			param.setCustNo(0);
 			order.setCustNo(0);
 		}
-		
+
+		param.setRegNo(param.getCustNo());
 		param.setUpdNo(param.getCustNo());
 		
 		// 2. 결재정보등록(TB_PAYMENT)
@@ -828,7 +795,16 @@ public class TsfOrderController extends TsfBaseController {
 		coreOrderService.updateOrderInfo(order);
 		
 		// 4. 2021.05.10 장바구니정보 삭제
-		orderService.deleteCartOrdNo(order);
+		boolean cartDelTemp = true;
+		if (TsfSession.isLogin()) {
+			if ("jsh77b".equals(TsfSession.getInfo().getCustId()) || "xodud1202".equals(TsfSession.getInfo().getCustId()) || "card007".equals(TsfSession.getInfo().getCustId())) {
+				cartDelTemp = false;
+			}
+		}
+		
+		if (cartDelTemp) {
+			orderService.deleteCartOrdNo(order);
+		}
 		
 		// TODO 5. 2021.05.10 보증보험 API 연동
 		orderService.updateInsurance(order);

+ 2 - 13
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -181,18 +181,7 @@ public class TsfPgController extends TsfBaseController {
 	 */
 	@ResponseBody
 	@PostMapping("/nPayReq")
-	public GagaMap nPayReq(@RequestBody Order param) {
-		GagaMap map = new GagaMap();
-		//for(Order param : params) {
-		//	log.info("CHECK NPAY INPUT >>>> {} / {} / {}", param.getGoodsCd(), param.getOptCd(), param.getGoodsQty());
-		//}
-
-		for(int cartSq : param.getCartSqArr()) {
-			log.info("CHECK NPAY INPUT >>>> {}", param.getCartSqArr());
-		}
-
-		map = orderService.nPayReq50(param);
-
-		return map;
+	public GagaMap nPayReq(@RequestBody Order param, HttpServletRequest request, HttpServletResponse response) {
+		return orderService.nPayReq50(param, request, response);
 	}
 }

+ 18 - 0
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -7,11 +7,13 @@ import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 
+import com.style24.persistence.domain.CustGrade;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -579,6 +581,22 @@ public class TsfPlanningController extends TsfBaseController {
 		return mav;
 	}
 
+
+
+	@GetMapping("/next/custgrade/info/{nextGradeCd}")
+	@ResponseBody
+	public GagaMap getNextCustGradeInfo(@PathVariable String nextGradeCd) {
+		boolean isLogin = TsfSession.isLogin();
+		if (!isLogin) {
+			throw new IllegalStateException("로그인 하시기 바랍니다.");
+		}
+		CustGrade custGrade = new CustGrade();
+		custGrade.setSiteCd(TscConstants.Site.STYLE24.value());
+		custGrade.setCustNo(TsfSession.getInfo().getCustNo());
+		custGrade.setGradeCd(nextGradeCd);
+		return customerService.getNextCustGradeInfo(custGrade);
+	}
+
 	/**
 	 * 회원등급 쿠폰 다운로드
 	 *

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

@@ -1292,6 +1292,7 @@
 		      ,C.CUST_PUB_LIMIT_QTY 
 		      ,C.TOT_PUB_LIMIT_QTY
 		      ,C.MAX_DC_AMT 
+		      , IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO = #{custNo}),0) AS CUST_COUPON_CNT
 		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
 		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
 		              END
@@ -1338,8 +1339,7 @@
 		     WHERE CPN_ID = C.CPN_ID
 		     AND USABLE_CUST_GRADE IN (#{custGrade})              -- 사용가능고객구분
 		     ) <![CDATA[>=]]> 1
-		ORDER BY  C.AVAIL_EDDT,
-		CASE WHEN DC_WAY LIKE '%' THEN DC_VAL END DESC LIMIT 10
+		ORDER BY  C.REG_DT DESC ,C.AVAIL_EDDT ASC LIMIT 10
 	</select>
 	
 </mapper>

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

@@ -603,7 +603,7 @@
 		/* TsfCustomer.getExpectedCustGrde */
 		SELECT B.ORD_NO_CNT
 		     , B.SUM_REAL_ORD_AMT
-		     , #{gradeCd}        AS GRADE_CD
+		     , #{gradeCd}                         AS GRADE_CD
 		     , FN_GET_CODE_NM('G110', #{gradeCd}) AS GRADE_CD_NM
 		     , SUBSTRING(#{gradeCd}, 6, 2)        AS GRADE_CD_NO
 		FROM  (

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

@@ -107,7 +107,10 @@
 		     , DETAILS
 		     , IFNULL(TELNO_MAN, TELNO_OFFICE) AS TELNO
 		  FROM TB_SWEET_TRACKER
-		 WHERE SHIP_COMP_CD = #{shipCompCd}
+		 WHERE SHIP_COMP_CD = (SELECT SWT_SHIP_COMP_CD
+		                         FROM TB_SHIP_COMPANY
+		                        WHERE SHIP_COMP_CD = #{shipCompCd}
+		                          AND USE_YN = 'Y')
 		   AND INVOICE_NO = #{invoiceNo}
 		 ORDER BY DELV_LEVEL DESC;
 	</select>

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

@@ -102,8 +102,8 @@
 	     )
 	</insert>
 	
-	<insert id="getGiftcardUseConfirm" parameterType="GiftCard">
-		/*TsfGiftcard.getGiftcardUseConfirm*/
+	<insert id="createGiftcardUseConfirm" parameterType="GiftCard">
+		/*TsfGiftcard.createGiftcardUseConfirm*/
 		INSERT INTO TB_CUST_GIFTCARD
 		(
 			CUST_NO

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

@@ -2054,12 +2054,12 @@
 		               , G.GOODS_TNM                             /*상품타이틀명*/
 		               , G.MAIN_COLOR_CD                         /*대표색상코드*/
 		               , G.LIST_PRICE                            /*정상가(최초판매가)*/
-		               , CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN GBP.STAFF_PC_CURR_PRICE
-		                      WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN GBP.STAFF_MO_CURR_PRICE
-		                      WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN GBP.STAFF_APP_CURR_PRICE
-		                      WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN GBP.PC_CURR_PRICE
-		                      WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN GBP.MO_CURR_PRICE
-		                      WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN GBP.APP_CURR_PRICE
+		               , CASE WHEN #{frontGb} = 'P' AND #{custGb} = 'G100_20' THEN  IFNULL(GBP.STAFF_PC_CURR_PRICE,G.CURR_PRICE)
+		                      WHEN #{frontGb} = 'M' AND #{custGb} = 'G100_20' THEN  IFNULL(GBP.STAFF_MO_CURR_PRICE,G.CURR_PRICE)
+		                      WHEN #{frontGb} = 'A' AND #{custGb} = 'G100_20' THEN  IFNULL(GBP.STAFF_APP_CURR_PRICE,G.CURR_PRICE)
+		                      WHEN #{frontGb} = 'P' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.PC_CURR_PRICE,G.CURR_PRICE)
+		                      WHEN #{frontGb} = 'M' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.MO_CURR_PRICE,G.CURR_PRICE)
+		                      WHEN #{frontGb} = 'A' AND #{custGb} != 'G100_20' THEN IFNULL(GBP.APP_CURR_PRICE,G.CURR_PRICE)
 		                      ELSE G.CURR_PRICE
 		                END                   AS CURR_PRICE     /*현재판매가*/
 		               , G.MIN_ORD_AMT                           /*최소주문금액*/

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

@@ -88,6 +88,7 @@ naverPay:
     common.certification.key : s_3799db3bf4af-
     certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
+    order.url: https://test-order.pay.naver.com/customer/buy
 
 # ERP (한세드림)
 erp:

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

@@ -42,6 +42,12 @@
 											<em class="tag_stype2">총알배송</em>
 										</span>
 									</label>
+									<div class="tip_wrap tip1">
+										<div class="tip_tit">?</div>
+										<div class="tip_contents">
+											<p class="tip_txt"></p><ul><li>총알배송 가능 지역인 경우에만 적용됩니다.</li></ul><p></p>
+										</div>
+									</div>
 								</div>
 							</td>
 						</tr>

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="mob/common/layout/SubLayoutMob">
+	  layout:decorator="mob/common/layout/GoodsLayoutMob">
 <!--
  *******************************************************************************
  * @source  : cartListFormMob

+ 7 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html

@@ -187,7 +187,7 @@
 						</table>
 					</div>
 				</div>
-				<div class="required_group">
+				<div class="required_group" id="addDeliveryFee" style="display:none">
 					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
 				</div>
 				<div class="btn_group btn_group_flex">
@@ -544,6 +544,12 @@ $('#btn_bank_return').click(function() {
 		mcxDialog.alert('계좌인증이 필요합니다.');
 	}
 });
+
+//팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
 </script>
 
 <script>

+ 0 - 5
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html

@@ -314,11 +314,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

+ 507 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html

@@ -0,0 +1,507 @@
+<!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/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageDeliveryInfoFormMob.html
+ * @desc    : 마이페이지 > 배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.11   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="mypageDeliveryInfoForm" class="container my">
+	<section class="content my_order">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd  th:text="${ordNo}"></dd>
+				</dl>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+			</div>
+		</div>
+		<div class="inner">
+			<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+				<div class="part_goods">
+					<div class="goods_top">
+						<th:block th:unless="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+						<th:block th:if="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+					</div>
+					
+					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_status">
+								<!-- 선물주문 -->
+								<th:block th:if="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
+									<p class="dlvr_staus" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
+								</th:block>
+								<!-- //선물주문 -->
+								<!-- 일반주문 -->
+								<th:block th:unless="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+								</th:block>
+								<!-- //일반주문 -->
+							</div>
+							<div class="goods_detail">
+								<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+														
+								<a href="javascript:void(0);" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${ordDtl.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${ordDtl.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<!-- 세트상품 -->
+												<th:block th:if="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${option}"></em>
+														<em th:text="${ordDtl.optCd2Arr[status.index]}"></em>
+													</th:block>
+												</th:block>
+												<!-- //세트상품 -->
+												<!-- 일반상품 -->
+												<th:block th:unless="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${ordDtl.colorNm}"></em>
+														<em th:text="${ordDtl.optCd2}"></em>
+													</th:block>
+												</th:block>
+												<!-- //일반상품 -->
+											</div>
+										</div>
+										<div class="od_calc">
+											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
+												</del>
+											</p>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+												<span class="count">
+													<em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 일반주문 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</th:block>
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+									</div>
+								</th:block>
+								<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								
+								<!-- 배송준비중-->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								</th:block>
+								<!-- //배송준비중-->
+								
+								<!-- 배송중 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+									<!-- 교환가능, 반품가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+										<div class="goods_btn_wrap btn_group_flex">
+											<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+											</th:block>
+											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+											</th:block>
+										</div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+									
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //배송중 (교환가능, 반품가능) -->
+								
+								<!-- 배송완료 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환가능, 반품가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+										</th:block>
+										<!-- //교환가능, 반품가능 -->
+										
+										<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></div>
+									</div>
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+										
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //배송완료 (교환가능, 반품가능) -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 리뷰사용불가능, 리뷰등록후일때 -->
+										<th:block th:unless="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
+
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							<!-- //일반주문 -->
+							<!-- 선물주문 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<div><button type="button" class="btn btn_primary btn_sms_send" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></div>
+								</th:block>
+								<!-- //배송지등록전 -->
+								
+								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+								</th:block>
+								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							</th:block>
+							<!-- //선물주문 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_alert">
+									<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+										<!-- 교환불가능, 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능, 반품불가능 -->
+										
+										<!-- 교환불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능 -->
+										
+										<!-- 반품불가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //반품불가능 -->
+										
+									</th:block>
+									<!-- //배송중, 배송완료 상태 -->
+								</div>
+								
+								<!-- 주문접수 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //주문접수 -->
+								
+								<!-- 결제완료, 예약배송상품 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+									</th:block>
+								</th:block>
+								<!-- //결제완료, 예약배송상품 -->
+								
+								<!-- 상품준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //상품준비중 -->
+								
+								<!-- 배송준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //배송준비중 -->
+								
+								<!-- 배송완료 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+									</div>
+								</th:block>
+								<!-- //배송완료 -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+										</div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							
+							<!-- 선물배송일때 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_txt">
+									<!-- 배송지등록전 -->
+									<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+										<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
+										<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+									</th:block>
+									<!-- //배송지등록전 -->
+									
+									<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+										<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+											<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
+										</th:block>
+									</th:block>
+									<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									
+									<!-- 선물 취소 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+										<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+									</th:block>
+									<!-- //선물 취소 -->
+								</div>
+							</th:block>
+							<!-- //선물배송일때 -->
+							<!-- //주문상태별 문구정보 정의 -->
+							
+							<!-- 사은품 영역 -->
+							<th:block th:if="${#lists.size(order.ordDtlList) == status.count}">
+								<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+									<div class="goods_gift">
+										<div class="gift_wrap">
+											<div class="title">사은품</div>
+											<div class="li_gift">
+												<ul>
+													<th:block th:each="freeGift , j : ${order.freeGiftList}">
+														<li>
+															<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+															<th:block th:if="${freeGift.usePoint} > 0">
+																<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- //사은품 영역 -->
+						</div>
+					</th:block>
+				</div>
+				<input type="hidden" name="accountNo" 	th:value="${order.oneData.accountNo}"/>
+				<input type="hidden" name="accountNm" 	th:value="${order.oneData.accountNm}"/>
+				<input type="hidden" name="bankCd" 		th:value="${order.oneData.bankCd}"/>
+				<input type="hidden" name="delvMemo" 	th:value="${deliveryAddrInfo.delvMemo}"/>
+			</th:block>
+		</div>
+		
+		<div class="inner">
+			<div class="tbl_wrap">
+				<div class="tbl_tit">
+					<h3>배송 정보</h3>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="107">
+							<col width="*">
+						</colgroup>
+						<tbody><tr>
+							<th>보내는 사람</th>
+							<td>
+								<div>
+									<span th:text="${deliveryAddrInfo.recipNm}"></span> / <span th:text="${deliveryAddrInfo.recipPhnno}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>제품정보</th>
+							<td>
+								<div>
+									<span th:utext="|${oneData.brandNm}<br/>${oneData.goodsNm}|"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>송장번호</th>
+							<td>
+								<div>
+									<span th:text="${oneData.invoiceNo}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>배송주소</th>
+							<td>
+								<div>
+									<span th:utext="|${deliveryAddrInfo.recipBaseAddr}<br/>${deliveryAddrInfo.recipDtlAddr}|"></span>
+								</div>
+							</td>
+						</tr>
+					</tbody></table>
+				</div>
+			</div>
+			<div class="goods_tbl">
+				<div class="tblWrap">
+					<table class="table">
+						<colgroup>
+							<col style="width: 34%;">
+							<col style="width: 33%;">
+							<col style="width: 33%;">
+						</colgroup>
+						<thead>
+							<tr>
+								<th scope="col">시간</th>
+								<th scope="col">장소</th>
+								<th scope="col">유형</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+								<td th:utext="|${#strings.substring(sweetTrackerInfo.timeTrans, 0, 10)}<br/>${#strings.substring(sweetTrackerInfo.timeTrans, 11, 19)}|"></td>
+								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+								<td th:text="${sweetTrackerInfo.details}"></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<form id="exchangeForm" name="exchangeForm" th:action="@{'/mypage/exchange/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="returnForm" name="returnForm" th:action="@{'/mypage/return/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('배송조회');
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 49 - 62
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -40,22 +40,26 @@
 						<th:block th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}">
 							<a href="javascript:void(0);" id="btn_all_delete" class="delete_btn" onclick="fnAllCancel();">주문 전체 취소</a> <!-- 210409_추가 : btn_all_delete id 추가 -->
 						</th:block>
+						<th:block th:if="${allDecideYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0)" id="btn_all_confirm" class="purchase_btn" th:attr="ordNo=${ordNo}" onclick="fnAllDecideOrder(this);">전체구매확정</a></li>
+						</th:block>
 						<!--<a href="javascript:;" id="btn_all_confirm" class="purchase_btn">전체 구매 확정</a> 전체 구매확정 버튼. --> <!-- 210409_추가 : btn_all_confirm id 추가 -->
 					</div>
 					
 					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
 						<div class="goods_section">
 							<div class="goods_status">
-								<!-- 선주문 -->
+								<!-- 선주문 -->
 								<th:block th:if="${order.giftPackYn == 'Y'}">
 									<p class="dlvr_staus" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
 									<p class="dlvr_staus" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
 									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
 								</th:block>
-								<!-- //선주문 -->
+								<!-- //선주문 -->
 								<!-- 일반주문 -->
 								<th:block th:unless="${order.giftPackYn == 'Y'}">
-									<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
 								</th:block>
 								<!-- //일반주문 -->
 							</div>
@@ -72,8 +76,7 @@
 											<div class="brand">
 												<span th:text="${ordDtl.brandNm}"></span>
 												<div class="badge_wrap">
-													<span class="brand" th:text="${ordDtl.brandNm}"></span>
-													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge order_bullet_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
 													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
 													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
 												</div>
@@ -102,9 +105,9 @@
 										</div>
 										<div class="od_calc">
 											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
-											<p class="sale_price">
+											<p class="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
 												<del>
-													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</em>원
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
 												</del>
 											</p>
 											<p class="price">
@@ -123,20 +126,22 @@
 							<!-- 주문상태별 버튼기능 정의 -->
 							<!-- 일반주문 -->
 							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
-								<!-- 입금대기 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
 									</div>
 								</th:block>
-							
-								<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+										<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 									</div>
 								</th:block>
-								<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
 								
 								<!-- 배송준비중-->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
@@ -204,9 +209,14 @@
 								<!-- 구매확정 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 리뷰사용불가능, 리뷰등록후일때 -->
+										<th:block th:unless="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //리뷰사용불가능, 리뷰등록후일때 -->
+
 										<div><button type="button" class="btn btn_primary btn_cart_save" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
-										<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
-										
+
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
 											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
@@ -422,7 +432,7 @@
 							</tr>
 							<tr>
 								<th>입금기한</th>
-								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span><span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
+								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span>&nbsp;<span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
 							</tr>
 						</table>
 					</div>
@@ -518,43 +528,6 @@
 											<dt><span class="sr-only">휴대폰 번호</span></dt>
 											<dd th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></dd>
 										</div>
-										<!--  배송메모정보변경가능
-										<th:block th:if="${allCanYn == 'Y'}">
-											<div class="ship_request ship_select">
-												<span>배송요청 사항</span>
-												<div class="ship_option">
-													<div class="form_field">
-														<div class="select_custom delivery_list">
-															<div class="combo">
-																<div class="select" th:text="${deliveryAddrInfo.delvMemo}">선택</div>
-																<ul class="list">
-																	<li>문 앞</li> 
-																	<li>직접 받고 부재 시 문 앞</li>
-																	<li>경비실</li> 
-																	<li>택배함</li>
-																	<li class="select_etc">기타사항</li>
-																</ul>
-															</div>
-														</div>
-													</div>
-												</div>
-											</div>
-											<div class="ship_etc">
-												<div class="form_text etc">
-													<input type="text" name="delvMemoText" placeholder="보관 장소만 입력 (필수)" maxlength="30" disabled>
-													<p class="desc_txt">보관 장소 외 다른 내용 입력시 통보 없이 삭제 될 수 있습니다.</p>
-												</div>
-											</div>
-										</th:block>
-										<!--  //배송메모정보변경가능 -->
-										<!--  배송메모정보변경불가 
-										<th:block th:unless="${allCanYn == 'Y'}">
-											<div class="ship_request">
-												<dt>배송요청 사항</dt>
-												<dd th:text="${deliveryAddrInfo.delvMemo}"></dd>
-											</div>
-										</th:block>
-										<!--  //배송메모정보변경불가 -->
 										<div class="ship_request">
 											<dt>배송요청 사항</dt>
 											<dd th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></dd>
@@ -592,7 +565,8 @@
 			<div class="tbl_wrap pay_wrap">
 				<div class="tbl_tit"> 
 					<h3>결제 정보</h3>
-					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>
+<!--					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>-->
+					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.payAmt - orderAmtInfo.npayPntAmt - orderAmtInfo.pgCpnAmt, 1, 'COMMA')}"></span>원</strong>
 				</div>
 				<div class="tbl type1">
 					<table>
@@ -605,7 +579,7 @@
 								<dl>
 									<div>
 										<dt>총주문금액(상품금액+배송비)</dt>
-										<dd><div><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
+										<dd><div><span th:text="${#numbers.formatInteger((orderAmtInfo.ordAmt + orderAmtInfo.cpn1DcAmt) - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
 									</div>
 									<th:block th:if="${orderAmtInfo.cpn1DcAmt} > 0">
 										<div>
@@ -681,6 +655,7 @@
 					</table>
 					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
 					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and not #strings.isEmpty(paymentInfo.cashAuthNo) and (paymentInfo.payMeans == 'G014_10' or paymentInfo.payMeans == 'G014_20')}" onclick="fnReceipt('cash')"><span>현금 영수증</span></button>
+					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and (cashReceiptsInfo == null or #strings.isEmpty(cashReceiptsInfo.authNo))}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
 					<!-- 
 					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
 					 -->
@@ -690,7 +665,7 @@
 			</div>
 			<div class="btn_group btn_group_flex">
 				<div>
-					<button type="button" class="btn btn_dark"><span>확인</span></button>
+					<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>확인</span></button>
 				</div>
 			</div>
 		</div>
@@ -728,11 +703,8 @@
 	//let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
 
 	$(document).ready(function() {
-		// 마이페이지 LNB 설정
-		//fnSetMypageLnbList(1);
-		
-		// 마이페이지 location 설정
-		//fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+		// 타이틀명
+		$('#htopTitle').text('주문확인/배송조회');
 		
 		// 선물메시지
 		if ($("#giftMsg").html() != null) {
@@ -933,9 +905,24 @@
 		$('#orderDetailForm input[name=accountNm]').val(result.accountNm);
 		$('#orderDetailForm input[name=bankCd]').val(result.bankCd);
 		
-		// 반품처리
+		// 전체취소 처리
 		fnAllCancel();
 	}
+
+	// 상품권 현금영수증 신청 처리
+	var fnRequestCashReceipt = function(param) {
+		let url = '/mypage/cash/receipts/request';
+		let ordNo = $(param).attr('ordNo');
+
+		let data = {};
+		data.ordNo = ordNo;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+		});
+	}
 </script>
 
 </th:block>

+ 13 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -214,7 +214,7 @@ $(document).ready(function() {
 	
 	// 인피니티스크롤 초기화
 	//fnGoodsReviewInfiniteScrollInit();
-	
+
 	// AJAX 로드를 위한 변수 설정
 	jsonObj = {
 		"pageNo" 			: 0
@@ -231,12 +231,18 @@ $(document).ready(function() {
 	
 	// 마이페이지 메인화면일때 초기 1개월 조회
 	if (mypageMainYn == 'Y') {
+		// 타이틀명
+		$('#htopTitle').text('마이페이지');
+
 		jsonObj.pageSize = 1;
 		jsonObj.pageUnit = 1;
 		fnSetSearchPeriod(1);
 	}
 	// 마이페이지 주문목록화면일때
 	else {
+		// 타이틀명
+		$('#htopTitle').text('주문확인/배송조회');
+
 		// 전체페이지 구하기
 		totalPage 	= parseInt(totalCnt / 10);
 		remainList 	= totalCnt % 10; 
@@ -313,7 +319,7 @@ var fnGetInfiniteScrollDataList = function(pageNo) {
 			if (result != null) {
 				$("#listBox").css("display", "block");
 				$("#listBox").append(result);
-				
+				console.log(result);
 				scrollTemp = true;
 				
 				// 인피니티 스크롤 기억기능
@@ -465,6 +471,11 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 			$('#expiredSoonCouponCnt').text(result.expiredSoonCouponCnt);
 		});
 	}
+
+	// 등급혜택 보기 클릭 이벤트
+	var fnGoToCustomerBenefit = function() {
+		cfnGoToPage(_PAGE_CUSTOMER_GRADE_BENEFIT);
+	}
 </script>
 </th:block>
 </body>

+ 21 - 8
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -46,7 +46,8 @@
 							
 							<!-- 일반배송일때 -->
 							<th:block th:if="${ordDtl.giftPackYn} == 'N'">
-								<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+								<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+								<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
 							</th:block>
 							<!-- //일반배송일때 -->
 						</div>
@@ -63,7 +64,7 @@
 												<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
 													<em class="order_badge order_bullet_badge">총알배송</em>
 												</th:block>
-												<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
+												<th:block th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">
 													<em class="order_badge">STYLE24 일반배송</em>
 												</th:block>
 												<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
@@ -104,11 +105,23 @@
 						<!-- 버튼기능정리 -->
 						<!-- 일반배송 -->
 						<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
-							<!-- 입금대기 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+							<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
 							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
-								<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
+								<div class="goods_btn_wrap btn_group_flex">
+									<div>
+										<button type="button" class="btn btn_default btn_cncl_complete" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);">
+											<span>1:1 문의</span>
+										</button>
+									</div>
+									<div>
+										<button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);">
+											<span>쇼핑백 담기</span>
+										</button>
+									</div>
+								</div>
 							</th:block>
-														
+							<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
 							<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 								<div class="goods_btn_wrap btn_group_flex">
@@ -119,7 +132,7 @@
 									</div>
 								</div>
 							</th:block>
-							<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+							<!-- //결제완료, 상품준비중, 출고처지정 (주문취소) -->
 							
 							<!-- 배송준비중-->
 							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
@@ -151,10 +164,10 @@
 								
 								<!-- 리뷰사용가능, 리뷰등록전일때 -->
 								<div class="goods_btn_wrap btn_group_flex">
-									<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+									<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></div>
 									<!-- 리뷰사용가능, 리뷰등록전일때 -->
 									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 									</th:block>
 									<!-- //리뷰사용가능, 리뷰등록전일때 -->
 								</div>

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

@@ -490,7 +490,7 @@ $(function(){
 		 rating(reviewScore);
 		$("#reviewForm input[name=height]").val(reviewList.height);
 		$("#reviewForm input[name=weight]").val(reviewList.weight);
-		$("#reviewForm textarea[name=reviewContent]").val(reviewList.reviewContent);
+		$("#reviewForm textarea[name=reviewContent]").val(reviewList.reviewContent.escapeHtml());
 		if(reviewList.scoreSize == "1"){
 			$('#reviewForm input:radio[name=scoreSize]:radio[value="1"]').prop('checked', true);
 		}else if(reviewList.scoreSize == "2"){

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

@@ -363,7 +363,7 @@
 						html += '		</div>';
 					}
 					html += '		<div class="txt_review_box" id="admin_'+item.reviewSq+'">';
-					html += '			<p>'+item.reviewContent+'</p>';
+					html += '			<p>'+item.reviewContent.escapeHtml()+'</p>';
 					html += '		</div>';
 					html += '		<div  class="response_box2">';
 					html += '			<div>';
@@ -409,7 +409,7 @@
 						html += '					<span class="wr_date">'+item.admRplDt+'</span>';
 						html += '				</div>';
 						html += '				<div class="reply_txt">';
-						html += '					<p>'+item.admRpl+'</p>';
+						html += '					<p>'+item.admRpl.escapeHtml()+'</p>';
 						html += '				</div>';
 						html += '			</div>';
 						html += '		</div>';

+ 86 - 54
src/main/webapp/WEB-INF/views/mob/mypage/MypageWishListFormMob.html

@@ -32,14 +32,9 @@
 let month = [[${wishMonth}]];
 
 var wishlistDelete = function(obj) {
-	mcxDialog.confirm("위시리스트를 해제하시겠습니까?", {
-		cancelBtnText : "취소",
-		sureBtnText : "확인",
-		sureBtnClick : function() {
-			cfnPutWishList(obj);
-			ajaxWishList();
-		}
-	});
+	cfnPutWishList(obj);
+
+	ajaxWishList();
 }	
 //마이페이지 위시리스트 
 var ajaxWishList = function () {
@@ -47,56 +42,93 @@ var ajaxWishList = function () {
 		if (status == 'success') {
 			$('#wishList').html('');
 			html = '';
-			for (var i = 0; i < month.length; i++) {
-				html += '<div class="monthly_wish_wrap">\n';
-				html += '	<div class="date">\n';
-				html += '		<span>'+month[i].regDt+'</span>\n';
-				html += '	</div>\n';
-				html += '	<div class="itemsGrp">\n';
-				
-				$.each(result, function (idx, item) {
-					if (item.regDtMonth == month[i].regDt) {
-						html += '		<div class="item_prod">\n';
-						html += '			<div class="item_state">\n';
-						html += '				<button type="button" class="itemLike likeit" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>\n';
-						html += '				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail('+item.goodsCd+')">\n';
-						html += '					<div class="itemPic">\n';
-						html += '						<img class="vLHTC pd_img"  src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">\n';
-						html += '					</div>\n';
-						html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
-						html += '					<div class="itemName">'+item.goodsNm+'</div>\n';
-						html += '					<p class="itemPrice">\n';
-						
-						if (item.currPrice != item.listPrice) {
-							html+='						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
-						}
-						html += item.currPrice.addComma();
-						if (item.dcRate>0) {
-							html+='						<span class=" itemPercent">'+item.dcRate+'%</span>\n';
+			if (result.length>0) {
+				for (var i = 0; i < month.length; i++) {
+					html += '<div class="monthly_wish_wrap">\n';
+					html += '	<div class="date">\n';
+					html += '		<span>'+month[i].regDt+'</span>\n';
+					html += '	</div>\n';
+					html += '	<div class="itemsGrp">\n';
+					
+					$.each(result, function (idx, item) {
+						if (item.regDtMonth == month[i].regDt) {
+							html += '		<div class="item_prod">\n';
+							html += '			<div class="item_state">\n';
+							html += '				<button type="button" class="itemLike active likeit" goodsCd=\''+item.goodsCd+'\' onclick="wishlistDelete(this)">관심상품 추가</button>\n';
+							html += '				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">\n';
+							html += '					<div class="itemPic">\n';
+							html += '						<img class="vLHTC pd_img"  src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">\n';
+							html += '					</div>\n';
+							html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+							html += '					<div class="itemName">'+item.goodsNm+'</div>\n';
+							html += '					<p class="itemPrice">\n';
+							
+							if (item.currPrice != item.listPrice) {
+								html+='						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
+							}
+							html += item.currPrice.addComma();
+							if (item.dcRate>0) {
+								html+='						<span class=" itemPercent">'+item.dcRate+'%</span>\n';
+							}
+							html += '					</p>\n';
+							html += '					<div class="itemcolorchip">\n';
+							if(!gagajf.isNull(item.colorChips)){
+								var colorArr = item.colorChips.split(",");
+								var colorCd = '';
+								var rgbColor = '';
+								for(let i=0; i<colorArr.length; i++){
+									var colorInfo = colorArr[i].split(":");
+									colorCd = colorInfo[0];
+									rgbColor = colorInfo[1];
+									if(rgbColor=='#FFFFFF'){
+										html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+									}else{
+										html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+									}
+								}
+							}
+							html += '					</div>\n';
+							if(!gagajf.isNull(item.icon)){
+								var iconArr = item.icon.split(",");
+								var iconGb = '';
+								var iconNm = '';
+								html += '	<p class="itemBadge">';
+								for(let i=0; i<iconArr.length; i++){
+									var iconInfo = iconArr[i].split(":");
+									iconGb = iconInfo[0];
+									iconNm = iconInfo[1];
+									html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+								}
+								html += '	</p>';
+							}
+							if (item.goodsTnm != null && item.goodsTnm != '') {
+								html+='					<div class="itemComment">'+item.goodsTnm+'</div>\n';
+							}
+							html += '				</a>\n';
+							html += '			</div>\n';
+							html += '		</div>\n';
+							
 						}
-						html += '					</p>\n';
-						html += '					<div class="itemcolorchip">\n';
-						html += '						<span class="chip_color35" value="ABM">BEIGE</span>\n';
-						html += '						<span class="chip_color54" value="BDS">BLACK</span>\n';
-						html += '						<span class="chip_color40" value="YBR">WHITE</span>\n';
-						html += '					</div>\n';
-						html += '					<p class="itemBadge">\n';
-						html += '						<span class="badge13">베스트 </span>\n';
-						html += '					</p>\n';
-						if (item.goodsTnm != null && item.goodsTnm != '') {
-							html+='					<div class="itemComment">'+item.goodsTnm+'</div>\n';
-						}
-						html += '				</a>\n';
-						html += '			</div>\n';
-						html += '		</div>\n';
-						
-					}
-				});
+					});
+					
+					html += '	</div>\n';
+					html += '</div>\n';
+					$('#wishList').html(html);
+				}
+			}
+			else{
+				html += ' <div class="nodata">';
+				html += '	<div class="txt_box">';
+				html += '		<p>';
+				html += '			등록된 위시리스트가 없습니다.<br>';
+				html += '			';
+				html += '		</p>';
+				html += '	</div>';
+				html += '</div>';
 				
-				html += '	</div>\n';
-				html += '</div>\n';
 				$('#wishList').html(html);
 			}
+			
 		}
 	});
 }

+ 33 - 10
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -117,6 +117,8 @@
 			<th>foreignYn</th>
 			<th>orderMadeYn</th>
 			<th>delvFeeCd</th>
+			<th>pntPrate</th>
+			<th>pntMrate</th>
 		</tr>
 		<th:block th:each="delvAllCart, index : ${delvAllCartList}">
 			<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
@@ -162,11 +164,13 @@
 						<td class="pntDcAmt1">0</td>
 						<td class="gfcdUseAmt1">0</td>
 						<td class="realOrdAmt1">0</td>
-						<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
+						<td class="savePntAmt1">0</td>
 						<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
 						<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
 						<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
 						<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
+						<td class="pntPrate" 		th:text="${goods.pntPrate}"></td>
+						<td class="pntMrate" 		th:text="${goods.pntMrate}"></td>
 					</tr>
 				</th:block>
 			</th:block>
@@ -1247,6 +1251,17 @@ var paymentInfoSet = function() {
 						,"giftMsg"				: giftMsg
 						,"custPayMeans"			: custPayMeans
 						,"cartSqArr"			: cartSqArr
+						,"orgGoodsSumAmt"		: $("#orderAmtForm .orgGoodsSumAmt").text()
+						,"cpn1DcSumAmt"			: $("#orderAmtForm .cpn1DcSumAmt").text()
+						,"tmtb1DcSumAmt"		: $("#orderAmtForm .tmtb1DcSumAmt").text()
+						,"tmtb2DcSumAmt"		: $("#orderAmtForm .tmtb2DcSumAmt").text()
+						,"goodsCpnDcSumAmt"		: $("#orderAmtForm .goodsCpnDcSumAmt").text()
+						,"cartCpnDcSumAmt"		: $("#orderAmtForm .cartCpnDcSumAmt").text()
+						,"prePntDcSumAmt"		: $("#orderAmtForm .prePntDcSumAmt").text()
+						,"pntDcSumAmt"			: $("#orderAmtForm .pntDcSumAmt").text()
+						,"gfcdUseSumAmt"		: $("#orderAmtForm .gfcdUseSumAmt").text()
+						,"realOrdSumAmt"		: $("#orderAmtForm .realOrdSumAmt").text()
+						,"delvSumAmt"			: $("#orderAmtForm .delvSumAmt").text()
 					};
 					
 					$.ajax( {
@@ -2261,7 +2276,6 @@ var custCpnSumAmtCal = function() {
 		var goodsCpnDcAmt	= parseInt($(this).parent().find(".goodsCpnDcAmt").text());
 		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
 		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
-		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
 		var dcSumAmt		= 0;
 		
 		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
@@ -2282,14 +2296,8 @@ var custCpnSumAmtCal = function() {
 		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
 		if (prePntDcAmtYn == "Y") {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
-			
-			// 2021.04.29 선포인트사용포인트 적립포인트금액 0원처리
-			if (prePntDcAmt1 < 1) {
-				savePntSumAmt	= savePntSumAmt + savePntAmt1;
-			}
 		} else {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
-			savePntSumAmt	= savePntSumAmt + savePntAmt1;
 		}
 		
 		totDcSumAmt			= totDcSumAmt + dcSumAmt;
@@ -2297,17 +2305,19 @@ var custCpnSumAmtCal = function() {
 		// 주문금액설정
 		$(this).parent().find(".ordAmt").text(ordAmt);
 		$(this).parent().find(".dcSumAmt").text(dcSumAmt);
-		
-		//savePntSumAmt		= savePntSumAmt + savePntAmt1;
 	});
 	
 	// 포인트, 상품권 금액 분배
 	$("#orderAmtForm .cartSq").each(function(){
+		var pntPrate		= parseInt($(this).parent().find(".pntPrate").text());
+		var pntMrate		= parseInt($(this).parent().find(".pntMrate").text());
 		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
 		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
+		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
 		var pntDcAmt1 		= 0;
 		var gfcdUseAmt1		= 0;
+		var savePntAmt1		= 0;
 		
 		if (index == cartSqLenght) {
 			pntDcAmt1 		= leftPntAmt;
@@ -2322,9 +2332,22 @@ var custCpnSumAmtCal = function() {
 		var realOrdAmt1		= ordAmt - dcSumAmt - pntDcAmt1 - gfcdUseAmt1;
 		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
 		
+		// 2021.05.11 최종할인금액으로 적립포인트 적용
+		savePntAmt1			= parseInt(realOrdAmt1 * (pntPrate/100));
+		
+		// 선포인트사용여부 
+		if (prePntDcAmtYn == "Y") {
+			if (prePntDcAmt1 < 1) {
+				savePntSumAmt	= savePntSumAmt + savePntAmt1;
+			}
+		} else {
+			savePntSumAmt	= savePntSumAmt + savePntAmt1;
+		}
+		
 		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
 		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
 		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
+		$(this).parent().find(".savePntAmt1").text(savePntAmt1);
 		
 		index++;
 	});

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

@@ -36,6 +36,12 @@
 									<div>
 										<input type="radio" name="shotDelvUseYn" id="blt_ship1" value="Y" th:checked="${order.shotDelvUseYn != null and order.shotDelvUseYn.equals('Y') and order.shotCartList.size() > 0}">
 										<label for="blt_ship1"><span><em class="tag primary_line">총알배송</em><span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span></span></label>
+										<div class="tip_wrap tip1">
+											<div class="tip_tit">?</div>
+											<div class="tip_contents">
+												<p class="tip_txt"></p><ul><li>총알배송 가능 지역인 경우에만 적용됩니다.</li></ul><p></p>
+											</div>
+										</div>
 									</div>
 									<div>
 										<input type="radio" name="shotDelvUseYn" id="blt_ship2" value="N" th:checked="${order.shotDelvUseYn == null or !order.shotDelvUseYn.equals('Y') or order.shotCartList.size() < 1}">

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

@@ -603,7 +603,7 @@
 								</li>
 							</ul> -->
 						</div>
-						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">더 보기</a>_
+						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">더 보기</a>
 					</div>
 					
 					<div id="coupon_type02" class="coupon_area">
@@ -1280,7 +1280,7 @@
 									
 									tag += '				</p>';
 									tag += '			</div>';
-									tag += '			<button type="button" class="btn btn_dark btn_block btn_coupon_down" onclick="fnQuickCouponDown('+item.cpnId+')"><span>쿠폰받기</span></button>';
+									tag += '			<button type="button" id="coupon_'+item.cpnId+'" class="btn btn_dark btn_block btn_coupon_down" onclick="fnQuickCouponDown('+item.cpnId+')"><span>쿠폰받기</span></button>';
 									tag += '		</div>';
 									tag += '	</li>';
 								});
@@ -1356,9 +1356,19 @@
 	// 쿠폰다운로드 콜백
 	var fnQuickCouponCallBack = function(result){
 		if (result.status == "200"){
-			//mcxDialog.alert(result.message);
+			let list = result.couonList;
+
+			list.forEach(function(coupon){
+				if (Number(coupon.custPubLimitQty) > 0){
+					if (Number(coupon.custPubLimitQty) <= Number(coupon.custCouponCnt)){
+						$('#coupon_'+ coupon.cpnId).html('<span>받기완료</span>');
+						$('#coupon_'+ coupon.cpnId).attr('disabled', true);
+					}
+				}
+			});
+			
 		}			
-		issueCouponBtn();
+		//issueCouponBtn();
 		
 	}
 

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

@@ -110,7 +110,7 @@
 				<!-- 프로모션 문구 노출 검색용-->
 				<div class="area">
 					<p class="promotion_search">모이몰론, 남들보다 빠르게! 신상 check</p>
-					<button type="button" class="btn_sch_promotion" id="btnGnbSearch"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>
+					<button type="button" class="btn_sch_promotion" id="btnGnbSearch" onclick="cfSearchLayer();"><i class="ico ico_search"><em>프로모션 검색 바로가기</em></i></button>
 				</div>
 				<!-- //프로모션 문구 노출 검색용-->
 				<!-- 통합검색 -->
@@ -817,10 +817,10 @@
 		});
 	}
 
-	$('#btnGnbSearch').on('click', function() {
-		//검색창 호출
-		$(".common_search").addClass('active');
-	});
+	// $('#btnGnbSearch').on('click', function() {
+	// 	//검색창 호출
+	// 	$(".common_search").addClass('active');
+	// });
 
 	// 띠배너 닫기(쿠키설정)
 	let fnGnbTobBannerClose = function(unexpDays){

+ 12 - 1
src/main/webapp/WEB-INF/views/web/common/layout/MypageLayoutWeb.html

@@ -56,13 +56,24 @@
 <div class="modal fade exchange_pop" id="exchangePop" tabindex="-1" role="dialog" aria-labelledby="exchangeLabel" aria-hidden="true">
 	<div class="modal-dialog" role="document">
 		<div class="modal-content">
-			<!--교환상품 옵션변경 팝업 내용 -->
+			<!-- 교환상품 옵션변경 팝업 내용 -->
 		</div>
 	</div>
 	<a href="#close-modal" rel="modal:close" id="exchangePop_close" class="close-modal">Close</a>
 </div>
 <!-- //교환상품 옵션변경 팝업 -->
 
+<!-- 회수조회 팝업 -->
+<div class="modal fade reclaim_pop" id="reclaimPop" tabindex="-1" role="dialog" aria-labelledby="reclaimLabel" aria-hidden="true" style="display: none;">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<!-- 회수조회 팝업 내용 -->
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="reclaimPop_close" class="close-modal">Close</a>
+</div>
+<!-- //회수조회 팝업 -->
+
 <th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
 <script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
 

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

@@ -79,7 +79,7 @@
 									<div>
 										<input id="unisex" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="unisex"> <span>남여 공용만 보기</span> </label>
 									</div>
-									<div>
+									<div th:unless="${cateInfo.formalGb=='G009_20'}">
 										<input id="newGoods" type="checkbox" onclick="fnFilterOption(this,'off');" checked="checked"><label for="newGoods"> <span>신상품만 보기</span> </label>
 									</div>
 								</div>
@@ -293,7 +293,7 @@
 		<input type="hidden" name="cate3No" th:value="${cateInfo.cate3No}"/>
 		<input type="hidden" name="cate4No" th:value="${cateInfo.cate4No}"/>
 		<input type="hidden" name="sortingType" value="NEW"/>
-		<input type="hidden" name="newGoods" value="40"/>
+		<input type="hidden" name="newGoods" th:value="${cateInfo.formalGb=='G009_20'?'':'40'}" />
 	</form>
 
 	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
@@ -532,8 +532,8 @@
 								navNm += '<li class="bread_2depth" id="navNm">아울렛</li><li class="bread_2depth" id="navNm1">전체</li>';
 							}else{
 								$("#navNm").hide();
-								$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\');">전체</a></li>\n');
-								navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
+								// $('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\''+cateGb+'\');">전체</a></li>\n');
+								// navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
 							}
 						}
 

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

@@ -67,7 +67,7 @@
 									<li>
 										<p><img src="/images/pc/ico_content_none.png" alt="등록된 이벤트가 없습니다."></p>
 										<span>등록된 룩북이 없습니다.</span>
-										<a href="javascript:void(0);" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);">메인으로 가기</a>
+										<a href="javascript:void(0);" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);">으로 가기</a>
 										<a href="javascript:void(0);" th:if="${lbInfo.lookbookGb=='BL'}" th:onclick="cfnGoToBrandMain([[${lbInfo.brandCd}]]);" th:text="${brandGroupInfo.brandGroupNm+' 홈으로 가기'}"></a>
 									</li>
 								</ul>

+ 361 - 305
src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html

@@ -1,356 +1,412 @@
 <!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">
+	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : LookbookDetailFormWeb.html
- * @desc    : 룩북 상세 Page
+ * @source  : SearchLayerWeb.html
+ * @desc    : 검색 레이어 Page
  *============================================================================
  * STYLE24
  * Copyright(C) 2020 TSIT, All rights reserved.
  *============================================================================
  * VER  DATE         AUTHOR      DESCRIPTION
  * ===  ===========  ==========  =============================================
- * 1.0  2021.04.06   bin2107     최초 작성
+ * 1.0  2021.05.11   bin2107     최초 작성
  *******************************************************************************
  -->
-<body>
-
-<th:block layout:fragment="content">
-	<div id="container" class="container br">
-		<div class="breadcrumb">
-			<ul>
-				<li class="bread_home"><a href="index.html">홈</a></li>
-				<li class="bread_2depth" th:text="${lookbookInfo.brandNm}">TBJ</li>
-				<li class="bread_3depth">룩북</li>
-			</ul>
-		</div>
-		<div class="wrap">
-			<div class="content br_lookbook_view cont_visual" th:if="${lookbookDetailList != null}"> <!-- 페이지특정 클래스 = br_lookbook_view -->
-				<div class="cont_head">
-					<h3 class="displayH t_c" th:text="${lookbookInfo.title}">2020 F/W COLLECTION</h3>
+<h2 class="sr-only">통합검색</h2>
+<div class="cont_search">
+	<div class="area_input">
+		<form id="searchMainForm" name="searchMainForm">
+			<fieldset>
+				<legend>통합검색</legend>
+				<input type="text" id="search" name="search" value="" placeholder="검색어를 입력하세요sss." class="search_input" title="검색어 입력" maxlength="100">
+				<button type="button" class="sch_btn"><i class="ico ico_search"><em>검색</em></i></button>
+			</fieldset>
+		</form>
+	</div>
+	<div class="area_result">
+		<!-- 검색결과 입력 전 -->
+		<div class="default_box">
+			<div class="recent_blk">
+				<h3>최근 검색어</h3>
+				<!-- 최근검색어 있을 시 노출 -->
+				<div class="list_recent_keword" style="display: none;">
+					<ul>
+						<li>
+							<a href="">슬랙스</a>
+							<button type="button" class="btn_delete"><span>삭제</span></button>
+						</li>
+					</ul>
 				</div>
-				<div class="cont_body">
-					<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<th:block th:each="item, stat : ${lookbookDetailList}">
-									<div class="swiper-slide">
-										<div class="bt_lb_item">
-											<img class="vLHTC lb_img" th:src="${@environment.getProperty('domain.image')+item.sysFileNm}" alt="BLUE-a" />
-											<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
-												<div class="item_picker" th:style="${'left:'+goodsItem.xlim+'%; top:'+goodsItem.ylim+'%;'}">
-													<button type="button" th:onclick="fnLookbookGoodsPopup([[${goodsItem.sysImgNm}]],[[${goodsItem.brandGroupNm}]],[[${goodsItem.goodsNm}]],[[${goodsItem.listPrice}]],[[${goodsItem.currPrice}]],[[${goodsItem.dcRate}]],[[${goodsItem.goodsCd}]])"><span class="ico ico_picker"></span></button>
-												</div>
-											</th:block>
-										</div>
-									</div>
-								</th:block>
-							</div>
-							<div class="swiper-button-prev"></div>
-							<div class="swiper-button-next"></div>
-						</div>
-					</div>
-					<!--<th:block th:each="item, stat : ${lookbookDetailList}">
-					<div class="text_cont" th:text="${item.imgDesc}">
-						국내 대표 패션기업 한세엠케이의 스타일리시 어반 캐주얼 브랜드 앤듀(ANDEW)가 중성적이고 시크한 감각을 극대화한 2020 F/W 시즌 룩북을 공개했다.<br>
-						앤듀는 올 하반기 정소현, 안재형, 고웅호 등 글로벌 런웨이 무대에서 활약중인 전문 패션 모델들과 함께 성별의 경계를 뛰어넘어 개개인의 개성을 드러내는 젠더뉴트럴 패션을 앤듀만의 감각으로 새롭게 전개한다. 중성적인 매력을 자아내는 3명의 모델들은 각자의 개성과 매력을 뽐내며 세련미를 더한 젠더리스 감성을 한층 더 완성도 있게 소화해 눈길을 끈다. 공개된 룩북에서는 따뜻하고 부드러운 파스텔톤, 차분한 모노크롬 컬러로 극명하게 상반된 분위기를  연출하며 각기 다른 유니섹스 스타일을 선보였다. 격식을 갖추되 포멀하진 않게 자연스럽게 떨어지는 핏과 힙한 디자인을 통해 앤듀만의 젠더뉴트럴 캐주얼룩을 연출한 것. 또한, 이번 시즌에도 패션업계에 불고 있는 ‘필(必)환경’  트렌드에 따라 그린슈머들을 사로잡을 다양한 친환경적인 제품들을 주력으로 출시하며 지속가능한 패션을 실천할 계획이다. 버려진 페트병이나 플라스틱을 활용해 친환경 재생 섬유인 리사이클 페트(PET)원사로 의상을 제작하고, 동물친화적 비건 소재를 활용해 가치소비가 가능할 수 있도록 구성했다.
-					</div>
-					</th:block>-->
-					<div class="text_cont">
-						국내 대표 패션기업 한세엠케이의 스타일리시 어반 캐주얼 브랜드 앤듀(ANDEW)가 중성적이고 시크한 감각을 극대화한 2020 F/W 시즌 룩북을 공개했다.<br>
-						앤듀는 올 하반기 정소현, 안재형, 고웅호 등 글로벌 런웨이 무대에서 활약중인 전문 패션 모델들과 함께 성별의 경계를 뛰어넘어 개개인의 개성을 드러내는 젠더뉴트럴 패션을 앤듀만의 감각으로 새롭게 전개한다. 중성적인 매력을 자아내는 3명의 모델들은 각자의 개성과 매력을 뽐내며 세련미를 더한 젠더리스 감성을 한층 더 완성도 있게 소화해 눈길을 끈다. 공개된 룩북에서는 따뜻하고 부드러운 파스텔톤, 차분한 모노크롬 컬러로 극명하게 상반된 분위기를  연출하며 각기 다른 유니섹스 스타일을 선보였다. 격식을 갖추되 포멀하진 않게 자연스럽게 떨어지는 핏과 힙한 디자인을 통해 앤듀만의 젠더뉴트럴 캐주얼룩을 연출한 것. 또한, 이번 시즌에도 패션업계에 불고 있는 ‘필(必)환경’  트렌드에 따라 그린슈머들을 사로잡을 다양한 친환경적인 제품들을 주력으로 출시하며 지속가능한 패션을 실천할 계획이다. 버려진 페트병이나 플라스틱을 활용해 친환경 재생 섬유인 리사이클 페트(PET)원사로 의상을 제작하고, 동물친화적 비건 소재를 활용해 가치소비가 가능할 수 있도록 구성했다.
-					</div>
+				<button type="button" class="btn_underline"  style="display: none;"><span>전체삭제</span></button>
+				<!-- //최근검색어 있을 시 노출 -->
+				<!-- 최근검색어 없을 시 노출 -->
+				<div class="empty_txt" style="display: block;">
+					최근 검색어가 없습니다.
 				</div>
+				<!-- //최근검색어 없을 시 노출 -->
 			</div>
-			<div class="content br_lookbook_view cont_items" th:if="${lookbookDetailList != null}">
-
-				<div class="cont_head">
-					<h3>룩북 속 상품<span class="number">(9,999)</span></h3>
-					<button class="btn btn_primary"><span>모두 쇼핑백 담기</span></button>
+			<div class="popular_blk">
+				<h3>STYLE24에서 검색되고 있어요</h3>
+				<div class="list_popular_keword">
+					<ul id="popularKeyArea">
+<!--						<li>-->
+<!--							<a href="">BUCKAROO</a>-->
+<!--						</li>-->
+<!--						<li>-->
+<!--							<a href="">기모청바지</a>-->
+<!--						</li>-->
+					</ul>
 				</div>
-				<div class="cont_body">
-					<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
-									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
+			</div>
+			<div class="realtime_blk">
+				<h3>지금 고객님들이 많이 보고 있어요</h3>
+				<div class="modify_timer">
+					<button type="button"><span><em class="time">17:30</em> 기준</span></button>
+				</div>
+				<div class="realtime_wrap">
+					<div class="itemsGrp">
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
 									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+									<div class="viewCount"><span>508</span>명 보는중</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
 									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+									<div class="viewCount"><span>508</span>명 보는중</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
 									</div>
-								</div>
-								<div class="swiper-slide">
-									<div class="item_prod">
-										<div class="item_state">
-											<a href="#none" class="itemLink">
-												<div class="itemPic">
-													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
-												</div>
-												<p class="itemBrand">BRAND NAME1</p>
-												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
-												<p class="itemPrice">80,100
-													<span class="itemPrice_original">89,000</span>
-													<span class="itemPercent">10%</span>
-												</p>
-											</a>
-										</div>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+									<div class="viewCount"><span>508</span>명 보는중</div>
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
 									</div>
-								</div>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+									<div class="viewCount"><span>508</span>명 보는중</div>
+								</a>
 							</div>
-							<!-- Add Scrollbar -->
-							<div class="swiper-scrollbar"></div>
 						</div>
-					</div>
-				</div>
-			</div>
-			<div class="content br_lookbook_view cont_others" th:if="${otherLookbookList}">
-				<div class="cont_head">
-					<h3 class="subH1 t_c mb40">다른 룩북 보기</h3>
-					<button onclick="cfnGoToLookbookList();"><span>전체보기</span></button>
-				</div>
-				<div class="cont_body">
-					<div class="area_slider">
-						<div class="swiper-container">
-							<div class="swiper-wrapper">
-								<th:block th:if="${otherLookbookList}" th:each="oneData, status : ${otherLookbookList}">
-									<div class="swiper-slide">
-										<a th:href="|javascript:cfnGoToLookbookDetail('${oneData.lookbookSq}','${oneData.brandCd}')|">
-											<div class="thumb">
-												<img th:src="${@environment.getProperty('domain.image')+oneData.sysFileNm}" alt="" style="height:307px;">
-											</div>
-											<div class="txt">
-												<p class="title" th:text="${oneData.title}">2020 F/W COLLECTION 2020</p>
-											</div>
-										</a>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
 									</div>
-								</th:block>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩 남성 로고 자카드 방풍 패딩</div>
+									<div class="viewCount"><span>508</span>명 보는중</div>
+								</a>
 							</div>
 						</div>
-						<!-- Add Arrows -->
-						<div class="swiper-button-next"></div>
-						<div class="swiper-button-prev"></div>
 					</div>
 				</div>
 			</div>
 		</div>
-	</div>
-
-	<!-- 상단_LOOKBOOK_picker_상품_팝업 -->
-	<div class="modal fade br_pop lookbook_item_pop" id="lookbookItemPop" tabindex="-1" role="dialog" aria-labelledby="lookbook_item_label" aria-hidden="true">
-		<div class="modal-dialog" role="document">
-			<div class="modal-content">
-				<div class="modal-header">
-					<h5 class="modal-title sr-only" id="lookbook_item_label">상품정보</h5>
+		<!-- //검색결과 입력 전 -->
+		<!-- 검색결과 입력 후 -->
+		<div class="searching_box" style="display:none;">
+			<div class="autokeyword_blk">
+				<ul>
+					<li><a href=""><em>가</em>을컬리수</a></li>
+					<li><a href=""><em>가</em>드상하</a></li>
+					<li><a href=""><em>가</em>죽자켓</a></li>
+					<li><a href=""><em>가</em>죽밸트</a></li>
+					<li><a href=""><em>가</em>운</a></li>
+					<li><a href=""><em>가</em>을</a></li>
+					<li><a href=""><em>가</em>디건</a></li>
+					<li><a href=""><em>가</em>디건형니트</a></li>
+					<li><a href=""><em>가</em>드밴드레깅스</a></li>
+					<li><a href=""><em>가</em>을잠옷</a></li>
+				</ul>
+			</div>
+			<div class="exfind_blk">
+				<!-- 검색어 매칭 브랜드 있을 시 노출  -->
+				<div class="find_brand">
+					<h3><a href="">나이키 주니어 샵 바로가기</a></h3>
+				</div>
+				<!-- //검색어 매칭 브랜드 있을 시 노출  -->
+				<!-- 검색어 매칭 카테고리 있을 시 노출  -->
+				<div class="find_category">
+					<ul>
+						<li>
+							<span class="category_txt">카테고리</span>
+							<a href="">
+								<span>여성</span>
+								<span><em>니트가디건/베스트</em></span> <!-- 210419_수정 : em태그 전체 텍스트 감싸는 형식. -->
+							</a>
+						</li>
+						<li>
+							<span class="category_txt">카테고리</span>
+							<a href="">
+								<span>남성</span>
+								<span><em>니트/가디건/베스트</em></span> <!-- 210419_수정 : em태그 전체 텍스트 감싸는 형식. -->
+								<span>가디건</span>
+								<span>롱가디건</span>
+							</a>
+						</li>
+					</ul>
 				</div>
-				<div class="modal-body">
+				<!-- //검색어 매칭 카테고리 있을 시 노출  -->
+			</div>
+
+			<div class="pd_list relate">
+				<h3>관련상품</h3>
+				<div class="realtime_wrap">
 					<div class="itemsGrp">
 						<div class="item_prod">
 							<div class="item_state">
-								<div class="itemLink">
+								<a href="#none" class="itemLink">
 									<div class="itemPic">
-										<img alt="BLACK-a" class=" vLHTC pd_img" src="/images/pc/thumb/ev_list_img05.jpg">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
 									</div>
-									<p class="itemBrand">BRAND NAME</p>
-									<div class="itemName">[온라인 단독] 여성 니트 후드 경량 다운 점퍼 여성 니트 후드 경량 다운 점퍼 여성 니트 후드 경량 다운 점퍼</div>
-									<span class="itemPrice_original">89,000</span>
-									<p class="itemPrice">80,100
+									<p class="itemBrand">BRAND NAME1</p>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+									<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									<p class="itemPrice cols">
+										<span class="itemPrice_original">89,000</span>
+										80,100
 										<span class="itemPercent">10%</span>
 									</p>
-									<button type="button" class="btn btn_default"><span>자세히 보기</span></button>
-								</div>
+									<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								</a>
 							</div>
 						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+									</div>
+									<p class="itemBrand">BRAND NAME1</p>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+									<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									<p class="itemPrice cols">
+										<span class="itemPrice_original">89,000</span>
+										80,100
+										<span class="itemPercent">10%</span>
+									</p>
+									<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+									</div>
+									<p class="itemBrand">BRAND NAME1</p>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+									<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									<p class="itemPrice cols">
+										<span class="itemPrice_original">89,000</span>
+										80,100
+										<span class="itemPercent">10%</span>
+									</p>
+									<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+									</div>
+									<p class="itemBrand">BRAND NAME1</p>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+									<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									<p class="itemPrice cols">
+										<span class="itemPrice_original">89,000</span>
+										80,100
+										<span class="itemPercent">10%</span>
+									</p>
+									<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								</a>
+							</div>
+						</div>
+						<div class="item_prod">
+							<div class="item_state">
+								<a href="#none" class="itemLink">
+									<div class="itemPic">
+										<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+									</div>
+									<p class="itemBrand">BRAND NAME1</p>
+									<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+									<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+									<p class="itemPrice cols">
+										<span class="itemPrice_original">89,000</span>
+										80,100
+										<span class="itemPercent">10%</span>
+									</p>
+									<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								</a>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<!-- //검색결과 입력 후 -->
+
+		<!-- 검색결과 없을때 노출 -->
+		<div class="empty_box">
+			<div class="nodata">
+				<p>
+					<span class="keyword">'티비제이 제기장 스웨터'</span>에 맞는 상품을 찾지 못했습니다.<br>
+					검색어를 변경해 보세요.
+				</p>
+			</div>
+			<div class="pd_list recommend">
+				<h3>이런 상품은 어떤가요?</h3>
+				<div class="itemsGrp">
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="#none" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+								</div>
+								<p class="itemBrand">BRAND NAME1</p>
+								<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+								<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								<p class="itemPrice cols">
+									<span class="itemPrice_original">89,000</span>
+									80,100
+									<span class="itemPercent">10%</span>
+								</p>
+								<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+							</a>
+						</div>
+					</div>
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="#none" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+								</div>
+								<p class="itemBrand">BRAND NAME1</p>
+								<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+								<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								<p class="itemPrice cols">
+									<span class="itemPrice_original">89,000</span>
+									80,100
+									<span class="itemPercent">10%</span>
+								</p>
+								<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+							</a>
+						</div>
+					</div>
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="#none" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+								</div>
+								<p class="itemBrand">BRAND NAME1</p>
+								<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+								<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								<p class="itemPrice cols">
+									<span class="itemPrice_original">89,000</span>
+									80,100
+									<span class="itemPercent">10%</span>
+								</p>
+								<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+							</a>
+						</div>
+					</div>
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="#none" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+								</div>
+								<p class="itemBrand">BRAND NAME1</p>
+								<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+								<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								<p class="itemPrice cols">
+									<span class="itemPrice_original">89,000</span>
+									80,100
+									<span class="itemPercent">10%</span>
+								</p>
+								<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+							</a>
+						</div>
+					</div>
+					<div class="item_prod">
+						<div class="item_state">
+							<a href="#none" class="itemLink">
+								<div class="itemPic">
+									<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdLookbook_item1.jpg">
+								</div>
+								<p class="itemBrand">BRAND NAME1</p>
+								<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+								<!-- cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+								<p class="itemPrice cols">
+									<span class="itemPrice_original">89,000</span>
+									80,100
+									<span class="itemPercent">10%</span>
+								</p>
+								<!-- //cols 클래스 추가 후 itemPrice_original태그 위로 올려주시면 됩니다. -->
+							</a>
+						</div>
 					</div>
 				</div>
 			</div>
 		</div>
+		<!-- //검색결과 없을때 노출 -->
 	</div>
-	<!-- //상단_LOOKBOOK_picker_상품_팝업 -->
+</div>
+<button type="button" class="btn_close_search" onclick="fnClose();"><span>닫기</span></button>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	var trendKeywordList = [[${trendKeywordList.trendList}]];
 
-	<script th:inline="javascript">
-/*<![CDATA[*/
-	var fnTest = function (){
-		console.log('18');
+	var fnClose = function (){
+		$("#layer_search").removeClass('active');
 	}
-	var goodsImgUrl = [[${@environment.getProperty('upload.goods.view')}]];
-	var fnLookbookGoodsPopup = function(obj1,obj2,obj3,obj4,obj5,obj6,obj7){
-	$("#lookbookItemPop").modal("show");
-	$("#lookbookItemPop").find(".pd_img").attr('src',goodsImgUrl+'/'+obj1);
-	$("#lookbookItemPop").find(".itemBrand").text(obj2);
-	$("#lookbookItemPop").find(".itemName").text(obj3);
-	$("#lookbookItemPop").find(".itemPrice_original").text(obj4);
-	$("#lookbookItemPop").find(".itemPrice").text(obj5);
-	$("#lookbookItemPop").find(".itemPercent").text(obj6+'%');
-	$("#lookbookItemPop").find(".btn_default").attr('onclick','cfnGoToPage(_PAGE_GOODS_DETAIL+"'+obj7+'");');
-}
-	// 컨텐츠 호출
-	$(document).ready( function() {
-		/* 슬라이드 - 상단_LOOKBOOK */
-		var lookbook_visual_slide = new Swiper('.br_lookbook_view.cont_visual .swiper-container', {
-			loop: true,
-			slidesPerView: 'auto',
-			spaceBetween: 20,
-			speed : 800,
-			autoWidth: true,
-			autoHeight: true,
-			centeredSlides: true,
-			autoplay: false,
-			navigation: {
-				nextEl: '.br_lookbook_view.cont_visual .swiper-button-next',
-				prevEl: '.br_lookbook_view.cont_visual .swiper-button-prev',
-			},
-			pagination: {
-				el: '.br_lookbook_view.cont_visual .swiper-pagination',
-				clickable: true,
-			},
-		}, fnTest());
-
-		/* 슬라이드 - 룩북 속 상품 */
-		var togetherItemSwiper = new Swiper('.br_lookbook_view.cont_items .swiper-container', {
-			slidesPerView: 6,
-			spaceBetween: 20,
-			scrollbar: {
-				el: '.br_lookbook_view.cont_items .swiper-scrollbar',
-				hide: true,
-			},
-		});
 
+	$(document).ready( function() {
+		$("#layer_search").addClass('active');
 
-		var br_ohter_slide = new Swiper('.br_lookbook_view.cont_others .swiper-container', {
-			slidesPerView: 5,
-			spaceBetween: 20,
-			navigation: {
-				nextEl: '.br_lookbook_view.cont_others .swiper-button-next',
-				prevEl: '.br_lookbook_view.cont_others .swiper-button-prev',
-			},
-		});
+		if(trendKeywordList.length > 0){
+			$("#popularKeyArea").html('');
+			trendKeywordList.forEach(function (item, index){
+				var tag = '';
+				if(index<10){
+					tag += '<li>';
+					tag += '	<a href="">'+ item.keyword +'</a>';
+					tag += '</li>';
+				}
+				$("#popularKeyArea").append(tag);
+			});
+		}
 
-		// 슬라이드 - 상단_LOOKBOOK > picker - 룩북_피커_상품정보 팝업
-		$(document).on('click','#btn_picker_item01',function(e){
-			$("#lookbookItemPop").modal("show");
-			return false;
-		});
 	});
-
-/*]]>*/
+	/*]]>*/
 </script>
-
-</th:block>
-
-</body>
-</html>
+</html>

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

@@ -453,30 +453,33 @@
 										}
 
 										function buy_nc_req(cartSqArr) {
-											alert(cartSqArr.length);
-											// buyList[0].backUrl = location.href;
+											let data = {  cartSqArr : cartSqArr
+														, backUrl : location.href
+														, goodsUrl : _PAGE_GOODS_DETAIL
+											};
+											let jsonData = JSON.stringify(data);
 
 											$.ajax( {
 												type		: "POST",
 												url 		: "/pg/nPayReq",
 												dataType 	: 'json',
-												data		: {cartSqArr : JSON.stringify(cartSqArr)},
+												data		: jsonData,
 												beforeSend : function(xhr, settings) {
 													xhr.setRequestHeader("AJAX"			, "true");
 													xhr.setRequestHeader('Accept'		, 'application/json');
 													xhr.setRequestHeader('Content-Type'	, 'application/json');
 												},
 												error: function(xhr, status, error) {
-													alert(status + '; ' + error);
+													mcxDialog.alert(status + '; ' + error);
 												},
 												success : function(result) {
 													if (result.state == "sucess") {
 														window.open('about:blank', 'popupView');
 														document.nPayForm.target = 'popupView';
-														document.nPayForm.action = "$!{NPAY_ORDER_URL}" + result.orderKey + "/" + result.resultNo;
+														document.nPayForm.action = result.npayOrderUrl + "/" + result.orderKey + "/" + result.resultNo;
 														document.nPayForm.submit();
 													} else {
-														alert(result.message);
+														mcxDialog.alert(result.message);
 													}
 												}
 											});

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

@@ -218,7 +218,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -410,11 +410,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

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

@@ -175,7 +175,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -284,11 +284,6 @@
 		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
 	});
 
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
-
 	// 회수지 정보 설정
 	var delvAddrSet = function(delvObj) {
 		let ordChgSq = oneData.ordChgSq;

+ 15 - 17
src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html

@@ -265,8 +265,8 @@
 									<td>
 										<div class="single_line">
 											<ul>
-												<li><span th:text="${deliveryAddrInfo.recipNm}">홍길동</span></li>
-												<li><span th:text="${deliveryAddrInfo.recipPhnno}">010-3456-7890</span></li>
+												<li><span th:text="${deliveryAddrInfo.recipNm}"></span></li>
+												<li><span th:text="${deliveryAddrInfo.recipPhnno}"></span></li>
 											</ul>
 										</div>
 									</td>
@@ -281,9 +281,7 @@
 								</tr>
 								<tr>
 									<th>배송 주소</th>
-									<td th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|">
-										경기도 시흥시 서울대학2로, 1120동 2204호
-									</td>
+									<td th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></td>
 								</tr>
 							</tbody>
 						</table>
@@ -297,20 +295,20 @@
 								<col width="25%">
 							</colgroup>
 							<thead>
-							<tr>
-								<th scope="col">시간</th>
-								<th scope="col">장소</th>
-								<th scope="col">유형</th>
-								<th scope="col">전화번호</th>
-							</tr>
+								<tr>
+									<th scope="col">시간</th>
+									<th scope="col">장소</th>
+									<th scope="col">유형</th>
+									<th scope="col">전화번호</th>
+								</tr>
 							</thead>
 							<tbody>
-							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
-								<td th:text="${sweetTrackerInfo.timeTrans}"></td>
-								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
-								<td th:text="${sweetTrackerInfo.details}"></td>
-								<td th:text="${sweetTrackerInfo.telno}"></td>
-							</tr>
+								<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+									<td th:text="${sweetTrackerInfo.timeTrans}"></td>
+									<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+									<td th:text="${sweetTrackerInfo.details}"></td>
+									<td th:text="${sweetTrackerInfo.telno}"></td>
+								</tr>
 							</tbody>
 						</table>
 					</div>

+ 7 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -333,9 +333,7 @@
 										<th>
 											선물 메세지
 										</th>
-										<!-- TODO -->
-										<!-- 선물 메세지 처리 -->
-										<td></td>
+										<td th:text="${orderInfo.giftMsg}" id="giftMsg"></td>
 									</tr>
 									<!-- 주문 -->
 									<tr th:unless="${oneData.giftPackYn == 'Y'}">
@@ -506,6 +504,7 @@
 	let orderAmtInfo = [[${orderAmtInfo}]];
 	let deliveryAddrInfo = [[${deliveryAddrInfo}]];
 	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let giftMsg = [[${orderInfo.giftMsg}]];
 	let jsonObj = {};
 
 	$(document).ready(function() {
@@ -514,6 +513,11 @@
 		
 		// 마이페이지 location 설정
 		fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+
+		// 선물메시지
+		if ($("#giftMsg").html() != null) {
+			$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+		}
 	});
 	
 	// 전체취소 버튼 클릭 이벤트

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

@@ -642,7 +642,7 @@ $(document).ready(function() {
 		 rating(reviewScore);
 		$("#reviewForm input[name=height]").val(reviewList.height);
 		$("#reviewForm input[name=weight]").val(reviewList.weight);
-		$("#reviewForm textarea[name=reviewContent]").val(reviewList.reviewContent);
+		$("#reviewForm textarea[name=reviewContent]").val(reviewList.reviewContent.escapeHtml());
 		if(reviewList.scoreSize == "1"){
 			$('#reviewForm input:radio[name=scoreSize]:radio[value="1"]').prop('checked', true);
 		}else if(reviewList.scoreSize == "2"){

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -334,7 +334,7 @@
 					
 				}
 				html+='						<div class="txt_review_box"  id="admin_'+item.reviewSq+'">';
-				html+='							<p>'+item.reviewContent+'</p>';
+				html+='							<p>'+item.reviewContent.escapeHtml()+'</p>';
 				html+='						</div>';
 				
 				if (item.admRpl != null && item.admRpl != '') {
@@ -345,7 +345,7 @@
 					html+='									<span class="wr_date">'+item.admRplDt+'</span>';
 					html+='								</div>';
 					html+='								<div class="reply_txt">';
-					html+='									<p>'+item.admRpl+'</p>';
+					html+='									<p>'+item.admRpl.escapeHtml()+'</p>';
 					html+='								</div>';
 					html+='							</div>';
 					html+='						</div>';

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

@@ -76,7 +76,7 @@ var ajaxWishList = function () {
 						if (item.regDtMonth == month[i].regDt) {
 							html+='		<div class="item_prod">';
 							html+='			<div class="item_state">';
-							html+='				<button type="button" class="itemLike active" goodsCd="'+item.goodsCd+'" onclick="wishlistDelete(this)">관심상품 추가</button>';
+							html+='				<button type="button" class="itemLike active" goodsCd=\''+item.goodsCd+'\' onclick="wishlistDelete(this)">관심상품 추가</button>';
 							html+='				<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">';
 							html+='					<div class="itemPic">';
 							html+='						<img alt="" class=" vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '">';

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

@@ -215,7 +215,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -407,11 +407,6 @@
 			}
 		});
 	}
-
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
 /*]]>*/
 </script>
 

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

@@ -173,7 +173,7 @@
 										<th>회수 정보</th>
 										<td>
 											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
-											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+											<button type="button" class="btn btn_default btn_sm" th:if="${not #strings.isEmpty(oneData.shipCompCd) and not #strings.isEmpty(oneData.wdInvoiceNo)}" th:attr="shipCompCd=${oneData.shipCompCd}, wdInvoiceNo=${oneData.wdInvoiceNo}" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
 										</td>
 									</tr>
 								</tbody>
@@ -282,11 +282,6 @@
 		fnSetNoMemberLocation('취소/반품/교환 내역', '반품 상세');
 	});
 
-	var fnGoToWithdrawDelivery = function(param) {
-		// TODO
-		// 회수조회 페이지 이동
-	}
-
 	// 회수지 정보 설정
 	var delvAddrSet = function(delvObj) {
 		let ordChgSq = oneData.ordChgSq;

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

@@ -154,7 +154,7 @@
 								<div>
 									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint2" value="Y" checked> 
 									<label for="rdi-beforpoint2"><span>사용함</span></label> 
-									<span class="useable_point">(<em th:text="${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}"></em>&nbsp;사용 가능)</span>
+									<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}|"></em>&nbsp;사용 가능)</span>
 								</div>
 							</div>
 						</dd>
@@ -186,7 +186,7 @@
 								<!-- 스타일 포인트 3만원 미만 결제시 노출 -->
 								<th:block th:if="${orgGoodsSumAmt} < ${pointUseEnvset.pointUseOrdMinAmt}">
 									<div class="input_wrap">
-										<input type="text" class="form_control" maxlength="" th:placeholder="|${#numbers.formatInteger(pointUseEnvset.pointUseOrdMinAmt, 1, 'COMMA')} 이상 결제시에만 포인트 사용이 가능합니다.|" disabled="">
+										<input type="text" class="form_control" maxlength="" th:placeholder="|${#numbers.formatInteger(pointUseEnvset.pointUseOrdMinAmt, 1, 'COMMA')} 이상 결제시에만 포인트 사용이 가능합니다.|" disabled="">
 									</div>
 								</th:block>
 								<!-- //스타일 포인트 3만원 미만 결제시 노출 -->

+ 34 - 9
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -117,6 +117,8 @@
 			<th>foreignYn</th>
 			<th>orderMadeYn</th>
 			<th>delvFeeCd</th>
+			<th>pntPrate</th>
+			<th>pntMrate</th>
 		</tr>
 		<th:block th:each="delvAllCart, index : ${delvAllCartList}">
 			<th:block th:if="${delvAllCart != null and #lists.size(delvAllCart) > 0}">
@@ -162,11 +164,13 @@
 						<td class="pntDcAmt1">0</td>
 						<td class="gfcdUseAmt1">0</td>
 						<td class="realOrdAmt1">0</td>
-						<td class="savePntAmt1" 	th:text="${goods.savePntAmt}"></td>
+						<td class="savePntAmt1">0</td>
 						<td class="shotDelvYn" 		th:text="${goods.shotDelvYn}"></td>
 						<td class="foreignBuyYn" 	th:text="${goods.foreignBuyYn}"></td>
 						<td class="orderMadeYn" 	th:text="${goods.orderMadeYn}"></td>
 						<td class="delvFeeCd" 		th:text="${goods.delvFeeCd}"></td>
+						<td class="pntPrate" 		th:text="${goods.pntPrate}"></td>
+						<td class="pntMrate" 		th:text="${goods.pntMrate}"></td>
 					</tr>
 				</th:block>
 			</th:block>
@@ -1229,6 +1233,17 @@ var paymentInfoSet = function() {
 						,"giftMsg"				: ""
 						,"custPayMeans"			: custPayMeans
 						,"cartSqArr"			: cartSqArr
+						,"orgGoodsSumAmt"		: $("#orderAmtForm .orgGoodsSumAmt").text()
+						,"cpn1DcSumAmt"			: $("#orderAmtForm .cpn1DcSumAmt").text()
+						,"tmtb1DcSumAmt"		: $("#orderAmtForm .tmtb1DcSumAmt").text()
+						,"tmtb2DcSumAmt"		: $("#orderAmtForm .tmtb2DcSumAmt").text()
+						,"goodsCpnDcSumAmt"		: $("#orderAmtForm .goodsCpnDcSumAmt").text()
+						,"cartCpnDcSumAmt"		: $("#orderAmtForm .cartCpnDcSumAmt").text()
+						,"prePntDcSumAmt"		: $("#orderAmtForm .prePntDcSumAmt").text()
+						,"pntDcSumAmt"			: $("#orderAmtForm .pntDcSumAmt").text()
+						,"gfcdUseSumAmt"		: $("#orderAmtForm .gfcdUseSumAmt").text()
+						,"realOrdSumAmt"		: $("#orderAmtForm .realOrdSumAmt").text()
+						,"delvSumAmt"			: $("#orderAmtForm .delvSumAmt").text()
 					};
 					
 					$.ajax( {
@@ -2161,7 +2176,6 @@ var custCpnSumAmtCal = function() {
 		var cartCpnDcAmt	= parseInt($(this).parent().find(".cartCpnDcAmt").text());
 		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var dcSumAmt		= 0;
-		var savePntAmt1		= parseInt($(this).parent().find(".savePntAmt1").text());
 		
 		// 주문금액 = ((판매가 - 즉시할인가) + 옵션추가금액) * 장바구니수량
 		orgGoodsSumAmt		= orgGoodsSumAmt + (orgCurrPrice + optAddPrice) * goodsQty;
@@ -2181,14 +2195,8 @@ var custCpnSumAmtCal = function() {
 		// 할인금액합계 = 다다익선수량금액 + 다다익선금액금액 + 상품쿠폰금액 + 장바구니금액 + 선포인트금액
 		if (prePntDcAmtYn == "Y") {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt + prePntDcAmt1;
-			
-			// 2021.04.29 선포인트사용포인트 적립포인트금액 0원처리
-			if (prePntDcAmt1 < 1) {
-				savePntSumAmt	= savePntSumAmt + savePntAmt1;
-			}
 		} else {
 			dcSumAmt		= tmtb1DcAmt + tmtb2DcAmt + goodsCpnDcAmt + cartCpnDcAmt;
-			savePntSumAmt	= savePntSumAmt + savePntAmt1;
 		}
 		
 		// 주문금액설정
@@ -2198,11 +2206,15 @@ var custCpnSumAmtCal = function() {
 	
 	// 포인트, 상품권 금액 분배
 	$("#orderAmtForm .cartSq").each(function(){
+		var pntPrate		= parseInt($(this).parent().find(".pntPrate").text());
+		var pntMrate		= parseInt($(this).parent().find(".pntMrate").text());
 		var ordAmt 			= parseInt($(this).parent().find(".ordAmt").text());
-		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text()); 
+		var dcSumAmt		= parseInt($(this).parent().find(".dcSumAmt").text());
+		var prePntDcAmt1	= parseInt($(this).parent().find(".prePntDcAmt1").text());
 		var tempDiv 		= parseInt((ordAmt / ordSumAmt) * 100);
 		var pntDcAmt1 		= 0;
 		var gfcdUseAmt1		= 0;
+		var savePntAmt1		= 0;
 		
 		if (index == cartSqLenght) {
 			pntDcAmt1 		= leftPntAmt;
@@ -2217,9 +2229,22 @@ var custCpnSumAmtCal = function() {
 		var realOrdAmt1		= ordAmt - dcSumAmt - pntDcAmt1 - gfcdUseAmt1;
 		realOrdSumAmt		= realOrdSumAmt + realOrdAmt1;
 		
+		// 2021.05.11 최종할인금액으로 적립포인트 적용
+		savePntAmt1			= parseInt(realOrdAmt1 * (pntPrate/100));
+		
+		// 선포인트사용여부 
+		if (prePntDcAmtYn == "Y") {
+			if (prePntDcAmt1 < 1) {
+				savePntSumAmt	= savePntSumAmt + savePntAmt1;
+			}
+		} else {
+			savePntSumAmt	= savePntSumAmt + savePntAmt1;
+		}
+		
 		$(this).parent().find(".pntDcAmt1").text(pntDcAmt1);
 		$(this).parent().find(".gfcdUseAmt1").text(gfcdUseAmt1);
 		$(this).parent().find(".realOrdAmt1").text(realOrdAmt1);
+		$(this).parent().find(".savePntAmt1").text(savePntAmt1);
 		
 		index++;
 	});

+ 12 - 17
src/main/webapp/WEB-INF/views/web/planning/PlanningCustGradeBenefitFormWeb.html

@@ -277,9 +277,8 @@
 
 		// 예정등급이 VIP가 아닌경우
 		if (Number(expctCustGrade.gradeCdNo) > 10) {
-			let nextGradeNo = Number(expctCustGrade.gradeCdNo)-10;				// 다음등급번호
-			let nextCustGradePolicy = fnGetNextGradePolicyInfo(nextGradeNo);	// 다음등급정책정보
-			fnNextGradeCondition(nextCustGradePolicy, expctCustGrade);			// 다음조건 알림
+			let nextGradeNo = 'G110_'+(Number(expctCustGrade.gradeCdNo)-10);				// 다음등급번호
+			fnGetNextGradePolicyInfo(nextGradeNo);	// 다음등급정책정보
 		} else {
 			fnDisplayVipText(expctCustGrade);
 		}
@@ -288,18 +287,14 @@
 
  	// 다음 등급정책
  	var fnGetNextGradePolicyInfo = function (nextGradeNo) {
-		let custGradePolicy = exptCustGradeMap.custGradePolicy;	// 등급별정책
-		let nextCustGradePolicy;
-		$(custGradePolicy).each(function(idx, item) {
-			if (Number(item.gradeCdNo) === nextGradeNo ) {
-				nextCustGradePolicy = item;
-			}
-		});
-		return nextCustGradePolicy;
+		$.get('/planning/next/custgrade/info/' + nextGradeNo
+			, function (data) {
+				fnNextGradeCondition(data.nextCustGradePolicy);			// 다음조건 알림
+			});
 	}
 
 	// 다음등급 조건 알림
-	var fnNextGradeCondition = function (nextCustGradePolicy, expctCustGrade) {
+	var fnNextGradeCondition = function (nextCustGradePolicy) {
 		let $etcGrade = $('#etcGrade');
 		let $sameVipGrade = $('#sameVipGrade');
 		let $vipGrade = $('#vipGrade');
@@ -310,13 +305,13 @@
 		let $nextGrde = $('#nextGrde');
 
 		let remnantBuyAmt = 0;
-		if (nextCustGradePolicy.minBuyAmt > expctCustGrade.sumRealOrdAmt) {
-			remnantBuyAmt = nextCustGradePolicy.minBuyAmt - expctCustGrade.sumRealOrdAmt;
+		if (nextCustGradePolicy.minBuyAmt > nextCustGradePolicy.sumRealOrdAmt) {
+			remnantBuyAmt = nextCustGradePolicy.minBuyAmt - nextCustGradePolicy.sumRealOrdAmt;
 		}
 
 		let remnantBuyCnt = 0;
-		if (nextCustGradePolicy.minBuyCnt > expctCustGrade.ordCnt) {
-			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  expctCustGrade.ordCnt;
+		if (nextCustGradePolicy.minBuyCnt > nextCustGradePolicy.ordCnt) {
+			remnantBuyCnt = nextCustGradePolicy.minBuyCnt -  nextCustGradePolicy.ordCnt;
 		}
 
 		$etcGrade.show();
@@ -361,7 +356,7 @@
 
 	$('#btnGradeCoupon').on('click', function () {
 		let params = JSON.stringify({});
-		gagajf.ajaxJsonSubmit('/planning/event/custgrade/coupon/down', params, fnDownloadCallback)
+		gagajf.ajaxJsonSubmit('/planning/event/custgrade/coupon/down', params, fnDownloadCallback);
 	});
 
  	var fnDownloadCallback = function (result) {

+ 38 - 0
src/main/webapp/WEB-INF/views/web/popup/TrackWithdrawPopupFormWeb.html

@@ -0,0 +1,38 @@
+<form class="form_wrap form_full" name="trackWithdrawForm" id="trackWithdrawForm">
+	<div class="modal-header">
+		<h5 class="modal-title" id="reclaimLabel">
+			회수 조회
+		</h5>
+	</div>
+	<div class="modal-body">
+		<div class="pop_cont">
+			<!-- 210506_수정 : 테이블 변경 -->
+			<div class="tbl type5">
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
+					<thead>
+						<tr>
+							<th scope="col">시간</th>
+							<th scope="col">장소</th>
+							<th scope="col">유형</th>
+							<th scope="col">전화번호</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>2020.10.05 09:10:22</td>
+							<td>시흥 대리점</td>
+							<td>집화 처리</td>
+							<td>010-1234-5678</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+	</div>
+</form>

+ 29 - 1
src/main/webapp/biz/mypage.js

@@ -316,7 +316,7 @@ var fnReceipt = function(param) {
 		receiptWin += '&tno=' + paymentInfo.pgTid;
 		receiptWin += '&order_no=' + ordNo;
 		receiptWin += '&trade_mony=' + (orderAmtInfo.realOrdAmt + orderAmtInfo.realDelvAmt);
-		
+		console.log(receiptWin);
 		// 팝업 크기 설정
 		option = 'width=455, height=815';
 	} else if (param == 'cash') {
@@ -446,3 +446,31 @@ var fnCrePayAddCost = function(param) {
 	$('#addPaymentForm input[name=ordNo]').val(ordNo);
 	document.addPaymentForm.submit();
 }
+
+// 회수조회 버튼 클릭 이벤트
+var fnGoToWithdrawDelivery = function(param) {
+	let shipCompCd = $(param).attr('shipCompCd');
+	let wdInvoiceNo = $(param).attr('wdInvoiceNo');
+
+	let data = {}
+	data.shipCompCd = shipCompCd;
+	data.wdInvoiceNo = wdInvoiceNo;
+
+	let jsonData = JSON.stringify(data);
+
+	$.ajax( {
+		type		: "POST",
+		url 		: '/mypage/track/withdraw/popup/form',
+		data		: jsonData,
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+		},
+		success 	: function(result) {
+			$("#reclaimPop .modal-dialog .modal-content").html(result);
+			$("#reclaimPop").modal("show");
+		}
+	});
+}

+ 1 - 0
src/main/webapp/ux/mo/css/common_m.css

@@ -1304,6 +1304,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 /*alert confirm*/
 .dialog-mobile {
 	padding: 0;
+	margin-left: -45%;
 	text-align:center;
 	position: fixed;
 	top: 50%;

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

@@ -466,7 +466,7 @@
 .pd_detail .descript_box .btn_group_flex button{border:1px solid #fd4802; color:#fd4802; background: #fff;}
 /* 2 */
 .pd_detail .desc_status{padding:1.5rem 2rem; margin-bottom:-1.2rem; color: #fd4802; border-bottom:1px solid #dddddd;}
-.pd_detail .timer_box{position: relative;width: 30rem;top:-2.0rem;left: 50%;transform: translateX(-50%);z-index: 2;}
+.pd_detail .timer_box{position: absolute;width: 30rem;top:-2.4rem;left: 50%;transform: translateX(-50%);z-index: 2;}
 .pd_detail .timer_box::before{position: absolute;left: 0;bottom: 0;width: 100%;height: 3rem;background-color: rgba(255,255,255,.95);z-index: -1;} /* content: ''; */
 .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);} */
@@ -480,14 +480,14 @@
 .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::before {display:none;}
-.pd_detail .descript_box {padding-top: 0rem;}
+.pd_detail .descript_box {padding-top: 2.4rem;}
 .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::after {content:''; position: relative; display:inline-block; width:2rem; height:1px;}
 .pd_detail .option_box .opt_color ul li {margin-right:0.5rem; display:inline-block; width:5rem;}
 .pd_detail .option_box .opt_color ul li:last-child {margin-right:0;}
 .pd_detail .option_box .opt_color ul li a {position:relative; display:block; padding-bottom:150%; box-sizing:border-box; width:5rem;}
-.pd_detail .option_box .opt_color ul li a img {position:absolute; top:0; left:0; width:100%;}
+.pd_detail .option_box .opt_color ul li a img {position:absolute; top:50%; left:50%; width:100%; transform: translate(-50%, -50%);}
 .pd_detail .option_box .opt_color ul li a.on:after{display:block; content:''; position:absolute; left:0; right:0; top:0; bottom:0; border:1px solid #fd4802; box-sizing:border-box;}
 .pd_detail .option_box > [class^="opt_"] .opt_header {margin-bottom:0.5rem;}
 .pd_detail .option_box > [class^="opt_"] .opt_header .title {margin-right:1rem; font-weight:500; color:#222;}
@@ -820,7 +820,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .popup_box .button_list.clear button{width:100% !important;}
 .dp .open_categori 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;}
 .dp .Bulletship_foot .clear{background:#f5f5f5; margin:4rem -2rem; padding:4rem 0 0rem 2rem;}
-.dp .items_option{padding-top:0; margin:0 2rem;}
+.dp .items_option{padding-top:0; margin:0 -2.1rem;}
 .dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd; font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
 .dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
 .dp .dp_listItems_wrap .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
@@ -860,7 +860,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .brand_floormenu.soldout .prd_buy > .buying{display:none;}
 .brand_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
 .dp_lookbook ~ .popup_box .popup_con{margin-bottom:5rem}
-.dp_listItems_cont.type1 .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
+.dp_listItems_wrap.type1 .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
 /* 210423 */
 .br .brand_si{margin-top:0.1rem}
 .br .brand_si .swiper-wrapper{height:0;}
@@ -885,7 +885,8 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .pop_detail .review_list .review .info_box .writer span:first-child::after {display:none;}
 .pop_detail .review_list .review .response_box {margin-top:1.4rem;}
 .pop_detail .review_list .review .response_box > div:first-child {margin-top:0}
-.pop_detail .review_list .review .response_box > div dl div {display:flex; font-size:1.1rem;}
+.pop_detail .review_list .review .response_box > div dl{padding-top:2.3rem}
+.pop_detail .review_list .review .response_box > div dl div {display:flex; font-size:1.1rem; width:100%;}
 .pop_detail .review_list .review .response_box > div dl div dt {width:4.5rem; color:#888}
 .pop_detail .review_list .review .response_box > div dl div dd {margin-left:1.2rem; color:#fd4802}
 .pop_detail .review_list .review .response_box2 {margin-top:1.4rem;}
@@ -923,6 +924,18 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .br .br_inlookbook .ioBtn.active{display:block}
 .br .br_inlookbook .itemsOut{display:none}
 .br .br_inlookbook .itemsOut.active{display:block}
+/* 210510 */
+.pd_detail .pd_info .inner:nth-of-type(2){background:linear-gradient(to bottom,rgba(255, 255, 255, 0.93) 1%,rgba(255, 255, 255, 1) 25%,rgba(255, 255, 255, 1) 50%,rgba(255, 255, 255, 1) 75%,rgba(255, 255, 255, 1) 100%)}
+/* 210511 */
+.dp .promotion_visual.type2{padding-bottom:3.8rem}
+.dp .dp_hotdeal .inner:nth-of-type(1){margin-bottom:0; padding-bottom:4rem;}
+.dp .dp_review_cont{padding-bottom:4rem;}
+.dp .mid_banner{padding-bottom:3rem;}
+.dp .dp_listItems_cont.type1{padding-bottom:3rem;}
+.dp .dp_listItems_cont.type2{padding-bottom:3rem;}
+.dp .dp_listItems_wrap{padding-bottom:3rem;}
+.dp .other_promotion_slide{padding-top:0}
+.dp .dp_lookbook ~ .popup_box.nodata .popup_con{margin-bottom:0;}
 
 
 
@@ -1754,7 +1767,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp .dp_best .best_item .itemsGrp .item_prod:nth-child(2n) {margin-right: 0;}
 
 /* 핫딜 - dp_hotdeal */
-.dp_hotdeal .hotdeal {position: relative;height:49vw; margin-bottom:4rem; background: url(/images/mo/thumb/hotdeal_bg.png)no-repeat center center; background-size:cover;}
+.dp_hotdeal .hotdeal {position: relative;height:49vw; margin-bottom:0; background: url(/images/mo/thumb/hotdeal_bg.png)no-repeat center center; background-size:cover;}
 .dp_hotdeal .hotdeal #countdown{position: absolute; padding:0 6.1vw; height:10.1vw; line-height:10.1vw; border-radius:10.1vw;; border:1px solid #fff; white-space:nowrap; display:inline-block;  text-align: center; bottom:8.3vw; left:50%; transform: translateX(-50%);}
 .dp_hotdeal .hotdeal #countdown:before{content:''; display:inline-block; margin-right:1.8vw; width:5.1vw; height:5.1vw; background:url(/images/mo/icon_time_hotdeal.png) center center no-repeat; background-size:contain; vertical-align:middle;}
 .dp_hotdeal .hotdeal #countdown span{font-size:4vw; color:#fff; display:inline-block; vertical-align:middle;}
@@ -1773,7 +1786,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape span{position:relative; width:auto; left:0; top:0; text-indent:0; transform:translate(0);}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape:after{display:none;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
-.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 88;}
+.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 78;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod.sold_out .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size:1.4rem; color:#fff; font-weight:bold; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height:23.4rem;; z-index: 99; text-align: center;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape{position:absolute; left:17.6rem; top:3rem;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemBrand {margin:3rem 0 0.5rem;}
@@ -1807,7 +1820,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .dp .dp_exhibition .inner:first-child{padding-bottom:0; margin-bottom:0;}
 .dp .dp_exhibition .inner:last-child{padding-bottom: 4rem;}
 .dp .dp_exhibition .inner.bg_gray{background-color:#f5f5f5;}*/
-.dp .dp_listItems_wrap .items_option{padding-top:4rem;}
+.dp .dp_listItems_wrap .items_option{padding-top:0;}
 .dp .dp_listItems_wrap .items_option .select{display:block;}
 /*.dp .promotion_visual.type1{margin-bottom:-5.3rem;}*/
 .dp .promotion_visual.type1 .mid_banner{background-color:#fff;}

+ 3 - 8
src/main/webapp/ux/mo/css/style24_m.css

@@ -619,12 +619,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .survey_wrap .survey_con .survey_row {background: #fff; padding: 3rem 2rem; margin-bottom: 2rem;}
 .ev .survey_wrap .survey_con .survey_row:last-child {border-bottom: 0;}
 .ev .survey_wrap .survey_con .survey_row h4 {margin-bottom: 2rem; font-size: 1.33rem; line-height: 1.5; font-weight: 500; position: relative; padding-left: 2.5rem;}
-.ev .survey_wrap .survey_con .survey_row h4:before {position: absolute; top: 0; left: 0;}
-.ev .survey_wrap .survey_con .survey_row.q4  {margin-bottom: 0;}
-.ev .survey_wrap .survey_con .survey_row.q1 h4:before {content:'Q1.'}
-.ev .survey_wrap .survey_con .survey_row.q2 h4:before {content:'Q2.'}
-.ev .survey_wrap .survey_con .survey_row.q3 h4:before {content:'Q3.'}
-.ev .survey_wrap .survey_con .survey_row.q4 h4:before {content:'Q4.'}
+.ev .survey_wrap .survey_con .survey_row h4 span.question {position: absolute; top: 0; left: 0;}
 .ev .survey_wrap .survey_con .survey_row .answer ul {width: 100%;}
 
 .ev .survey_wrap .survey_con .survey_row ul li {position: relative; margin-bottom: 2rem;}
@@ -643,8 +638,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .ev .survey_wrap .survey_con .survey_row.q4 {padding-bottom: 0;}
 .ev .survey_wrap .survey_con .survey_row.q4 .q4_ans {width: 100%; height: 4.5rem; padding: 1rem; font-size: 1.3rem; line-height: 1.6; color: #222; font-weight: 300; resize:none;}
-.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff;}
-.ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto;} 
+.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff; margin-top: -2rem;}
+.ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto; } 
 
 /* ev_comment_1 */
 .dp {background: #f5f5f5;}

+ 27 - 0
src/main/webapp/ux/style24_link.js

@@ -51,6 +51,7 @@ const _PAGE_GOODS_REVIEW_PHTO_LIST_LAYER = _frontUrl + "/goods/review/photo/laye
 const _PAGE_GOODS_CPN_DOWNLOAD = "/goods/coupon/download";											// 상품쿠폰다운로드
 const _PAGE_GOODS_EP_CPN_DOWNLOAD = "/goods/ep/coupon/download";									// EP쿠폰다운로드
 const _PAGE_DEAL_GOODS_DETAIL_LAYER = _frontUrl + "/goods/deal/detail/layer/";						// 딜상품 상세레이어
+const _PAGE_SEARCH_LAYER = _frontUrl + "/display/search/layer/";									// 검색레이어
 
 //== 장바구니 ==/
 const _PAGE_CART = _frontUrl + "/cart/list/form";								// 장바구니
@@ -1303,6 +1304,32 @@ function copyToClipboard() {
 	mcxDialog.alert("URL이 복사 되었습니다.");
 }
 
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 검색 full 팝업
+ * <pre>
+ *		cfSearchLayer();
+ * </pre>
+ */
+function cfSearchLayer() {
+	var Param = new Object();
+	var str = '<div class="common_search active" id="layer_search"></div>';
+	if ("P" != _frontGb){
+		// str = '<div class="modal pop_full fade pd_pop pd_qnalist_pop" id="layer_goods_qna" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
+	}
+
+	if ($('#layer_search').length == 0) {
+		$('body').append(str);
+	}
+
+	if ("P" == _frontGb){
+		cfOpenFullLayer(_PAGE_SEARCH_LAYER, 'layer_search');
+	}else{
+		cfOpenLayer(_PAGE_SEARCH_LAYER, 'layer_search');
+	}
+}
+
 /**
  * @type   : function
  * @access : public