浏览代码

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

xodud1202 5 年之前
父节点
当前提交
7b69063a14
共有 64 个文件被更改,包括 3651 次插入542 次删除
  1. 20 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  2. 10 4
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  3. 12 4
      src/main/java/com/style24/front/biz/web/TsfCommonController.java
  4. 6 6
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 126 12
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 3 4
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  7. 5 4
      src/main/java/com/style24/front/support/config/TsfMybatisWmsConfig.java
  8. 2 0
      src/main/java/com/style24/persistence/domain/Contents.java
  9. 3 0
      src/main/java/com/style24/persistence/domain/GoodsCompose.java
  10. 53 51
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  11. 32 20
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  12. 5 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  13. 4 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  14. 150 28
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  15. 14 43
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  16. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  17. 1 0
      src/main/resources/i18n/messages/message_ko_KR.properties
  18. 3 3
      src/main/webapp/WEB-INF/views/mob/SigninFormMob.html
  19. 2 0
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  20. 12 10
      src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html
  21. 3 3
      src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html
  22. 14 10
      src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html
  23. 1057 2
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  24. 72 8
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  25. 0 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  26. 891 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  27. 268 19
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  28. 359 40
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  29. 4 1
      src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html
  30. 4 4
      src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html
  31. 73 48
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrChangePopMob.html
  32. 6 4
      src/main/webapp/WEB-INF/views/web/SigninFormWeb.html
  33. 17 7
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  34. 2 2
      src/main/webapp/WEB-INF/views/web/customer/IdFindFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/customer/NonCustOrderConfirmFormWeb.html
  36. 1 1
      src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html
  37. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  38. 6 4
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  39. 3 2
      src/main/webapp/WEB-INF/views/web/error/InaccessWeb.html
  40. 23 7
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  41. 63 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  42. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  43. 13 10
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  44. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  45. 15 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  46. 7 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  47. 4 4
      src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html
  48. 2 2
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  49. 2 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  50. 2 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  51. 28 14
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html
  52. 1 1
      src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html
  53. 65 48
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html
  54. 2 1
      src/main/webapp/biz/goods.js
  55. 二进制
      src/main/webapp/images/pc/ico_bg_check.png
  56. 二进制
      src/main/webapp/images/pc/ico_bg_point.png
  57. 1 1
      src/main/webapp/ux/mo/css/common_m.css
  58. 30 19
      src/main/webapp/ux/mo/css/layout_m.css
  59. 11 3
      src/main/webapp/ux/mo/css/style24_m.css
  60. 16 6
      src/main/webapp/ux/pc/css/common.css
  61. 95 56
      src/main/webapp/ux/pc/css/layout.css
  62. 17 2
      src/main/webapp/ux/pc/css/main.css
  63. 1 0
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js
  64. 1 0
      src/main/webapp/ux/style24_link.js

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

@@ -422,4 +422,24 @@ public interface TsfPlanningDao {
 	 */
 	void deleteEntryReplyAttach(Plan plan);
 	
+	/**
+	 * 기획전/이벤트 접근 고객 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	Plan getCustomerGubunAccessibleList(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 접근 고객 리스트
+	 *
+	 * @param Plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 4. 22
+	 */
+	Collection<Plan> getCustomerGradeAccessibleList(Plan plan);
+	
 }

+ 10 - 4
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -140,18 +140,23 @@ public class TsfPlanningService {
 		if ("N".equals(planningDao.getNewCustomerAccessibleYn(plan))) {
 			msg = "신규회원만 접근 가능합니다.";
 		}
-
+		
 		if (TsfSession.isLogin()) {
 			// 고객구분접근가능여부 조회
 			plan.setCustGb(TsfSession.getCustGb());
 			if ("N".equals(planningDao.getCustomerGubunAccessibleYn(plan))) {
-				msg = TsfSession.getInfo().getCustGbNm() + "만 접근이 가능합니다.";
+				msg = planningDao.getCustomerGubunAccessibleList(plan).getCustGb() + "만 접근이 가능합니다.";
 			}
 
+			String custGrade = "";
 			// 고객등급접근가능여부 조회
 			plan.setCustGrade(TsfSession.getInfo().getCustGrade());
 			if ("N".equals(planningDao.getCustomerGradeAccessibleYn(plan))) {
-				msg = TsfSession.getInfo().getCustGradeNm() + " 회원만 접근 가능합니다.";
+				Iterator<Plan> iter = planningDao.getCustomerGradeAccessibleList(plan).iterator();
+				while (iter.hasNext()) {
+					custGrade += iter.next().getCustGrade()+ " ";
+				}
+				msg = custGrade+ " 회원만 접근 가능합니다.";
 			}
 		}
 
@@ -159,7 +164,8 @@ public class TsfPlanningService {
 			// 웹제휴채널접근가능여부 조회
 			plan.setAfLinkCd(TsfSession.getAttribute("afLinkCd"));
 			if ("N".equals(planningDao.getAfLinkAccessibleYn(plan))) {
-				msg = commonDao.getAfLinkName(TsfSession.getAttribute("afLinkCd")) + " 채널만 접근 가능합니다.";
+				//msg = commonDao.getAfLinkName(TsfSession.getAttribute("afLinkCd")) + " 채널만 접근 가능합니다.";
+				msg = "제휴 채널을 통해서만 접근 가능합니다. ";
 			}
 		}
 

+ 12 - 4
src/main/java/com/style24/front/biz/web/TsfCommonController.java

@@ -223,8 +223,19 @@ public class TsfCommonController extends TsfBaseController {
 		
 		// 1.0 주문고객 배송지정보조회
 		Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
+		int index 				= 0;
+		int deliveryAddrCnt 	= deliveryAddrList.size();
 		
-		mav.addObject("deliveryAddrList", deliveryAddrList);	// 배송지정보
+		for (Order deliveryAddr : deliveryAddrList) {
+			if (index == 0) {
+				if (deliveryAddr.getRecipZipcode() == null || "".equals(deliveryAddr.getRecipZipcode())) {
+					deliveryAddrCnt = 0;
+				}
+			}
+		}
+		
+		mav.addObject("deliveryAddrList"	, deliveryAddrList);		// 배송지정보
+		mav.addObject("deliveryAddrCnt"		, deliveryAddrCnt);			// 배송지등록수
 		mav.setViewName(super.getDeviceViewName("popup/DelvAddrChangePop"));
 		
 		return mav;
@@ -353,9 +364,6 @@ public class TsfCommonController extends TsfBaseController {
 	public ModelAndView delvMemoChangePop(@RequestBody Order order) {
 		
 		ModelAndView mav = new ModelAndView();
-
-		log.info("ordNo >>> {}", order.getOrdNo());
-		log.info("delvMemo >>> {}", order.getDelvMemo());
 		
 		mav.addObject("ordNo", order.getOrdNo() == null ? 0 : order.getOrdNo());
 		

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

@@ -98,12 +98,12 @@ public class TsfDisplayController extends TsfBaseController {
 			login.setCustNo(0);
 		}
 
-		String mainCateNo = "";
-		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
-			mainCateNo = "1720";
-		} else {
-			mainCateNo = "1700";
-		}
+		String mainCateNo = "1700";
+//		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
+//			mainCateNo = "1720";
+//		} else {
+//			mainCateNo = "1700";
+//		}
 
 		mallMainLayout.setCateNo(Integer.parseInt(mainCateNo));
 		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mallMainLayout);

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

@@ -22,11 +22,11 @@ import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
-import com.style24.core.biz.service.TscKakaoPayService;
 import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
 import com.style24.core.biz.service.TscOrderService;
+import com.style24.core.biz.service.TscWmsService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
@@ -52,6 +52,7 @@ import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Point;
@@ -114,9 +115,6 @@ public class TsfMypageController extends TsfBaseController {
 	@Autowired
 	private TsfRendererService rendererService;
 
-	@Autowired
-	private TscKakaoPayService kakaoPayService;
-
 	@Autowired
 	private NiceCertify niceCertify;
 
@@ -130,10 +128,13 @@ public class TsfMypageController extends TsfBaseController {
 	private TsfCommonService commonService;
 
 	@Autowired
-	private TscKcpService kcpService;
+	private TscKcpService coreKcpService;
 
 	@Autowired
 	private TsfReinboundService reinboundService;
+	
+	@Autowired
+	private TscWmsService coreWmsService;
 
 	/**
 	 * 마이페이지 메인 화면
@@ -175,6 +176,10 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 주문 상태 별 수량 조회
 		mav.addObject("orderCount", coreOrderService.getOrderStatCount(order));
+		
+		// 2021.04.21 모바일에서 사용하려고 추가
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		mav.addObject("totalCnt", totalCnt);
 
 		// 주문상세상태코드 설정
 		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
@@ -465,6 +470,38 @@ public class TsfMypageController extends TsfBaseController {
 		return result;
 	}
 
+	/**
+	 * 교환요청철회
+	 *
+	 * @param OrderChange
+	 * @return GagaResponse
+	 * @author card007
+	 * @since 2021. 04. 20
+	 */
+	@PostMapping("/exchange/cancel")
+	@ResponseBody
+	public GagaResponse exchangeRequestCancel(@RequestBody OrderChange orderChange) {
+
+		if (orderChange== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		// 1. 교환요청철회 정보 설정
+		int custNo = TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0;
+		orderChange.setCustNo(custNo);
+		orderChange.setRegNo(custNo);
+		orderChange.setUpdNo(custNo);
+		
+		String ipAddress = TsfSession.getIpAddress();
+		orderChange.setIpAddress(ipAddress);
+
+		// 2.교환요청철회 
+		coreOrderChangeService.exchangeCancel(orderChange);
+
+		return super.ok(message.getMessage("EXCHANGE_0002"));
+		// return super.ok();
+	}
+
 	/**
 	 * 마이페이지 등급쿠폰 다운 처리
 	 *
@@ -747,17 +784,13 @@ public class TsfMypageController extends TsfBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
-		// TODO
-		// @ 결품취소로직 추가
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-
 		// 1. 세션회원조회
 		int custNo = TsfSession.getInfo().getCustNo();
 		orderChange.setCustNo(custNo);
 		orderChange.setIpAddress(TsfSession.getIpAddress());
 
-		GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange);
+		// 2. 취소완료 처리
+		GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange, custNo);
 
 		// TODO
 		// 취소 완료 알림톡 발송 에정
@@ -970,6 +1003,35 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * WMS 주문 취소 가능 여부 조회
+	 * 
+	 * @param
+	 * @return
+	 * @author card007
+	 * @since 2021. 04. 22
+	 */
+	@PostMapping("/wms/cancel/available")
+	@ResponseBody
+	public GagaMap getWmsCancelYn(@RequestBody OrderChange orderChange) {
+		GagaMap result = new GagaMap();
+		String cancelYn = "Y";
+
+		Integer ordNo = orderChange.getOrdNo();
+
+		for (Integer ordDtlNo : orderChange.getOrdDtlNoArr()) {
+			String rst = coreWmsService.getCancelYn(ordNo, ordDtlNo);
+			
+			if ("Y".equals(cancelYn) && "N".equals(rst)) {
+				cancelYn = "N";
+			}
+		}
+
+		result.setString("cancelYn", cancelYn);
+
+		return result;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -1725,7 +1787,7 @@ public class TsfMypageController extends TsfBaseController {
 	public GagaMap getAccountCheck(@RequestBody CustAccount custAccount) throws Exception {
 		custAccount.setIpAddress(TsfSession.getIpAddress());
 		boolean isValid = false;
-		GagaMap result = kcpService.checkAccount(custAccount);
+		GagaMap result = coreKcpService.checkAccount(custAccount);
 		if ("0000".equals(result.get("resCd"))) {
 			isValid = true;
 		}
@@ -1967,12 +2029,64 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	@PostMapping("/order/listInfo")
 	public ModelAndView getOrderListInfo(@RequestBody Order order) {
+		
 		// 주문목록조회
 		ModelAndView mav = new ModelAndView();
+		
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		pageable.setTotalCount(totalCnt);
+		order.setPageable(pageable);
+		
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordNoList = new ArrayList<>();
+
+		for (Order tmpOrder : orderService.getPagingOrdNoList(order)) {
+			ordNoList.add(tmpOrder.getOrdNo());
+		}
+		
+		if (ordNoList.size() > 0) {
+			order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
+		}
+				
 		mav.addObject("orderList", orderService.getOrderListForMypage(order));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListInfo"));
 
 		return mav;
 	}
+	
+	/**
+	 * 마이페이지 주문목록 조회 (모바일)
+	 * 
+	 * @param Order
+	 * @return ModelAndView
+	 * @author jsh77b
+	 * @since 2021. 04. 19
+	 */
+	@ResponseBody
+	@PostMapping("/order/listInfo2")
+	public GagaMap getOrderListInfo2(@RequestBody Order order) {
+		
+		GagaMap result = new GagaMap();
+		
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		pageable.setTotalCount(orderService.getPagingOrdNoListCount(order));
+		order.setPageable(pageable);
+
+		result.set("paging"		, order);
+		result.set("totalCnt"	, totalCnt);
+		result.set("endRow"		, pageable.getEndRow());
+		result.set("orderList"	, orderService.getOrderListForMypage(order));
+		
+		// 주문목록조회
+		//ModelAndView mav = new ModelAndView();
+		//mav.addObject("orderList", orderService.getOrderListForMypage(order));
+		//mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListInfo"));
+
+		return result;
+	}
 
 }

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

@@ -335,6 +335,7 @@ public class TsfPlanningController extends TsfBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 - 기본정보
+		coupon.setPlanCouponStat("Y");
 		mav.addObject("couponDetailInfo", couponService.getCouponDetailInfo(coupon));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningCouponDetailForm"));
 		return mav;
@@ -678,14 +679,12 @@ public class TsfPlanningController extends TsfBaseController {
 						coupon.setRegNo(TsfSession.getInfo().getCustNo());
 						coupon.setUpdNo(TsfSession.getInfo().getCustNo());
 						// 이거 공통코드 변경예정.. 밑에
-						coupon.setPubReason("G068_60");
-						coupon.setPubReasonDtl("이벤트출석체크");
+						coupon.setPubReason("G068_91");
+						coupon.setPubReasonDtl("출석체크");
 						coupon.setEndAlimSendYn("N");
 						coreCouponService.saveCouponIssue(coupon);
 						String msg =  "축하합니다. " + toNumFormat(pointAmt) + " 포인트와 " + toNumFormat(coupon.getDcVal()) +coupon.getDcWay() + " 할인쿠폰이 지급 되었습니다!";
 						result.set("msg", msg);
-						
-						
 					}
 
 				}else {

+ 5 - 4
src/main/java/com/style24/front/support/config/TsfMybatisWmsConfig.java

@@ -1,7 +1,7 @@
 package com.style24.front.support.config;
 
-import com.style24.core.support.annotation.WmsDs;
-import com.style24.core.support.env.TscConstants;
+import javax.sql.DataSource;
+
 import org.apache.ibatis.session.SqlSessionFactory;
 import org.mybatis.spring.SqlSessionFactoryBean;
 import org.mybatis.spring.SqlSessionTemplate;
@@ -12,7 +12,8 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.sql.DataSource;
+import com.style24.core.support.annotation.WmsDs;
+import com.style24.core.support.env.TscConstants;
 
 /**
  * wmsDs용 Mybatis Configuration
@@ -34,7 +35,7 @@ public class TsfMybatisWmsConfig {
 		sessionFactoryBean.setDataSource(dataSource);
 		sessionFactoryBean.setTypeAliasesPackage(TscConstants.DOMAIN_PACKAGE);
 		sessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:persistence/mybatis-wms-config.xml"));
-		sessionFactoryBean.setMapperLocations(applicationContext.getResources(TscConstants.MAPPER_LOCATION_PATH + "/shop/*.xml"));
+		sessionFactoryBean.setMapperLocations(applicationContext.getResources(TscConstants.MAPPER_LOCATION_PATH + "/wms/*.xml"));
 
 		return sessionFactoryBean.getObject();
 	}

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

@@ -49,8 +49,10 @@ public class Contents extends TscBaseDomain {
 	private String subText3;		// 서브텍스트3
 	private String subText4;		// 서브텍스트4
 	private String brandGroupNo;	// 브랜드그룹번호
+	private String brandGroupNm;	// 브랜드그룹이름
 	private String brandGroupImg;	// 브랜드그룹이미지경로
 	private String mdTitle;			// MD타이틀
+	private String html;
 
 	private String viewDt;			// 미리보기일시
 	private String preview;			// 미리보기여부

+ 3 - 0
src/main/java/com/style24/persistence/domain/GoodsCompose.java

@@ -38,6 +38,9 @@ public class GoodsCompose extends TscBaseDomain {
 	private String compsGoodsFullNm;
 	private String colorCd;
 
+	private String goodsGbNm;
+	private String originNm;
+	private String brandGroupNm;
 	private String selfGoodsYn;
 	private String supplyCompCd;
 

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

@@ -813,7 +813,9 @@
 		                       END)                              AS EXPIRE_YN /*만료여부*/
 		            FROM   TB_CUST_COUPON CC
 		            WHERE  1 = 1
+		            <if test="planCouponStat == null and planCouponStat == ''">
 		            AND    CC.CUST_NO = #{custNo}
+		            </if>
 		            AND    CC.USED_DT IS NULL /*사용하지않은쿠폰만*/
 		            AND    CC.AVAIL_EDDT >= DATE_ADD(NOW(), INTERVAL -3 MONTH) /*최근3개월쿠폰만*/
 		            GROUP  BY CC.CPN_ID, DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i'), DATE_FORMAT(CC.AVAIL_EDDT,'%Y.%m.%d %H:%i')
@@ -998,57 +1000,57 @@
 		     , Z.DOWNLOAD_CNT
 		     , Z.OWN_COUPON
 		  FROM (SELECT A.*
-					 , CASE WHEN A.CNT <![CDATA[<=]]> 0 THEN 0
-							WHEN A.CNT > (A.DN_ABLE_CNT * A.ONE_PUB_QTY) THEN (A.DN_ABLE_CNT * A.ONE_PUB_QTY)
-							ELSE A.CNT
-						END AS DOWNLOAD_CNT
-				  FROM (SELECT #{custNo} AS CUST_NO
-							 , C.CPN_ID
-							 , C.CPN_NM
-							 , C.CUST_PUB_LIMIT_QTY
-							 , C.ONE_PUB_QTY
-							 , IF(C.PD_GB = 'P', C.AVAIL_STDT, NOW()) AS AVAIL_STDT
-							 , IF(C.PD_GB = 'P', C.AVAIL_EDDT, CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59')) AS AVAIL_EDDT
-				             , C.END_ALIM_YN
-							 , IFNULL(CC.CPN_CNT, 0) AS DN_CNT
-				             , IF(C.CUST_PUB_LIMIT_QTY = 0 OR C.CUST_PUB_LIMIT_QTY - CC.CPN_CNT > 0, 1, 0) AS DN_ABLE_CNT
-				             , IF(C.TOT_PUB_LIMIT_QTY > 0, C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT, 99999) AS CNT
-				             , (SELECT COUNT(*) FROM TB_CUST_COUPON TCC WHERE CPN_ID = #{cpnId} AND CUST_NO = #{custNo}) AS OWN_COUPON
-						  FROM TB_COUPON C
-						 INNER JOIN TB_COUPON_CUST_GBN CCGB
-							ON C.CPN_ID = CCGB.CPN_ID
-						   AND CCGB.USABLE_CUST_GB = #{custGb}
-						 INNER JOIN TB_COUPON_CUST_GRADE CCGR
-							ON C.CPN_ID = CCGR.CPN_ID
-						   AND CCGR.USABLE_CUST_GRADE = #{custGrade}
-						  LEFT OUTER JOIN (SELECT CPN_ID
-												, CUST_NO
-												, COUNT(*) AS CPN_CNT
-											 FROM TB_CUST_COUPON
-											GROUP BY CPN_ID, CUST_NO) CC
-							ON C.CPN_ID = CC.CPN_ID
-						   AND CC.CUST_NO = #{custNo}
-						  LEFT OUTER JOIN (SELECT CPN_ID
-												, COUNT(*) AS CPN_CNT
-											 FROM TB_CUST_COUPON
-											GROUP BY CPN_ID) CC2
-							ON C.CPN_ID = CC2.CPN_ID
-						 WHERE C.DOWN_ABL_YN = 'N'
-						    AND C.CPN_ID IN (
-						       					SELECT PCI.ITEM_VAL 
-						       					FROM TB_PLAN_CONTENTS_ITEM PCI 
-						       					WHERE PCI.ITEM_VAL = #{cpnId}
-						       				)
-						   AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
-						   AND C.CPN_STAT = 'G232_11'  -- 진행
-						   AND CASE WHEN C.TOT_PUB_LIMIT_QTY = 0 THEN 1
-									WHEN C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT > 0 THEN 1
-									ELSE 0
-								END = 1
-						   AND IF(C.NEW_CUST_YN = 'Y', (SELECT COUNT(*) FROM TB_CUSTOMER WHERE CUST_NO = #{custNo} AND REG_DT BETWEEN C.CUST_JOIN_STDT AND C.CUST_JOIN_EDDT), 1) = 1
-						   AND IF(C.FIRST_ORD_YN = 'Y', (SELECT COUNT(*) FROM TB_ORDER WHERE CUST_NO = #{custNo} AND ORD_DT BETWEEN C.BUY_STDT AND C.BUY_EDDT), 0) = 0
-						) A
-				) Z
+		            , CASE WHEN A.CNT <![CDATA[<=]]> 0 THEN 0
+		                   WHEN A.CNT > (A.DN_ABLE_CNT * A.ONE_PUB_QTY) THEN (A.DN_ABLE_CNT * A.ONE_PUB_QTY)
+		                   ELSE A.CNT
+		               END AS DOWNLOAD_CNT
+		        FROM (SELECT #{custNo} AS CUST_NO
+		                  , C.CPN_ID
+		                   , C.CPN_NM
+		                   , C.CUST_PUB_LIMIT_QTY
+		                   , C.ONE_PUB_QTY
+		                   , IF(C.PD_GB = 'P', C.AVAIL_STDT, NOW()) AS AVAIL_STDT
+		                   , IF(C.PD_GB = 'P', C.AVAIL_EDDT, CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59')) AS AVAIL_EDDT
+		                   , C.END_ALIM_YN
+		                   , IFNULL(CC.CPN_CNT, 0) AS DN_CNT
+		                   , IF(C.CUST_PUB_LIMIT_QTY = 0 OR C.CUST_PUB_LIMIT_QTY - CC.CPN_CNT > 0, 1, 0) AS DN_ABLE_CNT
+		                   , IF(C.TOT_PUB_LIMIT_QTY > 0, C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT, 99999) AS CNT
+		                   , (SELECT COUNT(*) FROM TB_CUST_COUPON TCC WHERE CPN_ID = #{cpnId} AND CUST_NO = #{custNo}) AS OWN_COUPON
+		                FROM TB_COUPON C
+		               INNER JOIN TB_COUPON_CUST_GBN CCGB
+		                ON C.CPN_ID = CCGB.CPN_ID
+		               AND CCGB.USABLE_CUST_GB = #{custGb}
+		               INNER JOIN TB_COUPON_CUST_GRADE CCGR
+		                ON C.CPN_ID = CCGR.CPN_ID
+		               AND CCGR.USABLE_CUST_GRADE = #{custGrade}
+		                LEFT OUTER JOIN (SELECT CPN_ID
+		                                     , CUST_NO
+		                                     , COUNT(*) AS CPN_CNT
+		                                  FROM TB_CUST_COUPON
+		                                 GROUP BY CPN_ID, CUST_NO) CC
+		                    ON C.CPN_ID = CC.CPN_ID
+		                     AND CC.CUST_NO = #{custNo}
+		                    LEFT OUTER JOIN (SELECT CPN_ID
+		                                          , COUNT(*) AS CPN_CNT
+		                                     FROM TB_CUST_COUPON
+		                                    GROUP BY CPN_ID) CC2
+		                    ON C.CPN_ID = CC2.CPN_ID
+		               WHERE C.DOWN_ABL_YN = 'N'
+		                  AND C.CPN_ID IN (
+		                                    SELECT PCI.ITEM_VAL 
+		                                    FROM TB_PLAN_CONTENTS_ITEM PCI 
+		                                    WHERE PCI.ITEM_VAL = #{cpnId}
+		                                  )
+		                 AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
+		                 AND C.CPN_STAT = 'G232_11'  -- 진행
+		                 AND CASE WHEN C.TOT_PUB_LIMIT_QTY = 0 THEN 1
+		                          WHEN C.TOT_PUB_LIMIT_QTY - CC2.CPN_CNT > 0 THEN 1
+		                          ELSE 0
+		                            END = 1
+		                 AND IF(C.NEW_CUST_YN = 'Y', (SELECT COUNT(*) FROM TB_CUSTOMER WHERE CUST_NO = #{custNo} AND REG_DT BETWEEN C.CUST_JOIN_STDT AND C.CUST_JOIN_EDDT), 1) = 1
+		                 AND IF(C.FIRST_ORD_YN = 'Y', (SELECT COUNT(*) FROM TB_ORDER WHERE CUST_NO = #{custNo} AND ORD_DT BETWEEN C.BUY_STDT AND C.BUY_EDDT), 0) = 0
+		              ) A
+		     ) Z
 		 <!-- WHERE Z.DOWNLOAD_CNT <![CDATA[>=]]> 0 -->
 	</select>
 

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

@@ -140,7 +140,13 @@
 		     , SUB_TEXT2       /*서브텍스트2*/
 		     , SUB_TEXT3       /*서브텍스트3*/
 		     , SUB_TEXT4       /*서브텍스트4*/
+		     <if test='contentsLoc != null and contentsLoc =="SGNB001"'>
+			 , HTML
+		     </if>
 		     , BRAND_GROUP_NO  /*브랜드그룹번호*/
+		     <if test='contentsLoc != null and contentsLoc =="SMM007"'>
+		     , BRAND_GROUP_NM
+		     </if>
 		     , BRAND_GROUP_IMG /*브랜드그룹이미지경로*/
 		     , MD_TITLE        /*MD타이틀*/
 			<if test='contentsLoc != null and contentsLoc =="SMM001"'>
@@ -179,30 +185,36 @@
 		             , A.SUB_TEXT2                                          /*서브텍스트2*/
 		             , A.SUB_TEXT3                                          /*서브텍스트3*/
 		             , A.SUB_TEXT4                                          /*서브텍스트4*/
+		             <if test='contentsLoc != null and contentsLoc =="SGNB001"'>
+		             , A.HTML
+					 </if>
 		             , A.BRAND_GROUP_NO                                     /*브랜드그룹번호*/
+		             <if test='contentsLoc != null and contentsLoc =="SMM007"'>
+		             , (SELECT FN_GET_BRAND_GROUP_NM(A.BRAND_GROUP_NO)) AS BRAND_GROUP_NM
+		             </if>
 		             <choose>
-						 <when test='contentsLoc != null and contentsLoc =="SMM007"'>
-							 , (SELECT LOGO_FILE_NM FROM TB_BRAND_GROUP WHERE 1=1 AND A.BRAND_GROUP_NO = BRAND_GROUP_NO) AS BRAND_GROUP_IMG		/*브랜드그룹이미지경로*/
-						 </when>
+		                 <when test='contentsLoc != null and contentsLoc =="SMM007"'>
+		                    , (SELECT LOGO_FILE_NM FROM TB_BRAND_GROUP WHERE 1=1 AND A.BRAND_GROUP_NO = BRAND_GROUP_NO) AS BRAND_GROUP_IMG		/*브랜드그룹이미지경로*/
+		                 </when>
 		                 <otherwise>
-							 , A.BRAND_GROUP_IMG	/*브랜드그룹이미지경로*/
-						 </otherwise>
-					 </choose>
+		                    , A.BRAND_GROUP_IMG	/*브랜드그룹이미지경로*/
+		                 </otherwise>
+		             </choose>
 		             , A.MD_TITLE                                           /*MD타이틀*/
-					<if test='contentsLoc != null and contentsLoc =="SMM001"'>
-						, (SELECT count(C.BRAND_GROUP_NO) AS CNT
-							FROM TB_PLAN_BRAND C
-							WHERE B.PLAN_SQ = C.PLAN_SQ
-							) AS PLAN_BRAND_CNT
-						, (SELECT min(C.BRAND_GROUP_NO) AS BRAND_GROUP_NO
-							FROM TB_PLAN_BRAND C
-							WHERE B.PLAN_SQ = C.PLAN_SQ
-							) AS PLAN_BRAND_GROUP_NO
-						, (SELECT FN_GET_BRAND_GROUP_NM(min(C.BRAND_GROUP_NO)) AS BRAND_GROUP_NM
-							FROM TB_PLAN_BRAND C
-							WHERE B.PLAN_SQ = C.PLAN_SQ
-							) AS PLAN_BRAND_GROUP_NM
-					</if>
+		             <if test='contentsLoc != null and contentsLoc =="SMM001"'>
+		                , (SELECT count(C.BRAND_GROUP_NO) AS CNT
+		                   FROM TB_PLAN_BRAND C
+		                   WHERE B.PLAN_SQ = C.PLAN_SQ
+		                   ) AS PLAN_BRAND_CNT
+		                , (SELECT min(C.BRAND_GROUP_NO) AS BRAND_GROUP_NO
+		                   FROM TB_PLAN_BRAND C
+		                   WHERE B.PLAN_SQ = C.PLAN_SQ
+		                   ) AS PLAN_BRAND_GROUP_NO
+		                , (SELECT FN_GET_BRAND_GROUP_NM(min(C.BRAND_GROUP_NO)) AS BRAND_GROUP_NM
+		                   FROM TB_PLAN_BRAND C
+		                   WHERE B.PLAN_SQ = C.PLAN_SQ
+		                   ) AS PLAN_BRAND_GROUP_NM
+		             </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
 		             , A.PRE_CONTENTS_SQ                       AS CONTENTS_SQ /*컨텐츠일련번호*/

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

@@ -885,6 +885,9 @@
 		     , DATE_FORMAT(G.SELL_EDDT ,'%Y%m%d%H%i%S') AS SELL_EDDT
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
 		     , A.COMPS_CURR_PRICE
+		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
+		     , FN_GET_CODE_NM('G076',G.ORIGIN_CD) AS ORIGIN_NM
+		      , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
 		FROM TB_GOODS_COMPOSE A
 		INNER JOIN TB_GOODS G ON A.COMPS_GOODS_CD = G.GOODS_CD
 		                      AND G.SELF_MALL_YN = 'Y' -- 자사몰 노출
@@ -893,6 +896,8 @@
 		INNER JOIN TB_SITE_BRAND SB ON B.BRAND_CD  = SB.BRAND_CD
 		                            AND SB.USE_YN = 'Y'
 		                            AND SB.SITE_CD = #{siteCd}
+		INNER JOIN TB_BRAND_GROUP D ON B.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		                            AND D.USE_YN = 'Y'
 		WHERE A.GOODS_CD = #{goodsCd}
 		AND A.GOODS_TYPE = 'G056_S'
 		AND A.USE_YN = 'Y'

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

@@ -126,7 +126,7 @@
 		          LEFT OUTER JOIN TB_CUST_ACCOUNT CA
 		            ON O.CUST_NO = CA.CUST_NO
 		         WHERE O.ORD_NO = #{ordNo}
-		           AND OD.ORD_DTL_STAT IN ('G013_10', 'G013_11', 'G013_20', 'G013_30')
+		           AND OD.ORD_DTL_STAT IN ('G013_10', 'G013_11', 'G013_20', 'G013_30', 'G013_35')
 		<choose>
 			<when test='custNo != null and custNo != ""'>
 		           AND O.CUST_NO = #{custNo}
@@ -1073,6 +1073,7 @@
 		     , Z.RECIP_DTL_ADDR
 		     , Z.DELV_MEMO
 		     , Z.PG_TID
+		     , Z.CHG_ORD_DTL_STAT
 		  FROM (SELECT OC.ORD_CHG_SQ
 		             , OC.CHG_GB
 		             , OCD.CHG_QTY
@@ -1128,6 +1129,7 @@
 		             , DA.RECIP_DTL_ADDR
 		             , DA.DELV_MEMO
 		             , P.PG_TID
+		             , OD2.ORD_DTL_STAT                                                 AS CHG_ORD_DTL_STAT
 		          FROM TB_ORDER_CHANGE OC
 		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
@@ -1182,7 +1184,7 @@
 		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHG_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM, Z.DELV_ADDR_SQ, Z.RECIP_NM, Z.RECIP_PHNNO
-		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO, Z.PG_TID
+		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO, Z.PG_TID, Z.CHG_ORD_DTL_STAT
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
 	

+ 150 - 28
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -92,9 +92,9 @@
 		        FROM   TB_PLAN P
 		        WHERE  P.PLAN_GB = 'P' /*기획전*/
 		        AND    P.SITE_CD = #{siteCd}
-		        <if test="frontGb != null and frontGb != ''">
+		       <!--  <if test="frontGb != null and frontGb != ''">
 		        AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		        </if>
+		        </if> -->
 		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
@@ -160,9 +160,9 @@
 		    AND    P.PLAN_SQ = #{planSq}
 		    AND    P.PLAN_GB = 'P' /*기획전*/
 		    AND    P.SITE_CD = #{siteCd}
-		    <if test="frontGb != null and frontGb != ''">
+		  <!--   <if test="frontGb != null and frontGb != ''">
 		    AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		    </if>
+		    </if> -->
 		    AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		    AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		    AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
@@ -180,6 +180,7 @@
 		                         AND    DISP_YN = 'Y' /*전시하는브랜드기획전*/
 		                        )
 		    </if>
+	
 		    AND    NOW() BETWEEN PD.DISP_STDT AND PD.DISP_EDDT
 		    AND    PD.DISP_YN = 'Y' /*전시하는코너*/
 		    AND    PG.DEL_YN = 'N' /*삭제안된상품*/
@@ -202,36 +203,135 @@
 		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
 		    GROUP  BY PG.GOODS_CD
 		)
-		SELECT PG.PLAN_SQ
-		     , PG.CORNER_NM
-		     , PG.DISP_ORD
-		     , PG.BRAND_GROUP_NM
-		     , PG.GOODS_CD
-		     , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
-		     , PG.GOODS_NM
-		     , PG.GOODS_TNM
-		     , PG.MAIN_COLOR_CD
-		     , PG.LIST_PRICE
+	  , TAB_PLAN_GOODS2 AS (                                                                                                                            
+		    SELECT P.PLAN_SQ                                                /*기획전번호*/                                                                  
+		         , PC.LINK_URL 
+		         , PC.LINK_OPEN_GB
+		         , PC.DISP_ORD 
+		         , PC.TITLE 
+		         , PC.TMPL_TYPE 
+		         , PC.PLAN_CONT_SQ 		         
+		         , PCI.ITEM_VAL 
+		         , PCI.REVIEW_DISP_EDDT 
+		         , PCI.REVIEW_DISP_STDT 
+		         , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+		                    BG.BRAND_GROUP_ENM
+		                ELSE
+		                    BG.BRAND_GROUP_KNM
+		           END                                    AS BRAND_GROUP_NM /*브랜드그룹명*/
+		         , G.GOODS_CD                                               /*상품코드*/
+		         , G.GOODS_NM                                               /*상품명*/
+		         , G.GOODS_GB                                               /*상품구분*/
+		         , G.FOREIGN_BUY_YN                                         /*해외구매대행여부*/
+		         , G.PARALLEL_IMPORT_YN                                     /*병행수입여부*/
+		         , G.ORDER_MADE_YN                                          /*주문제작여부*/
+		         , G.GOODS_TNM                                              /*상품타이틀명*/
+		         , G.MAIN_COLOR_CD                                          /*대표색상코드*/
+		         , G.LIST_PRICE                                             /*정상가(최초판매가)*/
+		         , G.CURR_PRICE                                             /*현재판매가*/
+		         , RANK() OVER(PARTITION BY P.PLAN_SQ
+		                       ORDER BY PC.DISP_ORD
+		                              , G.GOODS_CD)      AS NUMB
+		    FROM   TB_PLAN P
+		    	 , TB_PLAN_CONTENTS PC
+		    	 , TB_PLAN_CONTENTS_ITEM PCI
+		         , TB_GOODS G
+		         , TB_GOODS_STOCK GS
+		         , TB_BRAND B
+		         , TB_BRAND_GROUP BG
+		    WHERE  P.PLAN_SQ = PC.PLAN_SQ
+		    AND    PC.PLAN_CONT_SQ = PCI.PLAN_CONT_SQ
+		    AND    PCI.ITEM_VAL = G.GOODS_CD
+		    AND    G.GOODS_CD = GS.GOODS_CD
+		    AND    G.BRAND_CD = B.BRAND_CD
+		    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+		    AND    P.PLAN_SQ =  #{planSq}
+		    AND    P.PLAN_GB = 'P' /*기획전*/
+		    AND    P.SITE_CD =  #{siteCd} /**P*/
+		    <if test="frontGb != null and frontGb != ''">
+		    AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
+		    </if>
+		    AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
+		    AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
+		    AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
+		    AND    PC.TMPL_TYPE IN ('G082_50','G082_51','G082_52')
+		    AND    PC.DISP_YN = 'Y' /*전시하는템플릿*/
+		    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		    AND    G.SELF_MALL_YN = 'Y'   /*몰노출상품*/
+		    AND    GS.STOCK_QTY  <![CDATA[>]]>  0 /*재고있는상품*/
+		    AND    B.USE_YN = 'Y'
+		    AND    BG.USE_YN = 'Y'
+		    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
+		), TAB_GOODS_IMG2 AS (
+		    /* 상품의 이미지 */
+		    SELECT PG.GOODS_CD
+		         , MAX(CASE WHEN GI.DEFAULT_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END)   AS SYS_IMG_NM
+		         , MAX(CASE WHEN GI.MOUSEOVER_IMG_YN = 'Y' THEN GI.SYS_IMG_NM ELSE NULL END) AS SYS_IMG_NM2
+		    FROM   TAB_PLAN_GOODS2 PG
+		         , TB_GOODS_IMG GI
+		    WHERE  PG.GOODS_CD = GI.GOODS_CD
+		    AND    PG.MAIN_COLOR_CD = GI.COLOR_CD
+		    AND    (GI.DEFAULT_IMG_YN = 'Y' OR GI.MOUSEOVER_IMG_YN = 'Y')
+		    GROUP  BY PG.GOODS_CD
+		)
+	   SELECT PG.PLAN_SQ																																	
+		   --  , PG.CORNER_NM                                                                                                                               
+		     , PG.DISP_ORD                                                                                                                                  
+		     , PG.BRAND_GROUP_NM                                                                                                                            
+		     , PG.GOODS_CD                                                                                                                                  
+		     , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/  
 		     , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
-		     , GI.SYS_IMG_NM
-		     , GI.SYS_IMG_NM2
+		     , PG.GOODS_NM                                                                                                                                  
+		     , PG.GOODS_TNM                                                                                                                                 
+		     , PG.MAIN_COLOR_CD                                                                                                                             
+		     , PG.LIST_PRICE                                                                                                                                
+		     , GI.SYS_IMG_NM                                                                                                                                
+		     , GI.SYS_IMG_NM2 
 		     <choose>
 		         <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
-		     , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		         , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
 		         </when>
 		         <otherwise>
-		     , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
-		         </otherwise>
-		     </choose>
-		     
-		FROM   TAB_PLAN_GOODS PG
-		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
+		         , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		        </otherwise>
+		   </choose>                       
+		FROM   TAB_PLAN_GOODS2 PG
+		INNER JOIN TAB_GOODS_IMG2 GI ON PG.GOODS_CD = GI.GOODS_CD
+		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
+		                             AND W.CUST_NO = #{custNo}
+		</if>
+		WHERE  (SELECT COUNT(*) FROM TAB_PLAN_GOODS) = 0
+		AND PG.NUMB <![CDATA[<=]]> #{maxRow}
+		UNION ALL 
+		   SELECT PG.PLAN_SQ																																	
+		        , PG.DISP_ORD                                                                                                                                  
+		        , PG.BRAND_GROUP_NM                                                                                                                            
+		        , PG.GOODS_CD                                                                                                                                  
+		        , FN_GET_GOODS_NM(PG.GOODS_NM,PG.GOODS_GB,PG.FOREIGN_BUY_YN,PG.PARALLEL_IMPORT_YN,PG.ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/       
+		        , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                              AS CURR_PRICE    /*현재판매가*/
+		        , PG.GOODS_NM                                                                                                                                  
+		        , PG.GOODS_TNM                                                                                                                                 
+		        , PG.MAIN_COLOR_CD                                                                                                                             
+		        , PG.LIST_PRICE                                                                                                                                
+		        , GI.SYS_IMG_NM                                                                                                                                
+		        , GI.SYS_IMG_NM2 
+		        <choose>
+		            <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
+		            , IF(W.GOODS_CD IS NULL,'','likeit')                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		            </when>
+		            <otherwise>
+		            , ''                                                                                                AS LIKE_IT       /*위시리스트담긴상품*/
+		            </otherwise>
+		        </choose>
+		FROM   TAB_PLAN_GOODS PG 
+		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD 
 		<if test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		LEFT OUTER JOIN TB_WISHLIST W ON PG.GOODS_CD = W.GOODS_CD
 		                             AND W.CUST_NO = #{custNo}
 		</if>
 		<if test="maxRow != null and maxRow > 0">
-		WHERE  PG.NUMB <![CDATA[<=]]> #{maxRow}
+		WHERE PG.NUMB <![CDATA[<=]]> #{maxRow}
 		</if>
 	</select>
 	
@@ -277,6 +377,28 @@
 		AND    CUST_GB = #{custGb}
 	</select>
 	
+	<!-- 고객구분접근가능리스트 -->
+	<select id="getCustomerGubunAccessibleList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getCustomerGubunAccessibleList */
+		SELECT CASE CUST_GB WHEN 'G100_10' THEN '일반회원'
+		                    WHEN 'G100_20' THEN '임직원' END AS CUST_GB 
+		FROM TB_PLAN_CUST_DIVISION 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
+	<!-- 고객등급접근가능리스트 -->
+	<select id="getCustomerGradeAccessibleList" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getCustomerGradeAccessibleList */
+		SELECT CASE CUST_GRADE WHEN 'G110_10' THEN 'VIP'
+		                       WHEN 'G110_20' THEN 'GOLD'
+		                       WHEN 'G110_30' THEN 'SILVER'
+		                       WHEN 'G110_40' THEN 'BRONZE'
+		                       WHEN 'G110_50' THEN 'WELCOME'
+		                       END AS CUST_GRADE
+		FROM TB_PLAN_CUST_GRADE 
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
 	<!-- 고객등급접근가능여부 조회 -->
 	<select id="getCustomerGradeAccessibleYn" parameterType="Plan" resultType="String">
 		/* TsfPlanning.getCustomerGradeAccessibleYn */
@@ -398,9 +520,9 @@
 		        FROM   TB_PLAN P
 		        WHERE  P.PLAN_GB IN ('E','C') /*이벤트,출석체크*/
 		        AND    P.SITE_CD = #{siteCd}
-		        <if test="frontGb != null and frontGb != ''">
+		       <!--  <if test="frontGb != null and frontGb != ''">
 		        AND    P.FRONT_GB LIKE CONCAT('%',#{frontGb},'%')
-		        </if>
+		        </if> -->
 		        AND    NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT
 		        AND    P.DEL_YN = 'N' /*삭제안된 기획전*/
 		        AND    P.OPEN_YN = 'Y' /*오픈된 기획전*/
@@ -786,7 +908,7 @@
 		     , FN_GET_BENEFIT_PRICE(#{frontGb},PG.GOODS_CD,PG.CURR_PRICE,#{custGb})                     AS CURR_PRICE    /*현재판매가*/
 		     , GI.SYS_IMG_NM
 		     , GI.SYS_IMG_NM2
-			FROM   TAB_PLAN_GOODS PG
+		FROM   TAB_PLAN_GOODS PG
 		INNER JOIN TAB_GOODS_IMG GI ON PG.GOODS_CD = GI.GOODS_CD
 		)Z
 	</select>
@@ -960,7 +1082,7 @@
 		      ,TP.POLL_CONTENT 
 		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ 
 		WHERE 1=1
-		  AND P.PLAN_SQ = 18
+		  AND P.PLAN_SQ = #{planSq}
 		  AND P.SITE_CD = #{siteCd}
 		  AND P.OPEN_YN ='Y'
 		  AND P.DEL_YN ='N'

+ 14 - 43
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -20,32 +20,18 @@
 		SELECT IFNULL(SUM(RM_PNT_AMT), 0) AS RM_PNT_AMT
 		FROM   TB_CUST_POINT
 		WHERE  CUST_NO = #{custNo}
-		AND    EXP_BE_DT > NOW();
+		AND    EXP_BE_DT > NOW()
+		AND    EXP_CMP_DT IS NULL
 	</select>
 	
 	<!-- 적립예정 포인트조회-->
 	<select id="getExpectedPointInfo" parameterType="Point" resultType="int">
 		/* TsfPoint.getExpectedPointInfo */
-		SELECT IFNULL(SUM(A.PNT_AMT + B.PNT_AMT),0) AS EXPECTED_PNT_AMT
-		FROM (
-		      SELECT SUM(PNT_AMT) AS PNT_AMT
-		           , ORD_NO
-		      FROM   TB_CUST_POINT_HST
-		      WHERE  OCCUR_GB = 'G069_12' -- 적립예정
-		      AND    PNT_UPLOAD_STAT = 'G070_10'
-		      AND    CUST_NO = #{custNo}
-		      GROUP BY ORD_NO
-		      ) A
-		   , (
-		      SELECT SUM(PNT_AMT) AS PNT_AMT
-		           , ORD_NO
-		      FROM   TB_CUST_POINT_HST
-		      WHERE  OCCUR_GB = 'G069_13' -- 적립예정취소
-		      AND    PNT_UPLOAD_STAT = 'G070_20'
-		      AND    CUST_NO = #{custNo}
-		      GROUP BY ORD_NO
-		      ) B
-		WHERE A.ORD_NO = B.ORD_NO
+		SELECT IFNULL(SUM(CPH.PNT_AMT), 0) AS PNT_AMT
+		FROM   TB_CUST_POINT_HST CPH
+		WHERE  CPH.OCCUR_GB IN ('G069_12', 'G069_13')             -- 적립예정, 적립취소
+		AND    CPH.PNT_UPLOAD_STAT IN ('G070_10')                 -- 반영예정
+		AND    CPH.CUST_NO = #{custNo}
 	</select>
 	
 	<!-- 한달 이내 소멸예정 포인트조회-->
@@ -237,7 +223,7 @@
 		               SELECT SUM(US_PNT_AMT)
 		               FROM   TB_CUST_POINT
 		               WHERE  CUST_NO = C.CUST_NO
-		              ), 0)                           AS US_PNT_AMT -- 사용포인트
+		              ), 0)                           AS US_PNT_AMT     -- 사용포인트
 		     , IFNULL((
 		               SELECT SUM(RM_PNT_AMT)
 		               FROM   TB_CUST_POINT
@@ -246,27 +232,12 @@
 		               AND    EXP_CMP_DT IS NOT NULL
 		               ), 0)                           AS EXPIRE_PNT_AMT -- 소멸포인트
 		     , IFNULL((
-		               SELECT SUM(A.PNT_AMT + B.PNT_AMT) AS PNT_AMT
-		               FROM (
-		                   SELECT SUM(PNT_AMT) AS PNT_AMT
-		                        , ORD_NO
-		                   FROM   TB_CUST_POINT_HST
-		                   WHERE  OCCUR_GB = 'G069_12' -- 적립예정
-		                   AND    PNT_UPLOAD_STAT = 'G070_10' -- 포인트반영
-		                   AND    CUST_NO = #{custNo}
-		                   GROUP BY ORD_NO
-		               ) A
-		               , (
-		                  SELECT SUM(PNT_AMT) AS PNT_AMT
-		                       , ORD_NO
-		                  FROM   TB_CUST_POINT_HST
-		                  WHERE  OCCUR_GB = 'G069_13' -- 적립예정취소
-		                  AND    PNT_UPLOAD_STAT = 'G070_20' -- 포인트반영전취소
-		                  AND    CUST_NO = #{custNo}
-		                  GROUP BY ORD_NO
-		                ) B
-		                 WHERE A.ORD_NO = B.ORD_NO
-		                ), 0)                           AS EXPECTED_PNT_AMT -- 적립예정포인트
+		               SELECT SUM(CPH.PNT_AMT) AS PNT_AMT
+		               FROM   TB_CUST_POINT_HST CPH
+		               WHERE  CPH.OCCUR_GB IN ('G069_12', 'G069_13')       -- 적립예정, 적립취소
+		               AND    CPH.PNT_UPLOAD_STAT IN ('G070_10')           -- 반영예정
+		               AND    CPH.CUST_NO = #{custNo}
+		               ), 0)                           AS EXPECTED_PNT_AMT -- 적립예정포인트
 		     , IFNULL((
 		                SELECT SUM(RM_PNT_AMT) AS RM_PNT_AMT
 		                FROM  TB_CUST_POINT

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

@@ -501,10 +501,10 @@
 		     , Z.ORD_CAN_CHG_QTY
 		     , Z.ITEMKIND_NM 
 		   	 , Z.ITEMKIND_CD 
-             , Z.SIZE_GB 
-             , Z.REMAIN_DT
-             <if test="reviewStat == 'u'.toString()">
-             , Z.REVIEW_SQ        
+		     , Z.SIZE_GB 
+		     , Z.REMAIN_DT
+		     <if test="reviewStat == 'u'.toString()">
+		     , Z.REVIEW_SQ        
 			 , Z.REVIEW_GB        
 			 , Z.REVIEW_TITLE     
 			 , Z.REVIEW_CONTENT   

+ 1 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -104,6 +104,7 @@ RETURN_0002=\uBC18\uD488 \uC2E0\uCCAD\uC774 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8
 
 #\uCDE8\uC18C
 CANCEL_0001=\uC8FC\uBB38 \uCDE8\uC18C\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+CANCEL_0002=\uD658\uBD88\uAE08\uC561\uC774 \uCD94\uAC00\uBC30\uC1A1\uBE44 \uBCF4\uB2E4 \uC801\uC5B4 \uCDE8\uC18C \uCC98\uB9AC\uC5D0 \uC2E4\uD328 \uD558\uC600\uC2B5\uB2C8\uB2E4.
 
 #\uBC30\uC1A1
 DELV_0001=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uC9C0\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.

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

@@ -78,17 +78,17 @@
 					<ul class="login_utill">
 						<li class="lu_kakao">
 							<a href="javascript:void(0)" onclick="cfnLoginKakao();">
-								<div class="ico"></div>카카오로<br>시작하기
+								<div class="ico"></div>카카오
 							</a>
 						</li>
 						<li class="lu_naver">
 							<a href="javascript:void(0)" onclick="cfnLoginNaver();">
-								<div class="ico"></div>네이버로<br>시작하기
+								<div class="ico"></div>네이버
 							</a>
 						</li>
 						<li class="lu_yes24">
 							<a href="javascript:void(0)" onclick="cfnLoginYes24();">
-								<div class="ico"></div>YES24로<br>시작하기
+								<div class="ico"></div>YES24
 							</a>
 						</li>
 					</ul>

+ 2 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html

@@ -22,6 +22,8 @@
 		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
 
 		<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+		
+		<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
 
 <script th:inline="javascript">
 /*<![CDATA[*/

+ 12 - 10
src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html

@@ -138,8 +138,10 @@
 								</li>
 							</ul>
 						</div>
-						<div class="ui_row mt20">
-							<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_LOGIN);">로그인 하기</button>
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_LOGIN);">로그인 하기</button>
+							</div>
 						</div>
 					</div>
 				</div>
@@ -154,14 +156,14 @@
 								정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
 							</p>
 						</div>
-						<div class="btn_group_block btn_group_md ui_row">
-							<div class="ui_col_6">
-								<button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 									<span>회원가입</span>
 								</button>
 							</div>
-							<div class="ui_col_6">
-								<button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+							<div>
+								<button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
 									<span>다시 찾기</span>
 								</button>
 							</div>
@@ -179,9 +181,9 @@
 								<span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
 							</p>
 						</div>
-						<div class="btn_group_block btn_group_md ui_row">
-							<div class="ui_col_12">
-								<button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+						<div class="btn_group_flex">
+							<div>
+								<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 									<span>회원가입</span>
 								</button>
 							</div>

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html

@@ -48,17 +48,17 @@
 					<ul class="login_utill">
 						<li class="lu_kakao">
 							<a href="javascript:void(0);" onclick="cfnLoginKakao();">
-								<div class="ico"></div>카카오로<br>시작하기
+								<div class="ico"></div>카카오
 							</a>
 						</li>
 						<li class="lu_naver">
 							<a href="javascript:void(0);" onclick="cfnLoginNaver();">
-								<div class="ico"></div>네이버로<br>시작하기
+								<div class="ico"></div>네이버
 							</a>
 						</li>
 						<li class="lu_yes24">
 							<a href="javascript:void(0);" onclick="cfnLoginYes24();">
-								<div class="ico"></div>YES24로<br>시작하기
+								<div class="ico"></div>YES24
 							</a>
 						</li>
 					</ul>

+ 14 - 10
src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html

@@ -32,8 +32,12 @@
             <div class="inner">
                 <div class="registration_nav">
                     <ul class="tab_btn">
-                        <li onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</li>
-                        <li class="active">비밀번호찾기</li>
+                        <li>
+                            <a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
+                        </li>
+                        <li class="active">
+                            <a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a>
+                        </li>
                     </ul>
                 </div>
                 <div class="registration_tap">
@@ -139,14 +143,14 @@
                                 정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
                             </p>
                         </div>
-                        <div class="btn_group_block btn_group_md ui_row">
-                            <div class="ui_col_6">
-                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                        <div class="btn_group_flex">
+                            <div>
+                                <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
                                     <span>회원가입</span>
                                 </button>
                             </div>
-                            <div class="ui_col_6">
-                                <button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
+                            <div>
+                                <button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">
                                     <span>다시 찾기</span>
                                 </button>
                             </div>
@@ -164,9 +168,9 @@
                                 <span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
                             </p>
                         </div>
-                        <div class="btn_group_block btn_group_md ui_row">
-                            <div class="ui_col_12">
-                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                        <div class="btn_group_flex">
+                            <div>
+                                <button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
                                     <span>회원가입</span>
                                 </button>
                             </div>

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

@@ -20,17 +20,1072 @@
 
 <th:block layout:fragment="content">
 
-	<h1>Mall Main ...............</h1>
+	<section class="main">
+	<th:block th:if="${mainLayoutList}" th:each="mainData, mainStat : ${mainLayoutList}" th:with="contentsLoc=${#strings.replace(mainData.contentsLoc,'SMM','')},contentsTitle=${#strings.replace(mainData.contentsTitle,'<br>',' ')}">
+		<th:block th:if="${mainData.ContentsList != null and !mainData.ContentsList.empty}">
+			<th:block th:if="${contentsLoc=='001'}">
+				<!-- 1. 비주얼 슬라이드 -->
+				<div class="inner wide">
+					<div class="main_visual">
+						<div class="swiper-container post-visual">
+							<div class="swiper-wrapper">
+								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+									<div class="swiper-slide">
+										<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+											<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+											<div class="txtWrap">
+												<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
+													<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}">NBA</dt>
+													<dt th:if="${ContentsData.strVar5!='P'}">EVENT</dt>
+													<dd class="mainTitle">
+														<input type="hidden" name="mainTitlee" th:value="${ContentsData.strTitle1}"/>
+													</dd>
+<!--													<dd>NEW ARRIVAL</dd>-->
+													<dd class="txt_xs" th:text="${ContentsData.subText1}">나만의 가을 스타일 찾기</dd>
+												</dl>
+											</div>
+										</a>
+									</div>
+								</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='002'}">
+				<!-- 2. 스타일리포트 -->
+				<div class="inner bg_gray">
+					<div class="main_stylereport">
+						<th:block th:if="${mainData.contentsTitle != null and !mainData.contentsTitle.empty}">
+						<div class="titWrap">
+							<h2 th:text="${mainData.contentsTitle}"></h2>
+						</div>
+						</th:block>
+						<div class="swiper-container post-stylereport">
+							<div class="swiper-wrapper">
+								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+								<div class="swiper-slide">
+									<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+										<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+										<dl>
+											<dt th:text="${ContentsData.strTitle1}"></dt>
+											<dd th:text="${ContentsData.subText1}"></dd>
+<!--											<dd>준비한 아우터 픽을 만나보자</dd>-->
+										</dl>
+									</a>
+								</div>
+								</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='003'}">
+				<!-- 3. 트렌디한 신상아이템 -->
+				<div class="inner" th:if="${mainData.goodsList != null}">
+					<div class="main_trendy">
+						<th:block th:if="${mainData.contentsTitle != null and !mainData.contentsTitle.empty}">
+							<div class="titWrap">
+								<h2 th:text="${mainData.contentsTitle}"></h2>
+							</div>
+						</th:block>
+						<div class="swiper-container post-trendy">
+							<div class="swiper-wrapper">
+							<th:block th:each="goodsData, goodsStat : ${mainData.goodsList}">
+								<th:block th:if="${(goodsStat.index%4)==0 or goodsStat.first}">
+
+										<div class="swiper-slide">
+								</th:block>
+											<div class="item_prod">
+												<div class="item_state">
+													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM003', planDtlSq=''">관심상품 추가</button>
+													<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM003');">
+														<div class=" itemPic">
+															<!-- <img alt="BLUE-a" class=" pd_img" src="/images/mo/thumb/main_trendy05.jpg">  onerror="img_check(this)"-->
+															<img alt="BLUE-a" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)"  >
+														</div>
+														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
+														<div class=" itemName" th:text="${goodsData.goodsFullNm}">가을 신상 남성 스탠다드핏 로고맨 블루 볼 캡 유니 경량다운 시보리넥 베스트</div>
+														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">488,000</p>
+														<div class="itemComment" th:text="${goodsData.goodsTnm}">#주문 폭주 상품</div>
+													</a>
+												</div>
+											</div>
+								<th:block th:if="${(goodsStat.index%4)== 3 or goodsStat.last}">
+									<th:block th:utext="'</div>'"></th:block>
+								</th:block>
+							</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='004'}">
+				<!-- 4. 잇 아이템 -->
+				<div class="inner">
+					<div class="main_it">
+						<div class="titWrap">
+							<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+							<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+								<h2 th:text="${contentsTitle}"></h2>
+							</a>
+							</th:block>
+						</div>
+						<div class="inner_head">
+							<ul class="it_nav">
+								<th:block th:each="ContentsData, ContentsStat : ${mainData.BestItemList}">
+									<li><button class="btn btn_link" th:attr="data-tab=${'it'+ContentsStat.count}"><span th:text="${ContentsData.cateNm}">여성</span></button></li>
+								</th:block>
+							</ul>
+						</div>
+						<div class="inner_body">
+						<th:block th:each="ContentsData, ContentsStat : ${mainData.BestItemList}">
+							<div class="swiper-container post-it it_item" th:id="${'it'+ContentsStat.count}">
+								<div class="swiper-wrapper" >
+									<th:block th:each="bestItemData, bestItemStat : ${ContentsData.goodsList}">
+										<div class="swiper-slide">
+											<div class="item_prod">
+												<div class="item_state">
+													<button type="button" class="itemLike" th:classappend="${bestItemData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${bestItemData.goodsCd}, ithrCd='', contentsLoc='SMM004', planDtlSq=''">관심상품 추가</button>
+													<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${bestItemData.goodsCd}]], '', '', 'SMM004');">
+														<div class="shape" th:classappend="${bestItemStat.count==1}?'ranker'">
+															<span><em class="number" th:text="${bestItemStat.count}">1</em></span>
+														</div>
+														<div class="itemPic">
+															<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}">
+														</div>
+														<p class="itemBrand" th:text="${bestItemData.brandGroupNm}">TBJ</p>
+														<div class="itemName" th:text="${bestItemData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+														<p class="itemPrice">[[${#numbers.formatInteger(bestItemData.currPrice,0,'COMMA')} + 원]]
+															<span class="itemPrice_original" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${#numbers.formatInteger(bestItemData.listPrice,3,'COMMA')}">89,000</span>
+															<span class=" itemPercent" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${(bestItemData.listPrice == 0 ? 0 : #numbers.formatDecimal((bestItemData.listPrice - bestItemData.currPrice) / (bestItemData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
+														</p>
+														<div class="itemComment" th:text="${bestItemData.goodsTnm}"># 가을 느낌 물씬!</div>
+													</a>
+												</div>
+											</div>
+										</div>
+									</th:block>
+								</div>
+							</div>
+						</th:block>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='005'}">
+				<!-- 5. 프로모션배너 -->
+				<div class="inner wide">
+					<div class="main_2stage">
+						<div class="swiper-container post-bnnEvent">
+							<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+								<th:block th:if="${ContentsData.contentsType!=null && ContentsData.contentsType!=''}">
+									<div class="swiper-wrapper" th:if="${ContentsData.contentsType=='1'}">
+										<div class="swiper-slide">
+											<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+												<div class="bnnbox" style="background:#e3e7ea;">
+													<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+												</div>
+											</a>
+										</div>
+									</div>
+									<div class="swiper-wrapper" th:if="${ContentsData.contentsType=='2'}">
+										<div class="swiper-slide">
+											<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+												<div class="bnnbox" style="background:#e3e7ea;">
+													<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+												</div>
+											</a>
+										</div>
+										<div class="swiper-slide">
+											<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar2}]]);">
+												<div class="bnnbox" style="background:#eef1f3;">
+													<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath2}" alt="">
+												</div>
+											</a>
+										</div>
+									</div>
+								</th:block>
+							</th:block>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='006'}">
+				<!-- 6. 타임딜 : 슬라이드 -->
+				<div class="inner bg_dark" th:if="${mainData.socialInfo != null}">
+					<div class="main_deal">
+						<div class="titWrap">
+							<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_SOCIAL_MAIN);">
+								<h2 th:text="${contentsTitle}"></h2>
+							</a>
+							<th:block th:each="socialData, socialStat : ${mainData.socialInfo}">
+								<form name="socailForm" id="socailForm">
+									<input type="hidden" name="targetTime" th:value="${socialData.socialEddt}">
+								</form>
+							</th:block>
+							<div class="count">
+								<span class="count_tit">남은 시간</span>
+								<div class="hotdealcount" id="countdown">
+									<div id="tiles"></div>
+								</div>
+							</div>
+						</div>
+
+						<div class="swiper-container post-deal">
+							<div class="swiper-wrapper" >
+								<th:block th:each="socialData, socialStat : ${mainData.socialInfo}">
+									<th:block th:each="goodsData, goodsStat : ${socialData.socialGoodsList}">
+										<div class="swiper-slide" th:if="${goodsStat.count<21}">
+											<div class="item_prod">
+												<div class="item_state">
+													<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM006', planDtlSq=''">관심상품 추가</button>
+													<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM006');">
+														<div class="itemPic">
+															<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+														</div>
+														<p class="itemBrand" th:text="${goodsData.brandEnm}">TBJ</p>
+														<div class="itemName" th:text="${goodsData.goodsNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+														<p class="itemPrice">[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')} + 원]]
+															<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,0,'COMMA')} + '원'">89,000</span>
+															<span class=" itemPercent" th:text="${#numbers.formatDecimal(goodsData.dcRate,1,0)} + '%'">10%</span>
+														</p>
+														<div class="itemComment" th:text="${goodsData.goodsTnm}"># 가을 느낌 물씬!</div>
+													</a>
+												</div>
+											</div>
+										</div>
+									</th:block>
+								</th:block>
+							</div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='007'}">
+				<!-- 7. 브랜드픽 -->
+				<div class="inner">
+					<div class="main_pick" >
+						<div class="titWrap">
+							<h2 th:text="${contentsTitle}"></h2>
+						</div>
+						<div class="inner_head">
+							<div class="swiper-container pick-head"> <!--(pick-head)슬라이드 키클래스-->
+								<ul class="swiper-wrapper">
+									<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+										<li class="swiper-slide" th:classappend="${ContentsStat.count==1}?'on'"> <!-- li.on / li .btn.active : 메뉴 표시 -->
+											<button class="btn btn_link" th:attr="data-tab=${'pick'+ContentsStat.count}"><span th:text="${ContentsData.brandGroupNm}">BUKAROO</span></button>
+										</li>
+									</th:block>
+								</ul>
+							</div>
+						</div>
+						<div class="inner_body">
+							<th:block th:each="brandPickData, brandPickStat : ${mainData.brandPickList}">
+							<div class="pick-cont" th:classappend="${brandPickStat.count==1}?'active'" th:id="${'pick'+brandPickStat.count}"> <!-- .pick-cont.active : 컨텐츠 표시 -->
+								<!-- 210329 : 브랜드 pick 슬라이드 추가 -->
+								<div class="swiper-container">
+									<div class="swiper-wrapper" id="id007">
+										<th:block th:each="bannerData, bannerStat : ${brandPickData.BannerList}">
+											<div class="swiper-slide" th:if="${bannerData.imgPath1 != ''}">
+												<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${bannerData.strVar1}]]);"><!-- 해당 배너 상세 이동 -->
+													<div class="txtWrap">
+														<p class="title">
+															<input type="hidden" name="title" th:value="${bannerData.strTitle1}">
+														</p>
+														<span th:text="${bannerData.subText1}">2020 FALL/WINTER 신상살펴보기</span>
+													</div>
+													<img th:src="${@environment.getProperty('domain.image')+bannerData.imgPath1}" alt="">
+												</a>
+											</div>
+										</th:block>
+									</div>
+								</div>
+								<!-- //210329 : 브랜드 pick 슬라이드 추가 -->
+								<!-- 210329 : 브랜드 pick 상품 swiper 제거 -->
+								<div class="pick-post"><!-- (pick-post)슬라이드 키클래스(해당 배너 관련 상품) -->
+									<th:block th:each="goodsData, goodsStat : ${brandPickData.goodsList}">
+										<div class="item_prod" th:if="${goodsStat.count<4}">
+											<div class="item_state">
+												<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM007');">
+													<div class="itemPic">
+														<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+													</div>
+													<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+													<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">35,900</p>
+												</a>
+											</div>
+										</div>
+									</th:block>
+								</div> <!--pick-post 종료 -->
+								<!-- 210329 : 브랜드 pick 상품 swiper 제거 -->
+							</div>
+							</th:block>
+							<div class="btn_group_flex">
+								<div>
+									<button class="btn btn_default">다음 브랜드 보기<span></span></button>
+								</div>
+							</div>
+
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='008'}">
+				<!-- 8. 가로 긴 배너 슬라이드 -->
+				<div class="inner wide">
+					<div class="main_1stage">
+						<div class="swiper-container post-bnnWide">
+							<div class="swiper-wrapper">
+								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
+									<div class="swiper-slide">
+										<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
+											<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
+												<div class="bnnbox" style="background:#bdc3c7;">
+													<div class="txtWrap ">
+														<p th:text="${ContentsData.strTitle1}">TBJ 가을 신상</p>
+<!--														<p>아우터 + 이너 단독세일</p>-->
+													</div>
+													<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
+												</div>
+											</a>
+										</th:block>
+									</div>
+								</th:block>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='009'}">
+				<!-- 9. MD추천 스타일 -->
+				<div class="inner">
+					<div class="main_recomm">
+						<div class="titWrap">
+							<h2 th:text="${contentsTitle}">MD가 추천하는 스타일</h2>
+						</div>
+						<div class="inner_head">
+							<div class="swiper-container recomm-head"> <!--(recomm-head)슬라이드 키클래스-->
+								<ul class="swiper-wrapper">
+									<th:block th:each="titleData, titleStat : ${mainData.mdPickList}" >
+										<th:block th:if="${titleData.goodsList!=null and !titleData.goodsList.empty}" >
+											<li class="swiper-slide"> <!-- li .btn.active : 메뉴 표시 --><!--data-filter 사용 안하시면 제거하셔도 좋습니다-->
+												<button class="btn btn_link" th:classappend="${titleStat.count==1}?'active'" th:attr="data-tab=${'recomm'+titleStat.count}" data-filter="tag_warm"><span th:text="${titleData.mdTitle}">따뜻한 무드</span></button>
+											</li>
+										</th:block>
+									</th:block>
+								</ul>
+							</div>
+						</div>
+						<th:block th:each="titleData, titleStat : ${mainData.mdPickList}">
+							<div class="inner_body">
+								<div class="swiper-container recomm-post recomm_item" th:classappend="${titleStat.count==1}?'active'" th:id="${'recomm'+titleStat.count}">
+									<div class="swiper-wrapper" >
+										<th:block th:if="${titleData.goodsList!=null and !titleData.goodsList.empty}">
+											<th:block th:each="goodsData, goodsStat : ${titleData.goodsList}">
+												<div class="swiper-slide">
+													<div class="item_prod">
+														<div class="item_state">
+															<button type="button" class="itemLike" th:classappend="${goodsData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsData.goodsCd}, ithrCd='', contentsLoc='SMM009', planDtlSq=''">관심상품 추가</button>
+															<a href="javascript:void(0)" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsData.goodsCd}]], '', '', 'SMM009');">
+																<div class="itemPic">
+																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
+																</div>
+																<p class="itemBrand" th:text="${goodsData.brandGroupNm}">TBJ</p>
+																<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																<p class="itemPrice">[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')} + 원]]
+																	<span class="itemPrice_original" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
+																	<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
+																</p>
+																<div class="itemComment" th:text="${goodsData.goodsTnm}"># 가을 느낌 물씬!</div>
+															</a>
+														</div>
+													</div>
+												</div>
+											</th:block>
+										</th:block>
+									</div>
+									<!-- <span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span> -->
+								</div>
+							</div>
+						</th:block>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='010'}">
+				<!-- 10. 당신을위한제안 -->
+				<div class="inner wide">
+					<div class="main_foryou">
+						<div class="titWrap">
+							<h2>당신을 위한 제안</h2>
+						</div>
+						<div class="swiper-container post-sug">
+							<div class="swiper-wrapper">
+								<div class="swiper-slide">
+									<!-- 폴딩1,2,3,4,5시작 -->
+									<ol class="list_cate">
+										<li class="on">
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">1</span>
+														<span class="fold_txt">모이몰른</span>
+													</button>
+												</dt>
+												<dd>
+													<div class="swiper-container post-sug-items"><!-- (post-sug-items)슬라이드 키클래스(해당 배너 관련 상품) -->
+														<div class="swiper-wrapper">
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">45,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">39,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">39,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">45,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">45,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">45,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<img alt="" class=" pd_img" src="/images/mo/thumb/main_pickImg02.jpg">
+																			</div>
+																			<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+																			<p class="itemPrice">45,900</p>
+																		</a>
+																	</div>
+																</div>
+															</div>
+															<div class="swiper-slide">
+																<div class="item_prod">
+																	<div class="item_state">
+																		<a href="javascript:void(0)" class="itemLink">
+																			<div class="itemPic">
+																				<span class="more_txt">더보기</span>
+																			</div>
+																		</a>
+																	</div>
+																</div>
+															</div>
+														</div>
+													</div>
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">2</span>
+														<span class="fold_txt">기모</span>
+													</button>
+												</dt>
+												<dd>
+													기모_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">3</span>
+														<span class="fold_txt">겨울 팬츠</span>
+													</button>
+												</dt>
+												<dd>
+													겨울팬츠_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">4</span>
+														<span class="fold_txt">TBJ</span>
+													</button>
+												</dt>
+												<dd>
+													TBJ_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">5</span>
+														<span class="fold_txt">캔버스 주니어</span>
+													</button>
+												</dt>
+												<dd>
+													캔버스주니어_슬라이드
+												</dd>
+											</dl>
+										</li>
+									</ol>
+									<!-- 폴딩종료 -->
+								</div>
+								<div class="swiper-slide">
+									<!-- 폴딩6,7,8,9,10시작 -->
+									<ol class="list_cate">
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">6</span>
+														<span class="fold_txt">키워드_6</span>
+													</button>
+												</dt>
+												<dd>
+													키워드_6_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">7</span>
+														<span class="fold_txt">키워드_7</span>
+													</button>
+												</dt>
+												<dd>
+													키워드_7_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">8</span>
+														<span class="fold_txt">키워드_8</span>
+													</button>
+												</dt>
+												<dd>
+													키워드_8_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">9</span>
+														<span class="fold_txt">키워드_9</span>
+													</button>
+												</dt>
+												<dd>
+													키워드_9_슬라이드
+												</dd>
+											</dl>
+										</li>
+										<li>
+											<dl>
+												<dt>
+													<button>
+														<span class="fold_rank">10</span>
+														<span class="fold_txt">키워드_10</span>
+													</button>
+												</dt>
+												<dd>
+													키워드_10_슬라이드
+												</dd>
+											</dl>
+										</li>
+									</ol>
+									<!-- 폴딩종료 -->
+								</div>
+							</div>
+							<!-- Add Pagination -->
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+			<th:block th:if="${contentsLoc=='011'}">
+				<!-- 11. TV 슬라이드 -->
+				<div class="inner wide bg_dark">
+					<div class="titWrap">
+						<h2 data-style="unusual">STYLE24 TV</h2>
+					</div>
+					<div class="main_tv" >
+						<div class="swiper-container post-tv">
+							<div class="swiper-wrapper ">
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/hGjFwebN5ks" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/J7nowE2iTIM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/cRiKrFk7FTM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/hGjFwebN5ks" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/J7nowE2iTIM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+								<div class="swiper-slide">
+									<div class="movbox">
+										<iframe width="100%" height="100%" src="https://www.youtube.com/embed/cRiKrFk7FTM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+									</div>
+								</div>
+							</div>
+							<div class="swiper-pagination"></div>
+						</div>
+					</div>
+				</div>
+			</th:block>
+
+		</th:block>
+	</th:block>
+
+	</section>
 	
 <script th:inline="javascript">
 /*<![CDATA[*/
+	var mainLayoutList = [[${mainLayoutList}]];
+	console.log(mainLayoutList);
+
+	var targetTime = $("#socailForm").find("input[name=targetTime]").val();
+	if(targetTime != null && targetTime != ''){
+		/* 핫딜 countDown */
+		var endTime = new Date(targetTime); // 남은시간 지정
+		endTime = (Date.parse(endTime) / 1000);
+
+		var countdown = document.getElementById("tiles"); // get tag element
+
+		getCountdown();
+
+		setInterval(function () { getCountdown(); }, 1000);
+
+		function getCountdown(){
+			// find the amount of "seconds" between now and target
+			var now = new Date();
+			now = (Date.parse(now) / 1000);
+
+			var timeLeft = endTime - now;
+
+			var days = Math.floor(timeLeft / 86400);
+			var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+			var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+			var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+
+			if (hours < '10') { hours = '0' + hours; }
+			if (minutes < '10') { minutes = '0' + minutes; }
+			if (seconds < '10') { seconds = '0' + seconds; }
+
+			// format countdown string + set tag value
+			countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+		}
+
+		function pad(n) {
+			return (n < 10 ? '0' : '') + n;
+		}
+	}
 	// 컨텐츠 호출
 	$(document).ready(function() {
-		
+		setHtop();
+		let randomNum = Math.floor( ( Math.random() * 4 ) );
+		$(".it_nav .btn").eq(randomNum).trigger('click');
+
+		// 몰메인 <br> 태그
+		$('.mainTitle').each(function (){
+			let tag = '';
+			var brText = $(this).find("input[name=mainTitlee]").val();
+
+			if(brText.indexOf('<br>') > -1){
+				var reText = brText.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+			}else{
+				tag += brText;
+			}
+			$(this).append(tag);
+		});
+
+		// 브랜드픽 <br> 태그
+		$('#id007 .title').each(function (){
+			let tag = '';
+			var brText = $(this).find("input[name=title]").val();
+
+			if(brText.indexOf('<br>') > -1){
+				var reText = brText.split("<br>");
+				tag += reText[0];
+				tag += '<br>';
+				tag += reText[1];
+			}else{
+				tag += brText;
+			}
+			$(this).append(tag);
+		});
 	});
+
+	function setHtop() {
+		if($('header').hasClass('main')) {
+			$('#htopMain').show();
+			$('#htopSub').hide();
+		} else {
+			$('#htopMain').hide();
+			$('#gnb').hide();
+			$('#htopSub').show();
+		}
+	}
 /*]]>*/
 </script>
 
+	<script type="text/javascript">
+		/* deal-countDown */
+		// var target_date = new Date().getTime() + (1000*3600*8);
+		// var days, hours, minutes, seconds;
+		// var countdown = document.getElementById("tiles");
+		// getCountdown();
+		// setInterval(function () { getCountdown(); }, 1000);
+		// function getCountdown(){
+		// 	var current_date = new Date().getTime();
+		// 	var seconds_left = (target_date - current_date) / 1000;
+		// 	seconds_left = seconds_left % 86400;
+		// 	hours = pad( parseInt(seconds_left / 3600) );
+		// 	seconds_left = seconds_left % 3600;
+		// 	minutes = pad( parseInt(seconds_left / 60) );
+		// 	seconds = pad( parseInt( seconds_left % 60 ) );
+		// 	// format countdown string + set tag value
+		// 	countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+		// }
+		// function pad(n) {
+		// 	return (n < 10 ? '0' : '') + n;
+		// }
+
+		/* swiper slide */
+		// post-visual
+		var post_visual = new Swiper('.swiper-container.post-visual', {
+			autoplay: {
+				delay: 3000,
+			},
+			loop:true,
+			pagination: {
+				el: '.swiper-pagination',
+				type: 'fraction',
+			},
+		});
+
+		// post-trendy
+		var post_trendy = new Swiper('.swiper-container.post-trendy', {
+			pagination: {
+				el: '.swiper-pagination',
+			},
+		});
+
+		// post-it
+		var post_it = new Swiper('.swiper-container.post-it', {
+			slidesPerView: 2,
+			spaceBetween: 8,
+			observer: true,
+			observeParents: true,
+			speed : 1000,
+			freeMode: true,
+			autoplay: false,
+		});
+		$(".it_nav .btn").click(function(){
+			var itActive = $(this).attr('data-tab');
+			$(".it_nav .btn").removeClass('active');
+			$(".it_item").removeClass('active');
+			$(this).addClass('active');
+			$('#'+itActive).addClass('active');
+		});
+
+		// post-stylereport
+		var post_stylereport = new Swiper('.swiper-container.post-stylereport', {
+			slidesPerView: 1,
+			pagination: {
+				el: '.swiper-pagination',
+			},
+			spaceBetween: 8,
+		});
+
+		//post-deal
+		var post_deal = new Swiper('.swiper-container.post-deal', {
+			slidesPerView: 2.22,
+			spaceBetween: 8,
+			observer: true,
+			observeParents: true,
+			speed : 1000,
+			freeMode: true,
+			autoplay: false,
+		});
+
+		//post-pick
+		//post-pick-head
+		var Head_pick = new Swiper(".pick-head", {
+			slidesPerView: "auto",
+			spaceBetween: 20,
+			autoHeight: true,
+			preventClicks: true,
+			preventClicksPropagation: false,
+			observer: true,
+			observeParents: true
+		});
+		var $pickHd = $('.pick-head .swiper-wrapper .swiper-slide .btn');
+		$pickHd.click(function(){
+			var target = $(this).parent();
+			$pickHd.parent().removeClass('on')
+			target.addClass('on');
+			muCenter(target);
+		})
+		function muCenter(target){
+			var snbwrap = $('.pick-head .swiper-wrapper');
+			var targetPos = target.position();
+			var box = $('.pick-head');
+			var boxHarf = box.width()/2;
+			var pos;
+			var listWidth=0;
+
+			snbwrap.find('.swiper-slide').each(function(){ listWidth += $(this).outerWidth(); })
+
+			var selectTargetPos = targetPos.left + target.outerWidth()/2;
+			if (selectTargetPos <= boxHarf) { // left
+				pos = 0;
+			}else if ((listWidth - selectTargetPos) <= boxHarf) { //right
+				pos = listWidth-box.width();
+			}else {
+				pos = selectTargetPos - boxHarf;
+			}
+
+			setTimeout(function(){snbwrap.css({
+				"transform": "translate3d("+ (pos*-2) +"px, 0, 0)",
+				"transition-duration": "500ms"
+			})}, 200);
+		}
+		$(".pick-head li .btn").click(function(){
+			var itActive = $(this).attr('data-tab');
+			$(".pick-head li .btn").removeClass('active');
+			$(".pick-cont").removeClass('active');
+			$(this).addClass('active');
+			$('#'+itActive).addClass('active');
+		});
+
+		//post-pick-post
+		var post_pick = new Swiper(".pick-cont .swiper-container", {
+			//slidesPerView: 1,
+			observer: true,
+			observeParents: true
+		});
+
+		// post-recomm
+		// recomm-head
+		var Head_recomm = new Swiper(".swiper-container.recomm-head", {
+			slidesPerView: "auto",
+			spaceBetween: 10,
+			autoHeight: true,
+			loop:false,
+		});
+		$(".recomm-head li .btn").click(function(){
+			var recommActive = $(this).attr('data-tab');
+			$(".recomm-head li .btn").removeClass('active');
+			$(".recomm-post").removeClass('active');
+			$(this).addClass('active');
+			$('#'+recommActive).addClass('active');
+		});
+		// recomm-post
+		var post_recomm = new Swiper(".recomm-post", {
+			slidesPerView: 2.22,
+			spaceBetween: 8,
+			observer: true,
+			observeParents: true,
+			speed : 1000,
+			freeMode: true,
+			autoplay: false,
+		});
+
+		// post-bnnWide
+		var post_bnnWide = new Swiper ('.swiper-container.post-bnnWide', {
+			loop: true,
+			slidesPerView: 1,
+			speed : 1500,
+			autoplay: {
+				delay: 4000,
+				disableOnInteraction: false,
+			},
+			pagination: {
+				el: '.swiper-pagination',
+			},
+		});
+
+		// post-bnnEvent
+		var post_bnnEvent = new Swiper ('.swiper-container.post-bnnEvent', {
+			loop: true,
+			slidesPerView: 1,
+			speed : 1500,
+			autoplay: {
+				delay: 4000,
+				disableOnInteraction: false,
+			},
+			pagination: {
+				el: '.swiper-pagination',
+			},
+		});
+
+		// post_sug
+		var post_sug = new Swiper('.swiper-container.post-sug', {
+			pagination: {
+				el: '.swiper-pagination',
+			},
+			// autoHeight: true,
+			autoplay: {
+				delay: 9500,
+				disableOnInteraction: false,
+			},
+		});
+		function foryouInterval(_foryouIndex) {
+			var foryouCateItems = $(".main_foryou .post-sug .swiper-slide-active .list_cate li");
+			$(foryouCateItems[(_foryouIndex + 1) % 5]).addClass("on");
+			$(foryouCateItems[_foryouIndex % 5]).removeClass("on");
+		}
+		var foryouIndex = 0;
+		setInterval(function () {
+			foryouInterval(foryouIndex);
+			if (foryouIndex >= 5) foryouIndex = 0;
+			foryouIndex++;
+		}, 2000);
+		var post_sug_items = new Swiper ('.swiper-container.post-sug-items', {
+			slidesPerView: 3,
+			spaceBetween: 10,
+			speed : 800,
+			//autoplay: {
+			//	delay: 3000,
+			//	disableOnInteraction: false,
+			//},
+		});
+
+		// post-tv
+		var post_tv = new Swiper ('.post-tv', {
+			loop: true,
+			// slidesPerView: 2,
+			// spaceBetween: 20,
+			centeredSlides: true,
+			speed : 800,
+			// effect: 'fade',
+			autoplay: false,
+			//autoplay: {
+			//	delay: 10000,
+			//	disableOnInteraction: false,
+			//},
+			// navigation: {
+			// 	nextEl: '.main_tv .swiper-button-next',
+			// 	prevEl: '.main_tv .swiper-button-prev',
+			// },
+			pagination: {
+				el: '.main_tv .swiper-pagination',
+				clickable: true,
+			},
+		});
+	</script>
+
 </th:block>
 
 </body>

+ 72 - 8
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -233,12 +233,24 @@
 				</div>
 				<!-- //상품설명 노출 -->
 				<!-- 관리자 에디터입력 내용 노출 -->
+				<div class="mdhtml_box">
 					<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
-				<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
+				<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 					</th:block>
-				<!-- //관리자 에디터입력 내용 노출 -->
+				<!-- 관리자 에디터입력 내용   공지 html -->
+				<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+				<div class="movblock">
+					<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+					<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+					</th:block>
+					<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+					</th:block>
+				</div>
+				</th:block>
+				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
-				<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
+				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+				</div>	
 				<!-- 착용컷 노출 -->
 				<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1.') 
 													or #strings.contains(goodsImgList,'_M2.')
@@ -369,6 +381,7 @@
 					</p>
 					<div class="area_infotbl">
 						<span class="title">상품기본정보</span>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N'} ">
 						<div class="tbl type1">
 							<table>
 								<tbody>
@@ -388,10 +401,14 @@
 										<th>상품명</th>
 										<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 									</tr>
+									<th:block th:if="${goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
 									<tr>
-										<th>제조자</th>
-										<td>한세엠케이(주)==============>노출필요성 확인</td>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
 									</tr>
+									</th:block>
+									</th:block>
 									<tr>
 										<th>제조국</th>
 										<td th:text="${goodsInfo.originNm}">베트남</td>
@@ -399,6 +416,47 @@
 								</tbody>
 							</table>
 						</div>
+						</th:block>
+						<th:block th:unless="${goodsInfo.goodsType == 'G056_N'} ">
+						<th:block th:if="${goodsComposeList != null and !goodsComposeList.empty}">
+						<th:block th:each="goodsCompose, status : ${goodsComposeList}">
+						<div class="tbl type1">
+							<table>
+								<tbody>
+									<tr>
+										<th>상품코드</th>
+										<td th:text="${goodsCompose.compsGoodsCd}">14443216</td>
+									</tr>
+									<tr>
+										<th>상품구분</th>
+										<td th:text="${goodsCompose.goodsGbNm}">병행수입</td>
+									</tr>
+									<tr>
+										<th>브랜드</th>
+										<td th:text="${goodsCompose.brandGroupNm}">TBJ</td>
+									</tr>
+									<tr>
+										<th>상품명</th>
+										<td th:text="${goodsCompose.compsGoodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+									</tr>
+									<th:block th:if="${goodsCompose.goodsNotiList != null and !goodsCompose.goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsCompose.goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
+									<tr>
+										<th>제조국</th>
+										<td th:text="${goodsCompose.originNm}">베트남</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						</th:block>
+						</th:block>
+						</th:block>
 						<p class="t_info dot_info mt10">
 							주문제작 상품의 경우 주문 후 제작되어 판매되는 상품으로 제작 시점부터 반품/교환이 어려울 수 있습니다.
 						</p>
@@ -447,11 +505,17 @@
 											<em class="ico ico_besttag"></em>
 										</div>
 										<div class="lap">
-											<div class="pic" th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<th:block th:if="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<div class="pic" >
 												<th:block th:each="reviewAttach, attachStatus : ${bestReview.reviewAttachList}" th:if="${attachStatus.first}">
 												<span class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}"  th:style="${'background-image:url('+imgUrl+ reviewAttach.sysFileNm+');'}"></span><!-- 동영상의 썸네일일 경우 mov 클래스 추가 -->
 												</th:block>
 											</div>
+											</th:block>
+											<th:block th:unless="${bestReview.reviewAttachList != null and !bestReview.reviewAttachList.empty}">
+											<div class="pic none" >
+											</div>
+											</th:block>
 											<div class="txt_best_review">
 												<p th:text="${bestReview.reviewContent}">옷</p>
 											</div>
@@ -963,8 +1027,8 @@
 			$objUp.append(tag);
 			fnSetTotalPrice();
 			
-			// 해야하나 말아야하나
-			//$('.pop_option_select').css("display", "none");
+			$('.pop_option_select').css("display", "none");
+			
 			
 		}, "text");
 	}

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

@@ -577,7 +577,6 @@
 	}
 	
 	var fnDrawInfiniteScrollData = function(result, pageNum){
-
 		if (result.dataList != null && result.dataList.length > 0) {
 			var htm = fnCreateGoodsReviewList(result);
 			gagaInfiniteScroll.draw(htm);

+ 891 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -0,0 +1,891 @@
+<!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  : MypageOrderDetailFormMob.html
+ * @desc    : 마이페이지 > 주문상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.22   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="" 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>
+						<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>
+						<!--<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>
+								</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">
+													<span class="brand" th:text="${ordDtl.brandNm}"></span>
+													<em class="order_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">
+												<del>
+													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</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'">
+								<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${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"><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"><span>교환 신청</span></button></div>
+											</th:block>
+											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_rtn_req"><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"><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"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+										</th:block>
+										<!-- //교환가능, 반품가능 -->
+										
+										<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><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"><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"><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">
+										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_qna_write"><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"><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"><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"><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"><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"><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="${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="|(-${freeGift.usePoint.addComma()}P)|"></span>
+														</th:block>
+													</li>
+												</th:block>
+											</ul>
+										</div>
+									</div>
+								</div>
+							</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>
+		
+		<!-- 무통장입금정보 -->
+		<th:block th:if="${paymentInfo.payMeans == 'G014_20'}">
+			<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>   
+							<tr>
+								<th>은행명/명의자</th>
+								<td><div><span th:text="${paymentInfo.vaBank}"></span>/<span th:text="|(${paymentInfo.vaNm})|"></span></div></td>
+							</tr>
+							<tr>
+								<th>계좌번호</th>
+								<td><div><span th:text="${paymentInfo.vaNo}"></span></div></td>
+							</tr>
+							<tr>
+								<th>입금기한</th>
+								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span><span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<!-- //무통장입금정보 -->
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup customerfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span >주문고객</span></div>
+											<span class="fold_txt" th:text="${orderInfo.ordNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="customer_info">
+									<dl>
+										<div>
+											<dt><span class="sr-only">주문자명</span></dt>
+											<dd th:text="${orderInfo.ordNm}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">이메일</span></dt>
+											<dd th:text="${orderInfo.ordEmail}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">휴대폰 번호</span></dt>
+											<dd th:text="${orderInfo.ordPhnno}"></dd>
+										</div>
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup shipfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span>배송지 정보</span></div>
+											<span class="fold_txt recipNm" th:text="${deliveryAddrInfo.recipNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="ship_info ship_edit">
+									<!--  배송비정보변경가능 -->
+									<th:block th:if="${allCanYn == 'Y'}">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup">
+											<span>배송지 변경</span>
+										</button>
+									</th:block>
+									<!--  //배송비정보변경가능 -->
+									<dl>
+										<div class="company">
+											<dt><span class="sr-only">배송지명</span></dt>
+											<dd>
+												<span th:text="${deliveryAddrInfo.recipNm}" id="recipNm"></span>
+												<div class="badge_wrap">
+													<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
+														<em class="order_badge defaultYn">기본 배송지</em>
+													</th:block>
+													<em class="order_badge order_bullet_badge" style="display:none">총알배송</em>
+												</div>
+											</dd>
+										</div>
+										<div class="addr">
+											<dt><span class="sr-only">배송주소</span></dt>
+											<dd th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|" id="recipAddr"></dd>
+										</div>
+										<div class="phone">
+											<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"> <!-- 비활성화시 disabled 추가 -->
+															<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>
+										<!--  //배송메모정보변경불가 -->
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		
+		<th:block th:if="${orderInfo.giftPackYn} == 'Y'">
+			<div class="inner">
+				<div class="gift_wrap">
+					<h3>선물 받으실 분</h3>
+					<div class="gift_con">
+						<div class="gift_info">
+							<span th:text="${orderInfo.recipNm}"></span> / <span th:text="${orderInfo.recipPhnno}"></span>
+						</div>
+						<div class="message">
+							<p class="gift_tit">선물 메세지</p>
+							<div class="content">
+								<p th:text="${orderInfo.giftMsg}" id="giftMsg"></p>
+							</div> 
+						</div>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		
+		<div class="inner">
+			<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>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl>
+									<div>
+										<dt>총주문금액(상품금액+배송비)</dt>
+										<dd><div><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
+									</div>
+									<th:block th:if="${orderAmtInfo.cpn1DcAmt} > 0">
+										<div>
+											<dt>상품할인(즉시할인)</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cpn1DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.tmtb1DcAmt} + ${orderAmtInfo.tmtb2DcAmt} > 0">
+										<div>
+											<dt>다다익선 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.cartCpnDcAmt} + ${orderAmtInfo.goodsCpnDcAmt} + ${orderAmtInfo.delvCpnDcAmt} > 0">
+										<div>
+											<dt>쿠폰할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.prePntDcAmt} > 0">
+										<div>
+											<dt>선 포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.prePntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.pntDcAmt} > 0">
+										<div>
+											<dt>포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.pntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.gfcdUseAmt} > 0">
+										<div>
+											<dt>상품권 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.gfcdUseAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.npayPntAmt} > 0">
+										<div>
+											<dt>마일리지 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.npayPntAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${paymentInfo.pgCpnAmt} > 0">
+										<div>
+											<dt>제휴 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(paymentInfo.pgCpnAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.savePntAmt} > 0">
+										<div>
+											<dt>적립예정 포인트</dt>
+											<dd><div><span th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}P|">3000</span>P</div></dd>
+										</div>
+									</th:block>
+									<div>
+										<dt>결제수단</dt>
+										<dd>
+											<div>
+												<span th:if="${paymentInfo.pgGb == 'NAVER'}">네이버 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_10'}">실시간계좌이체</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_20'}">무통장입금</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" th:text="|${paymentInfo.cardNm}/${paymentInfo.cardMips}|"></span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_60'}">휴대폰결제</span>
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</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 #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+					 -->
+				</div>
+				<!-- 210415_ 추가 : 결제정보 안내 텍스트 추가 -->
+				<p class="txt_ref">NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+			</div>
+			<div class="btn_group btn_group_flex">
+				<div>
+					<button type="button" class="btn btn_dark"><span>확인</span></button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let giftMsg				= [[${orderInfo.giftMsg}]];		// 선물메세지
+	let ordNo 				= [[${ordNo}]];
+	var isLogin 			= [[${isLogin}]];
+	let orderList 			= [[${orderList}]];
+	let oneData 			= [[${oneData}]];
+	let paymentInfo 		= [[${paymentInfo}]];
+	let orderAmtInfo 		= [[${orderAmtInfo}]];
+	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
+	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let jsonObj 			= {};
+	let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(1);
+		
+		// 마이페이지 location 설정
+		fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+		
+		// 선물메시지
+		if ($("#giftMsg").html() != null) {
+			$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+		}
+		
+		// 2021.04.22 배송지정보수정
+		var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
+		var tempMemo = true;
+		
+		$(".ship_request .ship_option .delivery_list ul li").removeClass("selected");
+		
+		// 배송요청사항설정
+		for (i=0 ; i<delvMemoArr.length ; i++) {
+			if (delvMemoArr[i] == delvMemo) {
+				tempMemo = false;
+			}
+		}
+
+		// 배송메모설정
+		$(".ship_request .ship_option .delivery_list ul li").each(function(){
+			if (delvMemo == $(this).text()) {
+				$(this).addClass("selected");
+			}
+		});
+		
+		if (tempMemo) {
+			$(".ship_request .ship_option .delivery_list .select").text("기타사항");
+			$("input[name=delvMemoText]").attr("disabled", false);
+			$("input[name=delvMemoText]").val(delvMemo);
+			$(".ship_request .ship_option .delivery_list ul li").eq(4).addClass("selected");
+		}
+		
+		// 콤보박스 
+		var od_delivery_list = new sCombo('.ship_request .ship_option .delivery_list');
+		
+		// 210405_배송요청 사항 기타사항 selected시 기타사항 input 구현
+		$(".ship_request .ship_option .delivery_list ul li").on("click", function(){
+			if ($(".ship_request .ship_option .delivery_list ul .select_etc").hasClass("selected")){
+				$(".ship_etc").show();
+			} else {
+				$(".ship_etc").hide();
+			}
+		});
+	});
+	
+	// 전체취소 버튼 클릭 이벤트
+	var fnAllCancel = function() {
+		// 환불계좌 체크
+		let accountNo = $('#orderDetailForm input[name=accountNo]').val();
+		let accountNm = $('#orderDetailForm input[name=accountNm]').val();
+		let bankCd = $('#orderDetailForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+			
+			let jsonData = JSON.stringify(data);
+			
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/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');
+					gagajf.showProgressbar(true);
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+			
+			return false;
+		}
+
+		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				// 취소요청 데이터 설정
+				let url = '/mypage/cancel';
+				
+				// 주문상세번호 설정
+				let ordDtlNoArr = [];
+				$.each($('#orderDetailForm input[name=ordDtlNoArr]'), function(idx, item) {
+					ordDtlNoArr.push($(item).val());
+				});
+				
+				// 취소 수량 설정
+				let cnclRtnReqQtyArr = [];
+				$.each($('#orderDetailForm input[name=cnclRtnReqQtyArr]'), function(idx, item) {
+					cnclRtnReqQtyArr.push($(item).val());
+				});
+				
+				// 전체 취소 처리
+				let data = {};
+				data.ordNo = ordNo;
+				data.chgReason = 'G686_10';
+				data.chgReasonNm = '고객변심';
+				data.accountNo = accountNo;
+				data.accountNm = accountNm;
+				data.bankCd = bankCd;
+				data.isCustomer = 'Y';
+				data.reqGbn = 'cnclComplete';
+				data.ordDtlNoArr = ordDtlNoArr;
+				data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
+				
+				let jsonData = JSON.stringify(data);
+				
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+				});
+			}
+		});
+	}
+
+	// 배송지 정보 설정
+	var delvAddrSet = function(delvObj) {
+		let delvAddrSq = deliveryAddrInfo.delvAddrSq;
+		let recipNm = delvObj.recipNm;
+		let recipPhnno = delvObj.recipPhnno;
+		let recipZipcode = delvObj.recipZipcode;
+		let recipBaseAddr = delvObj.recipBaseAddr;
+		let recipDtlAddr = delvObj.recipDtlAddr;
+		let delvMemo = delvObj.delvMemo;
+		
+		$('#recipNm').text(recipNm);
+		$('#recipPhnno').text(recipPhnno);
+		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+		$('#delvMemo').text(delvMemo);
+		
+		let url = '/mypage/change/delvery/addr';
+		let data = {};
+		data.delvAddrSq = delvAddrSq;
+		data.recipNm = recipNm;
+		data.recipPhnno = recipPhnno;
+		data.recipZipcode = recipZipcode;
+		data.recipBaseAddr = recipBaseAddr;
+		data.recipDtlAddr = recipDtlAddr;
+		data.delvMemo = delvMemo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		})
+	}
+	
+	// 배송메모 설정
+	var delvMemoSet = function(delvMemoObj) {
+		let url = '/mypage/change/delvery/memo';
+		let delvMemo = delvMemoObj.delvMemo;
+
+		let data = {};
+		data.delvMemo = delvMemo;
+		data.delvAddrSq = oneData.delvAddrSq;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		})
+
+		$("#delvMemo").text(delvMemo);
+	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#orderDetailForm input[name=accountNo]').val(result.accountNo);
+		$('#orderDetailForm input[name=accountNm]').val(result.accountNm);
+		$('#orderDetailForm input[name=bankCd]').val(result.bankCd);
+		
+		// 반품처리
+		fnReturn();
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 268 - 19
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -16,37 +16,134 @@
 <body>
 
 <th:block layout:fragment="content">
+
+<!-- 주문목록조회 -->
+<form id="searchForm" name="searchForm">
+	<input type="hidden" name="pageNo" 		value=1 />
+	<input type="hidden" name="pageSize" 	value=5 />
+	<input type="hidden" name="pageUnit" 	value=10 />
+	<input type="hidden" name="ordDtlStat" 	value="" />
+	<input type="hidden" name="stDate" 		value="" />
+	<input type="hidden" name="edDate" 		value="" />
+	<input type="hidden" name="custNo" 		th:value ="${customerInfo.custNo}"/>
+</form>
+<!-- //주문목록조회 -->
+
+<!-- 교환상세 -->
+<form id="exchangeForm" name="exchangeForm" action="#" 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" action="#" 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>
+<!-- //취소상세 -->
+
 <main role="" id="" class="container my">
 	<section class="content my_order">
 		<div class="inner">
 			<div class="order_sort">
-				<a href="javascript:;" class="od_date_btn">최근 1개월</a>
-				<a href="javascript:;" class="od_status_btn">전체</a>
+				<a href="javascript:void(0);" class="od_date_btn">최근 3개월</a>
+				<a href="javascript:void(0);" class="od_status_btn">전체</a>
 			</div>
 		</div>
 		
 		<!-- 주문목록 -->
-		<div class="area_list" id="orderList">
-		</div>
-		<!-- //주문목록 -->
-		
-		
+		<div data-id="layer_infinite_item" >
+			<section id="infiniteContainer">
+				<div id="listBoxOuter">
+					<div class="area_list" id="listBox">
+					</div>
+				</div>
+			</section>
+ 		</div>
+ 		
 	</section>
 </main>
-<!-- 210408_분류 팝업 추가 -->
 
-<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<!-- 기간 선택 팝업 -->
+<div id="odDatePop" class="popup_box odDatePop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">기간 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" onclick="fnSetSearchPeriod(1);" period="1"><span>최근 1개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(3);" period="3"><span>최근 3개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(6);" period="6"><span>최근 6개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(9);" period="9"><span>최근 9개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(12);" period="12"><span>최근 12개월</span></button>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //기간 선택 팝업 -->
+<!-- 주문상태 선택 팝업 -->
+<div id="odStatusPop" class="popup_box odStatusPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">주문상태 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" code="" class="ordDtlStat on"><span>전체상태</span></button>
+				<th:block th:each="ordDtlStat , i : ${ordDtlStatList}">
+					<button type="button" class="ordDtlStat" th:code="${ordDtlStat.cd}"><span th:text="${ordDtlStat.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //주문상태 선택 팝업 -->
+
+<!-- <script src="/ux/plugins/jquery/jquery.history.min.js"></script> -->
+<!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
+<!-- <script src="/ux/plugins/gaga/gaga.paging.js"></script> -->
+
 <script th:inline="javascript">
 // 변수설정
 var custNo 			= [[${customerInfo.custNo}]];
+var totalCnt		= [[${totalCnt}]];
+var totalPage		= 0;
+var remainList		= 0;
 var jsonObj 		= {};
+var scrollTemp		= true;
 
 // 초기설정
 $(document).ready(function() {
 	
+	// 전체페이지 구하기
+	totalPage 	= parseInt(totalCnt / 10);
+	remainList 	= totalCnt % 10; 
+	
+	// 나머지가 있으면 전체 페이지 + 1
+	if (remainList > 0) {
+		totalPage = totalPage + 1;
+	}
+	
+	// 인피니티스크롤 초기화
+	//fnGoodsReviewInfiniteScrollInit();
+	
 	// AJAX 로드를 위한 변수 설정
 	jsonObj = {
-		"pageNo" 			: 1
+		"pageNo" 			: 0
 		, "pageSize" 		: 5
 		, "pageUnit" 		: 10
 		, "ordDtlStat" 		: ""
@@ -56,21 +153,56 @@ $(document).ready(function() {
 	}
 	// AJAX 변수 설정
 	jsonData = JSON.stringify(jsonObj);
-
-	// 초기주문목로조회
-	fnSearchOrderList(1);
 	
+	// 초기 3개월 조회
+	fnSetSearchPeriod(3);
+	
+	var win = $(window);
+	 
+	// Each time the user scrolls
+	win.scroll(function() {
+		// End of the document reached?
+		if ($(document).height() - win.height() == win.scrollTop()) {
+			if (scrollTemp) {
+				var tempPage 	= parseInt($("#searchForm input[name=pageNo]").val());
+				tempPage 		= tempPage + 1;
+				
+				if (totalPage > tempPage) {
+					scrollTemp = false;
+					fnGetInfiniteScrollDataList(tempPage);
+				}
+			}
+		}
+	});
+	
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
+		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
+		jsonObj.ordDtlStat = $(this).attr('code');
+		
+		// 상태값 명칭
+		var ordDtlStatNm = $(this).find("span").text();
+		$(".container .my_order .od_status_btn").text(ordDtlStatNm);
+		
+		// 초기화설정
+		fnGetInfiniteScrollDataList(0);
+	});
 });
 
-//주문 목록 조회
-var fnSearchOrderList = function(pageNo) {
-	alert(pageNo);
-	
+// 주문 목록 조회
+var fnGetInfiniteScrollDataList = function(pageNo) {
+
+	// 페이지번호가 없으면 1페이지 설정
 	if (pageNo == null) {
 		pageNo = 1;
 	}
 	
+	// 페이지설정
+	$("#searchForm input[name=pageNo]").val(pageNo);
+	
 	jsonObj.pageNo = pageNo;
+	jsonObj.stDate = $("#searchForm input[name=stDate]").val();
+	jsonObj.edDate = $("#searchForm input[name=edDate]").val();
 	
 	$.ajax( {
 		type		: "POST",
@@ -85,17 +217,134 @@ var fnSearchOrderList = function(pageNo) {
 		},
 		success 	: function(result) {
 			if (result != null) {
-				$("#orderList").css("display", "block");
-				$("#orderList").append(result);
+				$("#listBox").css("display", "block");
+				$("#listBox").append(result);
+				
+				scrollTemp = true;
+				
+				// 인피니티 스크롤 기억기능
+				//gagaInfiniteScroll.draw(result);
+				//gagaInfiniteScroll.draw('not');
+				
 			}
 		}
 	});
+	
+	//$("#searchForm input[name=pageNo]").val(pageNo+1);
+	//gagajf.ajaxFormSubmit("/mypage/order/listInfo2", document.searchForm,  gagaInfiniteScroll.jsonToHtml);
+}
+
+//검색기간 버튼 클릭 이벤트 처리
+var fnSetSearchPeriod = function(period) {
+	let date 		= new Date();
+	let edDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+	date.setMonth(date.getMonth() - period);
+	let stDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+
+	$('#searchForm input[name=edDate]').val(edDate);
+	$('#searchForm input[name=stDate]').val(stDate);
+	
+	// 리헷
+	$("#listBox").html("");
+	
+	// 초기화설정
+	fnGetInfiniteScrollDataList(0);
+	
+	$("#odDatePop .popup_con button").removeClass("on");
+	
+	// 기간설정
+	$("#odDatePop .popup_con button").each(function() {
+		var tempPeriod = $(this).attr("period");
+		if (tempPeriod == period) {
+			$(this).addClass("on");
+			
+			// 텍스트설정
+			var periodStr = $(this).find("span").text();
+			$(".container .my_order .od_date_btn").text(periodStr);
+		}
+	});
+}
+
+// 2021.04.21 인피니티 스크롤 기능 구현전 추후 수정
+// 인피니트 스크롤 초기화
+/*
+var fnGoodsReviewInfiniteScrollInit = function(){
+	// sessionStorage.removeItem(document.location.href);
+	History.replaceState(null, null);
+	gagaInfiniteScroll.pageStatus = {
+			  pageNum 			: []      // [0,1,2...] 로드된 페이지 (Array)
+			, loadPage 			: 0      // 로드할 페이지
+			, loadAlign 		: 'not' // 로드 상태(prev, next, not)
+			, historyScroll 	: 0 //
+			, nowPage 			: null    // 현재 페이지
+			, pageUrl 			: {       // page url
+				
+			}
+	}
+	
+	//History 초기화
+	$("#listBox").html("");
+}
+
+var fnDrawInfiniteScrollData = function (result){
+	let totalCnt 								= result.totalCnt;
+	gagaInfiniteScroll.pageStatus.totalCount 	= result.totalCnt;
+	
+	var htm = fnCreateGoodsList(result);
+	gagaInfiniteScroll.draw(htm);
 }
 
+$(function() { gagaInfiniteScroll.getHistory(); });
+*/
+</script>
 
+<!-- 210408_스크립트 추가 -->
+<script>
+	$(document).ready(function(){
+		$(document).on('click','.popup_box .button_list button',function(){
+			$('.popup_box .button_list button').removeClass('on');
+			$(this).addClass('on');
+		})
+	});
 
+	//기간 선택 팝업
+	$(document).on("click", ".order_sort .od_date_btn", function(){
+		$('#odDatePop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
 
+	//주문상태 선택 팝업
+	$(document).on("click", ".order_sort .od_status_btn", function(){
+		$('#odStatusPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
+
+	//팝업_닫기
+	$('.popup_close').on("click",function(){
+		$('.popup_box').hide().removeClass('active');
+		$("body").css({"overflow":"visible"});
+	});
+
+	/* 210409_추가 : alert 모음 */
+	$(document).on("click", "#btn_purchase_confirm", function(){
+		mcxDialog.confirm("구매확정 후에는 반품/교환이 불가합니다. 구매확정하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",  // Confirmation button text
+			sureBtnClick: function() {  // Confirm button click callback
+				alert("9,999P가 적립되었습니다.");
+			}
+		});
+	});
+
+	$(document).on("click", "#btn_sms_alert", function(){
+		mcxDialog.alert("SMS로 선물내역을 다시 전송하였습니다.", { 
+				//alert("선물하기 SMS를 조금 전 다시 발송하였습니다. 잠시 후 다시 시도해주세요."); : SMS 발송한지 10분이 지나지 않았을 경우
+			sureBtnText: "닫기",  
+		});
+	});
+	/* //210409_추가 : alert 모음 */
 </script>
+<!-- //210408_스크립트 추가 -->
 </th:block>
 </body>
 </html>

+ 359 - 40
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -1,54 +1,373 @@
 <div class="inner">
 	<div class="part_goods">
-		<div class="goods_top">
-			<div class="goods_date">주문일<span class="date">2020.10.25</span></div>
-			<a href="javascript:;" class="detail_btn">상세보기</a>
-		</div>
 		
-		<!-- 주문 접수 -->
-		<div class="goods_section">
-			<div class="goods_status">
-				<p class="dlvr_staus">주문 접수</p>
+		<th:block th:each="order , i : ${orderList}">
+			<div class="goods_top">
+				<th:block th:if="${order.giftPackYn} == 'Y'">
+					<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+				</th:block>
+				<th:block th:if="${order.giftPackYn} == 'N'">
+					<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+				</th:block>
+				<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this)">상세보기</a>
 			</div>
-			<div class="goods_detail">
-				<a href="">
-					<div class="thumb_box">
-						<img src="/images/mo/thumb/tmp_pdClickother1.jpg" alt="tmp_pdClickother1">
+			
+			<th:block th:each="ordDtl , j : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+				<!-- 주문 접수 -->
+				<div class="goods_section">
+					<div class="goods_status">
+						<!-- 선물배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+							<div class="goods_txt">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<p class="dlvr_staus">주소 입력 대기 중</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="dlvr_staus">선물 완료</p>
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								
+								<!-- 선물 취소 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+									<p class="dlvr_staus">선물 취소</p>
+								</th:block>
+								<!-- //선물 취소 -->
+							</div>
+						</th:block>
+						<!-- //선물배송일때 -->
+						
+						<!-- 일반배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+							<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+						</th:block>
+						<!-- //일반배송일때 -->
+					</div>
+					<div class="goods_detail">
+						<a href="">
+							<div class="thumb_box">
+								<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" src="/" 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">
+											<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
+												<em class="order_badge order_bullet_badge">총알배송</em>
+											</th:block>
+											<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
+												<em class="order_badge">STYLE24 일반배송</em>
+											</th:block>
+											<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
+												<em class="order_badge">업체직배송</em>
+											</th:block>
+										</div>
+									</div>
+									<div class="name" th:text="${ordDtl.goodsNm}"></div>
+								</div>
+								<div class="od_opt">
+									<div class="option" th:each="colorNm, index : ${ordDtl.colorNmArr}">
+										<em th:text="${colorNm}"></em>
+										<em th:text="${ordDtl.optCd2Arr[index.index]}"></em>
+									</div>
+								</div>
+								<div class="od_calc">
+									<!-- 판매금액과 할인금액이 같으면 표시 안함 -->
+									<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt} - ${ordDtl.cpn1DcAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
+										<p class="sale_price">
+											<del>
+												<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원
+											</del>
+										</p>
+									</th:block>
+									<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>
-					<div class="info_box">
-						<div class="od_name">
-							<div class="brand">
-								<span>Mollimelli 몰리멜리</span>
-								<div class="badge_wrap">
-									<em class="order_badge">STYLE24 일반배송</em>
-									<em class="order_badge order_bullet_badge">총알배송</em>
+					
+					<!-- 버튼기능정리 -->
+					<!-- 일반배송 -->
+					<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+						<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${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"><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"><span>교환 신청</span></button></div>
+									</th:block>
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_rtn_req"><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"><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"><span>교환 신청</span></button></div>
+								</th:block>
+								<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+									<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+								</th:block>
+								<!-- //교환가능, 반품가능 -->
+								
+								<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><span>구매 확정</span></button></div>
 							</div>
-							<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</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"><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"><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">
+								<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+								<div><button type="button" class="btn btn_default btn_qna_write"><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"><span>리뷰 쓰기</span></button></div>
+								</th:block>
+								<!-- //리뷰사용가능, 리뷰등록전일때 -->
+							</div>
+						</th:block>
+						<!-- //구매확정 -->
+					</th:block>
+					
+					<!--  선물배송 -->
+					<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+						<!-- 선물배송, 배송미입력 -->
+						<div class="goods_btn_wrap btn_group_flex">
+							<!-- 배송지등록전 -->
+							<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+								<div><button type="button" class="btn btn_primary btn_sms_send"><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"><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"><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"><span>리뷰 쓰기</span></button></div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+							</th:block>
+							<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+						</div>
+					</th:block>
+					<!-- //선물배송 -->
+					<!-- //버튼기능정리 -->
+					
+					<!-- 상태문구정리 -->
+					<!-- 일반배송일때 -->
+					<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+						<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>
-						<div class="od_opt">
-							<div class="option">
-								<em>Black</em><em>XXL</em>
+						
+						<!-- 주문접수 -->
+						<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>
-						<div class="od_calc">
-							<p class="sale_price"><del><em>95,000</em>원</del></p>
-							<p class="price">
-								<span class="selling_price"><em>61,200</em>원</span>
-								<span class="count"><em>99</em>개</span>
-							</p>
+					</th:block>
+					<!-- //선물배송일때 -->
+					<!-- //상태문구정리 -->
+					
+					<!-- 사은품 영역 -->
+					<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="|(-${freeGift.usePoint.addComma()}P)|"></span>
+												</th:block>
+											</li>
+										</th:block>
+									</ul>
+								</div>
+							</div>
 						</div>
-					</div>
-				</a>
-			</div>
-			<div class="goods_btn_wrap btn_group_flex">
-				<div><button type="button" class="btn btn_default"><span>주문 취소</span></button></div>
-			</div>
-			<div class="goods_txt">
-				<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
-			</div>
-		</div>
-		<!-- //주문 접수 -->
+					</th:block>
+					<!-- //사은품 영역 -->
+				</div>
+				<!-- //주문 접수 -->
+			</th:block>
+		</th:block>
 	</div>
 </div>
 

+ 4 - 1
src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html

@@ -341,8 +341,11 @@ var giftMsg			= [[${orderInfo.giftMsg}]];		// 선물메세지
 
 //컨텐츠 호출
 $(document).ready( function() {
+	
 	// 선물메시지
-	$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+	if ($("#giftMsg").html() != null) {
+		$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+	}
 });
 
 // 2.1 회원 배송지변경 팝업열기

+ 4 - 4
src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html

@@ -49,7 +49,7 @@
 								<th:block th:text="${deliveryAddrInfo.recipNm}"></th:block> 
 								<span class="icon_tag"> 
 									<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
-										<em class="tag_stype1">기본배송지</em> 
+										<em class="tag_stype1 defaultYn">기본배송지</em> 
 									</th:block>
 									<em class="tag_stype2 shotDelv" style="display:none">총알배송</em>
 								</span>
@@ -116,6 +116,9 @@ var deliveryAddrInfoDispYn = function(temp) {
 
 //컨텐츠 호출
 $(document).ready( function() {
+	// 화면펼침
+	deliveryAddrInfoDispYn(dispYn);
+	
 	var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
 	var tempMemo = true;
 	
@@ -143,9 +146,6 @@ $(document).ready( function() {
 		$(".ship_etc").show();
 	}
 	
-	// 화면펼침
-	deliveryAddrInfoDispYn(dispYn);
-	
 	// 콤보박스 
 	var od_delivery_list = new sCombo('#orderForm .ship_select .select_custom.delivery_list');
 	

+ 73 - 48
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrChangePopMob.html

@@ -4,59 +4,63 @@
 		<h5 class="modal-title" id="adrsChangeLabel">배송지 관리</h5>
 	</div>
 	<div class="modal-body">
-		<div class="pop_cont">
-			<div class="inner wide">
-				<div class="delivery_list">
-					<!-- 배송지목록 -->
-					<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
-						<div class="ship_info">
-							<dl>
-								<div class="name">
-									<dt><span class="sr-only">배송지명</span></dt>
-									<dd>
-										<th:block th:text="${deliveryAddr.recipNm}"></th:block>
-										<div class="badge_wrap">
-											<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
-												<em class="order_badge">기본배송지</em> 
-											</th:block>
-											<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
-												<em class="order_badge order_bullet_badge">총알배송</em>
-											</th:block>
-										</div>
-									</dd>
+		<th:block th:if="${deliveryAddrList != null and #lists.size(deliveryAddrList) > 0}">
+			<div class="pop_cont">
+				<div class="inner wide">
+					<div class="delivery_list">
+						<!-- 배송지목록 -->
+						<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
+							<div class="ship_info">
+								<dl>
+									<div class="name">
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd>
+											<th:block th:text="${deliveryAddr.recipNm}"></th:block>
+											<div class="badge_wrap">
+												<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
+													<em class="order_badge">기본배송지</em> 
+												</th:block>
+												<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
+													<em class="order_badge order_bullet_badge">총알배송</em>
+												</th:block>
+											</div>
+										</dd>
+									</div>
+									<div class="phone">
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddr.recipPhnno}"></dd>
+									</div>
+									<div class="addr">
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
+									</div>
+									<div class="ship_request">
+										<dl>
+											<dt>배송요청 사항</dt>
+											<dd th:text="${deliveryAddr.delvMemo}"></dd>
+										</dl>
+									</div>
+								</dl>
+								<div class="btn_group btn_group_flex">
+									<div><button type="button" class="btn btn_gost btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}" id="btn_addrModify_pop"><span>수정</span></button></div>
+									<div><button type="button" class="btn btn_dark btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button></div>
 								</div>
-								<div class="phone">
-									<dt><span class="sr-only">휴대폰 번호</span></dt>
-									<dd th:text="${deliveryAddr.recipPhnno}"></dd>
-								</div>
-								<div class="addr">
-									<dt><span class="sr-only">배송주소</span></dt>
-									<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
-								</div>
-								<div class="ship_request">
-									<dl>
-										<dt>배송요청 사항</dt>
-										<dd th:text="${deliveryAddr.delvMemo}"></dd>
-									</dl>
-								</div>
-							</dl>
-							<div class="btn_group btn_group_flex">
-								<div><button type="button" class="btn btn_gost btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}" id="btn_addrModify_pop"><span>수정</span></button></div>
-								<div><button type="button" class="btn btn_dark btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button></div>
+								
+								<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
+								<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
+								<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
+								<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
+								<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
+								<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
 							</div>
-							
-							<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
-							<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
-							<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
-							<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
-							<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
-							<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
-						</div>
-					</th:block>
+						</th:block>
+					</div>
 				</div>
 			</div>
-		</div>
+		</th:block>
 	</div>
+	
+	
 	<div class="modal-footer">
 		<button type="button" class="btn btn_dark" id="btn_adrsAdd_pop">
 			<span>배송지 추가</span>
@@ -65,8 +69,29 @@
 </form>
 
 <script th:inline="javascript">
+var deliveryAddrCnt = [[${deliveryAddrCnt}]];
+
 //컨텐츠 호출
 $(document).ready( function() {
+	// 목록이없으면 등록화면 이동
+	if (parseInt(deliveryAddrCnt) < 1) {
+		$.ajax( {
+			type		: "POST",
+			url 		: '/common/delvAddrAddPop',
+			data		: JSON.stringify(jsonObj),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+				gagajf.showProgressbar(true);
+			},
+			success 	: function(result) {
+				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+				$("#adrsAddPop").modal("show");
+			}
+		});	
+	}
 });
 
 // 2. 버튼기능구현

+ 6 - 4
src/main/webapp/WEB-INF/views/web/SigninFormWeb.html

@@ -83,25 +83,27 @@
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginKakao();">
 									<i class="ico ico_snslogin kakao"></i>
-									<span>카카오로 시작하기</span>
+									<span>카카오</span>
 								</a>
 							</li>
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginNaver();">
 									<i class="ico ico_snslogin naver"></i>
-									<span>네이버로 시작하기</span>
+									<span>네이버</span>
 								</a>
 							</li>
 							<li>
 								<a href="javascript:void(0)" onclick="cfnLoginYes24();">
 									<i class="ico ico_snslogin yes24"></i>
-									<span>YES24로 시작하기</span>
+									<span>YES24</span>
 								</a>
 							</li>
 						</ul>
 					</div>
 					<div class="t_c mt30">
-						<button type="button" class="btn_nonMb"><span>비회원 주문조회</span></button>
+						<button type="button" class="btn_nonMb" onclick="cfnGoToPage(_PAGE_NON_CUSTOMER_ORDER_CONFIRM);">
+							<span>비회원 주문조회</span>
+						</button>
 					</div>
 				</form>
 			</div>

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

@@ -755,13 +755,23 @@
 							let tag = '';
 							if(item.contentsType == 'OPEN'){
 								tag +='<div class="bnrtype_open" style="background-color:#'+item.strVar5+';">';
-								tag +=' 	<a href="'+item.strVar1+'" target="">';
-								tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
-								tag +=' 		<div class="open_bnr_area">';
-								tag +=' 			<img src="'+bannerImgUrl+''+item.imgPath2+'" alt=""/>';
-								tag +=' 		</div>';
-								tag +=' 	</a>';
-								tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								if(item.strVar7=='IMG'){
+									tag +=' 	<a href="'+item.strVar1+'" target="">';
+									tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
+									tag +=' 		<div class="open_bnr_area">';
+									tag +=' 			<img src="'+bannerImgUrl+''+item.imgPath2+'" alt=""/>';
+									tag +=' 		</div>';
+									tag +=' 	</a>';
+									tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								}else{
+									tag +=' 	<a href="'+item.strVar1+'" target="">';
+									tag +=' 		<img src="'+bannerImgUrl+''+item.imgPath1+'" alt="">';
+									tag +=' 		<div class="open_bnr_area">';
+									tag += '            '+item.html+' ';
+									tag +=' 		</div>';
+									tag +=' 	</a>';
+									tag +=' 	<button class="btn_toggle_bnr"><span>열기</span></button>';
+								}
 								tag +='</div>';
 								if(item.strVar8=='Y'){
 									tag+='<div class="close_bnr_area">';

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

@@ -163,7 +163,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_6">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>
@@ -186,7 +186,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_12">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>

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

@@ -53,7 +53,7 @@
 						<label class="input_label sr-only">주문번호</label>
 						<div class="ui_col_12">
 							<div class="input_wrap">
-								<input type="text" name="ordNo" placeholder="주문 번호" id="ordNo" required="required" data-valid-type="numeric" data-valid-name="주문번호"/>
+								<input type="text" name="ordNo" placeholder="주문 번호" id="ordNo" required="required" data-valid-type="numeric" data-valid-name="주문번호" maxlength="30"/>
 							</div>
 						</div>
 					</div>

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

@@ -148,7 +148,7 @@
 									</div>
 									<div class="btn_group_block btn_group_md ui_row">
 										<div class="ui_col_6">
-											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+											<button type="button" class="btn btn_primary btn_block" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">
 												<span>회원가입</span>
 											</button>
 										</div>

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

@@ -42,7 +42,7 @@
 														</dd>
 														<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
 													</dl>
-													<button type="button" th:if="${ContentsData.contentsType=='SELF'}" class="btn" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>VIEW MORE</span></button>
+													<button type="button" th:if="${ContentsData.contentsType=='SELF'}" class="btn" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);"><span>자세히 보기</span></button>
 													<button type="button" th:unless="${ContentsData.contentsType=='SELF'}" class="btn" th:onclick="window.open(_frontUrl+[[${ContentsData.strVar1}]], '_blank','width=1180,height=800,toolbars=no,scrollbars=no'); return false;"><span>VIEW MORE</span></button>
 												</div>
 												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">

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

@@ -167,7 +167,7 @@
 													<div class="item_state"> <!-- item_state AD soldout -->
 														<button type="button" class="itemLike" th:classappend="${bestItemData.likeIt == 'likeit'}? 'likeit' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${bestItemData.goodsCd}, ithrCd='', contentsLoc='SMM004', planDtlSq=''">관심상품 추가</button>
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${bestItemData.goodsCd}]], '', '', 'SMM004');">
-															<div class="shape ranker"><span th:text="${bestItemStat.count}"></span></div>
+															<div class="shape" th:classappend="${bestItemStat.count==1}?'ranker'"><span th:text="${bestItemStat.count}"></span></div>
 															<div class="itemPic">
 																<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" >
 															</div>
@@ -473,8 +473,8 @@
 									<th:block th:each="item, stat : ${mainLayoutData.ContentsList}">
 										<div class="swiper-slide">
 											<div class="movbox">
-												<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar3+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-												<iframe th:if="${item.strVar1=='M'}" width="100%" height="100%" th:src="${'http://v.kr.kollus.com/'+item.strVar3}" ></iframe>
+												<iframe th:if="${item.strVar1=='Y'}" width="100%" height="100%" th:src="${'https://www.youtube.com/embed/'+item.strVar2+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+												<iframe th:if="${item.strVar1=='M'}" width="100%" height="100%" th:src="${'http://v.kr.kollus.com/'+item.strVar2}" ></iframe>
 											</div>
 										</div>
 									</th:block>
@@ -820,7 +820,9 @@ $(document).ready( function() {
 	//$("#header").load("head.html");
 	//$("#footer").load("foot.html");
 	$(".tag_list .btn").eq(0).trigger('click');
-	$(".it_nav .btn").eq(0).trigger('click');
+
+	let randomNum = Math.floor( ( Math.random() * 4 ) );
+	$(".it_nav .btn").eq(randomNum).trigger('click');
 });
 
 /* SLIDE - MAIN_VISUAL */

+ 3 - 2
src/main/webapp/WEB-INF/views/web/error/InaccessWeb.html

@@ -50,10 +50,11 @@
 		<div class="wrap notfind system inspect"><!--  페이지 특정 클래스 -->
 			<div class="contGrp">
 				<h2>접근 불가</h2>
-				<p th:text="${inaccessibleMsg}">모바일웹에서만 접근이 가능합니다.</p>
+				<p th:text="${inaccessibleMsg}"></p>
 			</div>
 			<div class="btn_group">
-				<button class="btn btn_dark" onclick="fnGoToHome();"><span>홈으로 이동</span></button>
+				<button class="btn btn_dark" onclick="javascript:history.back(-1);"><span>목록으로 이동</span></button>
+				<button class="btn btn_default" onclick="fnGoToHome();"><span>홈으로 이동</span></button>
 			</div>
 		</div>
 	</div>

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

@@ -35,13 +35,25 @@
 	</div>
 	<!-- //상품설명 노출 -->
 	<!-- 관리자 에디터입력 내용   공지 html -->
+	<!-- 관리자 에디터입력 내용   공지 html -->
+	<div class="mdhtml_box">
 		<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
-	<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
+	<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 		</th:block>
 	<!-- 관리자 에디터입력 내용   공지 html -->
+	<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+	<div class="movblock">
+		<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+		<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+		</th:block>
+		<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+		</th:block>
+	</div>
+	</th:block>
+	
 	<!-- 관리자 에디터입력 내용 노출  상단 html -->
-	<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
-		
+	<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
+	</div>	
 	<!-- 착용컷 노출 -->
 	<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_M1.') 
 										or #strings.contains(goodsImgList,'_M2.')
@@ -200,10 +212,14 @@
 							<th>상품명</th>
 							<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 						</tr>
-						<tr>
-							<th>제조자</th>
-							<td >한세엠케이(주)==============>노출필요성 확인</td>
-						</tr>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N' and goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
 						<tr>
 							<th>제조국</th>
 							<td th:text="${goodsInfo.originNm}">베트남</td>

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

@@ -120,7 +120,7 @@
 								<p>
 									<span class="tit">남은시간</span>
 									<span class="timer">
-										<em id="d-days">0</em>
+										<em id="d-days" style="display:none;">0</em>
 										<em id="d-hours">0</em>
 										<em id="d-minutes">0</em>
 										<em id="d-seconds">0</em>
@@ -623,6 +623,7 @@
 					</div>
 					<div class="area_infotbl">
 						<span class="title">상품기본정보</span>
+						<th:block th:if="${goodsInfo.goodsType == 'G056_N'} ">
 						<div class="tbl type1 mt30">
 							<table>
 								<tbody>
@@ -642,10 +643,14 @@
 										<th>상품명</th>
 										<td th:text="${goodsInfo.goodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
 									</tr>
+									<th:block th:if="${goodsNotiList != null and !goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
 									<tr>
-										<th>제조자</th>
-										<td >한세엠케이(주)==============>노출필요성 확인</td>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
 									</tr>
+									</th:block>
+									</th:block>
 									<tr>
 										<th>제조국</th>
 										<td th:text="${goodsInfo.originNm}">베트남</td>
@@ -653,6 +658,47 @@
 								</tbody>
 							</table>
 						</div>
+						</th:block>
+						<th:block th:unless="${goodsInfo.goodsType == 'G056_N'} ">
+						<th:block th:if="${goodsComposeList != null and !goodsComposeList.empty}">
+						<th:block th:each="goodsCompose, status : ${goodsComposeList}">
+						<div class="tbl type1 mt30">
+							<table>
+								<tbody>
+									<tr>
+										<th>상품코드</th>
+										<td th:text="${goodsCompose.compsGoodsCd}">14443216</td>
+									</tr>
+									<tr>
+										<th>상품구분</th>
+										<td th:text="${goodsCompose.goodsGbNm}">병행수입</td>
+									</tr>
+									<tr>
+										<th>브랜드</th>
+										<td th:text="${goodsCompose.brandGroupNm}">TBJ</td>
+									</tr>
+									<tr>
+										<th>상품명</th>
+										<td th:text="${goodsCompose.compsGoodsNm}">남성 테이퍼드 핏 겨울 기모면 스판 올 밴딩 팬츠</td>
+									</tr>
+									<th:block th:if="${goodsCompose.goodsNotiList != null and !goodsCompose.goodsNotiList.empty}">
+									<th:block th:each="goodsNoti, status : ${goodsCompose.goodsNotiList}"  th:if="${goodsNoti.niItemCd == 'G005_005'}">
+									<tr>
+										<th th:text="${goodsNoti.niItemNm}">제조사</th>
+										<td th:text="${goodsNoti.niContent}"></td>
+									</tr>
+									</th:block>
+									</th:block>
+									<tr>
+										<th>제조국</th>
+										<td th:text="${goodsCompose.originNm}">베트남</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						</th:block>
+						</th:block>
+						</th:block>
 						<p class="t_info dot_info mt20">
 							주문제작 상품의 경우 주문 후 제작되어 판매되는 상품으로 제작 시점부터 반품/교환이 어려울 수 있습니다.
 						</p>
@@ -1471,7 +1517,8 @@
 					if (Number(days) > 0 ){
 						$('#d-days').html(days);	
 					}else{
-						$('#d-days').css('display','none');
+						//$('#d-days').css('display','none');
+						$('#d-days').remove();
 					}
 					$('#d-hours').html(hours);
 					$('#d-minutes').html(minutes);
@@ -1613,6 +1660,18 @@
 		
 	}
 	
+	 $(document).on('click','.option_box [class^="opt_"] .select_custom .select',function(e){
+
+		 let selectHeight = $(this);
+		 let selectHeight02 = selectHeight.outerHeight();
+
+		 if($(this).find('.opt_name').length){
+			 $(this).siblings('.list').css({"top":selectHeight02});
+		 }else{
+			 $(this).siblings('.list').css({"top":"52px"});
+		 }
+	 });
+	
 /*]]>*/
 </script>
 

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

@@ -100,8 +100,8 @@
 						<div class="item_prod" th:each="goodsInfo, status : ${goodsDealComposeList}">
 							<div class="item_state">
 								<a href="javascript:void(0);" class="itemLink" th:onclick="fnOpenGoodsDealDetail([[${goodsInfo.goodsCd}]],[[${goodsInfo.compsGoodsCd}]])">
-									<div class="shape ranker">
-										<span>상품<em class="number" th:text="${#numbers.formatInteger(status.count,2)}">01</em></span>
+									<div class="shape ranker dealdetail">
+										<span>상품<br><th:block th:text="${#numbers.formatInteger(status.count,2)}">01</th:block></span>
 									</div>
 									<div class="itemPic">
 										<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=285'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">

+ 13 - 10
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -232,7 +232,7 @@
 	// 취소 처리
 	var fnCancel = function() {
 		// 취소수량 설정
-		fnChangeCancelQty();
+		//fnChangeCancelQty();
 
 		// 주문상세번호 및 취소 수량 설정
 		let ordDtlNoArr = [];
@@ -285,12 +285,6 @@
 			return false;
 		}
 
-		// 추가배송비 PG 처리
-		if (addPayCost > 0) {
-			// TODO
-			// 추가배송비 PG 처리
-		}
-
 		// 취소요청 데이터 설정
 		let url = '/mypage/cancel';
 
@@ -298,6 +292,7 @@
 		let data = {};
 		data.ordNo = oneData.ordNo;
 		data.chgReason = 'G686_10';
+		data.chgReasonNm = '고객변심';
 		data.accountNo = accountNo;
 		data.accountNm = accountNm;
 		data.bankCd = bankCd;
@@ -309,9 +304,17 @@
 		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 
 		let jsonData = JSON.stringify(data);
-
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
+		
+		// 취소 처리 가능 여부 조회
+		gagajf.ajaxJsonSubmit('/mypage/wms/cancel/available', jsonData, function(result) {
+			if (result.cancelYn == 'Y') {
+				// 취소 처리
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+				});
+			} else {
+				mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
+			}
 		});
 	}
 	

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

@@ -142,7 +142,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee * -1, 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

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

@@ -580,10 +580,22 @@
 				data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 				
 				let jsonData = JSON.stringify(data);
-				
-				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-					cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+
+				// 취소 처리 가능 여부 조회
+				gagajf.ajaxJsonSubmit('/mypage/wms/cancel/available', jsonData, function(result) {
+					let cancelYn = result.cancelYn;
+
+					if (cancelYn == 'Y') {
+						// 전체취소 처리
+						gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+							cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+						});
+					} else {
+						mcxDialog.alert('이미 배송처리 되어 전체취소 처리에 실패 하였습니다.');
+					}
 				});
+				
+				
 			}
 		});
 	}

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

@@ -610,7 +610,13 @@
 					tag += '									<span class="title">사은품</span>';
 					tag += '									<ul>';
 					$.each(order.freeGiftList, function(index, freeGift) {
-						tag += '										<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+						// 2021.04.20 무료 사은품일때 - 처리 삭제
+						if (freeGift.usePoint > 0) {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+						} else {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span></li>';
+						}
+						
 					});
 					tag += '									</ul>';
 					tag += '								</div>';

+ 4 - 4
src/main/webapp/WEB-INF/views/web/order/OrderDeliveryAddrInfoWeb.html

@@ -36,7 +36,7 @@
 	<div class="area_receiveinfo">
 		<dl>
 			<div>
-				<dt><span>배송지명</span></dt>
+				<dt><span class="sr-only">배송지명</span></dt>
 				<dd>
 					<th:block th:text="${deliveryAddrInfo.recipNm}"></th:block>
 					<span class="icon_tag"> 
@@ -48,7 +48,7 @@
 				</dd>
 			</div>
 			<div>
-				<dt><span>배송주소</span></dt>
+				<dt><span class="sr-only">배송주소</span></dt>
 				<dd>
 					<th:block th:text="${deliveryAddrInfo.recipBaseAddr} + '    ' + ${deliveryAddrInfo.recipDtlAddr}"></th:block>
 					<button type="button" class="btn btn_default btn_sm" id="btn_adrsChange_pop">
@@ -57,11 +57,11 @@
 				</dd>
 			</div>
 			<div>
-				<dt><span>휴대폰 번호</span></dt>
+				<dt><span class="sr-only">휴대폰 번호</span></dt>
 				<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
 			</div>
 			<div>
-				<dt>배송요청 사항</dt>
+				<dt class="sr-only">배송요청 사항</dt>
 				<dd>
 					<span th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></span>
 					<button type="button" class="btn_underline" id="btn_rqstModify_pop">

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

@@ -1872,7 +1872,7 @@ var gfcdUseAmtReset = function() {
 }
 
 // 1.17 쿠폰할인금액합계설정(금액전체계산)
-var custCpnSumAmtCal = function() {
+var custCpnSumAmtCal = function() {	
 	var cpnDcSumAmt 		= 0;
 	var cpnApplyCnt 		= 0;
 	var goodsCartCpnSumAmt 	= 0;
@@ -1908,7 +1908,7 @@ var custCpnSumAmtCal = function() {
 	// 배송비할인적용
 	$("input[name='cpnType']").each(function(){
 		if ($(this).val() == "delvCpn") {
-			var delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
+			delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
 			
 			// 최종배송비
 			$("#delvSumAmt").text(delvSumAmt.addComma() + " 원");

文件差异内容过多而无法显示
+ 2 - 2
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html


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

@@ -157,10 +157,10 @@
 								<li th:if="${a.benefitGb == 'A'}">
 									<div class="benfit_coupon">
 									<th:block th:if="${a.dcWay == '%'}">
-										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span> <strong>할인 쿠폰</strong>
+										<span th:text="${a.basDays}"></span>일 출석 시<br><span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span> <strong>할인 쿠폰</strong>
 									</th:block>
 									<th:block th:if="${a.dcWay == '원'}">
-										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span> <strong>할인 쿠폰</strong>
+										<span th:text="${a.basDays}"></span>일 출석 시 <br><span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>원</span> <strong>할인 쿠폰</strong>
 									</th:block>
 									</div>
 								</li>

+ 28 - 14
src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html

@@ -68,7 +68,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval1 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-1-'+${pollData.pollQsq}" th:value="${pollData.pollQval1}" class="etc_radio"><label th:for="'rdi-1-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval1}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval2 != null && pollData.pollQval2 != ''}">
@@ -77,7 +77,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval2 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-2-'+${pollData.pollQsq}" th:value="${pollData.pollQval2}" class="etc_radio"><label th:for="'rdi-2-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval2}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval3 != null && pollData.pollQval3 != ''}">
@@ -86,7 +86,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval3 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-3-'+${pollData.pollQsq}" th:value="${pollData.pollQval3}" class="etc_radio"><label th:for="'rdi-3-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval3}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval4 != null && pollData.pollQval4 != ''}">
@@ -95,7 +95,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval4 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-4-'+${pollData.pollQsq}" th:value="${pollData.pollQval4}" class="etc_radio"><label th:for="'rdi-4-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval4}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval5 != null && pollData.pollQval5 != ''}">
@@ -104,7 +104,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval5 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-5-'+${pollData.pollQsq}" th:value="${pollData.pollQval5}" class="etc_radio"><label th:for="'rdi-5-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval5}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval6 != null && pollData.pollQval6 != ''}">
@@ -113,7 +113,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval6 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-6-'+${pollData.pollQsq}" th:value="${pollData.pollQval6}" class="etc_radio"><label th:for="'rdi-6-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval6}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval7 != null && pollData.pollQval7 != ''}">
@@ -122,7 +122,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval7 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-7-'+${pollData.pollQsq}" th:value="${pollData.pollQval7}" class="etc_radio"><label th:for="'rdi-7-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval7}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval8 != null && pollData.pollQval8 != ''}">
@@ -131,7 +131,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval8 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-8-'+${pollData.pollQsq}" th:value="${pollData.pollQval8}" class="etc_radio"><label th:for="'rdi-8-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval8}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval9 != null && pollData.pollQval9 != ''}">
@@ -140,7 +140,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval9 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-9-'+${pollData.pollQsq}" th:value="${pollData.pollQval9}"class="etc_radio"><label th:for="'rdi-9-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval9}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 														<li th:if="${pollData.pollQval10 != null && pollData.pollQval10 != ''}">
@@ -149,7 +149,7 @@
 															</th:block>
 															<th:block th:unless="${pollData.pollQval10 != '기타'}">
 																<input type="radio" th:name="${pollData.pollQsq+'_'+(pollStat.index+1)}" th:id="'rdi-10-'+${pollData.pollQsq}" th:value="${pollData.pollQval10}" class="etc_radio"><label th:for="'rdi-10-'+${pollData.pollQsq}"><span th:text="${pollData.pollQval10}"></span></label>
-																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" disabled/>
+																<input type="text" th:name="'etc_input_'+${pollData.pollQsq}" class="etc_input" />
 															</th:block>
 														</li>
 													</ul>
@@ -281,7 +281,6 @@ var fnSubmitPoll = function () {
 			}
 		}
 	}
-	console.log(pollQsq_20);
 	var data = {pollQsq_10 : pollQsq_10,
 				pollQsq_20 : pollQsq_20,
 			    pollQsq_30 : pollQsq_30,
@@ -335,16 +334,31 @@ $(document).ready( function() {
 			$('#ans_cnt').html("(<em class='c_primary'>1000</em>/1000자)");
 		}
 	});
+	
+	$('.etc_input').keyup(function (e){
+		var content = $(this).val(); 
+		if (content.length > 50){
+			$(this).val(content.substring(0, 50));
+		}
+	});
+	
+	$('.form_control').keyup(function (e){
+		var content = $(this).val(); 
+		if (content.length > 50){
+			$(this).val(content.substring(0, 50));
+		}
+	});
 
 
 	$('.ev .survey_wrap .survey_con .survey_row input[type="radio"]').change(function(){
 		if ($('.etc_radio').is(':checked')) {
-			$('.etc_input').removeAttr('disabled');
+			// $('.etc_input').removeAttr('disabled');
+			$('.etc_input').css({'visibility': 'visible'}); 
 		} else {
-			$('.etc_input').attr('disabled', true);
+			// $('.etc_input').attr('disabled', true);
+			$('.etc_input').css({'visibility': 'hidden'}); 
 		}   
 	});		
-
 });
 
 

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

@@ -45,7 +45,7 @@
 					</div>
 					  <div class="count_wrap">
                         <div>
-                            <p id="planningTotCnt"><span></span>개의 기획전</p>
+                            <p id="planningTotCnt"><span>0</span>개의 기획전</p>
                         </div>
                     </div>
 					 <div class="list_content nodata" style="display: none;" id="divPlanningNoData"> 

+ 65 - 48
src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html

@@ -4,54 +4,50 @@
 		<h5 class="modal-title" id="adrsChangeLabel">배송지 선택</h5>
 	</div>
 	<div class="modal-body">
-		<div class="pop_cont">
-			<ul>
-				<!-- 배송지목록 -->
-				<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
-					<li>
-						<div class="adrs_box">
-							<dl>
-								<div>
-									<dt><span class="sr-only">배송지명</span></dt>
-									<dd>
-										<th:block th:text="${deliveryAddr.recipNm}"></th:block>
-										<span class="icon_tag">
-											<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
-												<em class="tag">기본 배송지</em>
-											</th:block>
-											<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
-												<em class="tag primary_line">총알배송</em>
-											</th:block>
-										</span>
-									</dd>
-								</div>
-								<div>
-									<dt><span class="sr-only">휴대폰 번호</span></dt>
-									<dd th:text="${deliveryAddr.recipPhnno}"></dd>
-								</div>
-								<div>
-									<dt><span class="sr-only">배송주소</span></dt>
-									<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
-								</div>
-								<div>
-									<dt>배송요청 사항&nbsp;:&nbsp;</dt>
-									<dd th:text="${deliveryAddr.delvMemo}"></dd>
-								</div>
-							</dl>
-							<button type="button" class="btn btn_default btn_sm btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}"><span>수정</span></button>
-							<button type="button" class="btn btn_dark btn_sm btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button>
-							
-							<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
-							<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
-							<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
-							<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
-							<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
-							<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
-						</div>
-					</li>
-				</th:block>
-			</ul>
-		</div>
+		<th:block th:if="${deliveryAddrList != null and #lists.size(deliveryAddrList) > 0}">
+			<div class="pop_cont">
+				<ul>
+					<!-- 배송지목록 -->
+					<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
+						<li>
+							<div class="adrs_box">
+								<dl>
+									<div>
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd>
+											<th:block th:text="${deliveryAddr.recipNm}"></th:block>
+											<span class="icon_tag">
+												<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
+													<em class="tag">기본 배송지</em>
+												</th:block>
+												<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
+													<em class="tag primary_line">총알배송</em>
+												</th:block>
+											</span>
+										</dd>
+									</div>
+									<div>
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddr.recipPhnno}"></dd>
+									</div>
+									<div>
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
+									</div>
+									<div>
+										<dt>배송요청 사항&nbsp;:&nbsp;</dt>
+										<dd th:text="${deliveryAddr.delvMemo}"></dd>
+									</div>
+								</dl>
+								<button class="btn btn_default btn_sm btn_addrModify_pop" id="btn_adrsModify_pop" th:value="${deliveryAddr.custDelvAddrSq}"><span>수정</span></button>
+								<button class="btn btn_dark btn_sm btn_sel_delvAddr" id="" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button>
+							</div>
+						</li>
+					</th:block>
+				</ul>
+			</div>
+		</th:block>
+		
 	</div>
 	<div class="modal-footer">
 		<button type="button" class="btn btn_dark" id="btn_adrsAdd_pop"><span>배송지 추가</span></button>
@@ -59,8 +55,29 @@
 </form>
 
 <script th:inline="javascript">
+var deliveryAddrCnt = [[${deliveryAddrCnt}]];
+
 //컨텐츠 호출
 $(document).ready( function() {
+	// 목록이없으면 등록화면 이동
+	if (parseInt(deliveryAddrCnt) < 1) {
+		$.ajax( {
+			type		: "POST",
+			url 		: '/common/delvAddrAddPop',
+			data		: JSON.stringify(jsonObj),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+				gagajf.showProgressbar(true);
+			},
+			success 	: function(result) {
+				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+				$("#adrsAddPop").modal("show");
+			}
+		});
+	}
 });
 
 // 2. 버튼기능구현

+ 2 - 1
src/main/webapp/biz/goods.js

@@ -67,7 +67,8 @@ var fnViewStock = function(obj, goodsCd, optCd, optCd1, optCd2,  minOrdQty, maxO
 			// 모바일에서 작업해야함
 			$("#cartForm  input[name=opt]").each(function(){
 				if ($(this).attr('id') == optCd){
-			//		$(this).prop('checked', true);
+					$("#cartForm  input[name=opt]").parent().find('label').removeClass('on');
+					$(this).parent().find('label').addClass('on');
 				}
 			});
 		}

二进制
src/main/webapp/images/pc/ico_bg_check.png


二进制
src/main/webapp/images/pc/ico_bg_point.png


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

@@ -1997,7 +1997,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .app-only .guidance:after{content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}
 .app-only .guidance{
     box-shadow: 0 0px 30px rgb(0 0 0 / 20%), 0 0px 30px rgb(0 0 0 / 20%);
-	/* 마스크 미사용
+	/* 마스크 미사용 
 	mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
     -webkit-mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
 	mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);

+ 30 - 19
src/main/webapp/ux/mo/css/layout_m.css

@@ -818,15 +818,15 @@ header .htop.trans{position:absolute; background:transparent !important;}
 /* 210415 */
 .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 2.5rem 2rem;}
+.dp .Bulletship_foot .clear{background:#f5f5f5; margin:4rem -2rem; padding:4rem 0 0rem 2rem;}
 /*.dp .dp_Bulletship .inner:first-child{margin-bottom:0; padding-bottom:0;}*/
-.dp .bulletship .items_option{padding-top:0; margin:0 2rem;}
-.dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd;}
+.dp .items_option{padding-top:0; margin:0 2rem;}
+.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}
 .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;}
-.dp .bulletship .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
 .Purchase_pop .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
 /* 210416 */
-.dp .filter_box .filter_body .daps1{position:sticky; top:0; background-color:#fff; z-index: 999;}
+.dp .filter_box .filter_body .daps1{position:sticky; top:0; background-color:#fff; z-index: 9999;}
 .deal_list_select .list>li[aria-disabled="true"] {
 	text-decoration: line-through;
     background: #fff;
@@ -847,7 +847,20 @@ header .htop.trans{position:absolute; background:transparent !important;}
     bottom: 0;
 }
 .dp .mid_banner{margin-top:-6rem}
-
+/* 210419 */
+.pd_qnalist_pop .ui_foot{padding:0 2rem}
+.pd_qnalist_pop .ui_foot .btn{width:100%; height:4rem;}
+.dp .Bulletship_body{padding:0 2rem;}
+.dp .Bulletship_foot{padding:0 2rem;}
+/* 210420 */
+.app .gnb{background-color:#222222; position:relative; z-index:79;}
+.app .gnb .btn-expand::before{background: linear-gradient(90deg, rgba(0,0,0,0) 0%, #222222 100%);}
+/* 210421 */
+header .subs .dp_list_btn_gnbs {position: absolute;top: 0px;right: -2.0rem;width: 3.5rem;height: 4.5rem;z-index: 10;}
+header .subs .dp_list_btn_gnbs span i {display: block;position: absolute;left: 0;width: 100%;height: 100%;-webkit-transition: all 0.5s ease-out;transition: all 0.5s ease-out;}
+header .subs .dp_list_btn_gnbs span {display: block;width: 24px;height: 24px;margin: 0 auto;position: relative;}
+header .subs .dp_list_btn_gnbs span i {background: url(/images/mo/ico_btn_more.png) no-repeat;background-size: 1.3rem 0.733rem;background-position: 50% 50%;}
+header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-transform: rotate(-180deg);}
 
 
 
@@ -1555,8 +1568,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .dp_subtitle{margin-bottom: 2.4rem; font-size:1.6rem; font-weight:500; text-align:center;}
 .dp .dp_subtitle > a{position:relative; padding-right:2rem;}
 .dp .dp_subtitle > a:before{content:''; position:absolute; right:0; top:50%; margin-top:-1px; width:0.7rem; height:1.3rem; background:url(/images/mo/ico_dp_arrow.png) center center no-repeat; background-size:contain; -webkit-transform:translateY(-50%); transform:translateY(-50%);}
-.dp .category_nav {margin-bottom:0 2rem -1.3rem; display: flex; justify-content: center; border-bottom:1px solid #eeeeee;}
-.dp .category_nav ul{padding:0 2rem; display:flex; margin-left:-5.3rem;}
+.dp .category_nav {margin-bottom:0 2rem -1.3rem; justify-content: center; border-bottom:1px solid #eeeeee;}
+.dp .category_nav ul{padding:0 2rem; display:flex;}
 .dp .category_nav ul::after {content:''; display: block; clear: both;}
 .dp .category_nav ul li {margin-right:2rem; }
 .dp .category_nav ul li button {position: relative; padding:1.5rem 0; font-size:1.4rem; font-weight:300; color:#222;}
@@ -1742,9 +1755,6 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .dp_exhibition .inner.bg_gray{background-color:#f5f5f5;}*/
 .dp .dp_listItems_wrap .items_option{padding-top:4rem;}
 .dp .dp_listItems_wrap .items_option .select{display:block;}
-.dp .promotion_tit{position:relative; padding:2rem; margin-left:2rem}
-.dp .promotion_tit .p{font-size:1.4rem; color:#222; font-weight:500;}
-.dp .promotion_tit .sns_share{position:absolute; right:2rem; top:50%; width:1.4rem; height:1.6rem; font-size:0; text-indent:-999999px; background:url(/images/mo/ico_sns_share.png) center center no-repeat; background-size:contain; -webkit-transform:translateY(-50%); transform:translateY(-50%)}
 /*.dp .promotion_visual.type1{margin-bottom:-5.3rem;}*/
 .dp .promotion_visual.type1 .mid_banner{background-color:#fff;}
 .dp .dp_listItems_cont.type1 .swiper-container.item01 .swiper-slide{padding:0 14%}
@@ -1930,7 +1940,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .filter_list .form_field div label span{color:#222!important;}
 .filter_list .form_field input[type="checkbox"] + label:before{left:auto; right:0}
 .filter_list .form_field input[type="checkbox"]:checked + label:after{left:auto; right:0}
-.filter_top{position: absolute; left:0; top:0; width:100%; padding:0 2rem; height:5rem; line-height:5rem; z-index:2;}
+.filter_top{position: absolute; left:0; top:0; width:100%; padding:0 2rem; height:5rem; line-height:5rem; z-index:10000;}
 .filter_top:after{content:''; display:block; clear:both;}
 .filter_top > div:nth-child(1){float:left;}
 .filter_top > div:nth-child(2){float:right;}
@@ -2143,6 +2153,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .br .pnb_mo > ul > li > a{font-size:1.6rem; color:#686868; font-weight:500; padding:0 1.2rem;}
 .br .pnb_mo > ul > li > a.on{color:#fff}
 .br .pnb_mo > button{background:url(/images/mo/ico_btn_expand.png) center top/1.8rem 2.0rem no-repeat; width:3.8rem; height:1.9rem; background-color:red; text-indent:-9999px; position:absolute; z-index:9; top:1.6rem; right:0; background-color:#222222;}
+.pnb_mo.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0); position:fixed; top:0; width:100%; z-index:79;}
 .br_main{background-color:#fff;}
 /* br_main *
 /* br_main - 메인배너&info */
@@ -2207,7 +2218,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 /* 브랜드 - 룩북 */
 .htop.br_lookbook { overflow: hidden; border: none !important;}
 .htop.br_lookbook .btn_back span i { background: #fff;}
-.htop.br_lookbook h1 { color: #fff; margin: 1rem 0 0 2rem;}
+.htop.br_lookbook h1 { color: #fff !important; margin: 1rem 0 0 2rem;}
 .htop.br_lookbook .btn_back { margin: 1.4rem 0 0 0;}
 .htop.br_lookbook .btn_back img { width: 1.5rem; height: 1rem;}
 .htop.br_lookbook .button_wrap {height: 5.5rem; display: inline-block; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
@@ -2295,7 +2306,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .inner{background-color:#fff; margin-bottom: 1.2rem; padding:1.3rem 2.0rem;}
 .sch .sch_result .inner.wide {padding:1.3rem 0;}
 .sch .sch_result .sch_title { width: 100%; height: 4.3rem; margin: 0 0; border-bottom: 0.2rem solid black; position: relative;}
-.sch .sch_result .sch_title input[type="text"] { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 300; color: #222; border-bottom:0.2rem solid #000; margin-bottom:0rem;}
+.sch .sch_result .sch_title input[type="text"] { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 300; color: #222; border-bottom:0.1rem solid #000; margin-bottom:0rem; padding-right: 4rem;}
 .sch .sch_result .sch_title input::placeholder {color:#888; font-weight: 200;}
 .sch .sch_result .sch_title .btn_sch {position: absolute; top: 0; right: 0; width: 4rem; height: 4rem;}
 .sch .sch_result .sch_title .btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1rem; right: 4rem; background:#aaa url(/images/mo/ico_sch_del_w.png) no-repeat center; background-size:1.1rem; text-indent:-999em;}
@@ -2330,7 +2341,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .store_product.no-slide .item_prod:nth-of-type(even){float:right;}
 .sch .sch_result .store_product.no-slide .item_prod .s-text{margin-top:1.5rem}
 .sch .sch_result .recommand_product {margin-top: 1.1rem; padding-bottom: 4.7rem;}
-.sch .sch_result .recommand_product h3{padding:0 0 2rem; font-size:1.6rem;}
+.sch .sch_result .recommand_product h3{padding:0 0 2rem; font-size:1.6rem; font-weight: 500;}
 .sch .sch_result .banner{margin:0 -2rem;}
 .sch .sch_result .banner > img{width:100%; margin-bottom:4rem;}
 .sch .sch_result .btPop_full{margin-top:59rem}
@@ -2342,9 +2353,9 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .store-list {padding-bottom: 1.4rem; border-bottom: 1px solid #eee;}
 
 .filter-list{display:flex; justify-content:space-between; font-size:1.2rem; margin-top: 1.8rem;}
-.filter-list .f_left h3 {font-size: 1.6rem;}
+.filter-list .f_left h3 {font-size: 1.6rem; font-weight: 500;}
 .filter-list .f_left > span{color:#fd4802; font-weight:bold;}
-.filter-list .f_right .allxBtn {font-size: 1.2rem; color:#888;}
+.filter-list .f_right .allxBtn {font-size: 1.2rem; color:#888; font-weight: 300;}
 .filter-list .f_right > a {padding-right: 1.1rem; font-size: 1.3rem; color:#666; background: url(/images/mo/ico_btn_detail.png) no-repeat right 0.1rem; background-size:0.5rem 0.9rem;}
 .filter-list .f_right > a:nth-of-type(1) > span{display:inline-block; width:0.7rem; height:0.4rem; background:url(/images/mo/shc_arrow.png); position:relative; top:-0.2rem; margin-left:0.5rem}
 .filter-list .f_right > a:nth-of-type(2){margin-left:1rem}
@@ -2358,7 +2369,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result .inner.nodata:last-child {margin-bottom: 14rem;}
 .sch .sch_result .nodata { text-align: center;}
 .sch .sch_result .nodata p { padding: 0 0; font-size: 1.4rem; color: #666;}
-.sch .sch_result .nodata p > span{color:#fd4802}
+.sch .sch_result .nodata p > span{}
 .sch .sch_result .nodata .btn {margin-top: 1rem; font-size: 1.2rem; border: 0.1rem solid #888; height: 3rem; padding: 0 1rem;}
 .sch .sch_result .store_product.no-slide .product-wrapper{overflow:hidden;}
 .sch .sch_result .store_product.no-slide.upline{margin-top:1.2rem;}
@@ -2472,7 +2483,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .sch .sch_result.brand_all .related_keyword{border-bottom:0.1rem solid #eeeeee; margin:-1.3rem -2rem 0; padding:0 2rem 1.3rem;}
 
 .sch .sub_category{padding:0 0; position:relative;}
-.sch .sub_category:after {content:''; position: absolute; top: 0; right: 0; height: 100%; width: 6rem; background: linear-gradient(90deg, rgba(0,0,0,0) 0%, #fff 100%);}
+.sch .sub_category:after {content:''; position: absolute; top: 0; right: 0; height: 100%; width: 6rem; background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #fff 100%); background: -webkit-linear-gradient(360deg, rgba(255,255,255,0) 0%, #fff 100%);}
 .sch .sub_category{}
 .sch .sub_category .cate_wrap {position: relative; width: 100%; white-space:nowrap; overflow-x:scroll;}
 .sch .sub_category .cate_wrap a{float:none; display:inline-block; margin-bottom:0; background: #f5f5f5; padding:1.2rem 1.4rem; font-size: 1.3rem; color: #000; border-radius:2rem; line-height: 1;}

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

@@ -694,6 +694,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .modal.pop_full .modal-body {padding:0 2rem;}
 .modal.pop_full a.close-modal {background: url('/images/mo/ico_pop_cls.png') no-repeat center/100%; width: 1.6rem; height: 1.6rem;}
 .modal.photo_comment_popup {background: #f5f5f5; overflow:hidden; position: fixed; left: 0; top: 0;}
+.modal.photo_comment_popup:-webkit-full-screen {display: block;}
 .modal.photo_comment_popup .modal-dialog, .modal.photo_comment_popup .modal-content {height: 100%;}
 .modal.photo_comment_popup .modal-body {padding: 0 0; margin:0; height: 100%;}
 .modal.photo_comment_popup .modal-body .pop_cont {max-height:none; height: 100vh; height: calc(var(--vh, 1vh) * 100); overflow:hidden; position: relative; padding-bottom: 13rem; padding-top: 5.2rem;}
@@ -2096,14 +2097,21 @@ background-size:100%;}
 .od .paymentinfo .payinfo_blk a::after {clear:both; display:block; width:100%;}
 .od .paymentinfo .payinfo_blk a span {float:right; position:relative; padding-right:22px; color:#222; font-size:14px; text-indent: -999em;}
 .od .paymentinfo .payinfo_blk a span::after {content:''; position:absolute; right:0; top:2px; width:11px; height:9px; background:url('/images/pc/ico_mb_arrow.png') no-repeat 0% 100%; background-size:100% auto;}
-.od .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#888; font-size:14px; line-height:26px; overflow-y:scroll;}
-.od .paymentinfo .payinfo_blk.on {background:#f5f5f5;}
+.od .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#222; font-size:1.2rem; line-height:1.4; overflow-y:scroll;}
+.od .paymentinfo .payinfo_blk.on {background:#fff;}
 .od .paymentinfo .payinfo_blk.on a span::after {top:3px; transform:rotate(-180deg);}
 .od .paymentinfo .payinfo_blk.on .infotxt {display:block; margin:0px 1.9rem 1.9rem;}
 .od .area_paymentinfo .agree_payment {margin:4rem 0 4.8rem; color:#222; font-size:1.4rem; font-weight:200; text-align:center;}
 .od .area_paybtn .btn {height:6rem; font-size:1.6rem; font-weight:500;}
 .od .area_paybtn .btn em {font-weight:500;}
 
+.odPayment .infotxt table {word-break:keep-all;margin-top: 1.0rem;margin-bottom: 1.0rem;width: 100%;border-top: 1px solid #dddddd;}
+.odPayment .infotxt table th,
+.odPayment .infotxt table td {position:relative; padding:1.0rem 1.0rem; font-size:1.1rem;line-height: 1.4;color: #666;letter-spacing:-0.025em;}
+.odPayment .infotxt table td {border-bottom:1px solid #ddd;border-right: 1px solid #ddd;font-weight:200;}
+.odPayment .infotxt table td:last-child {border-right: 1px solid transparent;}
+.odPayment .infotxt table th {border-top: 0;border-bottom:1px solid #ddd;border-right:1px solid #ddd;font-weight: 400;text-align: center;background: #fff; color:#666;}
+
 .od .extra_pay {padding:0px 30px 40px; margin-bottom: 20px; border-top:1px solid #222; border-bottom:1px solid #ddd;}
 .od .extra_pay .tit_pay {padding:30px 0px; line-height:1; font-size:24px; font-weight:500;}
 .od .extra_pay {}
@@ -2449,7 +2457,7 @@ main.container .od_gift .inner:last-child {padding-bottom: 0;}
 .od_gift .gift_banner.timeout dl dt, .od_gift .gift_banner.timeout dl dd {display: inline-block;}
 
 .od .gift_tab .tab_cont {background: #fff; padding:2.4rem 2rem;}
-.od .gift_tab .input_wrap {display: block;}
+.od .gift_tab .input_wrap {display: block; margin-bottom: 1rem;}
 .od .gift_tab .input_wrap .form_control {width: 100%; float:none;}
 .od .od_gift .gift_tab .desc_txt {margin:1rem 0 2.4rem;}
 .od .od_gift .gift_tab .tabIndex li {flex:1;}

+ 16 - 6
src/main/webapp/ux/pc/css/common.css

@@ -432,7 +432,7 @@ background-color: #fe970a;border-color: #fe970a;color:#ffffff;
 .ico_blank::before {content: ""; width:13px; height:13px; background-image: url('/images/pc/ico_blank.png');}
 .ico_ft_arrow_r:before {content: ""; width:11px; height:11px; background-image: url('/images/pc/ico_ft_arrow.png');}
 .ico_ft_arrow_b:before {content: ""; width:11px; height:11px; background-image: url('/images/pc/ico_ft_arrow.png'); transform: rotate(90deg);}
-.ico_ft_arrow_t:before {content: ""; width:11px; height:11px; background-image: url('/images/pc/ico_ft_arrow.png'); transform: rotate(-90deg);}
+.ico_ft_arrow_t:before {content: ""; width:11px; height:11px; background-image: url('/images/pc/ico_ft_arrow.png'); transform: rotate(-90deg);background-position: 5px;}
 .ico_kcl::before {content: ""; width:32px; height:50px; background-image: url('/images/pc/ico_kcl.png');}
 .ico_picker::before {content: ""; width:40px; height:40px; background:url(/images/pc/ico_picker.png) no-repeat 50% 50%;}
 .ico_trash::before {content: ""; width:13px; height:16px; background:url(/images/pc/ico_trash.png) no-repeat 50% 50%;}
@@ -687,7 +687,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .fold_head .fold_tit {position:relative; padding-left:30px;}
 .fold_head .fold_tit span {display: block; position: relative; width: 100%; height: auto; font-size:20px; font-weight:300; color: #222; line-height: 1.2; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; text-align: justify; letter-spacing:-0.025em;}
 .fold_head .fold_state {width:170px; box-sizing: border-box; text-align: center; font-weight: 300; color:#888; line-height:1;}
-.fold_head .fold_state .important {display:inline-block; position:relative; background-color: #fd4802; color:#fff; font-size:11px; font-weight:300;font-family: 'dotum'; width: 55px; height: 22px;}
+.fold_head .fold_state .important {display:inline-block; position:relative; background-color: #fd4802; color:#fff; font-size:11px; font-weight:300;line-height:22px; width: 55px; height: 22px;}
 .fold_head .fold_state.fix {color:#222;}
 .fold_head .fold_state.done {color:#222}
 .fold_head .fold_state.doing {color:#888}
@@ -797,8 +797,18 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
 .itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;background: #ffffff;}
 .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}
-.itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
+.itemPic .pd_img,
+.itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
+.itemPic .pd_mov {z-index: 3;height: 100%;}
+.itemPic .pd_img {z-index: 2;transition: 0.5s;}
 /* .itemPic .pd_img {position: absolute;width: 100%;width: auto; height: auto;max-height: 500px;top: 50%;left: 50%;transform: translate(-50%,-50%);} */
+.itemOpt{z-index:10;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:111px;padding: 32px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); }
+.itemOpt p{font-size: 12px;line-height: 1.2;padding-bottom: 15px;}
+.itemOpt ul{display: block;margin: 0 auto;width: auto;}
+.itemOpt ul li{font-size: 14px;line-height: 1.2;display: inline-block;margin-left: 10px;}
+.itemOpt ul .none{opacity: 0.5;text-decoration: line-through;}
+.itemOpt ul li:first-child{margin-left: 0px;}
+.itemOpt .exc{font-size: 14px;line-height: 1.2;display: inline-block;margin-left: 10px;}
 .itemBrand {margin: 0px 5px 12px;line-height: 12px;font-size: 12px;font-weight: 300;color: rgb(137, 137, 137);height:12px;}
 .itemComment{margin:20px 5px 0px;line-height: 1; font-size: 14px;font-weight: 300;color: #fd4802;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
 .itemName {	margin: 0px 5px 15px;line-height:20px;font-size: 14px;font-weight: 200;color:#222; height:40px;}
@@ -860,7 +870,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
     height: 40px;width: 0;padding: 0px 0px 0px 0px;
 }
 .shape span{
-    color: #ffffff; text-align:center; text-indent: 10px;font-size: 14px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 50px;z-index: 2;
+    color: #ffffff; text-align:center; text-indent: 10px;font-size: 14px;font-weight: 300;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 50px;z-index: 2;
     /* line-height: 1; */
     /* letter-spacing: -25em; */
     /* display: -webkit-box; */
@@ -1035,11 +1045,11 @@ input[type="file"] {
   transform: translate(-50%, -50%);cursor: pointer;
 }
 .removes {
-  display: block;width: 30px;height: 30px;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
+  display: block;width: 21px;height: 21px;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
   position: absolute;top: 0;bottom: auto;left: auto;right: 0;
 }
 .removes::after {
-  content: '';display: inline-block;width: 30px;height: 30px;
+  content: '';display: inline-block;width: 21px;height: 21px;
   background: url('/images/pc/ico_btn_cls1.png') no-repeat;background-position: 50% 50%;
 }
 

+ 95 - 56
src/main/webapp/ux/pc/css/layout.css

@@ -183,24 +183,24 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 
 /* common_search */
-.common_search {display:none; position:fixed; left:0; right:0; top:0; bottom:0; width:100%; height:100%; background:#fff; z-index:200; }
+.common_search {display:none; position:fixed; left:0; right:0; top:0; bottom:0; width:100%; height:100%; background:#fff; z-index:200; overflow-y: auto;}
 .common_search.active {display:block;}
 .common_search div::after,
 .common_search ul::after {content:''; clear:both; display:block;}
-.common_search .btn_close_search {position:fixed; right:50px; top:50px; width:30px; height:30px; text-indent:-9999px; overflow:hidden; background:url('/images/pc/ico_pop_cls.png') no-repeat 50% 50%; background-size:100% auto;}
-.common_search .cont_search {position:relative; width:830px; top:50%; transform:translateY(-50%); margin:auto; }
+.common_search .btn_close_search {position:absolute; right:50px; top:50px; width:30px; height:30px; text-indent:-9999px; overflow:hidden; background:url('/images/pc/ico_pop_cls.png') no-repeat 50% 50%; background-size:100% auto;}
+.common_search .cont_search {/*position:relative;*/ width:830px; /*top:50%;*/ /*transform:translateY(-50%);*/ margin:0 auto; padding:100px 0;}
 .common_search .cont_search .area_input {border-bottom:2px solid #222;}
 .common_search .cont_search .area_input input[type='text'] {width:calc(100% - 30px); height:54px; border:none; color:#222; font-size:30px; padding-left:0;}
 .common_search .cont_search .area_input .ico_search:before {width:26px; height:26px; background-image:url('/images/pc/ico_search_faq.png');}
 .common_search .cont_search .area_result {}
-.common_search .cont_search .area_result .empty_box {margin-top:80px;}
+.common_search .cont_search .area_result .empty_box {display: block; margin-top:80px;}
 .common_search .empty_box .nodata {color:#666; font-size:16px; font-weight:300; line-height:26px; text-align:center;}
 .common_search .empty_box .nodata::before {content:''; display:block; width:36px; height:46px; margin:0 auto 24px; background:url('/images/pc/ico_content_none.png') no-repeat;}
-.common_search .empty_box .nodata .keyword {color:#fd4802; font-weight:500;}
-.common_search .empty_box .pd_list.recommend {margin-top:120px}
+.common_search .empty_box .nodata .keyword {font-weight: 300;}
+.common_search .empty_box .pd_list.recommend {margin-top:40px}
 .common_search .pd_list {float:left; width:100%;}
 .common_search .pd_list h3 {color:#222; font-size:20px; font-weight:500;}
-.common_search .pd_list .itemsGrp {margin:30px -10px 0;}
+.common_search .pd_list .itemsGrp {margin:24px 0 0;}
 .common_search .pd_list .itemsGrp .item_prod {width:calc(100% / 5);}
 
 .common_search .cont_search .area_result .default_box {margin-top:30px;}
@@ -220,22 +220,39 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .common_search .default_box .recent_blk ul li {padding-right:18px;}
 .common_search .default_box .recent_blk ul li .btn_delete {position:absolute; right:0; top:0; width:9px; height:9px; font-size:1px; text-indent:-9999px; overflow:hidden; background:url('/images/pc/ico_close1.png') no-repeat 50% 50%; background-size:100% auto;}
 .common_search .default_box .popular_blk ul li a::before {content:'#';}
-.common_search .default_box .realtime_blk {width:100%; margin-top:50px; margin-right:0px; padding-top:50px; padding-bottom:50px;}
+.common_search .default_box .realtime_blk {width:100%; margin-top:50px; margin-right:0px; padding-top:50px; padding-bottom:0;}
 .common_search .default_box .realtime_blk::before {content:''; display: none; position:absolute; left:50%; top:0; bottom:-30px; width:3000px; transform:translateX(-50%); background:#f5f5f5; z-index:-1;}
 .common_search .default_box .realtime_blk .modify_timer {position:absolute; right:0; top:50px;}
 .common_search .default_box .realtime_blk .modify_timer button {color:#888; font-weight: 300; padding-right: 20px; }
 .common_search .default_box .realtime_blk .modify_timer button:after {content:''; position: absolute; top: 50%; right: 0; width: 14px; height: 14px; background: url('/images/pc/ico_filter_reset02.png') no-repeat center; margin-top: -6px;}
-.common_search .realtime_wrap .item_prod .itemName {color:#000; margin:0 0 15px;}
+.common_search .realtime_wrap {margin:0 -10px;}
+/* .common_search .realtime_wrap .item_prod .itemPic {padding-top: 135%;} */
+.common_search .realtime_wrap .item_prod .itemName {color:#000; margin:0 0 15px; font-weight: 300;}
 .common_search .realtime_wrap .item_prod .viewCount {display:table; width: fit-content;height: 30px;color: #fd4802;line-height: 1;font-size: 14px;font-weight: 400;text-align: center;vertical-align: middle;letter-spacing: -.025rem;padding: 6px 12px;border: 2px solid #fd4802;border-radius: 50px;box-sizing: border-box;}
+.common_search .realtime_wrap .item_prod .item_state {padding-bottom: 0;}
 
 .common_search .cont_search .area_result .searching_box {margin-top:30px;}
 .common_search .cont_search .area_result .searching_box h3 {margin-bottom:24px; color:#222; font-size:18px; font-weight:500}
-.common_search .cont_search .area_result .searching_box .find_brand h3 {border-bottom: 1px solid #ddd;}
+.common_search .cont_search .area_result .searching_box .find_brand h3 {margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid #ddd;}
+.common_search .cont_search .area_result .searching_box .find_brand h3 a {display: inline-block; padding-right: 20px; color:#222; background:url(/images/pc/ico_dp_arrow.png) no-repeat right 0 top 2px; background-size:7px 13px;}
+
+.common_search .cont_search .area_result .searching_box .find_category li {position: relative; margin-top: 14px; padding:4px 0; padding-left: 67px; overflow:hidden; text-overflow:ellipsis; white-space: nowrap;}
+.common_search .cont_search .area_result .searching_box .find_category li:first-child {margin-top: 0;}
+.common_search .cont_search .area_result .searching_box .find_category li .category_txt {position: absolute; left: 0; top: 0; padding:5px 8px; background: #f5f5f5; vertical-align: middle; font-size: 11px; color:#666;}
+.common_search .cont_search .area_result .searching_box .find_category li a {width: 100%; font-size: 0;}
+.common_search .cont_search .area_result .searching_box .find_category li a:after {content:''; display: block; clear:both;}
+.common_search .cont_search .area_result .searching_box .find_category li a span {position: relative; font-size: 14px; color:#888; padding-right: 30px; vertical-align: middle;}
+.common_search .cont_search .area_result .searching_box .find_category li a span:after {content:''; background: url(/images/pc/ico_bread_root.png) no-repeat center/100%; position: absolute; top: 1px; right: 11px; width: 6px; height: 11px;}
+.common_search .cont_search .area_result .searching_box .find_category li a span:last-child {padding-right: 0;}
+.common_search .cont_search .area_result .searching_box .find_category li a span:last-child:after {display: none;}
+
 .common_search .searching_box .pd_list.relate {margin-top:30px;}
 .common_search .searching_box [class*="_blk"] {float:left; position:relative; width:calc(50% - 60px); margin-right:60px;}
+.common_search .searching_box .exfind_blk {margin-right: 0; width: 50%;}
 .common_search .searching_box .autokeyword_blk ul li a em,
 .common_search .searching_box .exfind_blk .find_brand h3 a em,
 .common_search .searching_box .exfind_blk .find_category a em {color:#fd4802;}
+.common_search .searching_box .exfind_blk .find_category a em {color:#222; font-weight: 400;}
 .common_search .searching_box .autokeyword_blk ul li {margin-bottom:10px; color:#666; font-size:14px; font-weight:300; float:left; margin-right: 20px;}
 .common_search .searching_box .exfind_blk .find_category ul li a:last-child::after {display:none;}
 
@@ -548,7 +565,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .filter_content .sort {display:none; position: relative; padding: 40px 35px 80px; border: 1px solid #ddd; border-bottom: 0; border-top: none;}
 .filter_content .sort.on {display:block;}
 .filter_content .sort .tap_close {position: absolute; bottom: 30px; right: 40px; display: block; width: 30px; height: 30px; text-indent: -9999px; background-image: url(/images/pc/ico_pop_cls.png);  background-size: contain; background-repeat: no-repeat; background-position: center center; z-index: 98;}
-.filter_content .sort > ul {max-height: 350px; overflow-y: auto;}
+.filter_content .sort > ul {max-height: 350px; /*overflow-y: auto;*/}
 .filter_content .sort label span {color:#666; font-size:14px; font-weight:300;}
 .filter_content .sort label input:checked + span {color:#fd4802; font-weight:500;}
 .filter_content .sort.tap01 > ul {position: relative;}
@@ -563,12 +580,14 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .filter_content .sort.tap02 {padding-left:0; padding-right:0;}
 .filter_content .sort.tap02 ul::after {content:''; display: block; clear:both;}
 .filter_content .sort.tap02 ul li {float:left; padding-left:40px; padding-right:40px; margin-bottom:20px;}
-.filter_content .sort.tap03 ul li {border-bottom: 1px solid #ccc;}
+.filter_content .sort.tap03 ul li {position: relative; border-bottom: 1px solid #ccc; padding-left: 100px;}
+.filter_content .sort.tap03 ul li::after {content: ''; display: block; clear: both;}
 .filter_content .sort.tap03 ul li:first-child {padding-bottom: 30px;}
-.filter_content .sort.tap03 ul li:nth-child(2) {padding: 30px 0;}
+.filter_content .sort.tap03 ul li:first-child strong {top: 2px;}
+.filter_content .sort.tap03 ul li:nth-child(2) {padding-top: 30px;padding-bottom: 30px;}
 .filter_content .sort.tap03 ul li:last-child {padding-top: 30px; border: none;}
-.filter_content .sort.tap03 ul li strong {margin-right:40px; color:#222; font-weight:300;}
-.filter_content .sort.tap03 ul li label {color:#666; margin-right:40px; word-break:keep-all;}
+.filter_content .sort.tap03 ul li strong {/*margin-right:40px;*/width:100px;color:#222; font-weight:300; height: 21px;float: left; position: absolute; top: 32px; left: 0;}
+.filter_content .sort.tap03 ul li label {color:#666; margin-right:40px; margin-bottom: 3px; line-height: 1.4; display: inline-block; word-break:keep-all;position:relative;}
 .filter_content .sort.tap03 ul li label:last-child {margin-right:0}
 .filter_content .sort.tap03 ul li label span {}
 .filter_content .sort.tap03 ul li .size_btn,
@@ -1177,6 +1196,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .goods_info .order_desc .button_box .btn:hover,
 .goods_info .order_desc .button_box .btn:focus,
 .goods_info .order_desc .button_box .btn:active{color: #333333;background-color: #ffffff;border-color: #dddddd;}
+.goods_info .order_desc .button_box .btn.btn_primary_line:hover,
+.goods_info .order_desc .button_box .btn.btn_primary_line:focus,
+.goods_info .order_desc .button_box .btn.btn_primary_line:active{color:#fd4802; border-color:#fd4802;}
 .goods_info .order_desc .button_box .btn span {line-height:1}
 .goods_info .order_desc .button_box .util {margin-top:12px}
 .goods_info .order_desc .button_box .util span {position:relative; display:inline-block; margin-left:24px;}
@@ -1290,7 +1312,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .nodata .txt_box {color:#666; font-size:16px; font-weight:300; line-height:26px;}
 .nodata .txt_box::before {content:''; display:block; width:36px; height:46px; margin:0 auto 20px; background:url('/images/pc/ico_content_none.png') no-repeat;}
 .nodata .btn_box {margin-top:40px;}
-.nodata .btn_box .btn {color:#222; font-size:14px; font-weight:300;}
+.nodata .btn_box .btn {color:#222; font-size:14px; font-weight:300;padding: 9px 23px;}
 
 /* page_end_point 안내*/
 .last_page {padding:30px; margin-top:120px; margin-left:70px; margin-right:70px; max-width:100%; /*background:#f5f5f5;*/ color:#888; font-size:16px; font-weight:300; text-align:center; line-height:1.24;}
@@ -1670,7 +1692,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .dp_submain {position:relative;}
 	.dp .dp_submain .swiper-container .img img {width: 100%; height:auto;}
 	.dp .dp_submain .swiper-container .txt .subject {margin:20px 0; font-size: 24px; line-height: 1.5; font-weight: 300; color:#222; min-height:66px; max-height:66px; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box;}
-	.dp .dp_submain .swiper-container .txt span {font-size: 16px; font-weight: 200; color: #222;}
+	.dp .dp_submain .swiper-container .txt span {font-size: 16px; font-weight: 200; color: #222; overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;display: -webkit-box;}
 	.dp .dp_submain .swiper-controls {margin-top:60px}
 
 	/* dp_new_item 신상품 슬라이드 */
@@ -1743,7 +1765,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp .dp_Exhibition {}
 	.dp_Exhibition .count_wrap {padding-top:20px}
 	.dp_Exhibition .item_prod .item_state {display: table; vertical-align: middle; padding: 0; width: 100%; padding-left:130px; height: 100%;}
-	.dp_Exhibition .exhi_list {margin-bottom:80px;}
+	.dp_Exhibition .exhi_list {margin-bottom:80px; margin:0 -10px 80px;}
 	.dp_Exhibition .exhi_list::after {content:''; clear:both; display:block;}
 	.dp_Exhibition .exhi_list .exhi_item {float:left; width:calc((100% - 60px)/4); overflow: hidden; margin-bottom:60px; margin-left:20px;}
 	.dp_Exhibition .exhi_list .exhi_item:nth-child(4n-3) {margin-left:0;}
@@ -1759,10 +1781,10 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .brand {font-size: 14px;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .tit {margin:20px 0 15px; max-height:66px; font-size:24px; line-height:1.4; word-break:keep-all; text-align:left;}
 	.dp_Exhibition .exhi_list .exhi_item .exhi_item_img .exhi_detail .sale {font-size: 14px;}
+	.dp_Exhibition .exhi_list .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 9; width: 88.4%; margin:-70px auto 0;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li {height: 150px; margin-bottom: 16px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li:last-child {margin-bottom: 0;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .item_prod {width: 100%; margin-right: 0; margin-bottom: 0; height: 150px;}
-	.dp_Exhibition .exhi_list .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 99; width: 380px; margin:-70px auto 0;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0; background:#f5f5f5;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemLink {position: static; display: table-cell; vertical-align:middle;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemName {font-size: 14px; line-height: 1.4; max-height: none; margin: 0px 0px 15px; height:auto;}
@@ -1834,7 +1856,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_coupon .coupon_list ul li:nth-child(4n-3) {margin-left:0}
 	
 	/* dp_기획전상세 : 유의사항 */	
-	.dp_announce {}
+	.dp_announce {margin-top: 80px; padding-top: 40px;}
 	.dp_announce .cont_head {display:none;}
 	.dp_announce.line {margin-top:20px;}
 	.dp_announce.line .announce_txt {padding-top:60px;}
@@ -1884,7 +1906,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.cmt_wrap .pics .picsThumbs {max-width: 100%; max-height: 100%;}
 	.cmt_wrap .cmt_write .cmt_tarea {margin-bottom: 20px;}
 	.cmt_wrap .cmt_write .cmt_tarea textarea {background: #fff; padding: 20px; resize: none; width: 100%; height: 140px; font-size: 14px; line-height: 1.3;}
-	.cmt_wrap .cmt_write .cmt_thumb + .btn {display:block; margin-top:40px; margin-left:auto; margin-right:auto; width:220px; height:60px; font-size:13px; font-weight:300;}
+	.cmt_wrap .cmt_write .cmt_thumb + .btn {display:block; margin-top:40px; margin-left:auto; margin-right:auto; width:220px; height:60px; font-size:18px; font-weight:300;}
 	.cmt_wrap .cmt_group {margin-top:90px}
 	.cmt_wrap .cmt_group .cmt_list_tit {padding-bottom:30px; border-bottom:1px solid #ddd;}
 	.cmt_wrap .cmt_group .cmt_list_tit strong {margin-right: 10px; font-size: 26px; font-weight: 500;}
@@ -1943,7 +1965,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_special .dp_listItems_cont.type3 {padding-left:70px; padding-right:70px;}
 
 	/* dp_기획전상세 : 다른 기획전,이벤트 보기 */
-	.dp .other_promotion_slide {margin-top:160px; padding:0 140px!important;}
+	.dp .other_promotion_slide {margin-top:160px;margin-bottom: -20px;padding:0 140px!important;}
 	.dp .other_promotion_slide .cont_head {position:relative; margin-bottom:60px;}
 	.dp .other_promotion_slide .cont_head h4 {position:relative; margin-bottom:0;}
 	.dp .other_promotion_slide .cont_head a {position:absolute; top: 50%; right: 0; transform:translateY(-50%); padding-right: 20px; background: url('/images/pc/ico_more_lg.png') no-repeat right top 1px; font-size: 18px; color:#888;}
@@ -2465,7 +2487,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.odPayment .paymentinfo .payinfo_blk a::after {clear:both; display:block; width:100%;}
 	.odPayment .paymentinfo .payinfo_blk a span {float:right; position:relative; padding-right:22px; color:#222; font-size:14px;}
 	.odPayment .paymentinfo .payinfo_blk a span::after {content:''; position:absolute; right:0; top:2px; width:11px; height:9px; background:url('/images/pc/ico_mb_arrow.png') no-repeat 0% 100%; background-size:100% auto;}
-	.odPayment .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#888; font-size:14px; line-height:26px; overflow-y:scroll;}
+	.odPayment .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#222; font-size:14px; line-height:26px; overflow-y:scroll;}
 	.odPayment .paymentinfo .payinfo_blk.on {background:#f5f5f5;}
 	.odPayment .paymentinfo .payinfo_blk.on a {padding-bottom:15px;}
 	.odPayment .paymentinfo .payinfo_blk.on a span::after {top:3px; transform:rotate(-180deg);}
@@ -2474,6 +2496,14 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.odPayment .area_paybtn .btn {height:80px; font-size:20px; font-weight:300;}
 	.odPayment .area_paybtn .btn em {font-weight:500;}
 
+	.odPayment .infotxt table {word-break:keep-all;margin-top: 10px;margin-bottom: 10px;}
+	.odPayment .infotxt table th,
+	.odPayment .infotxt table td {position:relative; padding:10px 40px; font-size:14px;color: #222222;letter-spacing:-0.025em;text-align:center;}
+	.odPayment .infotxt table td {border-bottom:1px solid #ddd;border-right: 1px solid #ddd;font-weight:200;}
+	.odPayment .infotxt table td:last-child {border-right: 1px solid transparent;}
+	.odPayment .infotxt table th {border-top: 1px solid #000;border-bottom:1px solid #000;border-right: 1px solid transparent;font-weight:400;text-align:center;}
+
+
 	.odPayment .extra_pay {padding:0px 30px 40px; margin-bottom: 20px; border-top:1px solid #222; border-bottom:1px solid #ddd;}
 	.odPayment .extra_pay .tit_pay {padding:30px 0px; line-height:1; font-size:24px; font-weight:500;}
 	.odPayment .extra_pay .area_paymethod {}
@@ -2695,13 +2725,13 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd .option_box {margin-top:30px;}
 	.option_box > [class^="opt_"] {padding-top:40px}
 	.option_box > [class^="opt_"]:first-of-type {padding-top:0}
-	.option_box > [class^="opt_"] .opt_header {margin-bottom:20px}
+	.option_box > [class^="opt_"] .opt_header {position: relative; margin-bottom:20px;}
 	.option_box > [class^="opt_"] .opt_header::after {content:''; clear:both; display:block;}
 	.option_box > [class^="opt_"] .opt_header > span {font-size:14px;}
-	.option_box > [class^="opt_"] .opt_header .title {display:inline-block; margin-right:20px; color:#222; font-weight:500;}
+	.option_box > [class^="opt_"] .opt_header .title {display:inline-block; margin-right:70px; color:#222; font-weight:500;}
 	.option_box > [class^="opt_"] .opt_header .color,
 	.option_box > [class^="opt_"] .opt_header .size {color:#666; font-weight:200;}
-	.option_box > [class^="opt_"] .opt_header .btn_popup {float:right;}
+	.option_box > [class^="opt_"] .opt_header .btn_popup {position: absolute; top: 0; right: 0;}
 	.option_box .info_restock {margin-top:20px}
 	.option_box .info_restock a.btn_popup {position:relative; padding-left:22px; padding-right:15px; color:#666; font-size:14px; font-weight:300; border:none;}
 	.option_box .info_restock a.btn_popup::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:12px; height:13px; background:url('/images/pc/ico_bell.png') no-repeat 0 0;}
@@ -2709,6 +2739,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	/* pd_deal_컬러선택 */
 	.pd .option_box .opt_color {}
+	.pd .option_box .opt_color .title {margin-right: 16px;}
 	.option_box .opt_color ul {margin-top:-8px}
 	.option_box .opt_color ul::after {content:''; clear:both; display:block;}
 	.option_box .opt_color ul li {float:left; margin-left:8px; margin-top:8px}
@@ -2719,6 +2750,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	/* pd_deal_컬러선택 폼 */
 	.pd .option_box .opt_size {}
+	.pd .option_box .opt_size .title {margin-right: 16px;}
 	.option_box .opt_size .form_field {display:block; margin-top:-8px;}
 	.option_box .opt_size .form_field > div {margin-left:8px; margin-top:8px;}
 	.option_box .opt_size .form_field > div:nth-child(7n-6) {margin-left:0px;}
@@ -2726,7 +2758,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.option_box .opt_size .form_field input[type="radio"] + label::before,
 	.option_box .opt_size .form_field input[type="radio"] + label::after {display:none;}
 	.option_box .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #fd4802;}
-	.option_box .opt_size .form_field input[type="radio"]:disabled + label {text-decoration:line-through; background:#f5f5f5; border-color:#f5f5f5; color:#bbb; opacity:1;}
+	.option_box .opt_size .form_field input[type="radio"]:disabled + label {background:#f5f5f5; border-color:#f5f5f5; color:#bbb; opacity:1;}
+	.option_box .opt_size .form_field input[type="radio"]:disabled + label span {text-decoration:line-through;}
 	.option_box .opt_size .form_field input[type="radio"] + label span {position:absolute; top:50%; left:0%; width:100%; padding:0 6px; line-height:1.2; transform:translateY(-50%); transform:translateY(-50%); display:-webkit-box; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
 	
 	.option_box .opt_size .form_field > div {float:left; /* width:auto; */ width:calc((100% - 48px) / 7);}
@@ -2734,11 +2767,12 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	
 	/* pd_deal_옵션셀렉트 폼 */
 	.pd .option_box [class^="opt_"] {}
-	.option_box [class^="opt_"] .form_field {margin-top:10px;}
+	.option_box [class^="opt_"] .form_field {display:block; margin-top:10px;}
 	.option_box [class^="opt_"] .form_field:first-child {margin-top:0}
-	.option_box [class^="opt_"] .select_custom {height:52px;}
-	.option_box [class^="opt_"] .select_custom .select {height:52px; padding:17px 40px 17px 18px; border-bottom-color:#ddd; overflow:hidden; color:#222; font-weight:200;}
+	.option_box [class^="opt_"] .select_custom {min-height:52px;}
+	.option_box [class^="opt_"] .select_custom .select {height:auto; min-height:52px; padding:17px 40px 17px 18px; border-bottom-color:#ddd; overflow:hidden; color:#222; font-weight:200;}
 	.option_box [class^="opt_"] .select_custom .select:after {right:20px;}
+	.option_box [class^="opt_"] .select_custom .select .opt_price {padding-top: 10px;}
 	.option_box [class^="opt_"] .select_custom[aria-disabled="true"] .select {color:#bbb; background:#f5f5f5;}
 	.option_box [class^="opt_"] .select_custom .combo .list {top:52px; padding:0}
 	.option_box [class^="opt_"] .select_custom .combo .list > li {padding:18px 18px; line-height:1; color:#666; font-size:16px; font-weight:200;}
@@ -2784,7 +2818,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.option_box .opt_result .result_item .btn_delete_item {position:absolute; right:0; top:0px; width:14px; height:14px; overflow:hidden; background:url('/images/pc/btn_delete_item.png') no-repeat 50% 50%; image-rendering:pixelated; text-indent:-999px; z-index:2;}
 
 	/* pd_deal_수량조절 폼 */
-	.option_box .opt_count {margin-top:30px; padding-top:30px; padding-bottom:0; border-top:1px solid #ddd;}
+	.option_box .opt_count {margin-top:30px; margin-bottom: 30px; padding-top:30px; padding-bottom:0; border-top:1px solid #ddd;}
 	.option_box .number_count {display:inline-block; border:1px solid #ddd}
 	.option_box .number_count::after {content:''; clear:both; display:block;}
 	.option_box .number_count span,
@@ -2853,14 +2887,14 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	}
 
 
-	.pd_together {}
+	.pd_together {padding-top: 120px;}
 	.pd_together .area_slider {padding:0;}
 	.pd_together .area_slider .swiper-wrapper {padding-bottom:60px;}
 	.pd_together .area_slider .swiper-scrollbar {background:#ddd}
 	.pd_together .area_slider .swiper-scrollbar-drag {border-radius:0; background:#222;}
 	.pd_together .area_slider .swiper-container-horizontal>.swiper-scrollbar {position:relative; left:auto; right:auto; bottom:auto; width:100%; height:2px; opacity: 1 !important;}
 
-	[class*="pd_descrp"] {width:1200px; margin-top:80px; padding-top:120px}
+	[class*="pd_descrp"] {width:1200px; padding-top:120px}
 	[class*="pd_descrp"] .cont_body {max-height:1100px; overflow:hidden;}
 	[class*="pd_descrp"] .cont_body.on {max-height:none;}
 	[class*="pd_descrp"] .cont_body > div {position:relative; margin-left:auto; margin-right:auto} /* width:1200px; */
@@ -2903,7 +2937,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	[class*="pd_descrp"] .required_box .area_kcl .ico_kcl {position:absolute; left:64px; top:50%; transform:translateY(-50%); z-index:2;}
 	[class*="pd_descrp"] .btn_more_box {position:relative; width:100%; margin-top:0; margin-bottom:120px; background:#fff; text-align:center; z-index:2;}
 	[class*="pd_descrp"] .btn_more_box.covered::after {content:''; position:absolute; left:0; right:0; top:-200px; width:100%; height:200px; background:linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(255,255,255,1) 50%, rgba(255, 255, 255, 0) 100%); z-index:2; }
-	[class*="pd_descrp"] .btn_more_box .btn {border-color:#fd4802; color:#fd4802;}
+	[class*="pd_descrp"] .btn_more_box .btn {background: #fff; border-color:#fd4802; color:#fd4802;}
+	[class*="pd_descrp"] .btn_more_box .btn:hover, [class*="pd_descrp"] .btn_more_box .btn:active {background-color:#fff;}
 	[class*="pd_descrp"] .btn_more_box .btn span {position:relative; padding-right:35px;}
 	[class*="pd_descrp"] .btn_more_box .btn span::after {content:""; position:absolute; right:4px; top:1px; transform:rotate(90deg); width:7px; height:13px; background:url(/images/pc/ico_mb_arrow2.png) no-repeat 0 0; background-size:auto 100%;} 
 	[class*="pd_descrp"] .btn_more_box .btn.active span::after {transform:rotate(-90deg);}
@@ -3140,7 +3175,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_pop.info_size_pop .size_cont .size_tbl_box .tbl table thead th {border-bottom:1px solid #222;}
 	.pd_pop.info_size_pop .size_cont .size_tbl_box .tbl table th,
 	.pd_pop.info_size_pop .size_cont .size_tbl_box .tbl table td {font-size:14px;}
-	.pd_pop.info_size_pop .size_footer {margin-top:20px}
+	.pd_pop.info_size_pop .size_footer {margin-top:20px; margin-bottom: 20px;}
 	.pd_pop.info_size_pop .tab_nav {}
 	.pd_pop.info_size_pop .tab_nav ul::after {content:''; clear:both; display:block;}
 	.pd_pop.info_size_pop .tab_nav ul li {float:left; width:calc((100% - 2px) * 1/3); text-align:center; background:#f5f5f5; border-bottom:1px solid #222; border-top:1px solid #f5f5f5;}
@@ -3164,7 +3199,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont {display:none; position:relative;}
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont::after {content:''; clear:both; display:block;}
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont:first-of-type {display:block}
-	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {float:left;}
+	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont .img_sizeinfo {float:left; border:1px solid #eee;}
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl {float:right; width:344px; text-align:left; margin-top:10px; font-size:14px; line-height:24px; word-break:keep-all;}
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div {float:none; padding:0 0 20px;}
 	.pd_pop.info_size_pop .sub_tab_cont_wrap .sub_tab_cont dl div dt {float:none; color:#222; font-weight:300;}
@@ -3629,7 +3664,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .nodata {padding:50px 0 100px;  text-align:center;}
 	.sch_result .nodata .txt_box {color:#666; font-size:16px; font-weight:300; line-height:26px;}
 	.sch_result .nodata .txt_box::before {content:''; display:block; width:36px; height:46px; margin:0 auto 24px; background:url('/images/pc/ico_content_none.png') no-repeat;}
-	.sch_result .nodata .txt_box span {color:#fd4802; font-weight:500;}
+	.sch_result .nodata .txt_box span {font-weight:300;}
 	.sch_result .nodata .btn_box {margin-top:40px;}
 	.sch_result .nodata .btn_box .btn span {color:#222; font-size:14px; font-weight:300;}
 	.sch_result .cont_head {}
@@ -3638,7 +3673,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .area_info .info_result .keyword {font-weight:500;}
 	.sch_result .area_info .info_result .number {color:#fd4802; font-size:28px; font-weight:500;}
 	.sch_result .area_info .inner_search {position: relative; display: inline-block; width: 100%; border-bottom:2px solid #222; z-index:2;}
-	.sch_result .area_info .inner_search input[type='text'] {width:96%; border:none; padding:2px 0px 5px; color:#222; font-size:18px;}
+	.sch_result .area_info .inner_search input[type='text'] {width:96%; border:none; padding:2px 0px 10px; color:#222; font-size:30px;}
 	.sch_result .area_info .inner_search input[type='text']::placeholder {color:#888}
 	.sch_result .area_info .inner_search button {display:inline-block; width:24px; height:24px; background:url('/images/pc/ico_search_faq.png') no-repeat 50% 50%; background-size:100% auto; overflow:hidden; font-size:1px; text-indent:-999px;}
 	.sch_result .area_info .inner_search .autokeyword {display:none; position:absolute; left:0; top:34px; width:100%; padding:0px; background:#fff; border:1px solid #222; z-index:5;}
@@ -3647,8 +3682,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .area_info .inner_search .autokeyword ul li a em {color:#fd4802;}
 	.sch_result .area_info .inner_search .autokeyword ul li a:hover,
 	.sch_result .area_info .inner_search .autokeyword ul li a:active {background:#f5f5f5; color:#222}
-	.sch_result .area_info .related_keyword {clear:both; display:block; position:relative; margin-top:40px; padding:0 0 0 103px; box-sizing:border-box;}
-	.sch_result .area_info .related_keyword .title {display:inline-block; position:absolute; left:0; top:4px; padding-right:20px; color:#222; font-size:18px; font-weight:500;}
+	.sch_result .area_info .related_keyword {clear:both; display:block; position:relative; margin-top:15px; padding:0 0 0 90px; box-sizing:border-box;}
+	.sch_result .area_info .related_keyword .title {display:inline-block; position:absolute; left:0; top:4px; padding-right:20px; color:#222; font-size:16px; font-weight:500;}
 	.sch_result .area_info .related_keyword .title::after {content:''; position:absolute; right:0; top:50%; transform:translateY(-50%); height:17px; border-left:1px solid #ddd; display: none;}
 	.sch_result .area_info .related_keyword ul li {float:left; padding:5px 10px}
 	.sch_result .area_info .related_keyword ul li:first-of-type {margin-left:0}
@@ -3657,6 +3692,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .taps {position:relative; margin-top:100px; margin-bottom:80px} 
 	.sch_result .cont_body {}
 	.sch_result .cont_body .sch_result_cont {display:none;}
+	.sch_result .cont_body .sch_result_cont .sch_recommend h3 {margin-bottom: 40px; text-align: center;}
 	.sch_result .cont_body .sch_result_cont .banner {margin-bottom:40px;}
 	.sch_result .cont_body .sch_result_cont .itemsGrp {margin-left:-10px; margin-right:-10px;}
 	.sch_result .cont_body .sch_result_cont .itemsGrp .item_prod {width:calc(100% / 5);}
@@ -3676,11 +3712,14 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .cont_body .sch_result_cont .exhi_list .item_prod:nth-child(5n+0) {margin-right: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .item_prod:nth-child(6n+0) {margin-right: 20px;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp {margin-bottom: 80px;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item {float:left; width: 24.15%; overflow: hidden; margin:0 1.12% 80px 0;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item {float:left; width: calc((100% - 60px)/4); overflow: hidden; margin:0 20px 80px 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item:nth-child(4n) {margin:0 0 40px 0;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img {width: 430px; height: 430px; overflow: hidden;} 
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img {width: 100%; height: auto; overflow: hidden;} 
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img img {position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height:auto;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a {position: relative; width: 100%; height: 100%; display: block; padding-bottom: 100px;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a {position: relative; width: 100%; height: auto; display: block; padding-bottom: 100%;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a .shape {max-width:52px; min-height:52px; width: 42px;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a .shape span {width: 43px; font-weight: 300;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a .shape:after {height: 42px;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 342px; background: linear-gradient(0deg, rgba(0,0,0,1) 0%, transparent 100%); z-index: 8;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img .exhi_detail {position: absolute; left: 0; bottom: 100px; z-index: 9; padding: 23px; padding-bottom: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item .exhi_item_img .exhi_detail * {display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: #fff; font-weight: 300; letter-spacing: 0;}
@@ -3690,8 +3729,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr li {height: 150px; margin-bottom: 16px;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr li:last-child {margin-bottom: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .item_prod {width: 100%; margin-right: 0; margin-bottom: 0; height: 150px;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 99; width: 380px; margin:-70px auto 0;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 9; width: 88.4%; margin:-70px auto 0;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; background:#f5f5f5; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemLink {position: static; display: table-cell; vertical-align:middle;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemName {font-size: 14px; line-height: 1.4; max-height: none; margin: 0px 0px 15px; height:auto;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPrice {margin-left: 0; margin-right: 0; font-size: 16px;}
@@ -4064,10 +4103,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.my .myMbLeave .com_info_txt {}
 	.my .myMbLeave .com_info_txt .check_box {margin-top:30px; padding-top:30px; border-top:1px solid #dcdcdc;}
 	.my .myMbLeave .com_info_txt .check_box span {color:#858585; font-weight:200;}
-	.my .myMbLeave .hold_order .on,
-	.my .myMbLeave .hold_point,
-	.my .myMbLeave .hold_voucher,
-	.my .myMbLeave .hold_coupon {color:#fd4802}
+	.my .myMbLeave .hold_order .on {color:#fd4802}
 
 	/* my_포인트, 상품권 공통 */
 	.my .have_amount {}
@@ -4216,15 +4252,18 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.survey .survey_wrap .survey_con .survey_row .answer textarea,
 	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'] {width:100%;}
 	.survey .survey_wrap .survey_con .survey_row .answer textarea {height:220px; padding:20px;}
-	.survey .survey_wrap .survey_con .survey_row .answer ul {margin-top:-30px; margin-right:-60px}
-	.survey .survey_wrap .survey_con .survey_row .answer ul li {float:left; position:relative; margin-top:30px; margin-right:48px;}
-	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'].etc_input {margin-left:20px; width:300px !important; max-width:300px !important; height:52px;}
+	.survey .survey_wrap .survey_con .survey_row .answer ul {/*margin-top:-30px;*/ margin-right:-60px}
+	.survey .survey_wrap .survey_con .survey_row .answer ul li {float:left; position:relative; margin-bottom:42px; margin-right:48px;}
+	.survey .survey_wrap .survey_con .survey_row .answer ul li:last-child {} 
+	
+	.survey .survey_wrap .survey_con .survey_row .answer input[type='text'].etc_input {visibility:hidden;margin-left:20px; width:300px !important; max-width:300px !important; height:52px; margin-top: -33px;}
+	.survey .survey_wrap .survey_con .survey_row .answer ul li .etc_radio:checked + label + .etc_input {margin-top: 0;}
 	.survey .survey_wrap .survey_con .btn_wrap {margin-top:20px} 
 
 	/* ev_rank 회원등급 혜택 */
 	.ev .ev_rank {}
-	.ev_rank .inner {position: relative;}
-	.ev_rank .my_rank_info {background: #fff6f2; padding:53px 0; min-height:260px; box-sizing:border-box;}
+	.ev_rank .inner {position: relative;margin-top: 10px;}
+	.ev_rank .my_rank_info {background: #fff6f2; padding:49px 0 40px; margin-top: -5px; min-height:260px; box-sizing:border-box;}
 	.ev_rank .my_rank_info .desc {float:left;}
 	.ev_rank .my_rank_info .desc p {color:#666; font-size:24px; font-weight:200; line-height:34px;}
 	.ev_rank .my_rank_info .desc p span.my_name {color:#222; font-weight:500;}
@@ -4260,13 +4299,13 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.ev_rank .my_rank_progress .pro_wrap.vip .progress_bar .current_bar {width: 100%;}
 	.ev_rank .my_rank_progress .benefit_txt {background:#fff; padding:26px 0; text-align:center; font-size:18px; color: #444; font-weight: 300;}
 	.ev_rank .my_rank_progress .benefit_txt strong {color:#222; font-weight:700;}
-	.ev_rank .my_rank_info.no_member {min-height:auto; text-align: center;}
+	.ev_rank .my_rank_info.no_member {min-height:auto; text-align: center;padding: 60px 0;}
 	.ev_rank .my_rank_info.no_member p {color:#222; font-size:24px; font-weight:200; letter-spacing:-1px;}
 	.ev_rank .my_rank_info.no_member .login_btn {margin-top:28px; padding:10px 24px; width:85px; height:42px; font-size:14px; font-weight:300;}
 
 	/* ev_benefit_tbl 등급 혜택 테이블 */
 	.ev .ev_benefit_tbl {margin-top:100px}
-	.ev_benefit_tbl  h3 {margin-bottom:50px; font-size:34px; font-weight:500; text-align:center;}
+	.ev_benefit_tbl h3 {margin-bottom:46px; font-size:34px; font-weight:500; text-align:center;}
 	.ev_benefit_tbl .rank_tbl_wrap {margin-bottom: 60px;}
 	.ev_benefit_tbl .rank_tbl_wrap .icon {margin:0 auto 20px;}
 	.ev_benefit_tbl .rank_tbl_wrap .icon + span {display: block; text-align: center; font-size: 18px; color: #222; font-weight: 500;}

+ 17 - 2
src/main/webapp/ux/pc/css/main.css

@@ -430,7 +430,7 @@
 .main_pick .post-pick-for .pick_look .swiper-slide a{display: inline-block; width: 100%; height: 100%;}
 .main_pick .post-pick-for .pick_look .swiper-slide .text_box {position:absolute; left:0; right:0; bottom:130px; color:#fff; text-align:center;}
 .main_pick .post-pick-for .pick_look .swiper-slide .text_box .title {position:relative; display:block; display:-webkit-box; width:100%; max-height:112px; overflow:hidden; white-space:normal; overflow-wrap:break-word; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; font-size:46px; font-weight:500; line-height:56px;}
-.main_pick .post-pick-for .pick_look .swiper-slide .text_box .sub_text {margin-top:25px; font-size:18px; font-weight:300; line-height:1;}
+.main_pick .post-pick-for .pick_look .swiper-slide .text_box .sub_text {margin-top:25px; font-size:18px; font-weight:300; line-height:1.2;max-width: 600px;margin: 25px auto;text-align: center;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;}
 .main_pick .post-pick-for .pick_look .swiper-controls {position:absolute; left:0; right:0; width:100%; bottom:40px;}
 .main_pick .post-pick-for .pick_look img{width:100%; height:auto;}
 .main_pick .post-pick-for .pick_item {position: absolute;right: 0;width:61.7978%;padding: 0 80px;top: 50%;transform: translateY(-50%);font-size:0;} 
@@ -452,6 +452,7 @@
 .main_1stage img {margin:0 auto;width:100%;}
 .post-bnnWide .swiper-button-next {right:70px;}
 .post-bnnWide .swiper-button-prev {left:70px;}
+.post-bnnWide .swiper-button-disabled {display: none;}
 @media screen and (max-width:1460px) {
 	.main_1stage .txtWrap p{font-size:34px;}
 }
@@ -581,7 +582,21 @@ header.minify .common_header.br_header::after {bottom:-565px;}
 .brand_main .post-visual .swiper-slide .txtWrap {opacity:0; position:absolute; padding-left:0px; top:110px; bottom:auto; left:0px; right:auto; z-index:1;}
 .brand_main .post-visual .txtWrap dt {font-size:0; padding-bottom:0;}
 .brand_main .post-visual .swiper-slide-active {opacity:1;}
-.brand_main .post-visual .swiper-slide-active .txtWrap {opacity:1;}
+.brand_main .post-visual .swiper-slide-active .txtWrap {animation-name: fade-in;animation-duration: 1.5s;animation-delay: 1s;animation-fill-mode: both;}
+
+@keyframes fade-in {
+	from {
+	  opacity: 0;
+	  left:0;
+	  transform: translateY(100px);
+	}
+	to {
+	  opacity: 1;
+	  left:0;
+	  transform: translateY(0);
+	}
+}
+
 .brand_main .post-visual .swiper-slide-prev {opacity:0;}
 .brand_main .post-visual .swiper-slide-next {padding-left:0px; padding-right:440px;}
 .brand_main .post-visual .swiper-controls {position:absolute; width:auto; bottom:100px; left:190px; padding-right:15px; z-index:10;}

+ 1 - 0
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollLayer.js

@@ -63,6 +63,7 @@ var gagaInfiniteScroll = {
 	},
 	scrollCheck : function() {
 		var obj = this.obj, stat = this.pageStatus;
+		alert("aaaaa");
 		if ($('[data-id="layer_infinite"]').scrollTop() + $('[data-id="layer_infinite"]').height() >= $('[data-id="layer_infinite_item"]').height() ) { // 더보기
 			if (stat.loadAlign == 'not') {
 				var pageLen = this.pageStatus.pageNum.length - 1;

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

@@ -33,6 +33,7 @@ const _PAGE_CUSTOMER_CONSENT_USERINFO = _frontUrl + "/customer/consent/useinfo/f
 const _PAGE_USE_TERMS_LAYER = _frontUrl + "/customer/use/terms/layer";								// 회원가입 > 이용약관
 const _PAGE_PRIVACY_POLICY_LAYER = _frontUrl + "/customer/privacy/policy/layer";					// 회원가입 > 개인정보취급방침
 const _PAGE_PRIVACY_TRUST_LAYER = _frontUrl + "/customer/privacy/trust/layer";						// 회원가입 > 개인정보취급위탁
+const _PAGE_NON_CUSTOMER_ORDER_CONFIRM = _frontUrl + "/customer/noncust/order/confirm/form";		// 고객 > 비회원주문확인
 
 //== 상품상세 ==/
 const _PAGE_GOODS_DETAIL = _frontUrl + "/goods/detail/form?goodsCd=";								// 상품 상세

部分文件因为文件数量过多而无法显示