Kaynağa Gözat

Merge branch 'develop' into card007

card007 5 yıl önce
ebeveyn
işleme
68fed0e582
67 değiştirilmiş dosya ile 1349 ekleme ve 666 silme
  1. 19 0
      src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java
  2. 9 0
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  3. 49 0
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  4. 104 0
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 18 17
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  6. 2 2
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  7. 3 1
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  8. 52 0
      src/main/java/com/style24/front/biz/web/TsfCustomerController.java
  9. 5 0
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  10. 7 7
      src/main/java/com/style24/front/support/interceptor/TsfDefaultInterceptor.java
  11. 1 0
      src/main/java/com/style24/persistence/domain/BrandGroup.java
  12. 1 0
      src/main/java/com/style24/persistence/domain/Review.java
  13. 10 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  14. 22 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  15. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  16. 14 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  17. 0 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  18. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  19. 5 6
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  20. 5 1
      src/main/webapp/WEB-INF/views/mob/SigninFormMob.html
  21. 5 1
      src/main/webapp/WEB-INF/views/mob/SnsCallBackFormMob.html
  22. 1 1
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  23. 4 4
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  24. 36 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubAppMob.html
  25. 0 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubBrandMob.html
  26. 35 0
      src/main/webapp/WEB-INF/views/mob/common/layout/AppLayoutMob.html
  27. 35 0
      src/main/webapp/WEB-INF/views/mob/common/layout/BrandLayoutMob.html
  28. 201 0
      src/main/webapp/WEB-INF/views/mob/customer/SettingFormMob.html
  29. 11 51
      src/main/webapp/WEB-INF/views/mob/display/BrandMainFormMob.html
  30. 128 72
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  31. 15 77
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  32. 5 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  33. 104 12
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  34. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailQnaFormMob.html
  35. 4 4
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html
  36. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsSizeInfoFormMob.html
  37. 9 8
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  38. 1 3
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  39. 3 3
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  40. 40 19
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  41. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  42. 8 4
      src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html
  43. 0 44
      src/main/webapp/WEB-INF/views/web/common/layout/PlanningLayoutWeb.html
  44. 24 41
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  45. 31 22
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  46. 1 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb2.html
  47. 1 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb3.html
  48. 1 1
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  49. 1 1
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  50. 17 76
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  51. 9 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  52. 3 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html
  53. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsSizeInfoFormWeb.html
  54. 3 4
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  55. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  56. 7 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  57. 2 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningMainFormWeb.html
  58. 108 63
      src/main/webapp/biz/goods.js
  59. 1 1
      src/main/webapp/biz/payment.js
  60. 16 14
      src/main/webapp/ux/mo/css/common_m.css
  61. 32 38
      src/main/webapp/ux/mo/css/layout_m.css
  62. 17 16
      src/main/webapp/ux/mo/css/style24_m.css
  63. 42 0
      src/main/webapp/ux/mo/js/common_m.js
  64. 4 1
      src/main/webapp/ux/pc/css/common.css
  65. 25 1
      src/main/webapp/ux/pc/css/layout.css
  66. 14 15
      src/main/webapp/ux/plugins/approval_key.js
  67. 10 9
      src/main/webapp/ux/style24_link.js

+ 19 - 0
src/main/java/com/style24/front/biz/dao/TsfCustomerDao.java

@@ -207,4 +207,23 @@ public interface TsfCustomerDao {
 	 */
 	int updateEmailReceptionRefuse(Integer custNo);
 
+	/**
+	 * 앱수신동의
+	 *
+	 * @param custInfo - 앱수신여부, 고객번호
+	 * @return 처리건수
+	 * @author jsshin
+	 * @since 2021. 05. 22
+	 */
+	int updateAppAgreeYn(Customer custInfo);
+
+	/**
+	 * 앱마케팅 수신동의
+	 *
+	 * @param custInfo - 앱 마케팅 수신동의, 고객번호
+	 * @return 처리건수
+	 * @author jsshin
+	 * @since 2021. 05. 22
+	 */
+	int updateMkAgreeYn(Customer custInfo);
 }

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -419,4 +419,13 @@ public interface TsfGoodsDao {
 	 * @date 2021. 05. 12
 	 */
 	Collection<GoodsStock> getGoodsOptionInfoList(GoodsStock param);
+
+	/**
+	 * 상품 구매등급 조회
+	 * @param goods
+	 * @return
+	 * @author xodud1202
+	 * @since 2020. 05. 20
+	 */
+	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
 }

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

@@ -78,6 +78,7 @@ public class TsfCartService {
 			login = TsfSession.getInfo();
 		} else {
 			login.setCustNo(0);
+			login.setCustGrade("G110");
 		}
 
 		String goodsType = params.iterator().next().getGoodsType();
@@ -127,6 +128,30 @@ public class TsfCartService {
 						return result;
 					}
 
+					// 상품 구매 가능 등급 조회
+					Collection<Goods> gradeList = goodsDao.getGoodsDetailOrderGradeList(goods);
+					// 구매가능 등급이 없으면 전체 구매 가능
+					if(gradeList != null && gradeList.size() > 0) {
+						// 구매가능 등급이 존재하면 비회원은 구매 불가. 회원은 등급체크.
+						if(login.getCustNo() > 0) {
+							boolean chkGrade= false;
+							for(Goods grade : gradeList) {
+								if(grade.getCustGrade().equals(login.getCustGrade())) {
+									chkGrade = true;
+								}
+							}
+
+							// 구매가능 등급이 아니면 장바구니 등록 X
+							if(!chkGrade) {
+								result.put("message", "해당 상품을 구매 하실 수 없는 등급입니다.");
+								return result;
+							}
+						} else {
+							result.put("message", "해당 상품을 구매 하실 수 없는 등급입니다.");
+							return result;
+						}
+					}
+
 					// 상품 재고 확인
 					GoodsStock checkParam = new GoodsStock();
 					checkParam.setGoodsCd(param.getGoodsCd());
@@ -188,6 +213,30 @@ public class TsfCartService {
 					return result;
 				}
 
+				// 상품 구매 가능 등급 조회
+				Collection<Goods> gradeList = goodsDao.getGoodsDetailOrderGradeList(goods);
+				// 구매가능 등급이 없으면 전체 구매 가능
+				if(gradeList != null && gradeList.size() > 0) {
+					// 구매가능 등급이 존재하면 비회원은 구매 불가. 회원은 등급체크.
+					if(login.getCustNo() > 0) {
+						boolean chkGrade= false;
+						for(Goods grade : gradeList) {
+							if(grade.getCustGrade().equals(login.getCustGrade())) {
+								chkGrade = true;
+							}
+						}
+
+						// 구매가능 등급이 아니면 장바구니 등록 X
+						if(!chkGrade) {
+							result.put("message", "해당 상품을 구매 하실 수 없는 등급입니다.");
+							return result;
+						}
+					} else {
+						result.put("message", "해당 상품을 구매 하실 수 없는 등급입니다.");
+						return result;
+					}
+				}
+
 				// 상품 재고 확인
 				GoodsStock checkParam = new GoodsStock();
 				checkParam.setGoodsCd(param.getGoodsCd());

+ 104 - 0
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -1070,4 +1070,108 @@ public class TsfCustomerService {
 		result.set("nextCustGradePolicy", nextCustGradePolicy);
 		return result;
 	}
+
+	/*
+	 * 앱푸시수신여부
+	 *
+	 * @return String - 앱수신여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	public String getAppAgreeYn() {
+		if (!TsfSession.isLogin()) {
+			return  "N";
+		}
+
+		Customer customer = getCustomerFindByCustNo(TsfSession.getInfo().getCustNo());
+		if (customer != null) {
+			return  customer.getAppAgreeYn();
+		}
+
+		return "N";
+	}
+
+	/*
+	 * 앱마케팅수신여부
+	 *
+	 * @return String - 앱수신여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	public String getAppMkAgreeYn() {
+		if (!TsfSession.isLogin()) {
+			return  "N";
+		}
+		Customer customer = getCustomerFindByCustNo(TsfSession.getInfo().getCustNo());
+		if (customer != null) {
+			return customer.getMkAgreeYn();
+		}
+		return "N";
+	}
+
+	/*
+	 * 앱푸시수신동의여부 변경
+	 *
+	 * @return String - 앱수신여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void updateAppAgreeYn(String appAppAgreeYn) {
+		if (!TsfSession.isLogin()) {
+			throw new IllegalStateException("로그인 후 다시 시도하시기 바랍니다.");
+		}
+
+		Integer custNo = TsfSession.getInfo().getCustNo();
+		Customer customer = getCustomerFindByCustNo(custNo);
+
+		if (customer != null) {
+			if (!customer.getAppAgreeYn().equals(appAppAgreeYn)) {
+				Customer custInfo = new Customer();
+				custInfo.setCustNo(custNo);
+				custInfo.setAppAgreeYn(appAppAgreeYn);
+				custInfo.setRegNo(custNo);
+				custInfo.setUpdNo(custNo);
+				coreCustomerService.createCustomerMarketHst(custInfo);
+
+				coreCustomerService.createCustomerHistory(custInfo);
+
+				customerDao.updateAppAgreeYn(custInfo);
+			}
+		}
+	}
+
+	/*
+	 * 앱마케팅수신여부 변경
+	 *
+	 * @return String - 앱수신여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void updateMkAgreeYn(String mkAgreeYn) {
+		if (!TsfSession.isLogin()) {
+			throw new IllegalStateException("로그인 후 다시 시도하시기 바랍니다.");
+		}
+
+		Integer custNo = TsfSession.getInfo().getCustNo();
+		Customer customer = getCustomerFindByCustNo(custNo);
+
+		if (customer != null) {
+			if (!customer.getMkAgreeYn().equals(mkAgreeYn)) {
+				Customer custInfo = new Customer();
+				custInfo.setCustNo(custNo);
+				custInfo.setMkAgreeYn(mkAgreeYn);
+				custInfo.setRegNo(custNo);
+				custInfo.setUpdNo(custNo);
+				coreCustomerService.createCustomerMarketHst(custInfo);
+
+				coreCustomerService.createCustomerHistory(custInfo);
+
+				customerDao.updateMkAgreeYn(custInfo);
+			}
+		}
+	}
+
+
 }

+ 18 - 17
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -370,14 +370,6 @@ public class TsfOrderService {
 					result.setOrdNo(Integer.parseInt(request.getParameter("ordr_idxx")));
 					result.setPayMeans(param.getPayMeans());
 				} else {
-					if(TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb()) && StringUtils.isNotEmpty(request.getParameter("param_opt_3"))) {
-						param.setPgOrdNo(request.getParameter("ordr_idxx"));
-						param.setOrdNo(Integer.parseInt(request.getParameter("param_opt_3")));
-					} else if(TscConstants.FrontGb.PC.value().equals(TsfSession.getFrontGb())) {
-						param.setPgOrdNo(request.getParameter("ordr_idxx"));
-						param.setOrdNo(param.getOrgOrdNo());
-					}
-
 					// 일반 KCP 결제
 					result = coreKcpService.kcpPayRequest(param, request, response);
 				}
@@ -407,11 +399,8 @@ public class TsfOrderService {
 				result.setPayGb(param.getPayGb());
 			}
 
-			result.setPaySq(param.getPaySq());
-			result.setOrdChgSq(param.getOrdChgSq());
-
 			// TB_PAYMENT 등록. 실패시 PG 환불.
-			if(coreOrderDao.insertPayment(result) < 1) {
+			if(coreOrderDao.updatePaymentOrderComplete(result) < 1) {
 				if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
 					if(TscConstants.PayMeans.GIFTCARD.value().equals(param.getPayMeans())) {
 						// 상품권 100% 결제 (PG PASS)
@@ -588,15 +577,28 @@ public class TsfOrderService {
 		// TB_PAYMENT 우선 입력
 		Payment prePay = new Payment();
 		prePay.setOrdNo(order.getOrdNo());
-		prePay.setPgGb(order.getPgGb());
 		prePay.setPayMeans(order.getPayMeans());
-
+		prePay.setPayAmt(order.getPayAmt());
+		prePay.setPayStat(TscConstants.PaymentStat.PAYMENT_WAIT.value());
+		prePay.setPgGb(order.getPgGb());
+		prePay.setCustNo(order.getCustNo());
+		prePay.setRegNo(order.getCustNo());
+		prePay.setUpdNo(order.getCustNo());
 
 		// 상품권 100% 결제일 경우 PgGb STYLE24로 변경
-		if(TscConstants.PayMeans.CREDIT_CARD.value().equals(order.getPayMeans())) {prePay.setPgGb(TscConstants.PgGb.ISTYLE.value());}
+		if(TscConstants.PayMeans.GIFTCARD.value().equals(order.getPayMeans())) {prePay.setPgGb(TscConstants.PgGb.ISTYLE.value());}
+
+		// 주문데이터인지, 추가배송비 결제 데이터인지 확인
+		if(order.getOrdChgSq() != null && order.getOrdChgSq() > 0) {
+			prePay.setPayGb("D");
+			prePay.setOrdChgSq(order.getOrdChgSq());
+		} else {
+			prePay.setPayGb("O");
+		}
 
-		// TODO TB_PAYMENT INSERT
+		coreOrderDao.insertPayment(prePay);
 
+		// PG 송부 데이터 세팅
 		Payment payment;
 		order.setFrontGb(TsfSession.getFrontGb());
 		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
@@ -611,7 +613,6 @@ public class TsfOrderService {
 			throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
 		}
 
-		// TODO TB_PAYMENT INSERT
 		payment.setPgGb(order.getPgGb());
 		payment.setPayMeans(order.getPayMeans());
 		return payment;

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

@@ -145,9 +145,9 @@ public class TsfPlanningService {
 		}
 		
 		if (TsfSession.isLogin()) {
-			
+			String grade = TsfSession.getInfo().getCustGrade();
 			// 신규회원접근가능여부 조회
-			if (TsfSession.getInfo().getCustGrade().equals("G110_50")) {
+			if (grade.equals("G110_50")) {
 				plan.setCustNo(TsfSession.getInfo().getCustNo());
 				if ("N".equals(planningDao.getNewCustomerAccessibleYn(plan))) {
 					msg = "신규회원만 접근 가능합니다.";

+ 3 - 1
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -289,7 +289,7 @@ public class TsfReviewService {
 		
 		// 첨부파일
 		for(Review loopReview : reviewList) {
-			loopReview.setRvAtcSq(review.getRvAtcSq());
+			/* loopReview.setRvAtcSq(review.getRvAtcSq()); */
 			loopReview.setReviewAttachList(reviewDao.getReviewAttachList(loopReview));
 			loopReview.setGoodsOptionList(reviewDao.getReviewGoodsOptionList(loopReview));
 		}
@@ -310,12 +310,14 @@ public class TsfReviewService {
 		review.setRegNo(TsfSession.getInfo().getCustNo());
 		review.setUpdNo(TsfSession.getInfo().getCustNo());		
 		review.setConfirmYn("Y");
+		review.setReviewGb("R");
 		reviewDao.updateMypageReview(review);
 		reviewDao.reviewAttachDelete(review);
 		
 		//이미지등록
 		if(!StringUtils.isAllEmpty(review.getOrgFileNmArr())) {
 			review.setConfirmYn("Y");
+			review.setReviewGb("P");
 			ReviewAttach fileReview = new ReviewAttach();
 			fileReview.setRegNo(TsfSession.getInfo().getCustNo());
 			fileReview.setUpdNo(TsfSession.getInfo().getCustNo());

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

@@ -984,4 +984,56 @@ public class TsfCustomerController extends TsfBaseController {
 		return super.ok(message.getMessage("SUCC_0004"));
 	}
 
+	/**
+	 * 모바일 설정 화면
+	 *
+	 * @author jsshin
+	 * @since 2020. 5. 11
+	 */
+	@GetMapping("/setting/form")
+	public ModelAndView getSettingForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 정책에 등록된 앱버전
+		if (TsfSession.getAttribute("osType").equals("I")) {
+			mav.addObject("regAppVersion","1.0");
+		} else if (TsfSession.getAttribute("osType").equals("A")) {
+			mav.addObject("regAppVersion","1.0");
+		}
+
+		// 앱푸시수신동의 가져오기
+		mav.addObject("appAgreeYn", customerService.getAppAgreeYn());
+		mav.addObject("appMkAgreeYn", customerService.getAppMkAgreeYn());
+
+		mav.setViewName("mob/customer/SettingFormMob");
+		return mav;
+	}
+
+	/**
+	 * 앱푸시 수신동의
+	 *
+	 * @param  customer - 수신동의 여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	@PostMapping("/appagree/update")
+	@ResponseBody
+	public GagaResponse updateAppAgreeYn(@RequestBody Customer customer) {
+		customerService.updateAppAgreeYn(customer.getAppAgreeYn());
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
+
+	/**
+	 * 앱마케팅 수신동의
+	 *
+	 * @param  customer - 수신동의 여부
+	 * @author jsshin
+	 * @since 2021. 05. 20
+	 */
+	@PostMapping("/mkagree/update")
+	@ResponseBody
+	public GagaResponse updateMkAgreeYn(@RequestBody Customer customer) {
+		customerService.updateMkAgreeYn(customer.getMkAgreeYn());
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
 }

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

@@ -102,6 +102,11 @@ public class TsfPlanningController extends TsfBaseController {
 
 		mav.addObject("cateNo", cateNo);
 		mav.addObject("brandGroupNo", brandGroupNo);
+		if(!"".equals(brandGroupNo)){
+			mav.addObject("brandGroupInfo", displayService.getGnbBrandGroup(brandGroupNo));
+		}else{
+			mav.addObject("brandGroupInfo", null);
+		}
 
 		return mav;
 	}

+ 7 - 7
src/main/java/com/style24/front/support/interceptor/TsfDefaultInterceptor.java

@@ -23,7 +23,7 @@ import com.gagaframework.web.util.GagaStringUtil;
 @Slf4j
 public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 
-	private static final String APP_PREFIX = "style24@";
+	private static final String APP_PREFIX = "istyle24@";
 
 //	@Autowired
 //	private TsfPolicyService policyService;
@@ -39,10 +39,10 @@ public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 //		// 설정된 HTTPS 페이지 확인 (사이트 전체가 SSL 적용이 되어야 함으로 해당 부분 체크로직 주석 처리)
 //		String requestUrl = request.getRequestURL().toString();
 //		boolean bHttpsPage = this.isHttpsPage(isSslServer, requestUrl, request.getRequestURI());
-//		log.debug("bHttpsPage: [{}]", bHttpsPage);
+//		log.info("bHttpsPage: [{}]", bHttpsPage);
 //		if (bHttpsPage) {
 //			requestUrl = requestUrl.replace("http://", "https://");
-//			log.debug("requestUrl: [{}]", requestUrl);
+//			log.info("requestUrl: [{}]", requestUrl);
 //			response.sendRedirect(requestUrl);
 //			return false;
 //		}
@@ -50,7 +50,7 @@ public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 //		String queryString = GagaStringUtil.convertParameterToQueryString(request.getParameterMap());
 //		if (StringUtils.isNotBlank(queryString))
 //			queryString = "?" + queryString;
-//		log.debug("queryString: [{}]", queryString);
+//		log.info("queryString: [{}]", queryString);
 
 		// Set APP Info.
 		this.setAppInfo(request);
@@ -84,7 +84,7 @@ public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 			return false;
 
 		for (String httpsUrl : httpsUrls) {
-			log.debug("requestUri: {}, httpsUrl: {}", requestUri, httpsUrl);
+			log.info("requestUri: {}, httpsUrl: {}", requestUri, httpsUrl);
 			if (requestUri.startsWith(httpsUrl)) {
 				return true;
 			}
@@ -96,13 +96,13 @@ public class TsfDefaultInterceptor extends HandlerInterceptorAdapter {
 	/**
 	 * UserAgent 값을 이용한 APP 설정
 	 * 		APP에서 접속 시 다음과 같이 UserAgent 값이 들어옴.
-	 * 		예) Mozilla/5.0 (Linux; Android 10; Android SDK built for x86 Build/QSR1.190920.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.185 Mobile Safari/537.36,wivismall@WIVIS_1.0.5
+	 * 		예) Agent : Mozilla/5.0 (Linux; Android 10; Android SDK built for x86 Build/QSR1.190920.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.185 Mobile Safari/537.36,istyle24@style24_1.0.0
 	 * @param request
 	 */
 	private void setAppInfo(HttpServletRequest request) {
 		// User Agent
 		String userAgent = request.getHeader("User-Agent").toLowerCase();
-		log.debug("userAgent: [{}]", userAgent);
+		log.info("userAgent: [{}]", userAgent);
 
 		if (userAgent.indexOf("iphone") > -1 ||
 			userAgent.indexOf("ipod") > -1 ||

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

@@ -20,6 +20,7 @@ public class BrandGroup extends TscBaseDomain {
 	private String brandGroupKnm;	// 브랜드그룹한글명
 	private String brandGroupNm;	// 전시브랜드그룹명
 	private String logoFileNm;		// 로고파일명
+	private String bwLogoFileNm;	// 흑백로고파일명
 	private int dispOrd;			// 표시순서
 	private String rgbCd;			// RGB코드(front 브랜드메인 GNB 색상)
 	private String defaultCateYn;	// 기본카테고리여부

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

@@ -109,6 +109,7 @@ public class Review extends TscBaseDomain {
 	private String kmcKey;
 	private String kufKey;
 	private Integer rvAtcSq;
+	private String ordDt;
 	
 	private Integer custPntSq;		// 고객포인트일련번호
 	private int gvPntAmt;			// 지급포인트금액

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

@@ -176,7 +176,6 @@
 		ON    CGP.GRADE_CPN_ID1 = CP.CPN_ID
 		WHERE CGP.GRADE_CD = #{custGrade}
 		AND   CP.SITE_CD = #{siteCd}
-		AND   CP.CPN_STAT = 'G232_11'
 	</select>
 	
 	<!--상품 쿠폰 조회-->
@@ -961,6 +960,7 @@
 		     , Z.CPN_CNT                               /*보유쿠폰수*/
 		     , Z.EXPIRE_YN                             /*만료여부*/
 		     , GROUP_CONCAT(Z.TGT_CONDITION) AS TGT_CONDITION
+		     , Z.CUST_CPN_SQ
 		FROM
 		(
 		WITH TAB_COUPON AS (
@@ -988,6 +988,7 @@
 		         , CC.AVAIL_EDDT                      /*유효종료일자*/
 		         , CC.CPN_CNT                         /*보유쿠폰수*/
 		         , CC.EXPIRE_YN                       /*만료여부*/
+		         , CC.CUST_CPN_SQ 
 		    FROM   (
 		            SELECT CC.CPN_ID
 		                 , DATE_FORMAT(CC.AVAIL_STDT,'%Y.%m.%d %H:%i') AS AVAIL_STDT  /*유효시작일자*/
@@ -996,6 +997,7 @@
 		                 , MAX(CASE WHEN NOW() > CC.AVAIL_EDDT THEN 'Y'
 		                            ELSE 'N'
 		                       END)                              AS EXPIRE_YN /*만료여부*/
+		                 , MAX(CC.CUST_CPN_SQ) AS CUST_CPN_SQ
 		            FROM   TB_CUST_COUPON CC
 		            WHERE  1 = 1
 		            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')
@@ -1059,6 +1061,7 @@
 		                              WHEN CR.CPN_TARGET = 'G260_13' AND CR.CNT > 1 THEN ' 외'
 		                              ELSE ''
 		                         END) AS TGT_CONDITION /*대상조건*/
+		     , C.CUST_CPN_SQ
 		FROM   TAB_COUPON C
 		     , TAB_COUPON_REFVAL2 CR
 		WHERE  C.CPN_ID = CR.CPN_ID
@@ -1077,6 +1080,7 @@
 		        , Z.AVAIL_EDDT                            /*유효종료일자*/
 		        , Z.CPN_CNT                               /*보유쿠폰수*/
 		        , Z.EXPIRE_YN                             /*만료여부*/
+		        , Z.CUST_CPN_SQ
 	</select>
 	
 	<select id="getPlanCouponDetailInfo" resultType="Coupon" parameterType="Coupon">
@@ -1296,6 +1300,8 @@
 		      ,C.TOT_PUB_LIMIT_QTY
 		      ,C.MAX_DC_AMT 
 		      ,C.FIRST_ORD_YN
+		      ,DATE_FORMAT(C.BUY_STDT, '%Y%m%d') AS BUY_STDT
+		      ,DATE_FORMAT(C.BUY_EDDT, '%Y%m%d') AS BUY_EDDT
 		      , IFNULL((SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO = #{custNo}),0) AS CUST_COUPON_CNT
 		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
 		                   ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
@@ -1324,7 +1330,7 @@
 		AND    C.CPN_ID = #{cpnId}
 		</if>
 		AND C.SITE_CD = #{siteCd}
-		AND C.CPN_TYPE IN ('G230_20','G230_30')
+		AND C.CPN_TYPE IN ('G230_20','G230_30','G230_11')
 		AND C.DOWN_ABL_YN = 'Y'
 		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
 		AND NOW()  <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
@@ -1332,6 +1338,8 @@
 		         WHEN 'M' = 'P' THEN C.DC_MVAL
 		     ELSE C.DC_AVAL END) > 0                  -- PC, MOBILE,APP 별로 0 보다 큰 쿠폰
 		AND IF (C.TOT_PUB_LIMIT_QTY = 0, 9999999999,C.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID) -- 총발행제한수
+		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 -- 첫구매 
+		AND IF (C.NEW_CUST_YN = 'Y', (SELECT COUNT(*) FROM TB_CUSTOMER WHERE CUST_NO = #{custNo} AND JOIN_DT BETWEEN C.CUST_JOIN_STDT AND C.CUST_JOIN_EDDT), 1) = 1 -- 신규회원
 		<if test='quickYn == "N" and quickYn != ""'>
 		AND IF (C.CUST_PUB_LIMIT_QTY = 0, 9999999999,C.CUST_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = C.CPN_ID AND CUST_NO= #{custNo}) -- 고객당발행제한수량
 		</if>

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

@@ -703,4 +703,26 @@
 		AND    EMAIL_AGREE_YN = 'Y' /*현재수신동의인경우*/
 	</update>
 
+	<!--앱수신여부-->
+	<update id="updateAppAgreeYn" parameterType="Customer">
+		/* TsfCustomer.updateAppAgreeYn */
+		UPDATE TB_CUSTOMER
+		SET    APP_AGREE_YN = #{appAgreeYn}
+		     , APP_AGREE_DT = NOW()
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  CUST_NO = #{custNo}
+	</update>
+
+	<!--앱마케팅 수신여부-->
+	<update id="updateMkAgreeYn" parameterType="Customer">
+		/* TsfCustomer.updateMkAgreeYn */
+		UPDATE TB_CUSTOMER
+		SET    MK_AGREE_YN = #{mkAgreeYn}
+		     , MK_AGREE_DT = NOW()
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  CUST_NO = #{custNo}
+	</update>
+
 </mapper>

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

@@ -23,6 +23,7 @@
 		            ELSE A.BRAND_GROUP_KNM
 		       END              AS BRAND_GROUP_NM
 		     , A.LOGO_FILE_NM
+		     , A.BW_LOGO_FILE_NM
 		     , B.DISP_ORD
 		FROM   TB_BRAND_GROUP A
 		<choose>

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

@@ -2051,7 +2051,7 @@
 		            AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
 		        </if>
 		       ) G
-		        INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/ AND    O.DISP_YN = 'Y'
+		        INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND    O.DISP_YN = 'Y' <!--AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/-->
 		        <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
 		            AND    O.OPT_CD1 IN (SELECT COLOR_CD
 		            FROM   TB_COLOR
@@ -2223,7 +2223,7 @@
 					AND    ((IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) - G.CURR_PRICE) / IF(G.LIST_PRICE = 0,0,G.LIST_PRICE) * 100) <![CDATA[<=]]> #{dcRateTo}
 				</if>
 		      ) G
-			  INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/ AND    O.DISP_YN = 'Y'
+			  INNER JOIN TB_OPTION O ON G.GOODS_CD = O.GOODS_CD AND    O.DISP_YN = 'Y' <!--AND G.SELF_GOODS_YN = 'Y' /*자사상품만*/-->
 			  <if test="colorArr != null and colorArr.length > 0"> <!-- 색상 -->
 					AND    O.OPT_CD1 IN (SELECT COLOR_CD
 					FROM   TB_COLOR
@@ -3020,4 +3020,16 @@
 		    AND W.CUST_NO = #{custNo}
 		</if>
 	</select>
+
+	<!-- 상품 등급 리스트 조회 -->
+	<select id="getGoodsDetailOrderGradeList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getGoodsDetailOrderGradeList */
+		SELECT  G.GOODS_CD
+			 , A.CUST_GRADE
+			 , FN_GET_CODE_NM('G101', A.CUST_GRADE) AS CUST_GRADE_NAME
+		FROM TB_GOODS_ORDER_GRADE A
+				 INNER JOIN TB_GOODS G ON A.GOODS_CD = G.GOODS_CD
+		WHERE A.GOODS_CD = #{goodsCd}
+		ORDER BY G.GOODS_CD, A.CUST_GRADE
+	</select>
 </mapper>

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

@@ -511,9 +511,7 @@
 		SELECT COUNT(*) 
 		FROM TB_ORDER
 		WHERE CUST_NO = #{custNo}
-		<if test="buyStdt != null and buyStdt != ''">
 		AND ORD_DT BETWEEN CONCAT(#{buyStdt}, '000000') and CONCAT(#{buyEddt}, '235959')
-		</if>
 	</select>
 	
 	<!-- 보유쿠폰체크 -->

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

@@ -1477,6 +1477,7 @@
 		      ,DATE_FORMAT(ENTRY_DT,'%e') AS ENTRY_DT 
 		FROM TB_PLAN_ENTRY
 		WHERE 1=1 
+		AND DATE_FORMAT(ENTRY_DT,'%Y-%m') IN (SELECT DATE_FORMAT(P.DISP_STDT, '%Y-%m')  FROM TB_PLAN P WHERE PLAN_SQ = #{planSq})
 		AND PLAN_SQ = #{planSq}
 		AND ENTRY_CUST_NO = #{custNo}
 	</select>

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

@@ -298,10 +298,10 @@
 		     OR
 		     FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  NULLIF(KMC_KEY,'') IS NOT NULL
 		    )
-		<if test="rvAtcSq != null and rvAtcSq != ''">
+		<!-- <if test="rvAtcSq != null and rvAtcSq != ''">
 		ORDER BY FIELD(A.RV_ATC_SQ, #{rvAtcSq})DESC
 		        ,RV_ATC_SQ ASC 
-		</if>
+		</if> -->
 	</select>
 	
 	<!-- 상품평 상품 옵션 목록 -->
@@ -1021,7 +1021,7 @@
 		             , Z.ADM_RPL
 		             , Z.ADM_RPL_REG_NO
 		             , Z.ADM_RPL_DT
-		             , ROW_NUMBER() OVER(ORDER BY Z.REG_DT DESC) AS RNUM
+		             , ROW_NUMBER() OVER(ORDER BY Z.ORD_DT DESC) AS RNUM
 		       FROM (SELECT O.ORD_NO
 		                  , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
 		                  , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
@@ -1148,9 +1148,8 @@
 		  LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
 		                               AND C.USE_YN = 'Y'
 		     WHERE 1=1
-		   AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
+		   AND O.ORD_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
 		   AND O.CUST_NO =  #{custNo}
-		   AND O.DISP_YN = 'Y'
 		   AND R.CONFIRM_YN = 'Y'
 		   AND OD.ORD_DTL_NO IN (SELECT R.ORD_DTL_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y' AND R.ORD_NO = O.ORD_NO AND R.ORD_DTL_NO = OD.ORD_DTL_NO AND R.CUST_NO = #{custNo})
 		   AND O.SITE_CD =  #{siteCd}
@@ -1160,7 +1159,7 @@
 		        , Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
 		        , Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM, Z.ORD_DTL_STAT_NM
 		        , Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY, Z.REVIEW_SQ 
-		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
+		ORDER BY Z.ORD_NO DESC
 		<include refid="selectForPagingFooter"/>
 		</select>
 	

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

@@ -153,7 +153,11 @@
 	// 로그인 후 처리
 	var fnReloadAfterLogin = function(result) {
 		if (result.status === 'OK') {
-			document.location.href = result.returnUrl;
+			if (_isApp === 'true') {
+				document.location.href = "idsend://?id=" + result.custNo + "^link=" + result.returnUrl;
+			} else {
+				document.location.href = result.returnUrl;
+			}
 		} else {
 			fnFailLoginProcess(result);
 		}

+ 5 - 1
src/main/webapp/WEB-INF/views/mob/SnsCallBackFormMob.html

@@ -84,7 +84,11 @@
 	// 로그인 후 처리
 	var fnReloadAfterLogin = function(result) {
 		if (result.status === 'OK') {
-			document.location.href = result.returnUrl;
+			if (_isApp === 'true') {
+				document.location.href = "idsend://?id=" + result.custNo + "^link=" + result.returnUrl;
+			} else {
+				document.location.href = result.returnUrl;
+			}
 		} else {
 			fnFailLoginProcess(result);
 		}

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -68,7 +68,7 @@
 	<div id="menuFull">
 		<div class="fullHead">
 			<div class="goHome"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);"><img src="/images/mo/logo_STYLE24_full.png" alt=""></a></div>
-			<a href="javascript:void(0);" class="appSett" th:if="${isApp == true}">AppSetting</a>
+			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_CUSTOMER_SETTING);" class="appSett" th:if="${isApp == 'true'}">AppSetting</a>
 			<a href="javascript:menu_cls();" class="menu_cls">close</a>
 		</div>
 		<div class="fullBody">

+ 4 - 4
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html

@@ -36,9 +36,7 @@
 		<section class="hmenu">
 			<div class="inner scrollWrap">
 				<nav class="bng">
-					<ul class="d1">
-						<li id="liGnbBrandGrp">
-						</li>
+					<ul class="d1" id="liGnbBrandGrp">
 					</ul>
 				</nav>
 			</div>
@@ -138,9 +136,11 @@
 						$('#liGnbBrandGrp').html('');
 						let tag = '';
 						$.each(result, function (idx, item) {
+							tag += '<li>\n';
 							tag += '<a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + item.brandGroupNo + ');">\n';
-							tag += item.brandGroupNm + '<span><img src="' + _uploadDefaultUrl + item.logoFileNm + '" alt="' + item.brandGroupNm + '"></span>\n';
+							tag += item.brandGroupNm + '<span><img src="' + _uploadDefaultUrl + item.bwLogoFileNm + '" alt="' + item.brandGroupNm + '"></span>\n';
 							tag += '</a>\n';
+							tag += '</li>\n';
 						});
 						$('#liGnbBrandGrp').html(tag);
 					}

+ 36 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubAppMob.html

@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GnbSubMob.html
+ * @desc    : GNB Sub (모바일용)
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.08   gagamel     최초 작성
+ *******************************************************************************
+ -->
+<th:block th:fragment="gnb">
+	<a href="#mainCon" class="skipNav">본문바로가기</a>
+	<header class=""> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
+		<section class="htop" id="htopSub">
+			<button class="btn_back" title="이전페이지로">
+				<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
+			</button>
+			<h1 id="htopTitle"></h1>
+		</section>
+	</header>
+	
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+/*]]>*/
+</script>
+
+</th:block>
+
+</html>

+ 0 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubPlanningMob.html → src/main/webapp/WEB-INF/views/mob/common/fragments/GnbSubBrandMob.html


+ 35 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/AppLayoutMob.html

@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
+
+<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
+
+<body>
+
+	<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
+	
+	<div class="app">
+
+		<th:block th:replace="~{mob/common/fragments/GnbSubAppMob :: gnb}"></th:block>
+
+		<!-- CONTENT AREA -->
+		<th:block layout:fragment="content"></th:block>
+		<!-- // CONTENT AREA -->
+
+		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+
+		<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	$(document).ready(function() {
+		
+	});
+/*]]>*/
+</script>
+
+	</div>
+	
+</body>
+</html>

+ 35 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/BrandLayoutMob.html

@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
+
+<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
+
+<body>
+
+<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
+<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+<div class="app">
+	<!-- GNB -->
+	<th:block th:replace="~{mob/common/fragments/GnbSubBrandMob :: gnb}"></th:block>
+	<!--// GNB -->
+
+	<!-- CONTENT AREA -->
+	<th:block layout:fragment="content"></th:block>
+	<!-- // CONTENT AREA -->
+
+	<!-- Footer -->
+	<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	$(document).ready(function() {
+		
+	});
+/*]]>*/
+</script>
+
+</div>
+
+</body>
+</html>

+ 201 - 0
src/main/webapp/WEB-INF/views/mob/customer/SettingFormMob.html

@@ -0,0 +1,201 @@
+<!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/AppLayoutMob">
+
+<!--
+ *******************************************************************************
+ * @source  : JoinTypeFormMob.html
+ * @desc    : 회원정보 입력 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.16   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<main class="container app-only">
+	<!-- APP Setting -->
+	<!-- ★ 컨텐츠 시작 -->
+	<section class="sett">
+		<form action="" class="form_wrap">
+			<div class="inner">
+				<div class="form_field">
+					<dl>
+						<dd>
+							<div class="setItems">
+								<span class="set_opt">정보성 PUSH 알림</span>
+								<div class="switch">
+									<input id="btnPushSetting" type="checkbox" th:checked="${appAgreeYn == 'Y'}"/>
+									<label for="btnPushSetting"></label>
+								</div>
+							</div>
+							<p>재입고 알림, 주문, 배송정보 등 내 상품 정보 및 공지를 안내 받으실 수 있습니다.</p>
+							<p class="pot">기기 알림에 관한 설정은 '휴대폰 설정>알림>스타일24'에서 변경할 수 있습니다.</p>
+						</dd>
+						<dd>
+							<div class="setItems">
+								<span class="set_opt">마케팅 PUSH 수신동의</span>
+								<div class="switch">
+									<input id="btnMkSetting" type="checkbox" th:checked="${appMkAgreeYn == 'Y'}" />
+									<label for="btnMkSetting"></label>
+								</div>
+							</div>
+							<p>PUSH 알림 수신에 동의하시면 이벤트, 쿠폰, 할인 안내 등 다양한 소식을 받으실 수 있습니다.</p>
+						</dd>
+						<dd>
+							<div class="setItems">
+								<span class="set_opt">알림함</span>
+								<div class="alink">
+									<a href="javascript:void(0);"></a>
+								</div>
+							</div>
+						</dd>
+					</dl>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="form_field">
+					<dl>
+						<dd>
+							<div class="setItems">
+								<span class="set_opt">현재버전 <em th:text="${appVersion}">1.0</em></span>
+								<span class="alink">
+									<th:block th:if="${appVersion != regAppVersion}">
+										<th:block th:if="${osType == 'A'}">
+											<input id="chk-2" type="button">
+											<label for="chk-2">
+												<span></span>
+											</label>
+										</th:block>
+										<th:block th:if="${osType == 'I'}">
+											<input id="chk-3" type="button">
+											<label for="chk-3">
+												<span></span>
+											</label>
+										</th:block>
+									</th:block>
+									<th:block th:unless="${appVersion != regAppVersion}">
+										<input id="chk-4" type="button" disabled>
+										<label for="chk-4">
+											<span></span>
+										</label>
+									</th:block>
+								</span>
+							</div>
+						</dd>
+					</dl>
+				</div>
+			</div>
+		</form>
+	</section>
+	<!-- ★ 컨텐츠 종료 -->
+</main>
+
+
+<script th:inline="javascript">
+	$(document).ready(function(){
+		$('#htopTitle').text('설정');
+
+		// 앱으로 푸시 상태값 조회. 앱에서 settingsSwtichPush 함수를 호출함.
+		if (_isApp === 'true') {
+			if (_osType === 'A') {
+			window.style24.isAdEnable();
+			} else if (_osType === 'I') {
+				// 아래와 같이 호출 시 settingsSwtichPush 함수가 앱에서 호출됨
+				window.webkit.messageHandlers.isAdEnable.postMessage({"dummy":"dummy"});
+			}
+		}
+
+	});
+
+
+	// 앱에서 호출되는 함수(앱푸시)
+	var settingsAppPush = function(onOff) {
+		if (onOff == 'ON') {
+			$('#btnPushSetting').prop('checked', true);
+		} else if (onOff == 'OFF') {
+			$('#btnPushSetting').prop('checked', false);
+		}
+	}
+
+	// 앱에서 호출되는 함수(마케팅동의)
+	var settingsMkPush = function (onOff) {
+		if (onOff == 'ON') {
+			$('#btnMkSetting').prop('checked', true);
+		} else if (onOff == 'OFF') {
+			$('#btnMkSetting').prop('checked', false);
+		}
+	}
+
+	$('#btnPushSetting').on('click', function() {
+		let appAgreeYn;
+		if (_isApp === 'true') {
+			if ($(this).is(":checked")) {
+				if (_osType == 'A') {
+					window.style24.adEnable('ON');
+				} else if (_osType == 'I') {
+					window.webkit.messageHandlers.adEnable.postMessage({"status":"ON"});
+				}
+				appAgreeYn = 'Y';
+			} else {
+				if (_osType == 'A') {
+					window.style24.adEnable('OFF');
+				} else if(_osType == 'I') {
+					window.webkit.messageHandlers.adEnable.postMessage({"status":"OFF"});
+				}
+				appAgreeYn = 'N';
+			}
+			let params = {}
+			params.appAgreeYn = appAgreeYn;
+			let jsonData = JSON.stringify(params);
+			gagajf.ajaxJsonSubmit('/customer/appagree/update', jsonData);
+		}
+	});
+
+	$('#btnMkSetting').on('click', function() {
+		let mkAgreeYn;
+		if (_isApp === 'true') {
+			if ($(this).is(":checked")) {
+				if (_osType == 'A') {
+					window.style24.adEnable('ON');
+				} else if (_osType == 'I') {
+					window.webkit.messageHandlers.adEnable.postMessage({"status":"ON"});
+				}
+				mkAgreeYn = 'Y';
+			} else {
+				if (_osType == 'A') {
+					window.style24.adEnable('OFF');
+				} else if(_osType == 'I') {
+					window.webkit.messageHandlers.adEnable.postMessage({"status":"OFF"});
+				}
+				mkAgreeYn = 'N';
+			}
+			let params = {}
+			params.mkAgreeYn = mkAgreeYn;
+			let jsonData = JSON.stringify(params);
+			gagajf.ajaxJsonSubmit('/customer/mkagree/update', jsonData);
+		}
+	});
+
+
+	// 안드로이드 앱
+	$('#chk-2').on('click', function () {
+		document.location.href='update://?link=https://play.google.com/store/apps/details?id=';
+	});
+
+	// 아이폰앱
+	$('#chk-3').on('click', function () {
+		document.location.href='update://?link=https://apps.apple.com/kr/app/';
+	});
+
+</script>
+</th:block>
+</body>
+
+</html>

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

@@ -37,7 +37,7 @@
 										<!-- 210506_추가 : 새창에 띄우기 -->
 										<a th:href="${ContentsData.strVar1}" th:target="${ContentsData.contentsType=='SELF'?'_self':'_blank'}" title="현재 창으로 열기">
 											<div class="img">
-												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
+												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath2}" alt="">
 											</div>
 											<div class="txtWrap">
 												<p class="bMainTitle">
@@ -552,71 +552,31 @@
 	$('.bMainTitle').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())){
-			var brText = $(this).find("input[name=mainTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
-			if(brText.indexOf('<br>') > -1){
-				var reText = brText.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-			}else{
-				tag += brText;
-			}
+			var brText = $(this).find("input[name=mainTitle]").val();
+			tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).append(tag);
 		}
 	});
 
 	// 브랜드소개 <br> 처리
 	if(!gagajf.isNull($("#brandDesc").find("input[name=brandTitle]").val())){
-		var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-		if(!gagajf.isNull(brandDesc)){
-			if(brandDesc.indexOf('<br>') > -1){
-				let tag = '';
-				var reText = brandDesc.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-				$("#brandDesc .cate").append(tag);
-			}else{
-				let tag = '';
-				tag += brandDesc;
-				$("#brandDesc .cate").append(tag);
-			}
-		}
+		var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val();
+		var tag = brandDesc.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		$("#brandDesc .cate").append(tag);
 	}
 
 	if(!gagajf.isNull($("#brandDesc").find("input[name=brandNote]").val())){
-		var brandDesc = $("#brandDesc").find("input[name=brandNote]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-		if(!gagajf.isNull(brandDesc)){
-			if(brandDesc.indexOf('<br>') > -1){
-				let tag = '';
-				var reText = brandDesc.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-				$("#brandDesc .desc").append(tag);
-			}else{
-				let tag = '';
-				tag += brandDesc;
-				$("#brandDesc .desc").append(tag);
-			}
-		}
+		var brandDesc = $("#brandDesc").find("input[name=brandNote]").val();
+		var tag = brandDesc.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		$("#brandDesc .desc").append(tag);
 	}
 
 	// 배너 슬라이더 <br> 처리
 	$('.bText').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=bannerDesc]").val())){
-			var brText = $(this).find("input[name=bannerDesc]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
-			if(brText.indexOf('<br>') > -1){
-				var reText = brText.split("<br>");
-				tag += reText[0];
-				tag += '</p>';
-				tag += '<p>';
-				tag += reText[1];
-				tag += '</p>';
-			}else{
-				tag += brText;
-			}
+			var brText = $(this).find("input[name=bannerDesc]").val();
+			tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).append(tag);
 		}
 	});

+ 128 - 72
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="mob/common/layout/DefaultLayoutMob">
+	  layout:decorator="mob/common/layout/BrandLayoutMob">
 <!--
  *******************************************************************************
  * @source  : CategoryGoodsListFormMob.html
@@ -149,13 +149,17 @@
 									</div>
 								</li>
 								<li class="price chkFilter" id="priceFilterDiv">
+									<input type="hidden" id="hPriceFrom" name="hPriceFrom" value=""/>
+									<input type="hidden" id="hPriceTo" name="hPriceTo" value=""/>
 									<a href="javascript:void(0)" class="daps1">가격<!--<span class="pic">230,000원~487,000원, 700,000원~990,000원</span>--></a>
 									<ul class="daps2" id="priceArea">
 									</ul>
 								</li>
 								<li class="discount chkFilter" id="dcRateFilterDiv">
+									<input type="hidden" id="hDcRateFrom" name="hDcRateFrom" value=""/>
+									<input type="hidden" id="hDcRateTo" name="hDcRateTo" value=""/>
 									<a href="javascript:void(0)" class="daps1">할인율</a>
-									<ul class="daps2">
+									<ul class="daps2" id="dcRateArea">
 										<li>
 											<a href="javascript:void(0)">
 												<div class="form_field">
@@ -409,7 +413,6 @@
 
 			// TOP 동일 카테고리
 			fnCreateDepthList();
-
 			// 상단노출 하위 카테고리
 			fnCreateCategoryList();
 
@@ -637,81 +640,96 @@
 			var tag = '';
 			$("#cateDepth").html('');
 
-			if(!gagajf.isNull(cate5No)){
-
-			}else if(!gagajf.isNull(cate4No)) {
-				$.each(cateList, function (idx, cate){
-					$.each(cate.cate2List, function (idx2,cate2){
-						if(cate2.leafYn == 'N' && cate2.cate3List != null){
-							$.each(cate2.cate3List, function (idx3, cate3){
-								if(cate3.leafYn == 'N' && cate3.cate4List != null){
-									$.each(cate3.cate4List, function (idx4, cate4){
-										if(cate4.cate4No == cate4No){
-											$("#htopTitle").append(fnDisplayTitle(cate4.cate4Nm));
+			let actionUrl = '';
+			if(gagajf.isNull(brandGroupNo) || brandGroupNo == 0){
+				if( [[${cateInfo.formalGb}]] == 'G009_20'){
+					actionUrl = '/display/outlet/cate/list?cate1No='+cate1No+'&formalGb='+ [[${cateInfo.formalGb}]];
+				}else{
+					actionUrl = '/display/category/reload/list?cateGb='+[[${cateInfo.cateGb}]];
+				}
+			}else{
+				actionUrl = '/display/brand/cate/list?brandGroupNo=' + [[${cateInfo.brandGroupNo}]];
+			}
+
+			$.getJSON(actionUrl, function (result, status){
+				if(result.length>0){
+					if(!gagajf.isNull(cate5No)){
+
+					}else if(!gagajf.isNull(cate4No)) {
+						$.each(result, function (idx, cate){
+							$.each(cate.cate2List, function (idx2,cate2){
+								if(cate2.leafYn == 'N' && cate2.cate3List != null){
+									$.each(cate2.cate3List, function (idx3, cate3){
+										if(cate3.leafYn == 'N' && cate3.cate4List != null){
+											$.each(cate3.cate4List, function (idx4, cate4){
+												if(cate4.cate4No == cate4No){
+													$("#htopTitle").append(fnDisplayTitle(cate4.cate4Nm));
+												}
+												if(cate4.cate3No==cate3No){
+													tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ' ';
+													if(formalGb=='G009_20'){
+														tag += ' ,\'\',\''+formalGb+'\'';
+													}
+													tag += ');">'+cate4.cate4Nm+'</a></li>';
+												}
+											});
+										}
+									});
+								}
+							});
+						});
+						$("#cateDepth").append(tag);
+					}else if(!gagajf.isNull(cate3No)){
+						$.each(result, function (idx, cate){
+							$.each(cate.cate2List, function (idx2,cate2){
+								if(cate2.leafYn == 'N' && cate2.cate3List != null){
+									$.each(cate2.cate3List, function (idx3, cate3){
+										if(cate3.cate3No == cate3No){
+											$("#htopTitle").append(fnDisplayTitle(cate3.cate3Nm));
 										}
-										if(cate4.cate3No==cate3No){
-											tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ' ';
+										if(cate3.cate2No==cate2No){
+											tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ' ';
 											if(formalGb=='G009_20'){
-												tag += ' ,\'\',\''+formalGb+'\'';
+												tag += ' ,\'\',\'\',\''+formalGb+'\'';
 											}
-											tag += ');">'+cate4.cate4Nm+'</a></li>';
+											tag += ');">'+cate3.cate3Nm+'</a></li>';
 										}
 									});
 								}
 							});
-						}
-					});
-				});
-				$("#cateDepth").append(tag);
-			}else if(!gagajf.isNull(cate3No)){
-				$.each(cateList, function (idx, cate){
-					$.each(cate.cate2List, function (idx2,cate2){
-						if(cate2.leafYn == 'N' && cate2.cate3List != null){
-							$.each(cate2.cate3List, function (idx3, cate3){
-								if(cate3.cate3No == cate3No){
-									$("#htopTitle").append(fnDisplayTitle(cate3.cate3Nm));
+						});
+						$("#cateDepth").append(tag);
+					}else if(!gagajf.isNull(cate2No)){
+						$.each(result, function (idx, cate){
+							$.each(cate.cate2List, function (idx2,cate2){
+								if(cate2.cate2No == cate2No){
+									$("#htopTitle").append(fnDisplayTitle(cate2.cate2Nm));
 								}
-								if(cate3.cate2No==cate2No){
-									tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ' ';
+								if(cate2.cate1No==cate1No){
+									tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ' ';
 									if(formalGb=='G009_20'){
-										tag += ' ,\'\',\'\',\''+formalGb+'\'';
+										tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
 									}
-									tag += ');">'+cate3.cate3Nm+'</a></li>';
+									tag += ');">'+cate2.cate2Nm+'</a></li>';
 								}
 							});
-						}
-					});
-				});
-				$("#cateDepth").append(tag);
-			}else if(!gagajf.isNull(cate2No)){
-				$.each(cateList, function (idx, cate){
-					$.each(cate.cate2List, function (idx2,cate2){
-						if(cate2.cate2No == cate2No){
-							$("#htopTitle").append(fnDisplayTitle(cate2.cate2Nm));
-						}
-						if(cate2.cate1No==cate1No){
-							tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ' ';
+						});
+						$("#cateDepth").append(tag);
+					}else{
+						$.each(result, function (idx, cate1){
+							if(cate1.cate1No == cate1No){
+								$("#htopTitle").append(fnDisplayTitle(cate1.cate1Nm));
+							}
+							tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ' ';
 							if(formalGb=='G009_20'){
-								tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
+								tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
 							}
-							tag += ');">'+cate2.cate2Nm+'</a></li>';
-						}
-					});
-				});
-				$("#cateDepth").append(tag);
-			}else{
-				$.each(cateList, function (idx, cate1){
-					if(cate1.cate1No == cate1No){
-						$("#htopTitle").append(fnDisplayTitle(cate1.cate1Nm));
-					}
-					tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ' ';
-					if(formalGb=='G009_20'){
-						tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+							tag += ');">'+cate1.cate1Nm+'</a></li>';
+						});
+						$("#cateDepth").append(tag);
 					}
-					tag += ');">'+cate1.cate1Nm+'</a></li>';
-				});
-				$("#cateDepth").append(tag);
-			}
+				}
+			});
 		}
 
 		// 상단 하위카테고리 노출
@@ -741,13 +759,27 @@
 					$("#leafCateList").html('');
 
 					let allCate = [[${cateList}]];
-					$.each(result, function(idx, item) {
-						$.each(allCate, function(allCateIdx, allCateItem) {
-							if (item.cate1No == allCateItem.cate1No) {
-								$('#leafCateList').append(fnGetCategoryList(item));
-							}
+					if(brandGroupNo > 0){
+						if(gagajf.isNull(cate1No)){
+							$('#htopTitle').append('상품');
+						}else{
+							$.each(result, function(idx, item) {
+								$.each(allCate, function(allCateIdx, allCateItem) {
+									if (item.cate1No == allCateItem.cate1No) {
+										$('#leafCateList').append(fnGetCategoryList(item));
+									}
+								});
+							});
+						}
+					}else{
+						$.each(result, function(idx, item) {
+							$.each(allCate, function(allCateIdx, allCateItem) {
+								if (item.cate1No == allCateItem.cate1No) {
+									$('#leafCateList').append(fnGetCategoryList(item));
+								}
+							});
 						});
-					});
+					}
 				}
 			});
 		}
@@ -894,7 +926,7 @@
 			var ithrCd = '';
 			var contentLoc = '';
 			if (result.dataList != null && result.dataList.length > 0) {
-				//$('.list_content .list_defult').hide();
+				$('.list_content .list_defult').hide();
 				//$('.list_content .count_wrap').show();
 				var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];;
 				let lastPage = result.paging.pageNo;
@@ -968,15 +1000,15 @@
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
-					//console.log('M historyData>>'+historyData);
+					// console.log('M historyData>>'+historyData);
 					historyData = JSON.parse(historyData);
 				}else{
 					historyData = {};
 				}
 				if(typeof historyData.filterHtml!='undefined' && historyData.filterHtml!=''){
+					// console.log('historyData.filterHtml>>>'+historyData.filterHtml);
 					$("#searchGoodsForm").append(historyData.filterHtml);
 					filterHtml = historyData.filterHtml;
-					fnReCheckFilterList();
 				}
 				if(typeof historyData.filterStatHtml!='undefined' && historyData.filterStatHtml!=''){
 					$("#filterForm").append(historyData.filterStatHtml);
@@ -1003,11 +1035,13 @@
 						}
 					});
 				}
+				fnReCheckFilterList();
 				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
 					fnSortingChange(this,historyData.sortingType,'back','Mob');
 				}else{
 					// fnCategoryGoodsInfiniteScrollInit();
+					console.log('here');
 					fnGoodsListSearch();
 				}
 			}else{
@@ -1069,6 +1103,28 @@
 			return tag;
 		}
 
+		var fnTest = function (){
+			let actionUrl = '/display/brand/cate/list?brandGroupNo=' + [[${cateInfo.brandGroupNo}]];
+			let brandGroupNo = [[${cateInfo.brandGroupNo}]];
+			let cate1No = [[${cateInfo.cate1No}]];
+			let allCate = [[${cateList}]];
+			let tag = '';
+			$.getJSON(actionUrl, function(result, status){
+				$.each(allCate, function(allCateIdx, allCateItem) {
+					if (item.cate1No == allCateItem.cate1No) {
+						$.each(allCate, function(allCateIdx, allCateItem) {
+							if (item.cate1No == allCateItem.cate1No) {
+								tag += '<li>';
+								tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList('+brandGroupNo+',\'' + cateGb + '\',' + item.cate1No + ',' + item.cate2No + ',' + item.cate3No + ',' + item.cate4No + ',' + item.cate5No + ')">'+item.cate1Nm+'</a>';
+								tag += '</li>\n';
+							}
+						});
+					}
+				});
+			});
+			$('#cateDepth').append(tag);
+		}
+
 	</script>
 
 

+ 15 - 77
src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html

@@ -68,7 +68,7 @@
 						<div class="swiper-container post-stylereport">
 							<div class="swiper-wrapper">
 								<th:block th:each="ContentsData, ContentsStat : ${mainData.ContentsList}">
-								<div class="swiper-slide styleArea">
+								<div class="swiper-slide styleArea" th:if="${ContentsStat.count<5}">
 									<a href="javascript:void(0)" th:onclick="cfnGoToPage([[${ContentsData.strVar1}]]);">
 										<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}" alt="">
 										<dl>
@@ -704,41 +704,18 @@
 
 			<th:block th:if="${contentsLoc=='011'}">
 				<!-- 11. TV 슬라이드 -->
-				<div class="inner wide bg_dark">
+				<div class="inner wide bg_dark" th:if="${mainData.ContentsList != null}">
 					<div class="titWrap">
-						<h2 data-style="unusual">STYLE24 TV</h2>
+						<h2 data-style="unusual" th:text="${mainData.contentsTitle}">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="swiper-slide" th:each="item, stat : ${mainData.ContentsList}">
 									<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>
+										<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'}" class="pd_mov"  th:src="${'http://v.kr.kollus.com/'+item.strVar2+'?enable_initialize_focus=false'}" allowfullscreen></iframe>
+<!--										<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>
@@ -803,33 +780,15 @@
 
 		// 몰메인 <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;
-			}
+			let tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(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;
-			}
+			let tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).append(tag);
 		});
 
@@ -837,15 +796,8 @@
 		$('.silderBannerArea').each(function (){
 			let tag = '';
 			if(!gagajf.isNull($(this).find("input[name=bannerNote]").val())) {
-				var noteText = $(this).find("input[name=bannerNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-				if (noteText.indexOf('<br>') > -1) {
-					var reText = noteText.split("<br>");
-					tag += reText[0];
-					tag += '<br>';
-					tag += reText[1];
-				} else {
-					tag += noteText;
-				}
+				var noteText = $(this).find("input[name=bannerNote]").val();
+				tag = noteText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 				$(this).find('.noteArea').append(tag);
 			}
 		});
@@ -855,28 +807,14 @@
 			let tag = '';
 			let tag2 = '';
 			if(!gagajf.isNull($(this).find("input[name=styleTitle]").val())) {
-				var titleText = $(this).find("input[name=styleTitle]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-				if(titleText.indexOf('<br>') > -1){
-					var reText = titleText.split("<br>");
-					tag += reText[0];
-					tag += '<br>';
-					tag += reText[1];
-				}else{
-					tag += titleText;
-				}
+				var titleText = $(this).find("input[name=styleTitle]").val();
+				tag = titleText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 				$(this).find('.styleTitleC').append(tag);
 			}
 
 			if(!gagajf.isNull($(this).find("input[name=styleNote]").val())) {
-				var noteText = $(this).find("input[name=styleNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-				if(noteText.indexOf('<br>') > -1){
-					var reText = noteText.split("<br>");
-					tag2 += reText[0];
-					tag2 += '<br>';
-					tag2 += reText[1];
-				}else{
-					tag2 += noteText;
-				}
+				var noteText = $(this).find("input[name=styleNote]").val();
+				tag2 = noteText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 				$(this).find('.styleNoteC').append(tag2);
 			}
 		});

+ 5 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -813,6 +813,11 @@
 		let $target = $('#cartForm input[name=cea]');
 		let targetSize = $target.length;	//선택성품 갯수
 		
+		if (targetSize <= 0){
+			mcxDialog.alert("옵션을 선택해 주세요.");
+			return false;
+		}
+		
 		$target.each(function() {
 			
 			let ea = parseInt($(this).val());

+ 104 - 12
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -136,7 +136,7 @@
 								<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
 										th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"/>
 								<th:block th:if="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}">
-								<label th:for="${goodsOption2.optCd}">90</span></label>
+								<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" >90</span></label>
 								</th:block>
 								<th:block th:unless="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}">
 								<label th:for="${goodsOption2.optCd}" th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )"><span th:text="${goodsOption2.optCd2}">90</span></label>
@@ -626,13 +626,19 @@
 			<div class="riview_box" th:if="${reviewDisplayYn == 'Y'}">
 				<div class="ex_review">
 					<a href="javascript:void(0);" id="btn_pdReview_pop" th:onclick="cfGoodsReview([[${goodsInfo.goodsCd}]])">	
-						<span class="tit">리뷰 <em class="number">(<th:block  th:text="${(goodsInfo.reviewRegCnt <= 9999) ? #numbers.formatInteger(goodsInfo.reviewRegCnt, 0,'COMMA')  : '9,999+'}"></th:block>)</em></span>
+						<span class="tit">리뷰<em class="number">(<th:block  th:text="${(goodsInfo.reviewRegCnt <= 9999) ? #numbers.formatInteger(goodsInfo.reviewRegCnt, 0,'COMMA')  : '9,999+'}"></th:block>)</em></span>
 						<div class="star_score" th:if="${goodsInfo.reviewRegCnt  > 0 }">
 							<span class="star" th:with="starScore=${#numbers.formatDecimal((goodsInfo.score*100/5), 0,0)}">
 								<em class="progbar" th:style="${'width:'+starScore+'%;' }"></em> <!-- 평점 style로 표기 -->
 							</span>
 							<span class="score" th:text="|${goodsInfo.score}점|">4.3점</span>
 						</div>
+						<div class="star_score" th:unless="${goodsInfo.reviewRegCnt  > 0 }">
+							<span class="star">
+								<em class="progbar" style="width:0%;"></em> <!-- 평점 style로 표기 -->
+							</span>
+							<span class="score">0점</span>
+						</div>
 					</a>
 				</div>
 				<div class="area_slider" id="btn_pdBestReview_pop" th:if="${bestReviewList != null and !bestReviewList.empty}">
@@ -723,7 +729,7 @@
 				</div>
 				<!-- //이상품과 함께 본 상품영역-->
 				<!-- STYLE24의 스타일링 추천 -->
-				<div class="pd_recommend" th:if="${lookbookList != null and !lookbookList.empty}">
+				<div class="pd_recommend" th:if="${lookbookList != null and !lookbookList.empty}" th:with="ithrCd=aa , contentsLoc=bb" >
 					<h3 class="tit">STYLE24의 스타일링 추천</h3>
 					<!-- 상품이미지pic -->
 					<div class="area_slider pic_img" >
@@ -738,7 +744,7 @@
 														th:each="lookbookGoods, goodsStatus : ${lookbook.lookbookGoodsList}">
 											<div class="item_picker" th:style="${'left:'+lookbookGoods.xlim+'%; top:'+lookbookGoods.ylim+'%;'}" >
 												<div>
-													<button type="button"><span class="ico ico_picker"></span></button>
+													<button type="button" th:onclick="fnLookbookPicker(this,[[${lookbookGoods.goodsCd}]]);"><span class="ico ico_picker"></span></button>
 													<div class="pick_descr">
 														<a href="javascript:void(0)"><th:block th:text="${lookbookGoods.goodsFullNm}"></th:block></a>
 													</div>
@@ -756,7 +762,7 @@
 					</div>
 					<!-- //상품이미지pic -->
 					<!-- 상품이미지pic 리스트 -->
-					<div class="area_slider pic_list"  th:with="ithrCd=aa , contentsLoc=bb ">
+					<div class="area_slider pic_list" >
 						<div class="box"  th:each="lookbook, status : ${lookbookList}">
 							<div class="swiper-container"  th:if="${lookbook.lookbookGoodsList != null and !lookbook.lookbookGoodsList.empty}">
 								<div class="swiper-wrapper">
@@ -1594,8 +1600,8 @@
 					let soldoutYn = ""; 
 					let disabledYn = "";
 					let saleQty = (Number(qty) * Number(minOrdQty));
-					if ("Y" == item.soldoutYn || Number(item.stockQty) <= Number(saleQty)) soldoutYn = "true";
-					if (soldoutYn == "true" || item.goodsStat !=  'G008_90') disabledYn= "true";
+					if ("Y" == item.soldoutYn || Number(item.stockQty) < Number(saleQty)) soldoutYn = "true";
+					if (soldoutYn == "true") disabledYn= "true";
 					if (selfGoodsYn == "Y"){
 						tag += '<li aria-disabled="'+disabledYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{
@@ -1835,10 +1841,16 @@
 			
 		}else { 
 			
-			let cartGoodsList = [];
-			
 			let target = $('#cartForm input[name=cea]');
 			
+			let targetSize = target.length;
+			if (targetSize <= 0){
+				mcxDialog.alert("옵션을 선택해 주세요.");
+				return false;
+			}
+			
+			let cartGoodsList = [];
+			
 			if (goodsType == 'G056_N'){
 				let compsList = [];
 				target.each(function() {
@@ -1996,7 +2008,77 @@
 			cfnAddCart(params);	
 		} */
 	}
-	 
+	
+	
+	//룩북 피커 선택시 레이어 노출
+	var fnLookbookPicker = function(obj,goodsCd){
+		let $obj = $(obj);
+		var str = '<div class="modal fade" id="reco_pop" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">\n';
+		//let $target = $obj.parent().parent().parent().find('.item_prod');
+		let $target = $('.pic_list').find('.item_prod');
+		
+		let goodsImg = '';
+		let brandName = '';
+		let goodsName = '';
+		let currPrice = '';
+		let listPrice = '';
+		let dcRate = '';
+		let soldout = '';
+		
+		$target.each(function(){
+			if ($(this).attr('goodsCd') == goodsCd) {
+				
+				if ($(this).hasClass('unable')) soldout = 'sold_out';
+				
+				goodsImg = $(this).find('.itemPic').children('.pd_img').attr('src');
+				brandName = $(this).find('.itemBrand').text();
+				goodsName = $(this).find('.itemName').text();
+				currPrice = $(this).find('.itemPrice').text();
+				return false;
+			}
+		});
+		
+		if (gagajf.isNull(goodsName)){
+			return false;
+		}
+		
+		$("#reco_pop").remove();
+		
+		let tag = '';
+		tag += '	<div class="modal-dialog" role="document">\n';
+		tag += '		<div class="modal-content">\n';
+		tag += '			<div class="modal-header">\n';
+		tag += '				<h5 class="modal-title"><span class="sr_only">제품정보</span></h5>\n';
+		tag += '			</div>\n';
+		tag += '			<div class="modal-body">\n';
+		tag += '				<div class="itemsGrp rowtype">\n';
+		tag += '					<div class="item_prod '+ soldout+'"> <!-- 품절일때 sold_out 클래스 추가 요청 -->\n';
+		tag += '						<div class="item_state">\n';
+		tag += '							<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+goodsCd+'\',\'\',\'\')">\n';
+		tag += '								<div class="itemPic">\n';
+		tag += '									<img alt="BLACK-a" class=" vLHTC pd_img" src="'+goodsImg +'?RS=70"  onerror="this.src=\'/images/pc/thumb/bg_item_none.png\'">\n';
+		tag += '								</div>\n';
+		tag += '								<p class="itemBrand">'+brandName+'</p>\n';
+		tag += '								<div class="itemName">'+goodsName+'</div>\n';
+		tag += '								<p class="itemPrice">\n';
+		tag += '									'+currPrice+'\n';
+		tag += '								</p>\n';
+		tag += '							</a>\n';
+		tag += '						</div>\n';
+		tag += '					</div>\n';
+		tag += '				</div>\n';
+		tag += '			</div>\n';
+		tag += '		</div>\n';
+		tag += '	</div>\n';
+		tag += '	<a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer(\'recoPop\')" class="close-modal">Close</a>\n';
+		
+		
+		if ($('#reco_pop').length == 0) {
+			$('body').append(str+tag+'</div>');
+			$('#reco_pop').modal("show");
+		}
+	}
+	
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
@@ -2089,7 +2171,7 @@
 			observeParents: true,
 			slidesPerView: 1,
 			spaceBetween: 8,
-			loop: true,
+			//loop: true,
 			pagination: {
 				el: '.swiper-pagination',
 				type: 'fraction',
@@ -2279,13 +2361,23 @@
 		// ep 쿠폰확인
 		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
 		
-		
 		$('.Purchase_pop .btPop_close').click(function(){
 			$('html, body').css({'overflow': 'visible', 'height': '100%'});
 			$('.container').removeClass('btPop_open');
 			autome.style.top  = 100 + "%";
 			return false;
 		}); 
+		
+		// 픽커모달
+		$(document).on('click','.item_picker',function(e){
+            //$("#reco_pop").modal("show");
+			$("body").addClass("recoPop");
+            return false;
+        });
+		$(document).on('click','#reco_pop .close-modal',function(e){
+			$("body").removeClass("recoPop");
+            return false;
+        });
 		 
 	});
 	

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

@@ -112,14 +112,14 @@
 			tag += '	<div class="fold_cont">\n';
 			tag += '		<div class="fold_detail">\n'; //문의 내용
 			tag += '			<div>\n';
-			tag += '				<p>' + item.questContent.replaceAll("\n", "</br>").escapeHtml() + '</p>\n';
+			tag += '				<p>' + item.questContent.escapeHtml() + '</p>\n';
 			tag += '			</div>\n';
 			tag += '		</div>\n';
 			
 			if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 				tag += '	<div class="fold_answer">\n'; //문의 답변
 				tag += '		<div>\n';
-				tag += '			<div class="answer_body">' + item.ansContent.replaceAll("\n", "</br>") + '</div>\n';
+				tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
 				tag += '			<div class="answer_foot"><span class="data">' + item.ansDt + '</span>\n';
 				tag += '			</div>\n';
 				tag += '		</div>\n';

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

@@ -55,7 +55,7 @@
 		</div>
 		</th:block>
 		<!-- 착용정보 있을 시 노출 -->
-		<th:block th:if="${not #strings.isEmpty(goodsInfo.sizeGb)}">
+		<th:block th:if="${not #strings.isEmpty(goodsInfo.sizeGb) and goodsInfo.reviewRegCnt > 0}">
 		<div class="average">
 			<div class="part_average" th:with="scoreSize1=${#numbers.formatDecimal((goodsInfo.scoreSize1*100/goodsInfo.reviewRegCnt), 0,0)}
 												, scoreSize2=${#numbers.formatDecimal((goodsInfo.scoreSize2*100/goodsInfo.reviewRegCnt), 0,0)}
@@ -478,7 +478,7 @@
 			<!-- //포토영상 게시글 최대 7개 & 버튼노출 -->
 		</div>
 	</div>
-	<div class="area_rv_all" style="display:block;">
+	<div class="area_rv_all" style="display:none;">
 	<form id="goodsReviewForm" name="goodsReviewForm" action="#" th:action="@{'/goods/review/list'}">
 	<input type="hidden" name="pageNo" value ="1"/>
 	<input type="hidden" name="pageSize" value ="20"/>
@@ -507,7 +507,7 @@
 						<!-- 평점,사이즈,키,몸무게 카테고리 -->
 						<div class="category" id="grade">
 							<ul class="n1">
-								<li><a href="javascript:void(0)" data="평점 전체" onclick="fnReviewSearch('A','');">전체</a></li>
+								<li class="active"><a href="javascript:void(0)" data="평점 전체" onclick="fnReviewSearch('A','');">전체</a></li>
 								<li><a href="javascript:void(0)" data="5점" onclick="fnReviewSearch('A','5');">5점&nbsp;★★★★★</a></li>
 								<li><a href="javascript:void(0)" data="4점" onclick="fnReviewSearch('A','4');">4점&nbsp;★★★★</a></li>
 								<li><a href="javascript:void(0)" data="3점" onclick="fnReviewSearch('A','3');">3점&nbsp;★★★</a></li>
@@ -818,7 +818,7 @@
 			observeParents: true,
 			slidesPerView: 1,
 			spaceBetween: 8,
-			loop: true,
+			//loop: true,
 			pagination: {
 				el: '.swiper-pagination',
 				type: 'fraction',

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

@@ -25,7 +25,7 @@
 					<ul>
 						<li th:if="${measurementList != null and !measurementList.empty}" th:class="${(measurementList != null and !measurementList.empty) ? 'active': ''}"><a href="javascript:void(0);" >실측 사이즈</a></li>
 						<li th:if="${(commonSizeInfoList != null and !commonSizeInfoList.empty) or (brandSizeInfoList != null and !brandSizeInfoList.empty)}" th:class="${(measurementList == null or measurementList.empty) ? 'active': ''}"><a href="javascript:void(0);" >표준 사이즈</a></li>
-						<li th:if="${measurementSizeInfoList != null and !measurementSizeInfoList.empty}"><a href="javascript:void(0);" >측정 사이즈</a></li>
+						<li th:if="${measurementSizeInfoList != null and !measurementSizeInfoList.empty}"><a href="javascript:void(0);" >측정 가이드</a></li>
 					</ul>
 				</div>
 				<div class="tab_cont_wrap">

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

@@ -266,7 +266,7 @@
 															<div class="form_field">
 																<div class="imgUpload">
 																	<label for="fileAdd" class="fileAdd" id="fileAdd_reply">첫번째업로드</label>
-																	<input type="file" id="fileAdd" name="files" accept=".jpeg, .jpg, .png, .mp4"> <!-- 210507_추가 : accept 속성 추가 -->
+																	<input type="file" id="fileAdd" name="files" accept=".jpeg, .jpg, .png, video/mp4"> <!-- 210507_추가 : accept 속성 추가 -->
 																</div>
 															</div>
 															<!-- //이미지첨부 -->
@@ -425,7 +425,7 @@ var reviewUpdate = function() {
 		return;
 	}
 	
-	mcxDialog.confirm('리뷰를 수정하시겠습니까"?', {
+	mcxDialog.confirm('리뷰를 수정하시겠습니까?', {
      cancelBtnText: "취소",
      sureBtnText: "확인",
      sureBtnClick: function(){
@@ -555,8 +555,8 @@ $(function(){
 								"<br/><span class=\"removes\">Removes image</span>" +
 								"</span>").insertBefore(".fileAdd");
 					}else{
-						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" />" +
+						$("<span class=\"pics mov\">" +
+								"<img class=\"picsThumbs\" src=\"" + _kollusMediaUrl + '/poster/' + reviewAttach[i].kmcKey + "\"/>" +
 								"<input type='hidden' name='kmcKeyArr' value='" + reviewAttach[i].kmcKey + "'>" + 
 								"<input type='hidden' name='kufKeyArr' value='" + reviewAttach[i].kufKey + "'>" + 
 								"<br/><span class=\"removes\">Removes image</span>" +
@@ -633,15 +633,16 @@ var fnChooseFile = function(obj) {
 				); 
 		}else if((new RegExp("mp4", "i")).test(file.name)){
 			setTimeout(function(){
-				$(".pics").children().eq(0).append("<input type='hidden' name='kufKeyArr' id='kufKey"+(picLength+1)+"'>");
-				$(".pics").children().eq(0).append("<input type='hidden' name='kmcKeyArr' id='kmcKey"+(picLength+1)+"'>");
+				$(".imgUpload").find('.pics').last().addClass("mov");
+				$(".pics").children().last().append("<input type='hidden' name='kufKeyArr' id='kufKey"+(picLength+1)+"'>");
+				$(".pics").children().last().append("<input type='hidden' name='kmcKeyArr' id='kmcKey"+(picLength+1)+"'>");
 				gagaKollus.upload('Review', file, $('#kufKey'+(picLength+1)));
-			}, 2000);
+			}, 200);
 		}else{
 			mcxDialog.alertC('첨부할 수 없는 파일 형식입니다.', {
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					$(obj).parent('.imgUpload').find('.removes').trigger('click');
+					$(".pics").find(".removes").last().trigger('click');
 				}
 			});
 			return false;

+ 1 - 3
src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html

@@ -1264,18 +1264,16 @@ var paymentInfoSet = function() {
 							xhr.setRequestHeader('Content-Type'	, 'application/json');
 						},
 						success 	: function(result) {
-							
 							// 결재정보로드
 							$("#order_info").html(result);
-							$("#order_info input[name=Ret_URL]").val("http:" + _frontUrl + "/order/pay/result/response");
 							
 							var pgGb = $("#order_info input[name=pgGb]").val();
-
 							if (pgGb == "NAVER") {
 								fnNaverPaymentReady();
 							} else if (pgGb == "KAKAO") {
 								fnKakaoPaymentReady();
 							} else if (pgGb == "KCP" || pgGb == "PAYCO") {
+								$("#order_info input[name=Ret_URL]").val("http:" + _frontUrl + "/order/pay/result/response");
 								kcp_AJAX();
 							}
 						}

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

@@ -116,7 +116,6 @@
 							</div>
 							<!-- 댓글 -->
 							<div class="cmt_group" id="replyList">
-								
 							<!-- 	<div class="paging_wrap">
 									<ul class="pageNav">
 										<li class="prev"><a href="#"><span class="sr-only">이전</span></a></li>
@@ -922,6 +921,7 @@ var fnTextConfirm = function() {
 }
 
 
+
 $(document).ready(function(){
 	if(plan.planGb == "P"){
 		$('#htopTitle').text('기획전');
@@ -946,6 +946,7 @@ $(document).ready(function(){
 	$(document).on('click','.pop_open_btn',function(){
 		$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
 	});
+
 	
 	//상단 빅배너 슬라이드
 	var big_banner_slide = new Swiper('.big_banner_slide .swiper-container', {
@@ -1022,7 +1023,7 @@ $(document).ready(function(){
 		//animate()메서드를 이용해서 선택한 태그의 스크롤 위치를 지정해서 0.4초 동안 부드럽게 해당 위치로 이동함 
 		$('html').animate({scrollTop : offset.top}, 400);
 	});
-    
+   
  	// Full size Popup
 /* 	$(document).on('click','.cmt_wrap .cmt_cont .pics',function(){
 		$("#photo_full_popup").modal("show");
@@ -1041,7 +1042,6 @@ $(document).ready(function(){
         } else {
             $('.dp .dp_listItems_wrap .items_option').removeClass('fix');
         }
-
 	});
 	
 	//210510_추가 : 토스트 팝업 button 클릭 시 팝업 닫기.

+ 40 - 19
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -72,16 +72,15 @@
                         </div>
                     </div>
                 </div>
-				<div class="inner wide">
-					<div class="dp_listItems_cont type1">
-						<!-- 210415_드롭박스 위치수정 -->
+				<div class="inner" id="cornerInner">
+					<div class="dp_listItems_wrap typeSelector">
 						<div class="items_option">
 							<div class="open_categori" style="position: relative; width: 100%; z-index: 0;">
 								<a id="filter"></a> 
 							</div>
 						</div>
 					</div>
-                </div>
+				</div>
                 <div id="cornerList"></div>
 			</section>
 
@@ -173,7 +172,7 @@ if(planCornerList.length>0){
 	var html = '';
 	$.each(planCornerList, function(idx, item)  {
 		html += '<div class="inner" id="type'+idx+'">';
-		html += '	<div class="dp_listItems_wrap type'+idx+'">';
+		html += '	<div class="dp_listItems_wrap type1">';
 		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>';
 		html += '			<div class="itemsGrp">';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
@@ -334,26 +333,29 @@ var fnCornerClick = function (result1,result2) {
 	
 }
 
+
+
+//팝업_닫기
+$('.popup_close').on("click",function(){
+    $('.popup_box').hide().removeClass('active');
+    $("body").css({"overflow":"visible"});
+});
+
+
 $(document).ready(function(){
 	shotBody();
 	$("#filter").text(planCornerList[0].cornerNm);
 	// 다른기획전
-	var other_promotion_slide = new Swiper('.other_promotion_slide .swiper-container', {
-		slidesPerView: 2,
-		spaceBetween: 8,
-		centerMode: true,
-	});
-	
+
 	$(window).scroll(function(){
 		var scrollTop= $(window).scrollTop();
-		var itemTop=$('.dp .dp_listItems_cont').offset().top;
-
-        if (scrollTop >= itemTop){
-            $('.dp .dp_listItems_cont .items_option').addClass('fix');
-        } else {
-            $('.dp .dp_listItems_cont .items_option').removeClass('fix');
-        }
+		var itemTop=$('.dp .dp_listItems_wrap.type1').offset().top;
 
+	    if (scrollTop >= itemTop){
+	        $('.dp .dp_listItems_wrap .items_option').addClass('fix');
+	    } else {
+	        $('.dp .dp_listItems_wrap .items_option').removeClass('fix');
+	    }
 	});
 	
 	// 아이템스라이드(리스트갯수1)
@@ -388,7 +390,26 @@ $(document).ready(function(){
     
     $("#bulletShipPop_close").click(function() {
         $.modal.close();
- });	
+ 	});
+    
+  //카테고리
+    function category(){
+        var categoryOpen=$(".open_categori .select_dress");
+        var categoryClose=$(".category_box .category_close");
+        var categoryPop=$(".category_box");
+
+        categoryOpen.on("click",function(){
+            categoryPop.show();
+            categoryPop.addClass("active");
+            $("body").css({"overflow":"hidden"});
+        });
+
+        categoryClose.on("click",function(){
+            categoryPop.hide();
+            $("body").css({"overflow":"visible"});
+        });
+    }
+    category();
 
 });
 </script>

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

@@ -645,7 +645,7 @@
 								</li>
 							</ul> -->
 						</div>
-						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);">더 보기</a>_
+						<a href="javascript:void(0);" class="more_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);">더 보기</a>
 					</div>
 					
 					<div class="login_con">

+ 8 - 4
src/main/webapp/WEB-INF/views/web/common/layout/BrandLayoutWeb.html

@@ -14,9 +14,15 @@
 </div>
 	
 <th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
+<th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
 
 <!-- GNB -->
-<header id="header" th:replace="~{web/common/fragments/BrandGnbWeb :: gnb}"></header>
+<th:block th:if="${brandGroupInfo == null }">
+	<header id="header" th:replace="~{web/common/fragments/GnbWeb :: gnb}"></header>
+</th:block>
+<th:block th:if="${brandGroupInfo != null }">
+	<header id="header" th:replace="~{web/common/fragments/BrandGnbWeb :: gnb}"></header>
+</th:block>
 <!--// GNB -->
 
 <!-- CONTENT AREA -->
@@ -26,12 +32,10 @@
 <!-- Footer -->
 <footer id="footer" th:replace="~{web/common/fragments/FooterWeb :: footer}"></footer>
 
-<th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
-
 <script th:inline="javascript">
 /*<![CDATA[*/
 	$(document).ready(function() {
-		
+		$("#container").css('backgroundColor','#fff');
 	});
 /*]]>*/
 </script>

+ 0 - 44
src/main/webapp/WEB-INF/views/web/common/layout/PlanningLayoutWeb.html

@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org"
-	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
-
-<head th:replace="~{web/common/fragments/HeadWeb :: head}"></head>
-
-<body>
-
-<div class="skipComment">
-	<a href="#content">본문 바로가기</a>
-	<a href="#gnb">주메뉴 바로가기</a>
-	<a href="#footer">하단메뉴 바로가기</a>
-</div>
-	
-<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
-<th:block th:replace="~{web/common/fragments/ScriptsWeb :: scripts}"></th:block>
-
-<!-- GNB -->
-<th:block th:if="${brandGroupInfo == null }">
-	<header id="header" th:replace="~{web/common/fragments/GnbWeb :: gnb}"></header>
-</th:block>
-<th:block th:if="${brandGroupInfo != null }">
-	<header id="header" th:replace="~{web/common/fragments/BrandGnbWeb :: gnb}"></header>
-</th:block>
-<!--// GNB -->
-
-<!-- CONTENT AREA -->
-<th:block layout:fragment="content"></th:block>
-<!-- // CONTENT AREA -->
-
-<!-- Footer -->
-<footer id="footer" th:replace="~{web/common/fragments/FooterWeb :: footer}"></footer>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	$(document).ready(function() {
-		$("#container").css('backgroundColor','#fff');
-	});
-/*]]>*/
-</script>
-
-</body>
-</html>

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

@@ -776,61 +776,44 @@ $(document).ready( function() {
 	$('.bMainTitle').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=mainTitle]").val())){
-			var brText = $(this).find("input[name=mainTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
-			if(brText.indexOf('<br>') > -1){
-				var reText = brText.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-			}else{
-				tag += brText;
-			}
+			var brText = $(this).find("input[name=mainTitle]").val();
+			tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+			// var brText = $(this).find("input[name=mainTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
+			// 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> 처리
 	if(!gagajf.isNull($("#brandDesc").find("input[name=brandTitle]").val())){
-		var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-		if(!gagajf.isNull(brandDesc)){
-			if(brandDesc.indexOf('<br>') > -1){
-				let tag = '';
-				var reText = brandDesc.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-				$("#brandDesc .cate").append(tag);
-			}else{
-				let tag = '';
-				tag += brandDesc;
-				$("#brandDesc .cate").append(tag);
-			}
-		}
+		var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val();
+		var tag = brandDesc.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		// tag = brandDesc.replace(/(<br>|<br\/>|<br \/>)/g, '\r\n');
+		// var brandDesc = $("#brandDesc").find("input[name=brandTitle]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
+		$("#brandDesc .cate").append(tag);
 	}
 
 	if(!gagajf.isNull($("#brandDesc").find("input[name=brandNote]").val())){
-		var brandDesc = $("#brandDesc").find("input[name=brandNote]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>");
-		if(!gagajf.isNull(brandDesc)){
-			if(brandDesc.indexOf('<br>') > -1){
-				let tag = '';
-				var reText = brandDesc.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-				$("#brandDesc .desc").append(tag);
-			}else{
-				let tag = '';
-				tag += brandDesc;
-				$("#brandDesc .desc").append(tag);
-			}
-		}
+		var brandDesc = $("#brandDesc").find("input[name=brandNote]").val();
+		var tag = '';
+		tag = brandDesc.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		$("#brandDesc .desc").append(tag);
 	}
 
 	// 배너 슬라이더 <br> 처리
 	$('.bText').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=bannerDesc]").val())){
-			var brText = $(this).find("input[name=bannerDesc]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
+			var brText = $(this).find("input[name=bannerDesc]").val();
+			tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+			/*var brText = $(this).find("input[name=bannerDesc]").val().replaceAll("<BR>", "<br>").replaceAll("<bR>", "<br>").replaceAll("<Br>", "<br>").replaceAll("<br/>", "<br>");
 			if(brText.indexOf('<br>') > -1){
 				var reText = brText.split("<br>");
 				tag += reText[0];
@@ -840,7 +823,7 @@ $(document).ready( function() {
 				tag += '</p>';
 			}else{
 				tag += brText;
-			}
+			}*/
 			$(this).append(tag);
 		}
 	});

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="web/common/layout/PlanningLayoutWeb">
+	  layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : CategoryGoodsListFormWeb.html
@@ -136,6 +136,8 @@
 										<input type="text" class="js-range-slider01" name="" value="" />
 										<input type="hidden" id="price_input_from" name="price_input_from" value=""/>
 										<input type="hidden" id="price_input_to" name="price_input_to" value=""/>
+										<input type="hidden" id="hPriceFrom" name="hPriceFrom" value=""/>
+										<input type="hidden" id="hPriceTo" name="hPriceTo" value=""/>
 									</div>
 									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
@@ -158,6 +160,8 @@
 										<input type="text" class="js-range-slider02" name="" value="" />
 										<input type="hidden" id="dcrate_input_from" name="dcrate_input_from" value=""/>
 										<input type="hidden" id="dcrate_input_to" name="dcrate_input_to" value=""/>
+										<input type="hidden" id="hDcRateFrom" name="hDcRateFrom" value=""/>
+										<input type="hidden" id="hDcRateTo" name="hDcRateTo" value=""/>
 									</div>
 									<a href="javascript:void(0)" class="tap_close">delete-btn</a>
 								</div>
@@ -229,7 +233,7 @@
 								<!-- //필터 -->
 							</div>
 							<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
-								<div class="list_defult">
+								<div class="list_defult" id="noFilterData">
 									<div>
 										<p>선택하신 조건에 맞는 상품이 없습니다.<br>필터를 변경해 보세요.</p>
 									</div>
@@ -268,12 +272,8 @@
 								</div>
 
 							</div>
-							<div class="list_content">
-								<div class="list_defult" id="endPage">
-									<div>
-										<p>마지막 페이지 입니다.</p>
-									</div>
-								</div>
+							<div class="last_page" id="endPage">
+								<span>마지막 페이지입니다.</span>
 							</div>
 						</div>
 					</form>
@@ -498,11 +498,13 @@
 			}else {
 				if($("#searchGoodsForm input[name=pageNo]").val()==1){
 					// 필터 값으로 조회 데이터 없을때
-					$('.list_content .list_defult').show();
+					$('#noFilterData').show();
 					$('.list_content .count_wrap').hide();
+					$('#endPage').hide();
 				}else{
 					// 마지막 페이지 일때
 					$('#endPage').show();
+					$('#noFilterData').hide();
 					//$('.list_content .count_wrap').hide();
 				}
 				gagaInfiniteScroll.draw('not');
@@ -1009,7 +1011,7 @@
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
-					console.log('historyData>>'+historyData);
+					// console.log('historyData>>'+historyData);
 					historyData = JSON.parse(historyData);
 				}else{
 					historyData = {};
@@ -1018,18 +1020,30 @@
 					$(".arrayWrap .btn").text(historyData.sortingTypeNm);
 				}
 				if(typeof historyData.filterHtml!='undefined' && historyData.filterHtml!=''){
-					console.log('filterHtml>>'+historyData.filterHtml);
+					// console.log('filterHtml>>'+historyData.filterHtml);
 					$("#searchGoodsForm").append(historyData.filterHtml);
 					filterHtml = historyData.filterHtml;
 				}
 				if(typeof historyData.filterStatHtml!='undefined' && historyData.filterStatHtml!=''){
-					console.log('filterStatHtml>>'+historyData.filterStatHtml);
+					// console.log('filterStatHtml>>'+historyData.filterStatHtml);
 					$("#filterData").append(historyData.filterStatHtml);
 					filterStatHtml = historyData.filterStatHtml;
 				}
 				if(typeof historyData.totalCount!='undefined' && historyData.totalCount!=''){
 					$("#totCntId").text(historyData.totalCount);
 				}
+				if(!gagajf.isNull($("#searchGoodsForm").find('input[name=priceFrom]').val())){
+					$("#filterForm").find('input[name=hPriceFrom]').val($("#searchGoodsForm").find('input[name=priceFrom]').val());
+				}
+				if(!gagajf.isNull($("#searchGoodsForm").find('input[name=priceTo]').val())){
+					$("#filterForm").find('input[name=hPriceTo]').val($("#searchGoodsForm").find('input[name=priceTo]').val());
+				}
+				if(!gagajf.isNull($("#searchGoodsForm").find('input[name=dcRateFrom]').val())){
+					$("#filterForm").find('input[name=hDcRateFrom]').val($("#searchGoodsForm").find('input[name=dcRateFrom]').val());
+				}
+				if(!gagajf.isNull($("#searchGoodsForm").find('input[name=dcRateTo]').val())){
+					$("#filterForm").find('input[name=hDcRateTo]').val($("#searchGoodsForm").find('input[name=dcRateTo]').val());
+				}
 				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
 					fnSortingChange(this,historyData.sortingType,'back');
@@ -1064,28 +1078,23 @@
 				let priceFrom = '';
 				let priceTo = '';
 				if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceFrom]").val())){
-					priceFrom = $("#searchGoodsForm").find("input:hidden[name=priceFrom]").val();
+					priceFrom = $("#searchGoodsForm").find("input:hidden[name=priceFrom]").val().replace(',','');
 				}
 				if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceTo]").val())){
-					priceTo = $("#searchGoodsForm").find("input:hidden[name=priceTo]").val();
+					priceTo = $("#searchGoodsForm").find("input:hidden[name=priceTo]").val().replace(',','');
 				}
-				console.log('priceFrom>>'+priceFrom);
-				console.log('priceTo>>'+priceTo);
+				// console.log('priceFrom>>'+priceFrom);
+				// console.log('priceTo>>'+priceTo);
 				$.each(filterPriceList, function (priceIdx, priceItem){
 					custom_values[priceIdx] = priceItem.filterNm;
-					console.log('custom_values[priceIdx]>>'+custom_values[priceIdx])
+					// console.log('custom_values[priceIdx]>>'+custom_values[priceIdx])
 					if(custom_values[priceIdx] == priceFrom){
 						min = priceIdx;
 					}
 					if(custom_values[priceIdx] == priceTo){
 						max = priceIdx;
 					}
-					console.log('min>>'+min);
-					console.log('max>>'+max);
 				});
-
-				console.log('1min>>'+min);
-				console.log('1max>>'+max);
 				fnFilterSliderMove(min,max);
 			}
 		}

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="web/common/layout/PlanningLayoutWeb">
+	  layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : CategoryGoodsListFormWeb.html

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	  xmlns:th="http://www.thymeleaf.org"
 	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	  layout:decorator="web/common/layout/PlanningLayoutWeb">
+	  layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : CategoryGoodsListFormWeb.html

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/PlanningLayoutWeb">
+	layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : LookbookDetailFormWeb.html

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/PlanningLayoutWeb">
+	layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : LookbookMainFormWeb.html

+ 17 - 76
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -85,7 +85,7 @@
 						<div class="cont_body">
 							<div class="ui_row">
 								<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
-									<div class="ui_col_3 styleArea">
+									<div class="ui_col_3 styleArea" th:if="${ContentsStat.count<5}">
 										<a th:href="${ContentsData.strVar1}">
 											<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
 											<dl>
@@ -1313,16 +1313,8 @@ var main_tv_slide = new Swiper ('.main_tv .post-tv', {
 $(document).ready(function() {
 	// 몰메인 <br> 태그
 	$('.mainTitle').each(function (){
-		let tag = '';
-		var brText = $(this).find("input[name=mainTitlee]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-		if(brText.indexOf('<br>') > -1){
-			var reText = brText.split("<br>");
-			tag += reText[0];
-			tag += '<br>';
-			tag += reText[1];
-		}else{
-			tag += brText;
-		}
+		var brText = $(this).find("input[name=mainTitlee]").val();
+		let tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 		$(this).append(tag);
 	});
 
@@ -1330,15 +1322,8 @@ $(document).ready(function() {
 	$('.silderBannerArea').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=bannerNote]").val())) {
-			var noteText = $(this).find("input[name=bannerNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-			if (noteText.indexOf('<br>') > -1) {
-				var reText = noteText.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-			} else {
-				tag += noteText;
-			}
+			var noteText = $(this).find("input[name=bannerNote]").val();
+			tag = noteText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).find('.noteArea').append(tag);
 		}
 	});
@@ -1348,82 +1333,38 @@ $(document).ready(function() {
 		let tag = '';
 		let tag2 = '';
 		if(!gagajf.isNull($(this).find("input[name=styleTitle]").val())) {
-			var titleText = $(this).find("input[name=styleTitle]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-			if(titleText.indexOf('<br>') > -1){
-				var reText = titleText.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-			}else{
-				tag += titleText;
-			}
+			var titleText = $(this).find("input[name=styleTitle]").val();
+			tag = titleText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).find('.styleTitleC').append(tag);
 		}
 
 		if(!gagajf.isNull($(this).find("input[name=styleNote]").val())) {
-			var noteText = $(this).find("input[name=styleNote]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-			if(noteText.indexOf('<br>') > -1){
-				var reText = noteText.split("<br>");
-				tag2 += reText[0];
-				tag2 += '<br>';
-				tag2 += reText[1];
-			}else{
-				tag2 += noteText;
-			}
+			var noteText = $(this).find("input[name=styleNote]").val();
+			tag2 = noteText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).find('.styleNoteC').append(tag2);
 		}
 	});
 
 	// 잇아이템 <br> 태그
 	if(!gagajf.isNull($("#id004").find("input[name=title]").val())){
-		var id004Text = $("#id004").find("input[name=title]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-		if(id004Text.indexOf('<br>') > -1){
-			let tag = '';
-			var reText = id004Text.split("<br>");
-			tag += reText[0];
-			tag += '<br>';
-			tag += reText[1];
-			$("#id004").append(tag);
-		}else{
-			let tag = '';
-			tag += id004Text;
-			$("#id004").append(tag);
-		}
+		var id004Text = $("#id004").find("input[name=title]").val();
+		let tag = id004Text.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		$("#id004").append(tag);
 	}
 
 	// 핫딜 <br> 태그
 	if(!gagajf.isNull($("#id006").find("input[name=title]").val())){
-		var id006Text = $("#id006").find("input[name=title]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-		if(!gagajf.isNull(id006Text)){
-			if(id006Text.indexOf('<br>') > -1){
-				let tag = '';
-				var reText = id006Text.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-				$("#id006").append(tag);
-			}else{
-				let tag = '';
-				tag += id006Text;
-				$("#id006").append(tag);
-			}
-		}
+		var id006Text = $("#id006").find("input[name=title]").val();
+		let tag = id006Text.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
+		$("#id006").append(tag);
 	}
 
 	// 브랜드픽 <br> 태그
 	$('#id007 .title').each(function (){
 		let tag = '';
 		if(!gagajf.isNull($(this).find("input[name=title]").val())){
-			var brText = $(this).find("input[name=title]").val().replace("<BR>", "<br>").replace("<bR>", "<br>").replace("<Br>", "<br>");
-
-			if(brText.indexOf('<br>') > -1){
-				var reText = brText.split("<br>");
-				tag += reText[0];
-				tag += '<br>';
-				tag += reText[1];
-			}else{
-				tag += brText;
-			}
+			var brText = $(this).find("input[name=title]").val();
+			tag = brText.replace(/(<br>|<br\/>|<br \/>)/g, '<br>');
 			$(this).append(tag);
 		}
 	});

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

@@ -371,7 +371,7 @@
 							</div>
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
-									<script type="text/javascript" src="http://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
+									<script type="text/javascript" src="https://pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
 									<script type="text/javascript" >
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
@@ -563,6 +563,12 @@
 													</span>
 													<span class="score"><em th:text="${goodsInfo.score}">4.3</em>점</span>
 												</div>
+												<div class="star_score" th:unless="${goodsInfo.reviewRegCnt  > 0 }">
+													<span class="star" >
+														<em class="progbar" style="width:0%;"></em> <!-- 평점 style로 표기 -->
+													</span>
+													<span class="score"><em>0</em>점</span>
+												</div>
 											</a>
 										</div>
 										<!-- 베스트 리뷰 등록시 노출 -->
@@ -1647,8 +1653,8 @@
 					let soldoutYn = ""; 
 					let disabledYn = "";
 					let saleQty = (Number(qty) * Number(minOrdQty));
-					if ("Y" == item.soldoutYn || Number(item.stockQty) <= Number(saleQty)) soldoutYn = "true";
-					if (soldoutYn == "true" || item.goodsStat !=  'G008_90') disabledYn= "true";
+					if ("Y" == item.soldoutYn || Number(item.stockQty) < Number(saleQty)) soldoutYn = "true";
+					if (soldoutYn == "true") disabledYn= "true";
 					if (selfGoodsYn == "Y"){
 						tag += '<li aria-disabled="'+disabledYn+'" data-soldout="'+soldoutYn +'" onclick="fnViewStockSet(this, \''+ item.goodsCd+'\' , \''+ item.optCd1+'\' , \''+ item.optCd2+'\', \''+ minOrdQty+'\', \''+ maxOrdQty+'\')">\n';	
 					}else{

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

@@ -119,15 +119,15 @@
 				tag += '	</div>\n';
 				tag += '	<div class="fold_cont" style="display: none;">\n';
 				tag += '		<div class="fold_detail">\n'; //문의 내용
-				tag += '			<div>\n';
-				tag += '				<p>' + item.questContent.replaceAll("\n", "</br>").escapeHtml() + '</p>\n';
+				tag += '			<div>\n'; debugger;
+				tag += '				<p>' + item.questContent.escapeHtml() + '</p>\n';
 				tag += '			</div>\n';
 				tag += '		</div>\n';
 				
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '	<div class="fold_answer">\n'; //문의 답변
 					tag += '		<div class="answer_head">답변이 등록되었습니다.</div>\n';
-					tag += '		<div class="answer_body">' + item.ansContent.replaceAll("\n", "</br>") + '</div>\n';
+					tag += '		<div class="answer_body">' + item.ansContent + '</div>\n';
 					tag += '		<span class="data">' + item.ansDt + '</span>\n';
 					tag += '	</div>\n';
 				}

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

@@ -25,7 +25,7 @@
 					<ul>
 						<li th:if="${measurementList != null and !measurementList.empty}" th:class="${(measurementList != null and !measurementList.empty) ? 'active': ''}"><a href="javascript:void(0);" >실측 사이즈</a></li>
 						<li th:if="${(commonSizeInfoList != null and !commonSizeInfoList.empty) or (brandSizeInfoList != null and !brandSizeInfoList.empty)}" th:class="${(measurementList == null or measurementList.empty) ? 'active': ''}"><a href="javascript:void(0);" >표준 사이즈</a></li>
-						<li th:if="${measurementSizeInfoList != null and !measurementSizeInfoList.empty}"><a href="javascript:void(0);" >측정 사이즈</a></li>
+						<li th:if="${measurementSizeInfoList != null and !measurementSizeInfoList.empty}"><a href="javascript:void(0);" >측정 가이드</a></li>
 					</ul>
 				</div>
 				<div class="tab_cont_wrap">

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

@@ -512,7 +512,7 @@ var reviewUpdate = function() {
 		return;
 	}
 	
-	mcxDialog.confirm('리뷰를 수정하시겠습니까"?', {
+	mcxDialog.confirm('리뷰를 수정하시겠습니까?', {
         cancelBtnText: "취소",
         sureBtnText: "확인",
         sureBtnClick: function(){
@@ -606,7 +606,6 @@ var fnChooseFile = function(obj) {
 			mcxDialog.alertC('첨부할 수 없는 파일 형식입니다.', {
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					//$(obj).parent('.imgUpload').find('.removes').trigger('click');
 					$(".pics").find(".removes").eq(0).trigger('click');
 				}
 			});
@@ -703,8 +702,8 @@ $(document).ready(function() {
 								"<br/><span class=\"removes\">Removes image</span>" +
 								"</span>").insertAfter("#fileAdd");
 					}else{
-						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" />" +
+						$("<span class=\"pics mov\">" +
+								"<img class=\"picsThumbs\" src=\"" + _kollusMediaUrl + '/poster/' + reviewAttach[i].kmcKey + "\"/>" +
 								"<input type='hidden' name='kmcKeyArr' value='" + reviewAttach[i].kmcKey + "'>" + 
 								"<input type='hidden' name='kufKeyArr' value='" + reviewAttach[i].kufKey + "'>" + 
 								"<br/><span class=\"removes\">Removes image</span>" +

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

@@ -153,7 +153,7 @@
 				html += '								<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550"  width="100%" alt="">  ';
 				html += '							</span>                                                                                       ';
 				html += '							<p>                                                                                           ';
-				html += '								<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>             ';
+				html += '								<span class="buy_date"><em>'+item.ordDt+'</em>&nbsp;구매</span>             ';
 				html += '							</p>                                                                                          ';
 				html += '							<p>                                                                                           ';
 				html += '								<span class="brand">'+item.brandNm+'</span>                               ';
@@ -216,7 +216,7 @@
 				html+='									<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550" width="100%" alt="">';
 				html+='								</span>';
 				html+='								<p>';
-				html+='									<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>';
+				html+='									<span class="buy_date"><em>'+item.ordDt+'</em>&nbsp;구매</span>';
 				html+='								</p>';
 				html+='								<p>';
 				html+='									<span class="brand">'+item.brandNm+'</span>';

+ 7 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="ko" xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/PlanningLayoutWeb">
+	layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : PlanningDetailFormWeb.html
@@ -260,7 +260,7 @@ if(planCornerList.length>0){
 	html += '     <div class="sticky_nav">';
 	html += '         <ul>    ';
 	$.each(planCornerList, function(idx, item)  {
-		html += '             <li><a href="#brand'+idx+'">'+item.cornerNm+'</a></li>';
+		html += '             <li><a href="#brand'+(idx+1)+'">'+item.cornerNm+'</a></li>';
 	})
 	
 	html += '         </ul>';
@@ -269,7 +269,7 @@ if(planCornerList.length>0){
 	html += '<div class="cont_body">';
 	html += '     <div class="list_content">';
 	$.each(planCornerList, function(idx, item)  {
-		html += '         <div id="brand'+idx+'">';
+		html += '         <div id="brand'+(idx+1)+'" class="dp_item_list">';
 		html += '             <div class="item_header">';
 		html += '                 <h4>'+item.cornerNm+'</h4>';
 		html += '             </div>';
@@ -1031,6 +1031,10 @@ $(document).ready( function() {
 	$('.btn_copy').bind('click', function() {
 		copyToClipboard();
 	});
+	
+	$('#replyText').bind('input paste', function() {
+		  $(this).trigger('keyup');
+	});
 
 	//팝업 - 쿠폰사용안내
 	$(document).on('click','#btn_couponInfo_pop',function(e){

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/DefaultLayoutWeb">
+	layout:decorator="web/common/layout/BrandLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : PlanningMainFormWeb.html
@@ -133,7 +133,7 @@
 						$.each(result, function(idx, item) {
 						    tag += '  <div class="exhi_item">\n';
 						    tag += '       <div class="exhi_item_img">\n';
-						    tag += '           <a href= "javascript:void(0);" onclick="cfnGoToPlanDetail(\'' + item.planSq + '\')">\n'; 
+						    tag += '           <a href= "javascript:void(0);" onclick="cfnGoToPlanDetail(\'' + item.planSq + '\',\'' + [[${brandGroupNo}]] + '\')">\n';
                             if (item.newYn == 'Y') {
 						    	tag += '				<div class="shape ranker"><span>NEW</span></div>\n';
 						    }

+ 108 - 63
src/main/webapp/biz/goods.js

@@ -414,7 +414,7 @@ var fnFilterSet = function (searchId, sizeGb, appGb){
 	fnGoodsListSearch();
 }
 
-var fnSetFilterHtml = function (gubun, staus){
+var fnSetFilterHtml = function (gubun, staus, mobGb){
 	filterHtml = '';
 
 	$('#filterForm input[name=size]:checked').each(function(){
@@ -435,19 +435,20 @@ var fnSetFilterHtml = function (gubun, staus){
 	$('#filterForm input[name=benefit]:checked').each(function(){
 		filterHtml += '<input type="hidden" name="benefitArr" value="'+$(this).val()+'"/>\n';
 	});
-	if(!gagajf.isNull($("#filterForm input[name=price_input_from]").val())){
-		filterHtml += '<input type="hidden" name="priceFrom" value="'+$("#filterForm input[name=price_input_from]").val()+'"/>\n';
+	if(!gagajf.isNull($("#filterForm input[name=hPriceFrom]").val())){
+		filterHtml += '<input type="hidden" name="priceFrom" value="'+$("#filterForm input[name=hPriceFrom]").val()+'"/>\n';
 	}
-	if(!gagajf.isNull($("#filterForm input[name=price_input_to]").val())){
-		filterHtml += '<input type="hidden" name="priceTo" value="'+$("#filterForm input[name=price_input_to]").val()+'"/>\n';
+	if(!gagajf.isNull($("#filterForm input[name=hPriceTo]").val())){
+		filterHtml += '<input type="hidden" name="priceTo" value="'+$("#filterForm input[name=hPriceTo]").val()+'"/>\n';
 	}
-	if(!gagajf.isNull($("#filterForm input[name=dcrate_input_from]").val())){
-		filterHtml += '<input type="hidden" name="dcRateFrom" value="'+$("#filterForm input[name=dcrate_input_from]").val()+'"/>\n';
+	if(!gagajf.isNull($("#filterForm input[name=hDcRateFrom]").val())){
+		filterHtml += '<input type="hidden" name="dcRateFrom" value="'+$("#filterForm input[name=hDcRateFrom]").val()+'"/>\n';
 	}
-	if(!gagajf.isNull($("#filterForm input[name=dcrate_input_to]").val())){
-		filterHtml += '<input type="hidden" name="dcRateTo" value="'+$("#filterForm input[name=dcrate_input_to]").val()+'"/>\n';
+	if(!gagajf.isNull($("#filterForm input[name=hDcRateTo]").val())){
+		filterHtml += '<input type="hidden" name="dcRateTo" value="'+$("#filterForm input[name=hDcRateTo]").val()+'"/>\n';
 	}
 
+	// console.log('filterHtml>>'+filterHtml);
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 }
 
@@ -517,9 +518,17 @@ var fnDcRateFilterSliderMove = function (min, max){
 }
 
 var fnFilterSlider = function (gubun, min, max){
+	fnCategoryGoodsInfiniteScrollInit();
 	let tag = '';
 	let oriMin = '';
 	let oriMax = '';
+	filterHtml = '';
+	filterStatHtml = '';
+	filterStatHtml = $("#filterData").html();
+	$("#searchGoodsForm").find('input[name=priceFrom]').remove();
+	$("#searchGoodsForm").find('input[name=priceTo]').remove();
+	$("#searchGoodsForm").find('input[name=dcRateFrom]').remove();
+	$("#searchGoodsForm").find('input[name=dcRateTo]').remove();
 	if(gubun=='price'){
 		oriMin = $("#price_input_from").val();
 		oriMax = $("#price_input_to").val();
@@ -534,12 +543,16 @@ var fnFilterSlider = function (gubun, min, max){
 		}else{
 			tag += '<span id="priceSpan">'+max+'원';
 		}
+		$("#filterForm").find('input[name=hPriceFrom]').val(min);
+		$("#filterForm").find('input[name=hPriceTo]').val(max);
 	}else{
 		if(min!=max){
 			tag += '<span id="dcrateSpan">'+ min +'~'+max+'%';
 		}else{
 			tag += '<span id="dcrateSpan">'+max+'%';
 		}
+		$("#filterForm").find('input[name=hDcRateFrom]').val(min);
+		$("#filterForm").find('input[name=hDcRateTo]').val(max);
 	}
 	tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilterSlider(this,\''+gubun+'\', \''+oriMin+'\', \''+oriMax+'\');"></a >';
 	tag += '</span>';
@@ -552,30 +565,26 @@ var fnFilterSlider = function (gubun, min, max){
 		tag2 += '<input type="hidden" name="priceFrom" value="'+min.replace(",", "")+'"/>\n';
 		tag2 += '<input type="hidden" name="priceTo" value="'+max.replace(",", "")+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
-		filterHtml += tag2;
-		fnCategoryGoodsInfiniteScrollInit();
+		// filterHtml += tag2;
+		// fnCategoryGoodsInfiniteScrollInit();
 	}else{
 		tag2 += '<input type="hidden" name="dcRateFrom" value="'+min+'"/>\n';
 		tag2 += '<input type="hidden" name="dcRateTo" value="'+max+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
-		fnCategoryGoodsInfiniteScrollInit();
-		filterHtml += tag2;
+		// fnCategoryGoodsInfiniteScrollInit();
+		// filterHtml += tag2;
 	}
-	
-	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnSetFilterHtml();
 	fnGoodsListSearch();
 }
 
 var fnDeleteFilterSlider = function (obj, gubun, minVal, maxVal){
-	console.log('fnDeleteFilterSlider >>>'+filterStatHtml);
+	filterStatHtml = '';
+	filterStatHtml = $("#filterData").html();
 	if(gubun=='price'){
-		// filterStatHtml.find('#priceSpan').each(function (){
-		// 	$(this).remove();
-		// 	console.log('priceSpan:::'+filterStatHtml);
-		// 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
-		// });
-
+		$("#searchGoodsForm").find("input:hidden[name=priceFrom]").remove();
+		$("#searchGoodsForm").find("input:hidden[name=priceTo]").remove();
 		var $range = $(".dp .js-range-slider01, .sch_result .js-range-slider01");
 		var $inputFrom = $("#price_input_from");
 		var $inputTo = $("#price_input_to");
@@ -594,11 +603,8 @@ var fnDeleteFilterSlider = function (obj, gubun, minVal, maxVal){
 		$("#filterForm input:hidden[name=priceFrom]").remove();
 		$("#filterForm input:hidden[name=priceTo]").remove();
 	}else{
-		// filterStatHtml.find('#dcrateSpan').each(function (){
-		// 	$(this).remove();
-		// 	console.log('dcrateSpan:::'+filterStatHtml);
-		// 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
-		// });
+		$("#searchGoodsForm").find("input:hidden[name=dcRateFrom]").remove();
+		$("#searchGoodsForm").find("input:hidden[name=dcRateTo]").remove();
 		var $range = $(".dp .js-range-slider02, .sch_result .js-range-slider02");
 		var $inputFrom = $("#dcrate_input_from");
 		var $inputTo = $("#dcrate_input_to");
@@ -685,6 +691,8 @@ var filterPriceMob = function (obj, gubun, staus, idx){
 		$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
 		$("#searchGoodsForm input:hidden[name=priceTo]").remove();
 	}
+	$("#filterForm").find('input[name=hPriceFrom]').val(min);
+	$("#filterForm").find('input[name=hPriceTo]').val(max);
 
 	$('#priceFilterDiv').find('.daps1').find('span').html('');
 	$('#filterForm input[name=price]:checked').each(function(index){
@@ -692,11 +700,12 @@ var filterPriceMob = function (obj, gubun, staus, idx){
 	});
 
 	$("#searchGoodsForm").append(tag2);
-	filterHtml += tag2;
+	// filterHtml += tag2;
 	fnCategoryGoodsInfiniteScrollInit();
 
-	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
-	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	// gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	// gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnSetFilterHtml('','','Mob');
 	fnGoodsListSearch();
 }
 
@@ -732,6 +741,8 @@ var filterDcRateMob = function (obj, gubun, staus, idx){
 		$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
 		$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
 	}
+	$("#filterForm").find('input[name=hDcRateFrom]').val(min);
+	$("#filterForm").find('input[name=hDcRateTo]').val(max);
 
 	$('#dcRateFilterDiv').find('.daps1').find('span').html('');
 	$('#filterForm input[name=dcRate]:checked').each(function(index){
@@ -739,19 +750,18 @@ var filterDcRateMob = function (obj, gubun, staus, idx){
 	});
 
 	$("#searchGoodsForm").append(tag2);
-	filterHtml += tag2;
+	// filterHtml += tag2;
 	fnCategoryGoodsInfiniteScrollInit();
 
-	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
-	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	// gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	// gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnSetFilterHtml('','','Mob');
 	fnGoodsListSearch();
 
 }
 
 // 상품상세 필터 조회
 var fnSelectFilerMob = function (obj, gubun, staus, sizeGb){
-	filterHtml = '';
-	filterStatHtml = '';
 	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
 	let $obj = $(obj);
@@ -784,7 +794,6 @@ var fnSelectFilerMob = function (obj, gubun, staus, sizeGb){
 }
 
 var fnReCheckFilterList = function (){
-	var data = '';
 	var searchId = '';
 	$('#filterForm').find('.allFilter').find('.chkFilter').each(function() {
 		if(!gagajf.isNull($(this).attr('id'))){
@@ -796,35 +805,71 @@ var fnReCheckFilterList = function (){
 		}
 
 		if(!gagajf.isNull(searchId)){
-			$('#filterForm input[name='+searchId+']:checked').each(function(idx){
-				if(searchId=='color'){
-					$('#'+searchId+'FilterDiv').find('.daps1').find('.pic').find('span').html('');
-					var mobTag = '';
-					var color = $(this).attr('data-id');
-					console.log('color::'+$(this).attr('data-id'));
-					if(color=='FFFFFF'){
-						mobTag += '<span class="pdColor-color" style="background-color:#'+color+';border:1px solid #aaa;"></span>';
-					}else{
-						mobTag += '<span class="pdColor-color" style="background-color:#'+color+'"></span>';
+			var data = '';
+			if(searchId == 'price'){
+				$('#filterForm #priceArea').find('li').each(function(index){
+					if($(this).find('input[name=price]').prop('checked') == true){
+						$("#priceFilterDiv").find('.daps1').append('<span class="pic">'+$("#pricdSpan"+(index+1)).text()+'</span>');
 					}
-					$("#"+searchId+"FilterDiv").find('.daps1').find('.pic').append(mobTag);
-				}else if(searchId=='price'){
-					$('#filterForm input[name=price]:checked').each(function(index){
-						$("#priceFilterDiv").find('.daps1').append('<span class="pic">'+$("#pricdSpan"+idx).text()+'</span>');
-					});
-				}else if(searchId=='dcRate'){
-					$('#filterForm input[name=dcRate]:checked').each(function(index){
-						$("#dcRateFilterDiv").find('.daps1').append('<span class="pic">'+$("#dcRateText"+idx).text()+'</span>');
-					});
-				}else{
-					$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
-					if(idx>0){
-						data += ',';
+				});
+			}else if(searchId == 'dcRate'){
+				$('#filterForm #dcRateArea').find('li').each(function(index){
+					if($(this).find('input[name=dcRate]').prop('checked') == true){
+						$("#dcRateFilterDiv").find('.daps1').append('<span class="pic">'+$("#dcRateText"+(index+1)).text()+'</span>');
 					}
-					data += $(this).attr('data-id');
-					$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
-				}
-			});
+				});
+			}else{
+				$('#filterForm input[name='+searchId+']:checked').each(function(idx){
+					if(searchId=='color'){
+						$('#'+searchId+'FilterDiv').find('.daps1').find('.pic').find('span').html('');
+						var mobTag = '';
+						var color = $(this).attr('data-id');
+						console.log('color::'+$(this).attr('data-id'));
+						if(color=='FFFFFF'){
+							mobTag += '<span class="pdColor-color" style="background-color:#'+color+';border:1px solid #aaa;"></span>';
+						}else{
+							mobTag += '<span class="pdColor-color" style="background-color:#'+color+'"></span>';
+						}
+						$("#"+searchId+"FilterDiv").find('.daps1').find('.pic').append(mobTag);
+					}else if(searchId=='brandGroup'){
+						$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+						if(idx>0){
+							data += ',';
+						}
+						data += $(this).attr('data-id');
+						$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+					}else if(searchId=='size'){
+						$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+						if(idx>0){
+							data += ',';
+						}
+						data += $(this).attr('data-id');
+						$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+					}else if(searchId=='season'){
+						$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+						if(idx>0){
+							data += ',';
+						}
+						data += $(this).attr('data-id');
+						$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+					}else if(searchId=='benefit'){
+						$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+						if(idx>0){
+							data += ',';
+						}
+						data += $(this).attr('data-id');
+						$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+					}else{
+						$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+						if(idx>0){
+							data += ',';
+						}
+						data += $(this).attr('data-id');
+						$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+					}
+				});
+			}
+
 		}
 
 	});

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

@@ -42,7 +42,7 @@ function call_pay_form()
 	// 인코딩 방식에 따른 변경 Start
 	if(v_frm.encoding_trans == undefined) {
 		v_frm.action = PayUrl;
-	} else if(v_frm.encoding_trans.value == "UTF 8") {
+	} else if(v_frm.encoding_trans.value == "UTF-8") {
 		v_frm.action = PayUrl.substring(0, PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
 		v_frm.PayUrl.value = PayUrl;
 	} else {

+ 16 - 14
src/main/webapp/ux/mo/css/common_m.css

@@ -313,7 +313,7 @@ input[type="file"] {
   display: inline !important;float: left;margin: 0 10px 0 0;width: 7.2rem;height:7.2rem;
   border: 1px solid #dddddd;box-sizing: border-box;position: relative; overflow: hidden;
 }
-.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/mo/ico_play.png') no-repeat 50% 50%; z-index:0;}
+.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(221,221,221,1) url('/images/mo/ico_play.png') no-repeat 50% 50%; z-index:0;}
 .picsThumbs {
   width: auto;height: auto;max-height: 7.1rem;max-width:7.1rem;margin: auto 0;
   position: absolute;top: 50%;bottom: auto;left: 50%;right: 0;
@@ -567,7 +567,7 @@ top: 9px;border-color: transparent transparent #888888 transparent;}
 .ico_ft_arrow_b:before {content: ""; width:11px; height:11px; background-image: url('/images/mo/ico_ft_arrow.png'); transform: rotate(90deg);}
 .ico_ft_arrow_t:before {content: ""; width:11px; height:11px; background-image: url('/images/mo/ico_ft_arrow.png'); transform: rotate(-90deg);}
 .ico_kcl::before {content: ""; width:32px; height:50px; background-image: url('/images/mo/ico_kcl.png');}
-.ico_picker::before {content: ""; width:40px; height:40px; background:url(/images/mo/ico_picker.png) no-repeat 50% 50%;}
+.ico_picker::before {content: ""; width:100%; height:100%; background:url(/images/mo/ico_picker.png) no-repeat 50% 50%;}
 .ico_trash::before {content: ""; width:13px; height:16px; background:url(/images/mo/ico_trash.png) no-repeat 50% 50%;}
 .ico_like::before {content: ""; width: 19px;height:16px;background: url(/images/mo/ico_like.png) no-repeat 0% 50%; background-size:cover;}
 .active .ico_like::before {background-position:100% 50%;}
@@ -615,7 +615,7 @@ top: 9px;border-color: transparent transparent #888888 transparent;}
 /* btn active */
 .btn_default:hover, .btn_default:focus, 
 .btn_default:active, .btn_default.active, 
-.open > .tgl_dropdown.btn_default {background-color: #F5F5F5;border-color: #dddddd;color:#333333;}
+.open > .tgl_dropdown.btn_default {background-color: #fff;border-color: #dddddd;color:#333333;}
 .btn_dark:hover, .btn_dark:focus, 
 .btn_dark:active, .btn_dark.active, 
 .open > .tgl_dropdown.btn_dark {background-color: #2f2f2f;border-color: #2f2f2f;color:#ffffff;}
@@ -660,11 +660,11 @@ body.gnb_on {height: 100vh;overflow: hidden;}
 .inner {padding: 0 2.0rem 1.3rem 2.0rem;position: relative;}
 .inner.wide {padding: 0 0rem 1.3rem 0rem;position: relative;}
 .inner::after {content: '';display: block;clear: both;}
-.inner.bg_gray {background-color: #f5f5f5;}
-.inner.bg_beige {background-color: #ffeee7;}
-.inner.bg_dark {background-color: #222222;}
-.inner.bg_dark .titWrap>* {color: #ffffff;}
-.inner.bg_dark .titWrap a H2{color: #ffffff;}
+.inner.bg_gray {background-color: #f5f5f5 !important;}
+.inner.bg_beige {background-color: #ffeee7 !important;}
+.inner.bg_dark {background-color: #222222 !important;}
+.inner.bg_dark .titWrap>* {color: #ffffff !important;}
+.inner.bg_dark .titWrap a H2{color: #ffffff !important;}
 
 /* header, htop, btn_gnb, header.main, hmenu, bng, bnb */
 header {
@@ -848,7 +848,7 @@ header .hmenus .bnb ul > li > a{display: block; padding: 8px 0; font-size: 1.5re
 
 /* gnb */
 body.header-show .app .gnb{top: 50px;}
-.app .gnb {position: -webkit-sticky; position: sticky; top: 0px; padding-right: 50px; background-color: #000; z-index: 9; transition: top 0.3s; width: 100%;}
+.app .gnb {position: -webkit-sticky; position: sticky; top: 0px; padding-right: 50px; background-color: #000; z-index: 9; /*transition: top 0.3s;*/ width: 100%;}
 .app .gnb {background-color:#222222; position:relative; z-index:79;} /* layout_m 재확인 */
 .app .gnb.expand{padding-right: 30px;}
 
@@ -893,8 +893,8 @@ main.container .inner:last-child{padding-bottom: 6.0rem; margin-bottom: 0;}
 .fullHead img {width: 10.666rem; height:1.6rem;}
 .fullBody {background:#f5f5f5;min-height: calc(100% - 5.2rem);max-height: calc(100% - 5.2rem);overflow-y: scroll;}
 .fullBody .inner {background:#ffffff;margin:0;padding:0;}
-.fullBody .inner .flow{display: inline-block;width: 49.0%;height: 100%;vertical-align: top;padding:2.5rem 0;}
-.fullBody .inner .flow li{width:100%;height:3.1333rem;line-height:3.1333rem;padding:0 0 0 2rem;border: 0;box-sizing: border-box;text-align: left;display: inline-block;}
+.fullBody .inner .flow{display: inline-block;width: 100%;height: 100%;vertical-align: top;padding:2.5rem 0;}
+.fullBody .inner .flow li{width:49.0%;height:3.1333rem;line-height:3.1333rem;padding:0 0 0 2rem;border: 0;box-sizing: border-box;text-align: left;display: inline-block;}
 .fullBody .inner .flow span{font-size: 1.333rem;}
 .fullBody .btn_group {margin: 0;}
 .fullBody .btn_group div {margin:0;position: relative;}
@@ -905,11 +905,13 @@ main.container .inner:last-child{padding-bottom: 6.0rem; margin-bottom: 0;}
 /* Full메뉴_카테고리 */
 .fullBody .fullCate {padding: 0 0 2rem;margin-bottom: 1.2rem;}
 .fullBody .fullCate > li > ul {display: none; background: #f5f5f5;}
-.fullBody .fullCate > li > a {display: block; padding:1.6rem 2.0rem; font-size: 1.4rem; font-weight: 400;font-family: 'Noto Sans kr', sans-serif;}
+.fullBody .fullCate > li > a {position:relative;display: block; padding:1.6rem 2.0rem; font-size: 1.4rem; font-weight: 400;font-family: 'Noto Sans kr', sans-serif;}
+.fullBody .fullCate > li > a::after {content: '';display: inline-block;width: 2.0rem;height: 2.0rem;background: url(/images/mo/ico_full.png) no-repeat;background-size: 0.8rem 1.4rem;-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg);transform: rotate(0deg);position: absolute;right: 1.2rem;background-position: left center;}
 .fullBody .fullCate > li > a:hover span {color: #fd4802; border-bottom: 1px solid #fd4802;}
-.fullBody .fullCate > li.hasCate > a {background: url('/images/mo/ico_full.png') no-repeat right 2.0rem center;background-size: 0.8rem 1.4rem;}
-.fullBody .fullCate > li.hasCate > a.on {background: url('/images/mo/ico_full_on.png') no-repeat right 2.0rem center; background-size: 1.4rem 0.8rem; font-size: 1.4rem; color: #fd4802;}
+.fullBody .fullCate > li.hasCate > a::after {right: 1.8rem;background: url('/images/mo/ico_full.png') no-repeat;background-position: center;background-size: 0.8rem 1.4rem;-webkit-transform: rotate(90deg);-moz-transform: rotate(90deg);-ms-transform: rotate(90deg);-o-transform: rotate(90deg);transform: rotate(90deg);}
+.fullBody .fullCate > li.hasCate > a.on {font-size: 1.4rem; color: #fd4802;}
 .fullBody .fullCate > li.hasCate > a.on span {border-bottom: 1px solid #fd4802;}
+.fullBody .fullCate > li.hasCate > a.on::after {background: url('/images/mo/ico_full_on.png') no-repeat;background-size: 1.4rem 0.8rem; background-position: center;-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);-o-transform: rotate(0deg);transform: rotate(0deg);}
 .fullBody .fullCate > li.hasCate > ul {padding: 1.5rem 0;}
 .fullBody .fullCate > li.hasCate > ul > li > a {display: block; font-size: 1.3rem; color: #888; padding:0.87rem 4.3rem;}
 .fullBody .fullCate > li.hasCate > ul > li > a:hover span {color: #fd4802; border-bottom: 1px solid #fd4802;}

+ 32 - 38
src/main/webapp/ux/mo/css/layout_m.css

@@ -397,7 +397,7 @@
 /* 슬라이드아이템*/
 .item_prod {display: inline-block;font-size: 0px;vertical-align: top;color: rgb(31, 31, 31);position: relative;letter-spacing: -0.025em;}
 .item_prod .item_state {position: relative; padding:0; box-sizing: border-box;}
-.item_prod .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 2.0rem; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: auto; transform:translate(-50%, -50%); line-height: 12; z-index: 20; text-align: center;}
+.item_prod .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 2.0rem; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 12; z-index: 20; text-align: center;}
 .item_prod .item_state.AD .itemPic:before {content:'AD'; position: absolute; bottom: 0.666rem; right: 0.666rem; font-size: 1rem; font-weight: 300; letter-spacing: -0.025em; color:#888888; width: auto; height: auto; line-height: 1rem; z-index: 21; text-align: right;}
 
 .item_prod .itemLike {position: absolute;top:1rem;right:1rem;font-size: 0px;z-index: 19;width: 1.7rem;height: 1.7rem; background: url('/images/mo/ico_like.png');background-size: 3.4rem;background-position:0px 0px;background-repeat: no-repeat;}
@@ -410,7 +410,7 @@
 /* .item_prod .itemLike.active::before {opacity: 1;} */
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background-color: #fff;}
+.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background-color: #f9f9f9;}
 /*.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}*/
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .item_prod .itemPic .pd_mov {position: absolute;width: 100%;height: 100%;top: 50%;left: 0px;transform: translateY(-50%);z-index: 2;}
@@ -786,7 +786,7 @@
 .pd_detail .pd_recommend .item_picker > div button{position: absolute; width: 100%; height: 100%; top: 0; left: 0;}
 .pd_detail .pd_recommend .item_picker > div .pick_descr{display:none;}
 .pd_detail .pd_recommend .pic_img{margin:0 -2rem 2rem;}
-.pd_detail .pd_recommend .pic_list .item_prod .itemName{display: block;max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
+.pd_detail .pd_recommend .pic_list .item_prod .itemName{display: block; min-height:3rem; max-height: 3.3rem; display: -webkit-box; text-overflow: ellipsis; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; overflow-wrap: break-word;  width: calc(100% - 10%);}
 .pd_detail .pd_recommend .pic_list .btn_group_flex{margin-top:3rem;}
 .pd_detail .pd_recommend .pic_list .btn_group_flex button{border: 1px solid #fd4802; color: #fd4802; background-color:#fff;}
 .pd_detail .pd_samebrand{}
@@ -1170,11 +1170,6 @@
 .modal.pd_pop.pd_review_pop .riview_box .area_slider{margin-bottom:0;}
 .modal.pd_pop.pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:10;}
-.modal.pd_pop.pd_review_pop .btn_default:hover{background-color:#fff;}
-.modal.pd_pop.pd_review_pop .btn_default:focus{background-color:#fff;}
-.modal.pd_pop.pd_review_pop .btn_default:active{background-color:#fff;}
-.modal.pd_pop.pd_review_pop .btn_default.active{background-color:#fff;}
-.modal.pd_pop.pd_review_pop .tgl_dropdown.btn_default{background-color:#fff;}
 .pd_review{background:#f5f5f5;}
 .pd_review.best,
 .pd_review.photo{background:#fff; position:relative; bottom:0; z-index:999; max-height:35rem;}
@@ -1305,11 +1300,11 @@
 .pd_review .area_rv_all .nodata {padding:10rem 0; border-top:1px solid #ddd; text-align:center;}
 .pd_review .area_rv_all .nodata .txt_box {color:#666; font-size:1.3rem; font-weight:300;}
 .pd_review .area_rv_all .nodata .btn_box {margin-top:1.5rem;}
-.pd_review .area_rv_all .nodata .btn_group_flex button{margin:0 auto; padding:0; width:10.8rem; height:3rem; line-height:3rem!important; font-size:1.1rem; border:1px solid #ddd;}
+.pd_review .area_rv_all .nodata .btn_group_flex button{margin:0 auto; padding:0; width:10.8rem; height:3rem !important; line-height:3rem!important; font-size:1.1rem; border:1px solid #ddd;}
 .pd_review .area_rv_all .nodata .btn_box .btn span {color:#222; font-size:1.4rem; font-weight:300;}
 .pd_review .category_open {position:relative; margin:-1.2rem -1.33rem -1px; border-bottom: 1px solid #ddd; overflow-x:auto;}
 .pd_review .category_open {font-size:0; white-space:nowrap;}
-.pd_review .category_open > li {position:relative; display:inline-block; padding:0 2rem; font-size:1.1rem; color:#222; line-height: 4.5rem;}
+.pd_review .category_open > li {position:relative; display:inline-block; padding:0 2rem; font-size:1.1rem; color:#222; line-height: 4.5rem; max-width:10rem;}
 .pd_review .category_open > li:after{content:''; display:block; position:absolute; top:50%; margin-top:-0.5rem; right:0px; width:1px; height:1rem; background-color:#ddd;}
 .pd_review .category_open > li:last-child:after{display:none;}
 .pd_review .category_open > li > span{position:relative; padding-right:1.5rem;}
@@ -1585,10 +1580,10 @@
 
 /* ============================================ 전시 ============================================ */
 /* 전시공통 (타이틀,정렬,필터,네비,마지막리스트)*/
-.dp .dp_subtitle{margin-bottom: 2.4rem; font-size:1.6rem; font-weight:500; text-align:center;}
+.dp .dp_subtitle{margin-bottom: 2.4rem; font-size:2rem; 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; justify-content: center; border-bottom:1px solid #eeeeee;}
+.dp .category_nav {margin:0 -2rem -1.2rem; padding:0 2rem; 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; }
@@ -1598,7 +1593,7 @@
 .dp .category_nav ul li:hover button::after, 
 .dp .category_nav ul li button.active::after{content:''; position: absolute; bottom:0; left:0; width:100%; height:2px; background: #fd4802; }
 .dp .category_nav ul li:last-child {margin-right: 0;}
-.dp .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
+.dp .open_categori {background-color:#fff; }
 .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;background-position: 97% 50%; background-size: 0.7rem 0.43rem;}
 .dp .dp_util{display:block; float:right; text-align:right; font-size: 0;}
 .dp .dp_util li {display:inline-block; margin-left:2rem; vertical-align:middle;}
@@ -1621,7 +1616,7 @@
 .dp .list_last{ padding: 2.5rem 0; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
 
 /* 전시상품리스트 공통(default) */
-.dp .dp_list .sub_category{padding:0.8rem 0;}
+.dp .dp_list .sub_category{margin-bottom: -1.2rem; padding:0.8rem 0;}
 .dp .dp_list .sub_category .cate_wrap{white-space:nowrap; overflow-x:auto; -ms-overflow-style: none;}
 .dp .dp_list .sub_category .cate_wrap::-webkit-scrollbar{display:none;}
 .dp .dp_list .sub_category .cate_wrap a{float:none; display:inline-block; margin-bottom:0;}
@@ -1631,17 +1626,15 @@
 .dp .list_content .list_defult{display:none; text-align:center; padding:11rem 0;}
 .dp .list_content .list_defult p{text-align:center; font-size:1.3rem; color:#888888; font-weight:300;} 
 .dp .list_content .list_defult .btn{margin-top:2.4rem; font-size:1.1rem; height:3rem;}
-.dp .list_content .list_last{ padding: 2.5rem 0; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
+.dp .list_content .list_last{padding: 2.5rem 0 6rem; font-size: 1.1rem; color: #888888; font-weight: 300; text-align: center; border-top:1px solid #f5f5f5;}
 .dp .list_content.nodata .lookbookGrp,
 .dp .list_content.nodata .itemsGrp,
 .dp .list_content.nodata .list_item,
 .dp .list_content.nodata .list_last{display:none;}
 .dp .list_content.nodata .list_defult{display:block;} 
-.dp .list_content .itemsGrp{padding-bottom:4rem;}
 .dp .itemsGrp .item_prod:nth-child(2n){margin-right: 0;}
-.dp .itemsGrp .item_prod {width: 48.75%; float: left; margin-right: 2.5%; margin-top: 4rem;}
-.dp .itemsGrp .item_prod:nth-child(1),
-.dp .itemsGrp .item_prod:nth-child(2){margin-top:0rem;}
+.dp .itemsGrp .item_prod {width: 48.75%; float: left; margin-right: 2.5%; margin-bottom: 4rem;}
+
 .dp .itemsGrp:after{display:block; content:''; clear:both;}
 
 /* 아울렛 서브메인 - dp_outlets */
@@ -1651,18 +1644,19 @@
 .dp .dp_outlets .outlets_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: fff;}
 .dp .dp_outlets .outlets_visual .txtWrap p {color: #fff; font-size: 3rem; font-weight: 500; line-height: 1.2;}
 .dp .dp_outlets .outlets_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300;}
-.dp .dp_outlets .dp_cate_list {}
+.dp .dp_outlets .dp_cate_list {margin:-1.2rem 0;}
 .dp .dp_outlets .dp_cate_list:after {content:''; display: block; clear: both;}
 .dp .dp_outlets .dp_cate_list a {position:relative; float:left; width:50%; line-height:5rem; padding:0 3rem 0 2rem; font-size:1.3rem; font-weight: 500; color: #222; text-align: left; background: #fff url(/images/mo/ico_more_lg.png) no-repeat right 2rem center; border-bottom:1px solid #ddd; box-sizing:border-box; }
 .dp .dp_outlets .dp_cate_list a:nth-child(2n){ border-left:1px solid #ddd;}
-.dp .dp_outlets .md_item {padding:4rem 2rem 0; margin-bottom: 6rem;}
+.dp .dp_outlets .md_item {padding:0 2rem; margin:0 0 -1.2rem 0;}
 .dp .dp_outlets .md_item .swiper-slide {width: 43.75%;}
-.dp .dp_outlets .md_item .swiper-container {overflow: initial;}
+.dp .dp_outlets .md_item .swiper-container {padding:0 2rem; margin:0 -2rem;}
+.dp .dp_outlets .best_item {padding-bottom: 2rem;}
 .dp .dp_outlets .best_item .itemsGrp:after {content:''; display: block; clear:both;}
 .dp .dp_outlets .best_item .itemsGrp .item_prod {width: 48.75%; float:left; margin-right: 2.5%;}
 .dp .dp_outlets .best_item .itemsGrp .item_prod:nth-child(2n) {margin-right: 0;}
 .dp .dp_outlets .md_item .dp_subtitle, 
-.dp .dp_outlets .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem;}
+.dp .dp_outlets .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem; font-size: 2rem; padding-top: 6rem;}
 
 /* 룩북 - dp_lookbook */
 .dp .dp_lookbook .count_wrap {padding: 1.5rem 0 2rem;}
@@ -1683,7 +1677,7 @@
 }
 .dp .dp_lookbook .swiper_filter.brand .btnbox .reset{display:inline-block; width:3rem; height:3rem; border-radius:50%; font-size:0; text-indent:-999999px; vertical-align:top; background:#f4f4f4 url(/images/mo/ico_filter_reset.png) center center no-repeat; background-size:50%;}
 .dp .dp_lookbook .swiper_filter.brand .btnbox .reset:active{background-color:#ddd;}
-.dp .dp_lookbook .event_con li {position: relative; margin-bottom:4rem;}
+.dp .dp_lookbook .event_con li {position: relative; padding-bottom:4rem;}
 .dp .dp_lookbook .event_con li:first-child {margin-top:0;}
 .dp .dp_lookbook .event_con li .ev_img {position: relative; padding-bottom:100%; margin-bottom:2rem; }
 .dp .dp_lookbook .event_con li .ev_img img {position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%); width: 100%; height: auto;}
@@ -1710,12 +1704,12 @@
 .dp .dp_best .count_wrap{padding-top:0;}
 .dp .dp_best .view_item .dp_subtitle{text-align:left; font-size:1.6rem; margin-bottom: 2rem;}
 .dp .dp_best .view_item .dp_subtitle span{color:#fd4802;}
-.dp .dp_best .view_item {padding:3rem 0 4rem;}
+.dp .dp_best .view_item {padding:3rem 0 0;}
 .dp .dp_best .view_item .swiper-slide {width: 43.75%;}
-.dp .dp_best .view_item .swiper-container {overflow: initial;}
+.dp .dp_best .view_item .swiper-container {padding: 0 2rem; margin:0 -2rem;}
 .dp .dp_best .view_item .count_wrap div:first-child p{font-size:1.6rem; color:#222;}
 .dp .dp_best .view_item .count_wrap div:first-child p span{font-weight:500;}
-.dp .dp_best .best_item {margin:6rem 0 2rem;}
+.dp .dp_best .best_item {margin:4rem 0 0; padding-bottom: 2rem;}
 .dp .dp_best .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem;}
 .dp .dp_best .best_item .itemsGrp:after {content:''; display: block; clear:both;}
 .dp .dp_best .best_item .itemsGrp .item_prod {width: 48.75%; float:left; margin-right: 2.5%; margin-bottom: 4rem;}
@@ -1741,8 +1735,8 @@
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape {padding:0.3rem 1rem; width:auto; height:auto; max-width:4rem; min-height:auto; border-radius:2rem;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape span{position:relative; width:auto; left:0; top:0; text-indent:0; transform:translate(0);}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape:after{display:none;}
-.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
-.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 78;}
+.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 7;}
+.dp_hotdeal .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 8;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod.sold_out .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size:1.4rem; color:#fff; font-weight:bold; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height:23.4rem;; z-index: 99; text-align: center;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .shape{position:relative;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemBrand {margin:1.5rem 0 0.5rem;}
@@ -1756,7 +1750,7 @@
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemEt .shopBag button span{position:relative; padding-left:1.6rem;}
 .dp_hotdeal .itemsGrp.rowtype .item_prod .itemEt .shopBag button span:after{content:''; position:absolute; left:0; top:50%; width:1rem; height:1.2rem; background:url(/images/mo/ico_shopbag.png) center center no-repeat; background-size:contain; -webkit-transform:translateY(-50%); transform:translateY(-50%);}
 
-.itemsGrp.rowtype .item_prod .shopBag {width: calc(100% - 17.6rem); margin-top: 0;position: absolute;bottom: 1.8rem;left: 17.6rem; z-index: 50;}
+.itemsGrp.rowtype .item_prod .shopBag {width: calc(100% - 17.6rem); margin-top: 0;position: absolute;bottom: 1.8rem;left: 17.6rem; z-index: 5;}
 .itemsGrp.rowtype .item_prod .shopBag .btn {width:100%; height:3rem; line-height:3rem; font-size:1.1rem;}
 .itemsGrp.rowtype .item_prod .shopBag .btn span {position:relative; padding-left:25px; line-height:1;}
 .itemsGrp.rowtype .item_prod .shopBag .btn span::before {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:15px; height:18px; background: url('/images/pc/ico_shopbag.png') no-repeat 50% 50%;}
@@ -1767,7 +1761,7 @@
 .dp .dp_exhibition .list_content .itemsGrp.n3 .item_prod:nth-child(2n) {margin-right: 2.5%;}
 .dp .dp_exhibition .list_content .itemsGrp.n3 .item_prod:nth-child(3n) {margin-right:0;}
 .dp .dp_exhibition .list_content .itemsGrp.n3 .item_prod{margin-bottom:0;}
-.dp .dp_exhibition .list_content .list_item > div{margin-bottom:6rem;}
+.dp .dp_exhibition .list_content .list_item > div{padding-bottom:6rem;}
 .dp .dp_exhibition .list_content .list_item .visual{position:relative; margin-bottom:2rem;}
 .dp .dp_exhibition .list_content .list_item .visual img {width: 100%;}
 .dp .dp_exhibition .list_content .list_item .visual .txtWrap {position: absolute; left: 2rem; bottom: 4rem; color: fff;}
@@ -1790,7 +1784,7 @@
 .dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
 .dp .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 .dp_listItems_wrap{padding-bottom:3rem;}
+.dp .dp_listItems_wrap{padding-bottom:2rem;}
 .dp .dp_listItems_wrap.typeSelector{padding-bottom:3rem;margin-bottom: -1.2rem;}
 .dp .dp_listItems_wrap.type1 .dp_subtitle{margin-top: -4rem;}
 .dp .dp_listItems_wrap .items_option{padding-top:0;}
@@ -1799,7 +1793,7 @@
 .dp .dp_listItems_wrap .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
 .dp .dp_listItems_wrap .list_content .itemsGrp{margin-bottom:-4rem;}
 .dp .dp_listItems_wrap .itemsGrp .item_prod:last-child{margin-bottom:0;}
-.dp .dp_listItems_wrap .btn_default{margin-top:4rem;}
+.dp .dp_listItems_wrap .btn_default{margin-top:0;}
 .dp .dp_listItems_wrap .btn_default:after{content:''; display:inline-block; margin-left:0.8rem; width:1.1rem; height:0.7rem; background:url(/images/mo/ico_btn_more.png) center center no-repeat; background-size:contain;}
 .dp .dp_listItems_cont .item_prod {width: 100%;}
 .dp .dp_listItems_cont.type1 .swiper-container.item01 .swiper-slide{padding:0 14%}
@@ -1818,8 +1812,8 @@
 .dp .big_banner_slide .swiper-slide img{width:100%;}
 .dp .big_banner_slide .swiper-pagination{position:relative; margin:2.4rem 0 0; bottom:0;}
 .dp .big_banner_slide .swiper-pagination .swiper-pagination-bullet-active{background-color:#fd4802;}
-.dp .other_promotion_slide{padding-top:0}
-.dp .other_promotion_slide .swiper-container{overflow:initial;}
+.dp .other_promotion_slide .dp_subtitle {padding-top: 0; font-size: 1.6rem;}
+.dp .other_promotion_slide .swiper-container{padding:0 2rem; margin:0 -2rem;}
 /* dp_detail-case - 쿠폰 */
 .dp .coupon_list {margin-bottom:3rem;}
 .dp .coupon_list li {position: relative; position: relative; margin-top:3rem; overflow: hidden;}
@@ -1858,14 +1852,14 @@
 .dp .dp_listItems_wrap .btn{width:100%;}
 .dp .dp_listItems_cont.type1{padding-bottom:3rem;}
 .dp .dp_listItems_cont.type2{padding-bottom:3rem;}
-.dp .dp_listItems_cont.type2 .swiper-container{overflow: initial;}
+.dp .dp_listItems_cont.type2 .swiper-container{padding:0 2rem; margin:0 -2rem;}
 .dp .dp_listItems_cont.type2 .swiper-wrapper{width:43%}
 .dp .dp_listItems_cont.type1 .swiper-container.item01 .swiper-pagination{position:relative; margin:2.4rem 0 0; bottom:0;}
 .dp .dp_listItems_cont.type1 .swiper-container.item01 .swiper-pagination .swiper-pagination-bullet-active{background-color:#fd4802;}
-.dp .dp_listItems_cont.type1 .swiper-container.item02{overflow: initial;}
+.dp .dp_listItems_cont.type1 .swiper-container.item02{padding:0 2rem; margin:0 -2rem;}
 .dp .mid_banner .swiper-container.dp_lookbook_case1 .swiper-pagination{position:relative; margin:2.4rem 0 0; bottom:0;}
 .dp .mid_banner .swiper-container.dp_lookbook_case1 .swiper-pagination-bullet-active{background-color:#fd4802;}
-.dp .dp_review_cont .review .swiper-container{overflow: initial;}
+.dp .dp_review_cont .review .swiper-container{padding:0 2rem; margin:0 -2rem;}
 .dp .dp_review_cont .review .swiper-container .swiper-slide > div{border:1px solid #eee;}
 .dp .dp_review_cont .review .best_review {position:relative; text-align:center;}
 .dp .dp_review_cont .review .best_review:after{content:''; display:block; position:absolute; bottom:0; left:2rem; right:2rem; height:1px; background-color:#eee;}

+ 17 - 16
src/main/webapp/ux/mo/css/style24_m.css

@@ -305,9 +305,11 @@
 .post-visual .swiper-slide::after {content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}  
 
 .post-visual .txtWrap{position: absolute;padding-left: 0.0rem;top: auto;bottom: 7.0rem;left: 2.0rem;right: auto;z-index: 1;} 
-.post-visual .txtWrap dt {font-size: 1.5rem;color: #fff;font-weight: 200;line-height: 3.6rem;}
-.post-visual .txtWrap dd {padding-bottom: 5px;font-size: 2.9rem;color: #fff;line-height: 3.6rem;}
-.post-visual .txtWrap dd.txt_xs {font-size: 1.5rem;color: #fff;margin-top: 0.6rem;}
+.post-visual .txtWrap dl {color: #222;}
+.post-visual .txtWrap dl.w {color: #fff;}
+.post-visual .txtWrap dt {font-size: 1.5rem;font-weight: 200;line-height: 3.6rem;}
+.post-visual .txtWrap dd {padding-bottom: 5px;font-size: 2.9rem;line-height: 3.6rem;}
+.post-visual .txtWrap dd.txt_xs {font-size: 1.5rem;margin-top: 0.6rem;}
 
 .main_stylereport {padding: 0rem 0 8.0rem 0;}
 .main_stylereport .titWrap{padding:4rem 0 2rem 0}
@@ -587,7 +589,6 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* ev_renew_1 */
 .dp .promotion_visual {margin-bottom: -1.2rem;}
 .dp {background: #f5f5f5;}
-.dp .inner {padding-bottom: 0; background: #fff;}
 .dp .inner:last-child {padding-bottom: 0;}
 .dp .dp_btn_area .btn_wrap {padding:3rem 0; border-bottom: 1px solid #ddd; text-align: center;}
 .dp .dp_btn_area.type2 .btn_wrap {border: none;}
@@ -645,7 +646,6 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .dp {background: #f5f5f5;}
 .dp .inner {background: #fff; padding-bottom: 0; margin-bottom:1.2rem;}
 .dp .inner::after {content:''; clear:none;}
-.dp .inner:last-child {padding-bottom: 0;}
 .cmt_wrap {background: #f5f5f5;}
 .cmt_wrap .cmt_write {background: #fff;}
 .cmt_wrap .cmt_group {background: #fff;}
@@ -941,7 +941,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .goods_btn_wrap.col2 {font-size: 0;}
 .goods_btn_wrap.col2 > div {width: 50%; margin:0; display: inline-block; flex:none;}
 .goods_btn_wrap.col2 > div:nth-child(2n) {padding-left: 0.4rem; padding-bottom: 0.4rem;}
-.goods_btn_wrap.col2 > div:nth-child(2n+1) {padding-right: 0.4rem; padding-bottom: 0.4rem;}
+.goods_btn_wrap.col2 > div:nth-child(2n+1) {padding-right: 0rem; padding-bottom: 0.4rem;}
 /* .goods_btn_wrap.col2 > div:nth-child(odd) {padding-right: 0.4rem; padding-bottom: 0.4rem;} */
 /* .goods_btn_wrap.col2 > div:nth-child(even) {padding-left: 0.4rem; padding-bottom: 0.4rem;} */
 .goods_btn_wrap.col2 > div > .btn {font-size: 1.4rem;}
@@ -1015,7 +1015,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .part_goods .goods_detail {position: relative; padding:0 0 0 11rem;}
 .part_goods .goods_detail .thumb_box {background: #f5f5f5; width:9rem; height:13.5rem; position: absolute; left: 0; top: 0;}
-.part_goods .goods_detail .thumb_box a {display:block; background:#f5f5f5;}
+.part_goods .goods_detail .thumb_box a {display:block; background:#f5f5f5; height: 100%;}
 .part_goods .goods_detail .thumb_box img {position: relative; top: 50%; transform: translateY(-50%); width: 100%;}
 
 .part_goods .goods_detail .info_box {min-height:13.5rem; padding-top: 1rem;}
@@ -1380,8 +1380,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* my_return_3 */
 .my .my_return .tbl_tarea td {font-weight: 300;}
 .my .my_return .tbl_tarea .textarea_wrap {position: relative;}
-.my .my_return .tbl_tarea .textarea_wrap .txt_cnt, .my .my_exchange .tbl_tarea .textarea_wrap .txt_cnt {position: absolute; right: 1.5rem; bottom: 1.5rem;}
-.my .my_return .tbl_tarea .textarea_wrap textarea, .my .my_exchange .tbl_tarea .textarea_wrap textarea {resize:none; height: 15rem; width: 100%; padding:1.7rem 1.5rem;}
+.my .my_return .tbl_tarea .textarea_wrap .txt_cnt, .my .my_exchange .tbl_tarea .textarea_wrap .txt_cnt {background: #fff; width: calc(100% - 3.0rem); position: absolute; bottom: 0.1rem; right: 1.5rem; margin-top: 0; padding:0.5rem 0 0.5rem; font-size: 1.3rem; text-align: right; color: #888;}
+.my .my_return .tbl_tarea .textarea_wrap textarea, .my .my_exchange .tbl_tarea .textarea_wrap textarea {resize:none; height: 15rem; width: 100%; padding:1.7rem 1.5rem 2.8rem;}
 .my .my_return .retrieve_box.direct input[type="tel"] {width: 100%; padding:0 1rem;}
 .my .my_return .retrieve_box.direct .ship_info dt {font-weight: 500;}
 .my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%; margin-bottom: 0.5rem;}
@@ -1666,9 +1666,9 @@ main.dp .inner:last-child {padding-bottom: 0;}
 .dp .submain_visual .txtWrap {position: absolute; left: 2rem; bottom: 9rem; color: fff;}
 .dp .submain_visual .txtWrap p {color: #fff; font-size: 3rem; font-weight: 500; line-height: 1.2;}
 .dp .submain_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300;}
-.dp .sub_category {padding:2.4rem 0 0.3rem; position: relative;}
-.dp .sub_category .cate_wrap {margin:0 -0.4rem; max-height:13rem; overflow:hidden;}
-.dp .sub_category .cate_wrap.on {max-height:100%;}
+.dp .sub_category {padding:2.4rem 0; position: relative;}
+.dp .sub_category .cate_wrap {margin:0 -0.4rem; height: auto; overflow:hidden;}
+.dp .sub_category .cate_wrap.on {max-height:100% !important;}
 .dp .sub_category .cate_wrap:after {content:''; display: block; clear:both;}
 .dp .sub_category .cate_wrap a {float:left; background: #fff; margin:0 0.4rem 0.8rem; padding:1.2rem 1.4rem; font-size: 1.3rem; color: #666; border-radius:2rem; line-height: 1;}
 .dp .sub_category .more_btn {width: 100%; text-align: center; height: 6rem; margin-bottom: -1.3rem;}
@@ -1678,11 +1678,12 @@ main.dp .inner:last-child {padding-bottom: 0;}
 .dp .sub_category .more_btn .btn span:before {content:''; position: absolute; top: 0.3rem; right: 0;width: 1.1rem; height: 0.63rem; background: url('/images/mo/ico_btn_more02.png') no-repeat top center;
 background-size:100%;}
 .dp .sub_category .more_btn.on .btn span:before {background: url('/images/mo/ico_btn_more02.png') no-repeat bottom center; background-size:100%;}
-.dp .dp_submain .new_item .dp_subtitle, .dp .dp_submain .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem;}
-.dp .dp_submain .new_item {padding:4rem 2rem 0; margin-bottom: 6rem;}
+.dp .dp_submain .new_item .dp_subtitle, .dp .dp_submain .best_item .dp_subtitle {text-align: center; margin-bottom: 2.4rem; font-size: 2rem;}
+.dp .dp_submain .new_item {padding:0 2rem; margin:0 0 -1.2rem 0;}
 .dp .dp_submain .new_item .swiper-slide {width: 43.75%;}
-.dp .dp_submain .new_item .swiper-container {overflow: initial;}
-.dp .dp_submain .best_item {margin-bottom: 2rem;}
+.dp .dp_submain .new_item .swiper-container {padding:0 2rem; margin:0 -2rem;}
+.dp .dp_submain .best_item {padding-bottom: 2rem;}
+.dp .dp_submain .best_item .dp_subtitle {padding-top: 6rem;}
 .dp .dp_submain .best_item .itemsGrp:after {content:''; display: block; clear:both;}
 .dp .dp_submain .best_item .itemsGrp .item_prod {width: 48.75%; float:left; margin-right: 2.5%; margin-bottom: 4rem;}
 .dp .dp_submain .best_item .itemsGrp .item_prod:nth-child(2n) {margin-right: 0;}

+ 42 - 0
src/main/webapp/ux/mo/js/common_m.js

@@ -65,6 +65,48 @@ $(document).ready(function() {
                 }
             }
         });
+        $(window).on('mousewheel',function(e){
+            if($('header').hasClass('main') === true){
+                var wheel = e.originalEvent.wheelDelta;
+                if(wheel>0){
+                    //스크롤 올릴때
+                    $(".tabbar").addClass('fixed');
+                    $(".gnb").addClass('fixed');
+                    $(".gnb").css("top", "5.5rem");
+                    $(".pnb_mo").addClass('fixed');
+                    $("header").css("display", "block");
+                    $("header").css("position", "fixed");
+                    if($(".gnb").hasClass("fixed")){
+                        $("header").css("display", "none");
+                    }
+                    if($(".pnb_mo").hasClass("fixed")){
+                        $("header").css("display", "none");
+                    }
+                    if($(window).scrollTop() < 10){
+                        $(".gnb").css('position', 'relative');
+                        $(".pnb_mo").css('position', 'relative');
+                        $("header").css("position", "relative");
+                        $("header").css("display", "block");
+                        $(".bnrtype_banner").css("z-index", "999");
+                        $(".bnrtype_banner").css("top", "5.5rem");
+                        $("main.container").css("margin-top", "5.5rem");
+                    } else {
+                        $(".gnb").css('position', 'fixed');
+                        $(".pnb_mo").css('position', 'fixed');
+                    }
+                } else {
+                    //스크롤 내릴때
+                    $(".bnrtype_banner").css("z-index", "0");
+                    $(".gnb").css("top", "0");
+                    $(".tabbar").removeClass('fixed');
+                    $(".pnb_mo").addClass('fixed');
+                    $(".pnb_mo").css('position', 'fixed');
+                    $(".gnb").addClass('fixed');
+                    $(".gnb").css('position', 'fixed');
+                    $("header").css("display", "none");
+                }
+            }
+        });
         $(window).scroll(function (event) {
 
             // header height 가 아닌, 스크롤 감지로 변경할 것

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

@@ -897,6 +897,7 @@ input[type="text"]:focus, input[type="password"]:focus,
 input[type="text"].active, input[type="password"].active {border-color: #aaaaaa;} 
 input[type="text"]:disabled, input[type="password"]:disabled, input[type="select"]:disabled,
 input[type="text"]:read-only, input[type="password"]:read-only, input[type="select"]:read-only {background: #F9F9F9;border-color: #dddddd;}
+input[type="text"][readonly], input[type="password"][readonly], input[type="select"][readonly] {background: #F9F9F9;border-color: #dddddd;}
 table input[type="text"], table input[type="password"] {padding:6px 0 6px 9px;}
 input[type="checkbox"], input[type="radio"] {width:13px; height:13px; margin-right:3px; position:relative; top:1px;}
 input[type=search]::-webkit-search-cancel-button{display:none;}
@@ -1046,7 +1047,7 @@ input[type="file"] {
 }
 
 .pics.mov {position: relative;}
-.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/pc/ico_play.png') no-repeat 50% 50%; z-index:1;}
+.pics.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(221,221,221,1) url('/images/pc/ico_play.png') no-repeat 50% 50%; z-index:1;}
 
 .picsThumbs {
   width: auto;height: auto;max-height: 148px;max-width: 148px;margin: auto 0;
@@ -1826,6 +1827,8 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .modal::-webkit-scrollbar-thumb,.pop_cont::-webkit-scrollbar-thumb {background-color: #888888;border-radius: 0px;background-clip: padding-box;border: 0px solid transparent;}
 .modal::-webkit-scrollbar-track, .pop_cont::-webkit-scrollbar-track{background-color: #dddddd;border-radius: 0px;}
 
+/* .modal, .pop_cont {scrollbar-width: thin; scrollbar-color: #888888 #dddddd;} 파이어폭스 스크롤바 css */
+
 .modal-spinner{display:none;position:fixed;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);padding:12px 16px;border-radius:5px;background-color:#111;height:20px}
 .modal-spinner>div{border-radius:100px;background-color:#fff;height:20px;width:2px;margin:0 1px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}
 .modal-spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}

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

@@ -4163,7 +4163,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.my .myManage .modify_box table .btn {height:42px; padding-left:0; padding-right:0; text-align:center;}
 	.my .myManage .modify_box table .btn.btn_primary_line {font-weight:200; width:100px;}
 	.my .myManage .modify_box .form_field {max-width:400px;}
-	.my .myManage .modify_box .form_field .input_wrap {display:table-cell; width:100%;}
+	.my .myManage .modify_box .form_field .input_wrap {display:block; width:100%;}
 	.my .myManage .modify_box .form_field .input_wrap + .btn {display:table-cell; width:95px; font-weight:300; font-size:14px}
 	.my .myManage .modify_box .form_field .form_control {float:none; display:block; width:100%}
 	.my .myManage .modify_box .form_field + .txt_info {margin-top:10px}
@@ -5129,4 +5129,28 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 		.cs .history_wrap .txt {padding-left: 0px;}
 		.cs .history_wrap {padding: 50px 30px 50px 0;}
 	
+	}
+
+	/* IE */
+	@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 
+
+		/* my */
+		.goods_info .order_review .review .photo_box .photo_list > ul li {width:calc(10% - 9px);}
+
+		/* od */
+
+		/* cs */
+
+		/* mb */
+
+		/* pd */
+
+		/* dp */
+
+		/* ev */
+
+		/* br */
+
+		/* sch */
+
 	}

+ 14 - 15
src/main/webapp/ux/plugins/approval_key.js

@@ -35,17 +35,17 @@
         // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
         if(ajax_flag)
         {
-            var url    = "http:" + _frontUrl + "/pg/kcp/approval";
+            var url    = _frontUrl + "/pg/kcp/approval";
             var form = document.order_info;
-            var params = "?site_cd=" + form.site_cd.value
-                       + "&ordr_idxx=" + form.ordr_idxx.value
-                       + "&good_mny=" + form.good_mny.value
-                       + "&pay_method=" + form.pay_method.value
-                       + "&escw_used=" + form.escw_used.value
-                       + "&good_name=" + form.good_name.value
-                       + "&response_type=" + form.response_type.value
-                       + "&Ret_URL=" + form.Ret_URL.value
-            sendRequest( url + params );
+            var params = "?site_cd=" + encodeURIComponent(form.site_cd.value)
+                       + "&ordr_idxx=" + encodeURIComponent(form.ordr_idxx.value)
+                       + "&good_mny=" + encodeURIComponent(form.good_mny.value)
+                       + "&pay_method=" + encodeURIComponent(form.pay_method.value)
+                       + "&escw_used=" + encodeURIComponent(form.escw_used.value)
+                       + "&good_name=" + encodeURIComponent(form.good_name.value)
+                       + "&response_type=" + encodeURIComponent(form.response_type.value)
+                       + "&Ret_URL=" + encodeURIComponent(form.Ret_URL.value)
+            sendRequest(url + params);
             
             ajax_flag = false;
         }
@@ -108,7 +108,7 @@
         {
             document.getElementById( "approval" ).value = txt[1].replace(/^\s*/,'').replace(/\s*$/,'');
             // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            //alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = decodeURIComponent( txt[2].replace(/^\s*/,'').replace(/\s*$/,'') );
             
             document.getElementById( "traceNo" ).value = txt[3].replace(/^\s*/,'').replace(/\s*$/,'');
@@ -137,7 +137,7 @@
         {
             document.getElementById( "approval" ).value = x[0].getElementsByTagName( "approvalKey" )[0].childNodes[0].nodeValue;
             // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            // alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = x[0].getElementsByTagName( "PayUrl" )[0].childNodes[0].nodeValue;
             
             document.getElementById( "traceNo" ).value = x[0].getElementsByTagName( "traceNo"     )[0].childNodes[0].nodeValue;
@@ -157,15 +157,14 @@
     }
     
     
-    function StateChangeForJSON( xmlHttpRequest )
-    {
+    function StateChangeForJSON( xmlHttpRequest ) {
         var json = eval('('+ xmlHttpRequest.responseText +')');
         
         if( json.Code == '0000' )
         {
             document.getElementById( "approval" ).value = json.approvalKey;
             // 아래 alert는 삭제 해도됨
-            alert("성공적으로 거래가 등록 되었습니다.");
+            // alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = json.PayUrl;
             
             document.getElementById( "PayUrl"  ).value = json.request_URI;

+ 10 - 9
src/main/webapp/ux/style24_link.js

@@ -5,15 +5,15 @@ const _PAGE_LOGIN = _frontUrl + "/signin";	// GNB > 로그인
 const _PAGE_LOGOUT = _frontUrl + "/logout";	// GNB > 로그아웃
 
 //== 메인 ==/
-const _PAGE_MAIN = _frontUrl + "/display/mall/main/form";				// 몰메인
-const _PAGE_ALL_BRAND = _frontUrl + "/display/all/brand/form";			// 전체 브랜드
-const _PAGE_CATE_MAIN = _frontUrl + "/display/category/main/form";		// 카테고리메인
-const _PAGE_BRAND_MAIN = _frontUrl + "/display/brand/main/form";		// 브랜드메인
+const _PAGE_MAIN = _frontUrl + "/display/mall/main/form";						// 몰메인
+const _PAGE_ALL_BRAND = _frontUrl + "/display/all/brand/form";					// 전체 브랜드
+const _PAGE_CATE_MAIN = _frontUrl + "/display/category/main/form";				// 카테고리메인
+const _PAGE_BRAND_MAIN = _frontUrl + "/display/brand/main/form";				// 브랜드메인
 const _PAGE_CATE_GOODS_LIST = _frontUrl + "/display/category/goods/list/form";	// 카테고리 상품목록
-const _PAGE_BEST_MAIN = _frontUrl + "/display/best/main/form";		// 베스트메인
-const _PAGE_OUTLET_MAIN = _frontUrl + "/display/outlet/main/form";		// 아울렛메인
-const _PAGE_VIEW_NORMAL = _frontUrl + "/display/view/normal/form";		// PC보기
-const _PAGE_VIEW_MOBILE = _frontUrl + "/display/view/mobile/form";		// 모바일보기
+const _PAGE_BEST_MAIN = _frontUrl + "/display/best/main/form";					// 베스트메인
+const _PAGE_OUTLET_MAIN = _frontUrl + "/display/outlet/main/form";				// 아울렛메인
+const _PAGE_VIEW_NORMAL = _frontUrl + "/display/view/normal/form";				// PC보기
+const _PAGE_VIEW_MOBILE = _frontUrl + "/display/view/mobile/form";				// 모바일보기
 
 //== 고객 ==/
 const _PAGE_CUSTOMER_JOIN_TYPE = _frontUrl + "/customer/join/type/form";							// 고객 > 회원가입 유형
@@ -36,6 +36,7 @@ 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_CUSTOMER_SETTING = _frontUrl + "/customer/setting/form";								// 앱 > 설정
 
 //== 상품상세 ==/
 const _PAGE_GOODS_DETAIL = _frontUrl + "/goods/detail/form?goodsCd=";								// 상품 상세
@@ -1312,7 +1313,7 @@ function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, rvAtcSq) {
 	var params = '?goodsCd=' + goodsCd;
 	params += '&reviewSq=' + reviewSq;
 	params += '&photoYn=' + photoYn;
-	if (typeof (rvAtcSq) != 'undefined') params += "&rvAtcSq=" + rvAtcSq;
+	if (typeof (rvAtcSq) != 'undefined') params += "&attachSq=" + rvAtcSq;
 	
 	cfnOpenLayer(_PAGE_MYPAGE_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
 }