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

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

eskim 5 лет назад
Родитель
Сommit
b81db55b1f
39 измененных файлов с 1132 добавлено и 511 удалено
  1. 11 11
      src/main/java/com/style24/front/biz/service/TsfNoticeService.java
  2. 5 1
      src/main/java/com/style24/front/biz/service/TsfSocialService.java
  3. 26 2
      src/main/java/com/style24/front/biz/web/TsfCallcenterController.java
  4. 9 7
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 14 5
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 1 0
      src/main/java/com/style24/persistence/domain/Contents.java
  7. 2 0
      src/main/java/com/style24/persistence/domain/Review.java
  8. 4 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCounsel.xml
  9. 18 15
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  10. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfNotice.xml
  11. 364 211
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  12. 2 2
      src/main/webapp/WEB-INF/views/web/callcenter/FaqFormWeb.html
  13. 12 4
      src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html
  14. 20 40
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  15. 11 3
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  16. 11 9
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  17. 1 10
      src/main/webapp/WEB-INF/views/web/customer/PrivacyPolicyLayerFormWeb.html
  18. 1 10
      src/main/webapp/WEB-INF/views/web/customer/PrivacyTrustLayerFormWeb.html
  19. 1 10
      src/main/webapp/WEB-INF/views/web/customer/UseTermsLayerFormWeb.html
  20. 3 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  21. 56 59
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  22. 6 5
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  23. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  24. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  25. 8 7
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  26. 15 0
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  27. 5 6
      src/main/webapp/biz/goods.js
  28. 39 32
      src/main/webapp/ux/mo/css/layout_m.css
  29. 66 30
      src/main/webapp/ux/mo/js/common_m.js
  30. 10 10
      src/main/webapp/ux/mo/js/main_m.js
  31. 46 10
      src/main/webapp/ux/pc/css/common.css
  32. 0 0
      src/main/webapp/ux/pc/css/ion.rangeSlider.min.css
  33. 13 3
      src/main/webapp/ux/pc/css/layout.css
  34. 4 4
      src/main/webapp/ux/pc/css/main.css
  35. 331 0
      src/main/webapp/ux/pc/css/mcxdialog_ui.css
  36. 1 0
      src/main/webapp/ux/pc/js/ion.rangeSlider.min.js
  37. 1 0
      src/main/webapp/ux/pc/js/jquery-1.11.0.min.js
  38. 1 0
      src/main/webapp/ux/pc/js/jquery-migrate-1.2.1.min.js
  39. 9 0
      src/main/webapp/ux/pc/js/vg-controller-client.latest.min.js

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

@@ -45,17 +45,17 @@ public class TsfNoticeService {
 		return noticeDao.getNoticeList(notice);
 	}
 
-	/**
-	 * 긴급 공지사항 목록
-	 * @param notice - 공지사항 정보
-	 * @return
-	 * @author gagamel
-	 * @date 2020. 11. 3
-	 */
-	public Collection<Notice> getUrgentNoticeList(Notice notice) {
-		notice.setUrgentYn("Y"); // 긴급공지
-		return noticeDao.getNoticeList(notice);
-	}
+//	/**
+//	 * 긴급 공지사항 목록
+//	 * @param notice - 공지사항 정보
+//	 * @return
+//	 * @author gagamel
+//	 * @date 2020. 11. 3
+//	 */
+//	public Collection<Notice> getUrgentNoticeList(Notice notice) {
+//		notice.setUrgentYn("Y"); // 긴급공지
+//		return noticeDao.getNoticeList(notice);
+//	}
 
 	/**
 	 * 공지사항 첨부파일 목록

+ 5 - 1
src/main/java/com/style24/front/biz/service/TsfSocialService.java

@@ -54,7 +54,11 @@ public class TsfSocialService {
 			Login login = TsfSession.getInfo();
 			social.setCustNo(login.getCustNo());
 		}
-		social.setSocialSq(info.getSocialSq());
+		
+		if (info!=null) {
+			social.setSocialSq(info.getSocialSq());
+		}
+		
 		return socialDao.getSocialGoodsList(social);
 	}
 

+ 26 - 2
src/main/java/com/style24/front/biz/web/TsfCallcenterController.java

@@ -150,8 +150,8 @@ public class TsfCallcenterController extends TsfBaseController {
 		result.set("paging", notice);
 		result.set("dataList", noticeService.getNoticeList(notice));
 
-		// 긴급(중요) 공지사항 목록
-		result.set("urgentList", noticeService.getUrgentNoticeList(notice));
+//		// 긴급(중요) 공지사항 목록
+//		result.set("urgentList", noticeService.getUrgentNoticeList(notice));
 
 		return result;
 	}
@@ -267,6 +267,18 @@ public class TsfCallcenterController extends TsfBaseController {
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 
+	/**
+	 * 1:1문의 건수 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	@GetMapping("/onetoone/qna/count/info")
+	@ResponseBody
+	public Counsel getOneToOneQnaCountInfo() {
+		return counselService.getOneToOneQnaCountInfo();
+	}
+
 	/**
 	 * 1:1문의 상세 화면. 목록 화면에 상세 데이터 노출로 해당 로직 사용 안 함.
 	 * @param counselSq - 상담일련번호
@@ -388,4 +400,16 @@ public class TsfCallcenterController extends TsfBaseController {
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 
+	/**
+	 * 상품문의 건수 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 4. 27
+	 */
+	@GetMapping("/goods/qna/count/info")
+	@ResponseBody
+	public Counsel getGoodsQnaCountInfo() {
+		return counselService.getGoodsQnaCountInfo();
+	}
+
 }

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

@@ -99,11 +99,11 @@ public class TsfDisplayController extends TsfBaseController {
 		}
 
 		String mainCateNo = "1700";
-//		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
-//			mainCateNo = "1720";
-//		} else {
-//			mainCateNo = "1700";
-//		}
+		if (device.isMobile() || "Y".equals(paramMap.get("mobileYn"))) {
+			mainCateNo = "1720";
+		} else {
+			mainCateNo = "1700";
+		}
 
 		mallMainLayout.setCateNo(Integer.parseInt(mainCateNo));
 		Collection<MainLayout> mainLayoutCollection = displayService.getMainLayout(mallMainLayout);
@@ -528,6 +528,7 @@ public class TsfDisplayController extends TsfBaseController {
 	public ModelAndView categoryGoodsListForm(Cate4Srch cate4Srch) {
 		ModelAndView mav = new ModelAndView(super.getDeviceViewName("display/CategoryGoodsListForm"));
 
+		cate4Srch.setCustNo(TsfSession.getInfo().getCustNo());
 		cate4Srch.setSiteCd(TscConstants.Site.STYLE24.value());
 		cate4Srch.setFormalGb("G009_10");
 		cate4Srch.setFrontGb(TsfSession.getFrontGb());
@@ -578,7 +579,7 @@ public class TsfDisplayController extends TsfBaseController {
 		GagaMap result = new GagaMap();
 		log.info("getGoodsListgetGoodsListgetGoodsList::::{}", goodsSearch);
 		TscPageRequest pageable = new TscPageRequest((goodsSearch.getPageNo() > 0 ? goodsSearch.getPageNo() - 1 : 0), goodsSearch.getPageSize(), goodsSearch.getPageUnit());
-
+		goodsSearch.setCustNo(TsfSession.getInfo().getCustNo());
 		goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
 		goodsSearch.setFormalGb("G009_10");
 		goodsSearch.setFrontGb(TsfSession.getFrontGb());
@@ -709,7 +710,8 @@ public class TsfDisplayController extends TsfBaseController {
 	@GetMapping("/gnb/tab/banner/list")
 	@ResponseBody
 	public Collection<Contents> getGnbTabBannerlist(Contents contents) {
-		contents.setContentsLoc("STAB003");
+//		contents.setContentsLoc("STAB003");
+		contents.setContentsLoc("SCM005");
 		return displayService.getGnbTabBannerlist(contents);
 	}
 

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

@@ -25,6 +25,7 @@ import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCouponService;
 import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.biz.service.TscEnvsetService;
 import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
@@ -137,6 +138,9 @@ public class TsfMypageController extends TsfBaseController {
 	
 	@Autowired
 	private TscWmsService coreWmsService;
+	
+	@Autowired
+	private TscEnvsetService eventService;
 
 	/**
 	 * 마이페이지 메인 화면
@@ -1507,12 +1511,13 @@ public class TsfMypageController extends TsfBaseController {
 	 * @since 2021. 03. 24
 	 */
 	@GetMapping("/review/form")
-	public ModelAndView mypageReviewForm(Review review, Device device) {
+	public ModelAndView mypageReviewForm(Review review) {
 		ModelAndView mav = new ModelAndView();
 
 		review.setCustNo(TsfSession.getInfo().getCustNo());
 		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		// 작성가능한 리뷰 카운트
+		review.setReviewExpireDay(eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value()));
 		mav.addObject("completeReviewCount", reviewService.getCompleteReviewCount(review));
 
 		// 작성한 리뷰 카운트
@@ -1552,7 +1557,8 @@ public class TsfMypageController extends TsfBaseController {
 		review.setPageable(pageable);
 		log.info("pageable: {}", pageable);
 		log.info("totalCount {}", pageable.getTotalCount());
-
+		int reviewExpireDay = eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value());
+		review.setReviewExpireDay(reviewExpireDay);
 		result.set("paging", review);
 		result.set("completeReviewCount", reviewService.getCompleteReviewCount(review));
 		result.set("dataList1", reviewService.getCompleteReviewList(review));
@@ -1581,10 +1587,8 @@ public class TsfMypageController extends TsfBaseController {
 		TscPageRequest pageable2 = new TscPageRequest((review.getPageNo2() > 0 ? review.getPageNo2() - 1 : 0), review.getPageSize2(), review.getPageUnit2());
 		pageable2.setTotalCount(reviewService.getAlreadyReviewCount(review));
 
+		review.setReviewExpireDay(eventService.getGoodsReviewPointExpireDays(TscConstants.Site.STYLE24.value()));
 		review.setPageable2(pageable2);
-		log.info("pageable2: {}", pageable2);
-		log.info("totalCount2 {}", pageable2.getTotalCount());
-
 		result.set("paging2", review);
 		result.set("alreadyReviewCount", reviewService.getAlreadyReviewCount(review));
 		result.set("dataList2", reviewService.getAlreadyReviewList(review));
@@ -1607,6 +1611,7 @@ public class TsfMypageController extends TsfBaseController {
 		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		
 		mav.addObject("reviewStat", review.getReviewStat());
+		review.setReviewExpireDay(eventService.getGoodsReviewRegisterDays(TscConstants.Site.STYLE24.value()));
 		mav.addObject("reviewInfo", reviewService.getReviewGoodsInfo(review));
 		
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewCreateForm"));
@@ -1650,7 +1655,11 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap mypageReviewDelete(@RequestBody Review review) throws Exception {
 		GagaMap result = new GagaMap();
+		review.setCustNo(TsfSession.getInfo().getCustNo());
+		review.setSiteCd(TscConstants.Site.STYLE24.value());
 		reviewService.reviewDelete(review);
+		result.set("alreadyReviewCount",reviewService.getAlreadyReviewCount(review));
+		result.set("completeReviewCount",reviewService.getCompleteReviewCount(review));
 		result.set("status", "200");
 		return result;
 	}

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

@@ -62,6 +62,7 @@ public class Contents extends TscBaseDomain {
 	private int planBrandCnt;
 	private int planBrandGroupNo;
 	private String planBrandGroupNm;
+	private String planGb;
 
 	// 몰메인 SMM003에서 사용
 	private String siteCd;

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

@@ -103,6 +103,8 @@ public class Review extends TscBaseDomain {
 	private String colorNm;
 	private int prevReviewSq;
 	private int nextReviewSq;
+	private int reviewExpireDay;
+	private String kmcKey;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] orgFileNmArr;

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

@@ -279,11 +279,15 @@
 		    <when test="goodsType != null and goodsType == 'G056_D'">
 		AND    A.REL_GOODS_CD = G.GOODS_CD
 		AND    G.GOODS_CD = C.COMPS_GOODS_CD
+		        <if test="relGoodsCd != null and relGoodsCd != '' ">
 		AND    C.GOODS_CD = #{relGoodsCd}
+		        </if>
 		    </when>
 		    <otherwise>
 		AND    A.REL_GOODS_CD = G.GOODS_CD
+		        <if test="relGoodsCd != null and relGoodsCd != '' ">
 		AND    A.REL_GOODS_CD = #{relGoodsCd}
+		        </if>
 		    </otherwise>
 		</choose>
 		<if test="custNo != null and custNo > 0 ">

+ 18 - 15
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -83,7 +83,6 @@
 		    </when>
 		    <otherwise>
 		     , GTAB_SQ                                            /*GNB탭일련번호*/
-		     , CASE WHEN CONTENTS_TYPE = 'C' OR CONTENTS_TYPE = 'O' THEN (SELECT CONTENTS_TITLE FROM	TB_MAIN_LAYOUT WHERE CONTENTS_LOC = 'STAB003') ELSE '' END AS GTAB_BANNER_TITLE
 		FROM   TB_GNB_TAB A
 		    </otherwise>
 		</choose>
@@ -141,7 +140,7 @@
 		     , SUB_TEXT3       /*서브텍스트3*/
 		     , SUB_TEXT4       /*서브텍스트4*/
 		     <if test='contentsLoc != null and contentsLoc =="SGNB001"'>
-			 , HTML
+		     , HTML
 		     </if>
 		     , BRAND_GROUP_NO  /*브랜드그룹번호*/
 		     <if test='contentsLoc != null and contentsLoc =="SMM007"'>
@@ -149,11 +148,12 @@
 		     </if>
 		     , BRAND_GROUP_IMG /*브랜드그룹이미지경로*/
 		     , MD_TITLE        /*MD타이틀*/
-			<if test='contentsLoc != null and contentsLoc =="SMM001"'>
-				,PLAN_BRAND_CNT
-				,PLAN_BRAND_GROUP_NO
-				,PLAN_BRAND_GROUP_NM
-			</if>
+		     <if test='contentsLoc != null and contentsLoc =="SMM001"'>
+		     , PLAN_BRAND_CNT
+		     , PLAN_BRAND_GROUP_NO
+		     , PLAN_BRAND_GROUP_NM
+		     , PLAN_GB
+		     </if>
 		FROM   (
 		        SELECT A.CATE_NO                                            /*카테고리번호*/
 		             , A.CONTENTS_LOC                                       /*컨텐츠위치*/
@@ -214,6 +214,7 @@
 		                   FROM TB_PLAN_BRAND C
 		                   WHERE B.PLAN_SQ = C.PLAN_SQ
 		                   ) AS PLAN_BRAND_GROUP_NM
+		                , B.PLAN_GB
 		             </if>
 		        <choose>
 		            <when test='preview != null and preview == "Y"'>
@@ -1085,9 +1086,9 @@
 		                WHERE  GB.GOODS_CD = G.GOODS_CD
 		          ) Z
 		     ) AS ICON
-		     , FORMAL_GB
-		     , REG_DT
-		     , NUMB
+		     , G.FORMAL_GB
+		     , G.REG_DT
+		     , G.NUMB
 		<choose>
 		    <when test="custNo != null and custNo > 0"> <!-- 로그인 했으면 -->
 		    , IF(W.GOODS_CD IS NULL,'','likeit')                                                           AS LIKE_IT       /*위시리스트담긴상품*/
@@ -1405,7 +1406,8 @@
 		            , BG.BRAND_GROUP_ENM
 		            , BG.BRAND_GROUP_KNM
 		            , BG.LOGO_FILE_NM
-		      FROM	TB_BRAND B
+		      FROM  TB_CONTENTS C
+		      LEFT JOIN TB_BRAND B ON C.STR_VAR1 = B.BRAND_GROUP_NO
 		      INNER JOIN TB_BRAND_GROUP BG ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
 		      WHERE	1=1
 		      AND	B.USE_YN = 'Y'
@@ -1420,7 +1422,7 @@
 		      <if test="brandGroupNm != null and brandGroupNm != ''">
 		      AND	(BG.BRAND_GROUP_ENM LIKE CONCAT('%',#{brandGroupNm},'%') OR BG.BRAND_GROUP_KNM LIKE CONCAT('%',#{brandGroupNm},'%'))
 		      </if>
-		      GROUP BY BG.BRAND_GROUP_NO
+		      GROUP BY C.STR_TITLE2, C.DISP_ORD , BG.BRAND_GROUP_NO
 		) Z
 		WHERE	1=1
 		ORDER BY (CASE  WHEN ASCII(SUBSTRING(Z.BRAND_GROUP_NM,1)) BETWEEN 48 AND 57 THEN 3
@@ -1438,7 +1440,7 @@
 	<!-- GNB TAB 기획전배너 조회 -->
 	<select id="getGnbTabBannerList" parameterType="Contents" resultType="Contents">
 		/* TsfDisplay.getGnbTabBannerList */
-		SELECT (SELECT CONTENTS_TITLE FROM TB_MAIN_LAYOUT WHERE 1=1 AND CONTENTS_LOC = 'STAB003') AS GNB_TAB_TITLE
+		SELECT (SELECT CONTENTS_TITLE FROM TB_MAIN_LAYOUT WHERE 1=1 AND CATE_NO = #{cateNo} AND CONTENTS_LOC = #{contentsLoc}) AS GNB_TAB_TITLE
 		      , Z.BANNER_GB
 		      , Z.IMG_PATH1
 		      , Z.STR_VAR1
@@ -1451,8 +1453,9 @@
 		                  , STR_TITLE1
 		                  , STR_TITLE2
 		            FROM    TB_CONTENTS
-		            WHERE   CONTENTS_LOC = #{contentsLoc}
-		            AND     CONTENTS_TYPE = #{cateNo}
+		            WHERE   1=1
+		            AND     CATE_NO = #{cateNo}
+		            AND     CONTENTS_LOC = #{contentsLoc}
 		            AND     USE_YN = 'Y'
 		            UNION ALL
 		            SELECT  'PLAN' AS BANNER_GB

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

@@ -36,6 +36,7 @@
 		SELECT NOTICE_SQ                                     /*공지사항일련번호*/
 		     , NOTICE_TITLE                                  /*공지제목*/
 		     , NOTICE_CONTENT                                /*공지내용*/
+		     , URGENT_YN                                     /*긴급여부*/
 		     , READ_CNT                                      /*조회수*/
 		     , DATE_FORMAT(REG_DT,'%Y.%m.%d')    AS REG_DT   /*등록일자*/
 		     , (SELECT COUNT(1)
@@ -67,7 +68,7 @@
 		WHERE  NOTICE_SQ = #{noticeSq}
 	</select>
 	
-	<!-- 공지사항  조회건수 Update -->
+	<!-- 공지사항 조회건수 Update -->
 	<update id="updateNoticeReadCount" parameterType="Integer">
 		/* TsfNotice.updateNoticeReadCount */
 		UPDATE TB_NOTICE

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

@@ -431,7 +431,7 @@
 					 , I.ITEMKIND_NM 
 		   	         , I.ITEMKIND_CD 
 			         , I.SIZE_GB 
-			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
+			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
@@ -444,6 +444,9 @@
 				    ON OD.GOODS_CD = G.GOODS_CD
 				 INNER JOIN TB_BRAND B
 				    ON B.BRAND_CD = G.BRAND_CD
+				 LEFT OUTER JOIN TB_REVIEW R
+				    ON R.ORD_NO = OD.ORD_NO
+				   AND R.ORD_DTL_NO = OD.ORD_DTL_NO
 				 LEFT JOIN TB_ITEMKIND I 
 				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
 				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
@@ -458,8 +461,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 -90 DAY), '%Y%M%D%H%I%S') 
-				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL #{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
+				AND R.REVIEW_SQ IS NULL
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = #{siteCd}
@@ -592,8 +595,8 @@
 					 , I.ITEMKIND_NM 
 		   	         , I.ITEMKIND_CD 
 			         , I.SIZE_GB 
-			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
-			          <if test="reviewStat == 'u'.toString()">
+			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
+			          <!-- <if test="reviewStat == 'u'.toString()"> -->
 			         , R.REVIEW_SQ        
 			         , R.REVIEW_GB        
 				     , R.REVIEW_TITLE     
@@ -624,7 +627,7 @@
 				     , R.ADM_RPL          
 				     , R.ADM_RPL_REG_NO   
 				     , R.ADM_RPL_DT   
-				     </if>
+				    <!--  </if> -->
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
@@ -639,11 +642,11 @@
 				    ON B.BRAND_CD = G.BRAND_CD
 				 LEFT JOIN TB_ITEMKIND I 
 				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-				 <if test="reviewStat == 'u'.toString()">
-				 INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+				 <!-- <if test="reviewStat == 'u'.toString()"> -->
+				 LEFT JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
 			                                      AND R.ORD_NO = O.ORD_NO
 			                                      AND R.ORD_DTL_NO = OD.ORD_DTL_NO
-			      </if>                          
+			      <!-- </if>  -->                         
 				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
 										, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
 									 FROM TB_ORDER_CHANGE_DETAIL OCD
@@ -656,15 +659,15 @@
 				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 -90 DAY), '%Y%M%D%H%I%S') 
+				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -#{reviewExpireDay} DAY), '%Y%M%D%H%I%S') 
 				<choose>
 					<when test="reviewStat == 'u'.toString()">
-					AND O.ORD_NO IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+					AND R.REVIEW_SQ IS NOT NULL
 					</when>
 					<otherwise>
-					AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+					AND R.REVIEW_SQ IS NULL
 					</otherwise>
-				</choose>
+				</choose> 
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
 			 	AND O.SITE_CD = 'G000_10'
@@ -697,6 +700,137 @@
 		/* TsfReivew.getCompleteReviewCount */
 		SELECT  COUNT(*) AS CNT 
 		FROM
+		(
+		     SELECT O.ORD_NO 
+		           ,O.ORD_NM 
+		           ,O.PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
+		           ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL #{reviewExpireDay} DAY),NOW()) AS DT -- 남은시간
+		     FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
+		                                          AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') --  구매 확정인것만
+		                     INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
+		                       					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		                       	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
+		                     INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
+		                     INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+		                     LEFT OUTER JOIN TB_REVIEW R  ON R.ORD_NO = OD.ORD_NO
+		                                          AND R.ORD_DTL_NO = OD.ORD_DTL_NO
+		     WHERE 1=1
+		     	AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL  -#{reviewExpireDay} DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
+		     	AND O.CUST_NO = #{custNo}
+		     	AND O.DISP_YN = 'Y'
+		     	AND R.REVIEW_SQ IS NULL
+		     	AND O.SITE_CD = #{siteCd}
+		     GROUP BY O.ORD_NO 
+		           ,O.ORD_NM 
+		           ,O.PAY_DT 
+		           ,O.CUST_NO 
+		           ,OD.ORD_DTL_NO
+		           ,OD.ORD_EXCH_GB 
+		           ,OD.GOODS_CD 
+		           ,OD.REAL_ORD_AMT 
+		           ,OD.SAVE_PNT_AMT 
+		           ,OD.GFCD_USE_AMT 
+		           ,ODI.ORD_DTL_ITEM_SQ 
+		           ,ODI.ITEM_CD 
+		           ,ODI.OPT_CD 
+		           ,ODI.OPT_CD1
+		           ,ODI.OPT_CD2
+		           ,ODI.ITEM_QTY 
+		           ,ODI.ITEM_PRICE
+		           ,G.GOODS_NM 
+		           ,G.MAIN_COLOR_CD
+		           ,B.BRAND_ENM 
+		)F
+		ORDER BY F.PAY_DT DESC
+	</select>
+	
+	<select id="saveMypageReview" parameterType="Review" resultType="Review">
+		/* TsfReivew.saveMypageReview */
+		INSERT INTO TB_REVIEW (
+		                         REVIEW_SQ
+		                       , GOODS_CD
+		                       , CUST_NO
+		                       , ORD_NO
+		                       , ORD_DTL_NO
+		                       , REVIEW_TITLE
+		                       , REVIEW_CONTENT
+		                       , SCORE
+		                       , HEIGHT
+		                       , WEIGHT
+		                       , SCORE_SIZE
+		                       , SCORE_COLOR
+		                       , SCORE_FIT
+		                       , SCORE_THICK
+		                       , SCORE_WEIGHT
+		                       , SCORE_BALL
+		                       , DISP_YN
+		                       , DEL_YN
+		                       , REG_NO
+		                       , REG_DT
+		                       , UPD_NO
+		                       , UPD_DT
+		                      )
+		               VALUES (
+		                          #{reviewSq}
+		                        , #{goodsCd}
+		                        , #{custNo}
+		                        , #{ordNo}
+		                        , #{ordDtlNo}
+		                        , #{reviewTitle}
+		                        , #{reviewContent}
+		                        , #{score}
+		                        , #{height}
+		                        , #{weight}
+		                        , #{scoreSize}
+		                        , #{scoreColor}
+		                        , #{scoreFit}
+		                        , #{scoreThick}
+		                        , #{scoreWeight}
+		                        , #{scoreBall}
+		                        , #{dispYn}
+		                        , #{delYn}
+		                        , #{regNo}
+		                        , now()
+		                        , #{updNo}
+		                        , now()
+		                      )
+		                      ON DUPLICATE KEY UPDATE
+		                         DEL_YN = 'N'
+		                                     ,REVIEW_CONTENT =  #{reviewContent} 
+		                                     ,SCORE          =  #{score}           
+		                                     ,HEIGHT         =  #{height}          
+		                                     ,WEIGHT         =  #{weight}          
+		                                     ,SCORE_SIZE     =  #{scoreSize}       
+		                                     ,SCORE_COLOR    =  #{scoreColor}      
+		                                     ,SCORE_FIT      =  #{scoreFit}        
+		                                     ,SCORE_THICK    =  #{scoreThick}      
+		                                     ,SCORE_WEIGHT   =  #{scoreWeight}     
+		                                     ,SCORE_BALL     =  #{scoreBall}       
+		                                     ,UPD_DT         =  now()     
+		                                                 
+	</select>
+	
+	<select id="getAlreadyReviewCount" parameterType="Review" resultType="int">
+		/* TsfReivew.getAlreadyReviewCount */
+		SELECT  COUNT(*) AS CNT 
+		FROM
 		(
 			SELECT O.ORD_NO 
 			      ,O.ORD_NM 
@@ -718,7 +852,7 @@
 			      ,G.GOODS_NM 
 			      ,G.MAIN_COLOR_CD
 			      ,B.BRAND_ENM 
-			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS DT -- 남은시간
+			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 60 DAY),NOW()) AS DT -- 남은시간
 			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
 								 				 AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') --  구매 확정인것만
 			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
@@ -726,12 +860,14 @@
 			                  	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
 			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
 			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
+			                INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+			                                      AND R.ORD_NO = O.ORD_NO
+			                                      AND R.ORD_DTL_NO = OD.ORD_DTL_NO
 			WHERE 1=1
-				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
-				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
-				AND O.SITE_CD = #{siteCd}
+				AND R.DEL_YN = 'N'
+				AND R.DISP_YN = 'Y'
 			GROUP BY O.ORD_NO 
 			      ,O.ORD_NM 
 			      ,O.PAY_DT 
@@ -753,205 +889,216 @@
 			      ,G.MAIN_COLOR_CD
 			      ,B.BRAND_ENM 
 		)F
-		ORDER BY F.PAY_DT DESC
-	</select>
-	
-	<select id="saveMypageReview" parameterType="Review" resultType="Review">
-		/* TsfReivew.saveMypageReview */
-		INSERT INTO TB_REVIEW (
-		                REVIEW_SQ
-					  ,	GOODS_CD
-					  , CUST_NO
-					  , ORD_NO
-					  , ORD_DTL_NO
-					  , REVIEW_TITLE
-					  , REVIEW_CONTENT
-					  , SCORE
-					  , HEIGHT
-					  , WEIGHT
-					  , SCORE_SIZE
-					  , SCORE_COLOR
-					  , SCORE_FIT
-					  , SCORE_THICK
-					  , SCORE_WEIGHT
-					  , SCORE_BALL
-					  , DISP_YN
-					  , DEL_YN
-					  , REG_NO
-					  , REG_DT
-					  , UPD_NO
-					  , UPD_DT
-					)
-					VALUES (
-					        #{reviewSq}
-					      ,	#{goodsCd}
-						  , #{custNo}
-						  , #{ordNo}
-						  , #{ordDtlNo}
-						  , #{reviewTitle}
-						  , #{reviewContent}
-						  , #{score}
-						  , #{height}
-						  , #{weight}
-						  , #{scoreSize}
-						  , #{scoreColor}
-						  , #{scoreFit}
-						  , #{scoreThick}
-						  , #{scoreWeight}
-						  , #{scoreBall}
-						  , #{dispYn}
-						  , #{delYn}
-						  , #{regNo}
-						  , now()
-						  , #{updNo}
-						  , now()
-					)
-					ON DUPLICATE KEY UPDATE
-						   DEL_YN = 'N'
-			               ,REVIEW_CONTENT =  #{reviewContent} 
-			               ,SCORE          =  #{score}           
-			               ,HEIGHT         =  #{height}          
-			               ,WEIGHT         =  #{weight}          
-			               ,SCORE_SIZE     =  #{scoreSize}       
-			               ,SCORE_COLOR    =  #{scoreColor}      
-			               ,SCORE_FIT      =  #{scoreFit}        
-			               ,SCORE_THICK    =  #{scoreThick}      
-			               ,SCORE_WEIGHT   =  #{scoreWeight}     
-			               ,SCORE_BALL     =  #{scoreBall}       
-			               ,UPD_DT         =  now()     
-			                           
-	</select>
-	
-	<select id="getAlreadyReviewCount" parameterType="Review" resultType="int">
-		/* TsfReivew.getAlreadyReviewCount */
-		SELECT COUNT(*) AS COUNT
-		FROM TB_REVIEW R
-		WHERE 1=1
-		 AND CUST_NO = #{custNo}
-		 AND DEL_YN = 'N'
-		 AND DISP_YN = 'Y'
 	</select>
 	
 	<select id="getAlreadyReviewList" parameterType="Review" resultType="Goods">
 		/* TsfReivew.getAlreadyReviewList */
 		<include refid="selectForPagingHeader"/>
-		SELECT F.*
-		      , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-		FROM
-		(
-		     SELECT O.ORD_NO 
-		           ,O.ORD_NM
-		           ,DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
-		           ,O.CUST_NO 
-		           ,OD.ORD_DTL_NO
-		           ,OD.ORD_EXCH_GB 
-		           ,OD.GOODS_CD 
-		           ,OD.REAL_ORD_AMT 
-		           ,OD.SAVE_PNT_AMT 
-		           ,OD.GFCD_USE_AMT 
-		           ,ODI.ORD_DTL_ITEM_SQ 
-		           ,ODI.ITEM_CD 
-		           ,ODI.OPT_CD 
-		           ,ODI.OPT_CD1
-		           ,ODI.OPT_CD2
-		           ,IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
-		           ,ODI.ITEM_QTY 
-		           ,ODI.ITEM_PRICE
-		           ,G.GOODS_NM 
-		           ,G.MAIN_COLOR_CD
-		           ,B.BRAND_ENM 
-		           ,I.ITEMKIND_NM 
-		           ,I.ITEMKIND_CD 
-		           ,I.SIZE_GB 
-		           ,R.REVIEW_SQ
-		           ,R.REVIEW_GB
-		           ,R.REVIEW_CONTENT
-		           ,R.SCORE
-		           ,R.HEIGHT
-		           ,R.WEIGHT
-		           ,(CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
-		                               	WHEN 2 THEN '딱맞음'
-		                                WHEN 3 THEN '큼'
-		                                                   END) AS SCORE_SIZE
-		           ,(CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
-		           						WHEN 2 THEN '똑같음'
-		           						WHEN 3 THEN '어두움'   
-		           						 					END) AS SCORE_COLOR
-		           ,(CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
-		           						WHEN 2 THEN '레귤러' 
-		           						WHEN 3 THEN '오버' 
-		           											END) AS SCORE_FIT
-		           ,(CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
-		           						WHEN 2 THEN '적당함' 
-		           						WHEN 3 THEN '도톰함'
-		           											END) AS SCORE_THICK
-		           ,(CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
-		           						WHEN 2 THEN '적당함'
-		           						WHEN 3 THEN '무거움'
-		           											END) AS SCORE_WEIGHT
-		           ,(CASE R.SCORE_BALL   WHEN 1 THEN '작음'
-		           						WHEN 2 THEN '딱맞음'
-	                                     WHEN 3 THEN '큼' 
-		                                					END) AS SCORE_BALL
-		        ,R.GIVE_DUE_PNT
-		        ,R.PNT_GIVE_STAT
-		        ,R.BEST_YN
-		        ,R.GIVE_DUE_BPNT
-		        ,R.BPNT_GIVE_YN
-		        ,R.DISP_YN
-		        ,R.DEL_YN
-		        ,R.CONFIRM_YN
-		        ,R.CONFIRM_UNO
-		        ,R.CONFIRM_DT
-		        ,R.REG_NO
-		        ,DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
-		        ,R.UPD_NO
-		        ,DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
-		        ,R.ADM_RPL
-		        ,R.ADM_RPL_REG_NO
-		        ,DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
-		        ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
-		        , RANK() OVER(ORDER BY O.PAY_DT DESC) AS RNUM
-		  FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-		                  INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-		                    					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		                  INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
-		                  INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
-		                  INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
-		                                		AND R.ORD_NO = O.ORD_NO
-		                                		AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
-		                                		AND R.DEL_YN = 'N'
-		                                		AND R.DISP_YN = 'Y'
-		                  LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-		                  LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
-		  	                                           AND C.USE_YN = 'Y'
-		       WHERE 1=1
-		     AND O.CUST_NO = #{custNo}
-		     AND O.DISP_YN = 'Y'
-		     AND O.SITE_CD = #{siteCd}
-		     GROUP BY O.ORD_NO 
-		           ,O.ORD_NM 
-		           ,O.PAY_DT 
-		           ,O.CUST_NO 
-		           ,OD.ORD_DTL_NO
-		           ,OD.ORD_EXCH_GB 
-		           ,OD.GOODS_CD 
-		           ,OD.REAL_ORD_AMT 
-		           ,OD.SAVE_PNT_AMT 
-		           ,OD.GFCD_USE_AMT 
-		           ,ODI.ORD_DTL_ITEM_SQ 
-		           ,ODI.ITEM_CD 
-		           ,ODI.OPT_CD 
-		           ,ODI.OPT_CD1
-		           ,ODI.OPT_CD2
-		           ,ODI.ITEM_QTY 
-		           ,ODI.ITEM_PRICE
-		           ,G.GOODS_NM 
-		           ,G.MAIN_COLOR_CD
-		           ,B.BRAND_ENM 
-		     )F
-		ORDER BY F.PAY_DT DESC
-		<include refid="selectForPagingFooter"/>
+	        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
+	             , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+	             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
+	             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
+	             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
+	             , Z.ORD_NO
+	             , Z.ORD_DT
+	             , Z.PAY_DT
+	             , Z.DELV_EDDT
+	             , Z.ORD_DTL_NO
+	             , Z.ORD_EXCH_GB
+	             , Z.GOODS_CD
+	             , Z.GOODS_NM
+	             , Z.LIST_PRICE
+	             , Z.GOODS_TYPE
+	             , Z.SYS_IMG_NM
+	             , Z.ORD_DTL_STAT
+	             , Z.ORD_QTY
+	             , Z.CNCL_RTN_QTY
+	             , Z.ORD_AMT
+	             , Z.REAL_ORD_AMT
+	             , 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.RETURNABLE_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.ITEMKIND_NM 
+	             , Z.ITEMKIND_CD 
+	             , Z.SIZE_GB 
+	             , Z.REMAIN_DT
+	             , Z.REVIEW_SQ
+	             , Z.REVIEW_GB
+	             , Z.REVIEW_CONTENT
+	             , Z.SCORE
+	             , Z.HEIGHT
+	             , Z.WEIGHT
+	             , Z.SCORE_SIZE
+	             , Z.SCORE_COLOR
+	             , Z.SCORE_FIT
+	             , Z.SCORE_THICK
+	             , Z.SCORE_WEIGHT
+	             , Z.SCORE_BALL
+	             , Z.GIVE_DUE_PNT
+	             , Z.PNT_GIVE_STAT
+	             , Z.BEST_YN
+	             , Z.GIVE_DUE_BPNT
+	             , Z.BPNT_GIVE_YN
+	             , Z.DISP_YN
+	             , Z.DEL_YN
+	             , Z.CONFIRM_YN
+	             , Z.CONFIRM_UNO
+	             , Z.CONFIRM_DT
+	             , Z.REG_NO
+	             , Z.REG_DT
+	             , Z.UPD_NO
+	             , Z.UPD_DT
+	             , Z.ADM_RPL
+	             , Z.ADM_RPL_REG_NO
+	             , Z.ADM_RPL_DT
+	             , RANK() OVER(ORDER BY Z.PAY_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 
+	                  , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
+	                  , OD.ORD_DTL_NO
+	                  , OD.ORD_EXCH_GB
+	                  , OD.GOODS_CD
+	                  , OD.GIFT_ADDR_INP_YN
+	                  , G.GOODS_NM
+	                  , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
+	                  , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD)		AS ITEM_NM
+	                  , ODI.ORD_DTL_ITEM_SQ
+	                  , ODI.OPT_CD1
+	                  , ODI.OPT_CD2
+	                  , IFNULL(C.COLOR_KNM, ODI.OPT_CD1) AS OPT_CD1_NM
+	                  , G.LIST_PRICE
+	                  , G.GOODS_TYPE
+	                  , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+	                         ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+	                  , OD.ORD_DTL_STAT
+	                  , OD.ORD_QTY
+	                  , OD.CNCL_RTN_QTY
+	                  , OD.ORD_AMT
+	                  , OD.REAL_ORD_AMT
+	                  , OD.SAVE_PNT_AMT
+	                  , OD.CNCL_RTN_AMT
+	                  , OD.PNT_DC_AMT
+	                  , OD.GFCD_USE_AMT
+	                  , OD.INVOICE_NO
+	                  , OD.SUPPLY_COMP_CD
+	                  , OD.DELV_FEE_CD
+	                  , OD.SHOT_DELV_YN
+	                  , OD.CHANGEABLE_YN
+	                  , OD.RETURNABLE_YN
+	                  , G.SELF_GOODS_YN
+	                  , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
+	                  , B.BRAND_ENM
+	                  , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
+	                  , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+	                  , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
+	                  , I.ITEMKIND_NM 
+	                  , I.ITEMKIND_CD 
+	                  , I.SIZE_GB 
+	                  , R.REVIEW_SQ
+	                  , R.REVIEW_GB
+	                  , R.REVIEW_CONTENT
+	                  , R.SCORE
+	                  , R.HEIGHT
+	                  , R.WEIGHT
+	                  , (CASE R.SCORE_SIZE   WHEN 1 THEN '작음' 
+	                                          WHEN 2 THEN '딱맞음'
+	                                         WHEN 3 THEN '큼'
+	                                                            END) AS SCORE_SIZE
+	                  , (CASE R.SCORE_COLOR  WHEN 1 THEN '밝음' 
+	                                         WHEN 2 THEN '똑같음'
+	                                         WHEN 3 THEN '어두움'   
+	                                                            END) AS SCORE_COLOR
+	                  , (CASE R.SCORE_FIT    WHEN 1 THEN '슬림' 
+	                                         WHEN 2 THEN '레귤러' 
+	                                         WHEN 3 THEN '오버' 
+	                                                            END) AS SCORE_FIT
+	                  , (CASE R.SCORE_THICK  WHEN 1 THEN '얇음' 
+	                                         WHEN 2 THEN '적당함' 
+	                                         WHEN 3 THEN '도톰함'
+	                                                            END) AS SCORE_THICK
+	                   , (CASE R.SCORE_WEIGHT WHEN 1 THEN '가벼움' 
+	                                         WHEN 2 THEN '적당함'
+	                                         WHEN 3 THEN '무거움'
+	                                                            END) AS SCORE_WEIGHT
+	                   , (CASE R.SCORE_BALL   WHEN 1 THEN '작음'
+	                                          WHEN 2 THEN '딱맞음'
+	                                          WHEN 3 THEN '큼' 
+	                                                            END) AS SCORE_BALL
+	                   , R.GIVE_DUE_PNT
+	                   , R.PNT_GIVE_STAT
+	                   , R.BEST_YN
+	                   , R.GIVE_DUE_BPNT
+	                   , R.BPNT_GIVE_YN
+	                   , R.DISP_YN
+	                   , R.DEL_YN
+	                   , R.CONFIRM_YN
+	                   , R.CONFIRM_UNO
+	                   , R.CONFIRM_DT
+	                   , R.REG_NO
+	                   , DATE_FORMAT(R.REG_DT , '%Y-%m-%d') AS REG_DT
+	                   , R.UPD_NO
+	                   , DATE_FORMAT(R.UPD_DT , '%Y-%m-%d') AS UPD_DT
+	                   , R.ADM_RPL
+	                   , R.ADM_RPL_REG_NO
+	                   , DATE_FORMAT(R.ADM_RPL_DT , '%Y-%m-%d %H:%i:%s') AS ADM_RPL_DT
+	                   , DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL  #{reviewExpireDay} DAY),NOW()) AS REMAIN_DT -- 남은시간
+	    FROM TB_ORDER O
+	   INNER JOIN TB_ORDER_DETAIL OD
+	      ON O.ORD_NO = OD.ORD_NO
+	      AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
+	   INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+	      ON OD.ORD_NO = ODI.ORD_NO
+	     AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+	      AND ODI.ORD_DTL_STAT IN('G013_70','G013_50','G013_60') -- 구매 확정인것만
+	   INNER JOIN TB_GOODS G
+	      ON OD.GOODS_CD = G.GOODS_CD
+	   INNER JOIN TB_BRAND B
+	      ON B.BRAND_CD = G.BRAND_CD
+	   INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+	  	AND R.ORD_NO = O.ORD_NO
+	  	AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
+	  	AND R.DEL_YN = 'N'
+	  	AND R.DISP_YN = 'Y'
+	   LEFT JOIN TB_ITEMKIND I 
+	      ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+	    LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
+	                      	, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+	                       FROM TB_ORDER_CHANGE_DETAIL OCD
+	                      INNER JOIN TB_ORDER_DETAIL OD
+	                         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+	                      WHERE OCD.DEL_YN = 'N'
+	                      GROUP BY OCD.ORD_DTL_NO
+	            ) OCD
+	      ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+	  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.CUST_NO =  #{custNo}
+	   AND O.DISP_YN = 'Y'
+	   AND O.SITE_CD =  #{siteCd}
+	   	) Z
+	 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
+	        , Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
+	        , 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
+	ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
+	<include refid="selectForPagingFooter"/>
 	</select>
 	
 	<select id="getReviewAttach" parameterType="Review" resultType="Review">
@@ -995,6 +1142,8 @@
 			 , RA.FILE_GB
 			 , RA.ORG_FILE_NM
 			 , RA.SYS_FILE_NM
+			 , RA.KMC_KEY
+			 , RA.FILE_GB
 			 , RA.DEL_YN
 		FROM TB_REVIEW R LEFT JOIN TB_REVIEW_ATTACH RA ON R.REVIEW_SQ = RA.REVIEW_SQ 
 		WHERE 1=1
@@ -1003,6 +1152,10 @@
 		 AND R.DEL_YN = 'N'
 		 AND R.DISP_YN = 'Y'
 		 AND RA.DEL_YN = 'N'
+		 AND (RA.FILE_GB  = 'I'
+		      OR
+		      RA.FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  RA.KMC_KEY IS NOT NULL
+		     )
 	</select>
 	
 	<select id="getAdminConfirmCount" parameterType="Review" resultType="Review">

+ 2 - 2
src/main/webapp/WEB-INF/views/web/callcenter/FaqFormWeb.html

@@ -66,7 +66,7 @@
 									</div>
 								</div>
 								<div class="fold_nav">
-									<ul>
+									<ul id="ulFaqType">
 										<li><a href="#none;" onclick="fnGetList(this);" class="on">전체</a></li>
 										<li th:if="${faqTypeList != null and !faqTypeList.empty}" th:each="oneData, status : ${faqTypeList}">
 											<a href="javascript:void(0);" th:onclick='fnGetList(this, [[${oneData.cd}]]);' th:text="${oneData.cdNm}">상품문의</a>
@@ -208,7 +208,7 @@
 		}
 		
 		$('#faqForm input[name=faqType]').val('');
-		fnGetList();
+		fnGetList($('#ulFaqType>li').eq(0).find('a'));
 	}
 	
 	// FAQ상세팝업 오픈

+ 12 - 4
src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html

@@ -36,7 +36,7 @@
 					<div class="cont">
 						<div>
 							<div class="sec_head">
-								<h3>1:1 문의</h3>
+								<h3>상품문의</h3>
 							</div>
 							<div class="sec_body">
 								<div class="history_wrap clear">
@@ -44,15 +44,15 @@
 										<ul>
 											<li>
 												<span>총 문의</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.totCnt}">12</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.totCnt}" id="qnaTotCnt">12</a>
 											</li>
 											<li>
 												<span>답변 완료</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ansCnt}">8</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ansCnt}" id="qnaAnsCnt">8</a>
 											</li>
 											<li>
 												<span>처리 중</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ingCnt}" class="doing">0</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ingCnt}" class="doing" id="qnaIngCnt">0</a>
 											</li>
 										</ul>
 									</div>
@@ -176,6 +176,14 @@
 						, jsonData
 						, function() {
 							fnGetList();
+							
+							$.get('/callcenter/goods/qna/count/info'
+									, function(result) {
+										$('#qnaTotCnt').html(result.totCnt);
+										$('#qnaAnsCnt').html(result.ansCnt);
+										$('#qnaIngCnt').html(result.ingCnt);
+									}
+								);
 						});
 			}
 		});

+ 20 - 40
src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html

@@ -28,7 +28,7 @@
 			</ul> 
 		</div>
 		<div class="wrap">
-			<div class="content faq">
+			<div class="content notice">
 				<div class="cont_body">
 					<!-- CONT-BODY -->
 					<div class="lnb" id="callcenterLnb">
@@ -89,44 +89,28 @@
 	var fnGetListCallback = function(result) {
 		$('#ulNotice').html('');
 
-		// 중요 공지 목록
-		if (result.urgentList != null && result.urgentList.length > 0) {
-			$.each(result.urgentList, function(idx, item) {
-				let tag = '<li class="critical">\n'; // 중요 공지 클래스 critical 추가
-				tag += '	<div class="fold_head">\n';
-				tag += '		<a href="javascript:void(0)">\n';
-				tag += '			<div>\n';
-				tag += '				<span class="fold_state"><em class="important">중요</em></span>\n';
-				tag += '				<span class="fold_category">공지</span>\n';
-				tag += '				<div class="fold_tit">\n';
-				tag += '					<span>' + item.noticeTitle + '</span>\n';
-				tag += '				</div>\n';
-				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
-				tag += '			</div>\n';
-				tag += '		</a>\n';
-				tag += '	</div>\n';
-				tag += '	<div class="fold_cont" style="display: none;">\n';
-				tag += '		<div class="fold_detail">\n';
-				tag += '			<div>' + item.noticeContent + '</div>\n';
-				tag += '		</div>\n';
-				tag += '	</div>\n';
-				tag += '</li>\n';
-
-				$('#ulNotice').append(tag);
-			});
-		}
-		
-		// 일반 공지 목록
 		if (result.dataList != null && result.dataList.length > 0) {
 			$.each(result.dataList, function(idx, item) {
 				let paging = result.paging.pageable;
-
-				let tag = '<li>\n';
+				let tag = '';
+				
+				if (item.urgentYn == 'Y') {
+					tag += '<li class="critical">\n'; // 중요 공지 클래스 critical 추가
+				} else {
+					tag += '<li>\n';
+				}
+				
 				tag += '	<div class="fold_head">\n';
 				tag += '		<a href="javascript:void(0)">\n';
 				tag += '			<div>\n';
-				tag += '				<span class="fold_state">' + (paging.totalCount - ((paging.pageNo - 1) * paging.pageSize) - idx++) + '</span>\n';
-				tag += '				<span class="fold_category">브랜드</span>\n';
+				
+				if (item.urgentYn == 'Y') {
+					tag += '				<span class="fold_state"><em class="important">중요</em></span>\n';
+				} else {
+					tag += '				<span class="fold_state">' + (paging.totalCount - ((paging.pageNo - 1) * paging.pageSize) - idx++) + '</span>\n';
+				}
+				
+// 				tag += '				<span class="fold_category">공지</span>\n';
 				tag += '				<div class="fold_tit">\n';
 				tag += '					<span>' + item.noticeTitle + '</span>\n';
 				tag += '				</div>\n';
@@ -140,17 +124,13 @@
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';
-			
+
 				$('#ulNotice').append(tag);
 			});
-		}
-		
-		if (result.urgentList == null && result.dataList == null) {
+		} else {
 			let tag = '<li>내역이 없습니다.</li>\n';
-			$('#ulNotice').append(tag);
+			$('#ulNotice').html(tag);
 			$('#divNotice').addClass('nodata');
-		} else {
-			$('#divNotice').removeClass('nodata');
 		}
 
 		// Create pagination

+ 11 - 3
src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html

@@ -44,15 +44,15 @@
 										<ul>
 											<li>
 												<span>총 문의</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.totCnt}">12</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.totCnt}" id="qnaTotCnt">12</a>
 											</li>
 											<li>
 												<span>답변 완료</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ansCnt}">8</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ansCnt}" id="qnaAnsCnt">8</a>
 											</li>
 											<li>
 												<span>처리 중</span>
-												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ingCnt}" class="doing">0</a>
+												<a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ingCnt}" class="doing" id="qnaIngCnt">0</a>
 											</li>
 										</ul>
 									</div>
@@ -259,6 +259,14 @@
 						, jsonData
 						, function() {
 							fnGetList();
+							
+							$.get('/callcenter/onetoone/qna/count/info'
+								, function(result) {
+									$('#qnaTotCnt').html(result.totCnt);
+									$('#qnaAnsCnt').html(result.ansCnt);
+									$('#qnaIngCnt').html(result.ingCnt);
+								}
+							);
 						});
 			}
 		});

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

@@ -572,7 +572,7 @@
 	// GNB탭 > 카테고리
 	let fnGetGnbCategory = function(cate1) {
 		let tag = '';
-		let formalGb = 'G009_10';
+
 		if (cate1 != null) {
 			tag += '<li class="has_depth">\n'; //depth_menu 있을 시 has_depth 클래스 추가
 			tag += '	<a href="javascript:void(0);" onclick="cfnGoToCategoryMain(\'' + cate1.cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a>\n';
@@ -580,23 +580,23 @@
 			tag += '		<div class="head_category">\n';
 			tag += '			<div class="tit">\n';
 			tag += '				<p>' + cate1.cate1Nm + '</p>\n';
-			tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ',\'\',\'\',\'\',\'\',\'' + formalGb + '\');" class="more">전체보기</a>\n';
+			tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate1.cateGb + '\',' + cate1.cate1No + ');" class="more">전체보기</a>\n';
 			tag += '			</div>\n';
 			if (cate1.leafYn == 'N' && cate1.cate2List.length > 0) {
 				tag += '			<div class="menu">\n';
 				tag += '				<ul class="maintabs">\n';
 				$.each(cate1.cate2List, function(idx2, cate2) {
 					tag += '					<li>\n';
-					tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ',\'\',\'\',\'\',\'' + formalGb + '\');">' + cate2.cate2Nm + '</a>\n';
+					tag += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate2.cateGb + '\',' + cate2.cate1No + ',' + cate2.cate2No + ');">' + cate2.cate2Nm + '</a>\n';
 					if (cate2.leafYn == 'N' && cate2.cate3List != null && cate2.cate3List.length > 0) {
 						tag += '						<ul class="box_depth2">\n';
 						$.each(cate2.cate3List, function(idx3, cate3) {
 							tag += '							<li>\n';
-							tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ',\'\',\'\',\'' + formalGb + '\');">' + cate3.cate3Nm + '</a>\n';
+							tag += '								<a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate3.cateGb + '\',' + cate3.cate1No + ',' + cate3.cate2No + ',' + cate3.cate3No + ');">' + cate3.cate3Nm + '</a>\n';
 							if (cate3.leafYn == 'N' && cate3.cate4List != null && cate3.cate4List.length > 0) {
 								tag += '								<ul class="box_depth3">\n';
 								$.each(cate3.cate4List, function(idx4, cate4) {
-									tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ',\'\',\'' + formalGb + '\');">' + cate4.cate4Nm + '</a></li>\n';
+									tag += '									<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(0,\'' + cate4.cateGb + '\',' + cate4.cate1No + ',' + cate4.cate2No + ',' + cate4.cate3No + ',' + cate4.cate4No + ');">' + cate4.cate4Nm + '</a></li>\n';
 								});
 								tag += '								</ul>\n';
 							}
@@ -618,7 +618,7 @@
 		return tag;
 	}
 
-	let fnGetGnbBanner = function (cateNo, title){
+	let fnGetGnbBanner = function (cateNo){
 		let actionUrl = '/display/gnb/tab/banner/list?cateNo='+cateNo;
 		let tag2 = '';
 		$.getJSON(actionUrl
@@ -627,7 +627,9 @@
 			var planninImgUrl = [[${@environment.getProperty('upload.image.view')}]];
 			if(result.length>0){
 				tag2 += '		<div class="tit">\n';
-				tag2 += '			<p>'+title+'</p>\n';
+				if(!gagajf.isNull(result[0].gnbTabTitle)){
+					tag2 += '			<p>'+result[0].gnbTabTitle+'</p>\n';
+				}
 				tag2 += '		</div>\n';
 				tag2 += '		<div class="list">\n';
 				tag2 += '			<ul class="clear event_con">\n';
@@ -671,7 +673,7 @@
 								$.each(allCate, function(allCateIdx, allCateItem) {
 									if (item.cate1No == allCateItem.cate1No) {
 										let gnbCate = fnGetGnbCategory(allCateItem);
-										fnGetGnbBanner(item.cate1No ,item.gtabBannerTitle);
+										fnGetGnbBanner(item.cate1No);
 										$('#divGnbTab').append(gnbCate);
 										$('#ulGnbTab').append(gnbCate);
 									}
@@ -682,7 +684,7 @@
 								// $('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 								fnGetOutletLeafCategory();
-								fnGetGnbBanner('3000',item.gtabBannerTitle);
+								fnGetGnbBanner('3000');
 							} else if (item.contentsType == 'L') { // 컨텐츠유형:링크
 								$('#divGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');
 								$('#ulGnbTab').append('<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>');

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

@@ -25,17 +25,8 @@
 			</div>
 		</div>
 		<div class="modal-footer">
-			<button type="button" id="btnClose" class="btn btn_default"><span>닫기</span></button>
+			<a href="#close-modal" rel="modal:close" className="close-modal" class="btn btn_default">닫기</a>
 		</div>
 	</div>
 </div>
-<script th:inline="javascript">
-	/*<![CDATA[*/
-
-	$("#btnClose").click(function() {
-		$.modal.close();
-	});
-
-	/*]]>*/
-</script>
 </html>

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

@@ -27,17 +27,8 @@
 			</div>
 		</div>
 		<div class="modal-footer">
-			<button type="button" id="btnClose" class="btn btn_default"><span>닫기</span></button>
+			<a href="#close-modal" rel="modal:close" className="close-modal" class="btn btn_default">닫기</a>
 		</div>
 	</div>
 </div>
-<script th:inline="javascript">
-	/*<![CDATA[*/
-
-	$("#btnClose").click(function() {
-		$.modal.close();
-	});
-
-	/*]]>*/
-</script>
 </html>

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

@@ -26,17 +26,8 @@
 			</div>
 		</div>
 		<div class="modal-footer">
-			<button type="button" id="btnClose" class="btn btn_default"><span>닫기</span></button>
+			<a href="#close-modal" rel="modal:close" className="close-modal" class="btn btn_default">닫기</a>
 		</div>
 	</div>
 </div>
-<script th:inline="javascript">
-	/*<![CDATA[*/
-
-	$("#btnClose").click(function() {
-		$.modal.close();
-	});
-
-	/*]]>*/
-</script>
 </html>

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

@@ -324,6 +324,7 @@
 					postfix: "원",
 					prettify_separator: ",",
 					values: custom_values,
+					min_interval: 1,
 					// onStart : function(data){
 					// 	fnCheckPrice(data);
 					// },
@@ -350,6 +351,7 @@
 				postfix: "%",
 				prettify_separator: ",",
 				values: custom_values02,
+				min_interval: 1,
 				// onStart : function(data){
 				// 	fnCheckDcRate(data);
 				// },
@@ -401,7 +403,7 @@
 			$("#price_input_from").val(custom_values[0]);
 			$("#price_input_to").val(custom_values[5]);
 
-			fnFilterSlider('price' , custom_values[min], custom_values[max]);
+			fnFilterSlider('price' , custom_values[min].addComma(), custom_values[max].addComma());
 		}
 
 		// 필터 할인율 확인

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

@@ -81,12 +81,12 @@
 
 			<th:block th:if="${contentsLoc=='002'}">
 				<!-- 신상품 -->
-				<div class="content wide new_item" th:if="${newGoodsList != null}">
+				<div class="content new_item" th:if="${newGoodsList != null}">
 					<div class="cont_head">
-						<h3 class="displayH" th:text="${contentsTitle}">신상품</h3>
+						<h4 th:text="${contentsTitle}">신상품</h4>
 					</div>
 					<div class="cont_body">
-						<div class="swiper-container post-trendy">
+						<div class="swiper-container">
 							<div class="swiper-wrapper">
 								<div class="swiper-slide" th:each="item, status : ${newGoodsList}">
 									<div class="item_prod" th:if="${status.count<21}">
@@ -153,66 +153,63 @@
 /*<![CDATA[*/
 	$(document).ready(function() {
 		fnSetCategory1Depts();
-	});
-	
-	var submain_slide = new Swiper('.dp_sum_slide .swiper-container', {
-		slidesPerView: 4,
-		spaceBetween: 20,
-		freeMode:true,
-		scrollbar: {
-			el: '.dp_sum_slide .swiper-scrollbar',
-			hide: false,
-		},
-		navigation: {
-			nextEl: '.dp_sum_slide .swiper-button-next',
-			prevEl: '.dp_sum_slide .swiper-button-prev'
-		}
-	});
 
-	/* SLIDE - NEW ITEMS */
-	var dp_submain_newitem = new Swiper('.dp .new_item .swiper-container', {
-		watchSlidesProgress: true,
-		watchSlidesVisibility: true,
-		allowTouchMove: false,
-		speed : 1000,
-		autoplay: {
-			delay: 3000,
-			disableOnInteraction:false
-		},
-		navigation: {
-			nextEl: '.dp .new_item .swiper-button-next',
-			prevEl: '.dp .new_item .swiper-button-prev'
-		},
-		pagination: {
-			el: '.dp .new_item .swiper-pagination',
-			clickable: true
-		},
-		slidesPerView: 'auto',
-		spaceBetween: 22
-	});
-	
-	dp_submain_newitem.on('slideChange', function () {
-		var newitemIndex = dp_submain_newitem.activeIndex;
-		var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
-
-		$(".dp .new_item .swiper-slide").removeClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(0).addClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(3).addClass('scaleBig');
-		
-		$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
-	});
+		/* SLIDE - 상단 스크롤 슬라이드 배너 */
+		var submain_slide = new Swiper('.dp_submain .swiper-container', {
+			slidesPerView: 4,
+			spaceBetween: 20,
+			freeMode:true,
+			scrollbar: {
+				el: '.dp_submain .swiper-scrollbar',
+				hide: false,
+			},
+		});
+
+		/* SLIDE - NEW ITEMS */
+		var dp_submain_newitem = new Swiper('.dp .new_item .swiper-container', {
+			watchSlidesProgress: true,
+			watchSlidesVisibility: true,
+			allowTouchMove: false,
+			speed : 1000,
+			autoplay: {
+				delay: 3000,
+				disableOnInteraction:false,
+			},
+			navigation: {
+				nextEl: '.dp .new_item .swiper-button-next',
+				prevEl: '.dp .new_item .swiper-button-prev',
+			},
+			pagination: {
+				el: '.dp .new_item .swiper-pagination',
+				clickable: true,
+			},
+			slidesPerView: 'auto',
+			spaceBetween: 22,
+		});
 
-	dp_submain_newitem.on('reachEnd', function () {
-		var newitemIndex = dp_submain_newitem.activeIndex + 1;
-		var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
-		
-		$(".dp .new_item .swiper-slide").removeClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(1).addClass('scaleBig');
-		$(".dp .new_item .swiper-slide-visible").eq(4).addClass('scaleBig');
+		dp_submain_newitem.on('slideChange', function () {
+			var newitemIndex = dp_submain_newitem.activeIndex;
+			var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
 
-		$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+			$(".dp .new_item .swiper-slide").removeClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(0).addClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(3).addClass('scaleBig');
+
+			$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+		});
+
+		dp_submain_newitem.on('reachEnd', function () {
+			var newitemIndex = dp_submain_newitem.activeIndex + 1;
+			var slideWidth = $(".dp .new_item .swiper-slide-visible").eq(0).width() + 22;
+
+			$(".dp .new_item .swiper-slide").removeClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(1).addClass('scaleBig');
+			$(".dp .new_item .swiper-slide-visible").eq(4).addClass('scaleBig');
+
+			$(".dp .new_item .swiper-wrapper").css("transform","translateX(-"+ (slideWidth * newitemIndex) +"px)");
+		});
 	});
-	
+
 	// 카테고리1Depts 설정
 	var fnSetCategory1Depts = function() {
 		let allCate = [[${allCateList}]];

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

@@ -37,14 +37,15 @@
 										<div class="swiper-slide">
 											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
 												<div class="txtWrap">
-
 													<th:block th:if="${ContentsData.strVar5!=null && ContentsData.strVar5!=''}">
-														<p class="vrt_txt" th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></p>
-														<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}" >EVENT</p>
+														<p class="vrt_txt" th:if="${ContentsData.strVar5=='P' and ContentsData.planBrandCnt<2}" th:text="${ContentsData.planBrandGroupNm}"></p>
+														<p class="vrt_txt" th:if="${ContentsData.strVar5=='P' and ContentsData.planBrandCnt>1}" th:text="${ContentsData.planBrandGroupNm+' 외'}"></p>
+														<p class="vrt_txt" th:if="${ContentsData.strVar5!='P' or (ContentsData.strVar5=='P' and ContentsData.planGb=='E') }" >EVENT</p>
 													</th:block>
 													<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
-														<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></dt>
-														<dt th:if="${ContentsData.strVar5!='P'}" >EVENT</dt>
+														<dt th:if="${ContentsData.strVar5=='P' and ContentsData.planBrandCnt<2}" th:text="${ContentsData.planBrandGroupNm}"></dt>
+														<dt th:if="${ContentsData.strVar5=='P' and ContentsData.planBrandCnt>1}" th:text="${ContentsData.planBrandGroupNm+' 외'}"></dt>
+														<dt th:if="${ContentsData.strVar5!='P' or (ContentsData.strVar5=='P' and ContentsData.planGb=='E') }" >EVENT</dt>
 														<dd class="mainTitle">
 															<input type="hidden" name="mainTitlee" th:value="${ContentsData.strTitle1}"/>
 														</dd>

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

@@ -54,7 +54,7 @@
 									<th:block th:each="goodsImg, status : ${goodsImgList}">
 										<div class="swiper-slide" th:classappend="${status.first and videoYn == 'N'}? 'on' : ''"  th:with="count=${(videoYn == 'Y')?  (status.count +1): status.count }"
 																th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
-																		or #strings.contains(goodsImg.sysImgNm,'_L1.')
+					`													or #strings.contains(goodsImg.sysImgNm,'_L1.')
 																		or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
 											<a th:href="${'#navLocate'+ count}">
 												<span class="thumb">

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

@@ -573,8 +573,8 @@ var fnChooseFile = function(obj) {
 						}
 				); 
 		}else if((new RegExp("mp4", "i")).test(file.name)){
-			$(".pics").eq(0).find('removes').append("<input type='hidden' name='kufKey' id='kufKey"+(picLength+1)+"'>");
-			$(".pics").eq(0).find('removes').append("<input type='hidden' name='kmcKey' id='kmcKey"+(picLength+1)+"'>");
+			$(".pics").children().eq(0).append("<input type='hidden' name='kufKey' id='kufKey"+(picLength+1)+"'>");
+			$(".pics").children().eq(0).append("<input type='hidden' name='kmcKey' id='kmcKey"+(picLength+1)+"'>");
 			//gagaKollus.upload('Review', file, $('#kufKey'+(picLength+1)));
 		}else{
 			mcxDialog.alertC('첨부할 수 없는 파일 형식입니다.', {

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

@@ -48,8 +48,8 @@
 							<div class="taps" id="tpasReview">
 								<div>
 									<ul>
-										<li id="completeReview"><a href="javascript:void(0);" >작성 가능한 리뷰<span th:text="'('+${#numbers.formatInteger(completeReviewCount,0,'COMMA')}+')'"></span></a></li>
-										<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span th:text="'('+${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}+')'"></span></a></li>
+										<li id="completeReview"><a href="javascript:void(0);" >작성 가능한 리뷰<span id="comReview" th:text="'('+${#numbers.formatInteger(completeReviewCount,0,'COMMA')}+')'"></span></a></li>
+										<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span id="alrReview" th:text="'('+${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}+')'"></span></a></li>
 									</ul>
 								</div>
 							</div>
@@ -212,6 +212,7 @@
 	
 	// 주문 목록 조회 콜백
 	var fnSearchCallback2 = function(result) {
+		
 		$('#nodata1').hide();
 		$('#nodata2').hide();
 		
@@ -250,7 +251,7 @@
 				html+='					</div>';
 				html+='					<div class="button_box">';
 				if (item.admRpl == null || item.admRpl == '') {
-					html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+','+item.goodsCd+','+item.reviewSq+')"><span>리뷰 수정</span></button></p>';
+					html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnReviewUpdate('+item.ordNo+','+item.ordDtlNo+',\''+item.goodsCd+'\','+item.reviewSq+')"><span>리뷰 수정</span></button></p>';
 				}
 				html+='						<p><button type="button" class="btn btn_default btn_sm" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></p>';
 				html+='					</div>';
@@ -326,7 +327,7 @@
 						html+='										<a onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">';
 						html+='											<div class="pic">';
 						if (attachList[i].fileGb == 'M') {
-							html+='												<span class="thumb mov" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+							html+='												<span class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 						}else{
 							html+='												<span class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 						}
@@ -404,10 +405,10 @@
 			sureBtnText : "확인",
 			sureBtnClick : function() {
 
-				gagajf.ajaxJsonSubmit('/mypage/review/delete', jsonData, function() {
-					
+				gagajf.ajaxJsonSubmit('/mypage/review/delete', jsonData, function(e) {
 					mcxDialog.alert("삭제되었습니다.");
-					
+					$("#alrReview").text("("+e.alreadyReviewCount+")");
+					$("#comReview").text("("+e.completeReviewCount+")");
 					$("#alreadyReview").trigger('click');	
 				});
 			}

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

@@ -27,6 +27,7 @@
 			</ul> 
 		</div>
 		<div class="wrap">
+		<th:block th:if="${socialInfo != null}">
 			<div class="content wide dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
 				<div class="cont_body">
                     <div class="hotdeal">
@@ -69,10 +70,24 @@
                     </div>
                 </div>
 		    </div>
+		</th:block>
+		<th:block th:unless="${socialInfo != null}">
+				<div class="nodata" >
+					<div class="txt_box">
+						<p>
+							진행하는 핫딜이 없습니다.
+						</p>
+					</div>
+					<div class="btn_box">
+						<button class="btn btn_default" th:onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>
+					</div>
+				</div>	
+		</th:block>
         </div>
     </div>   
 <script th:inline="javascript">
 var socialInfo = [[${socialInfo}]];
+console.log(socialInfo);
 var socialAddCart = function (obj) {
 	let btnType = "C";
 	let params = [];

+ 5 - 6
src/main/webapp/biz/goods.js

@@ -172,12 +172,11 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 
 		tag += '<div class="item_prod">';
 		tag += '	<div class="item_state">';
-		tag += '		<button type="button" class="itemLike"';
+		tag += '		<button type="button" class="itemLike';
 		if(item.likeIt == 'likeit'){
-			tag += 'classappend="likeit"';
-		}else{
-			tag += 'classappend=""';
+			tag += ' likeit';
 		}
+		tag += ' "';
 		tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		tag += '<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\');">';
 		tag += '			<div class="itemPic">';
@@ -436,8 +435,8 @@ var fnFilterSlider = function (gubun, min, max){
 
 	var tag2 = '';
 	if(gubun=='price'){
-		tag2 += '<input type="hidden" name="priceRow" value="'+min+'"/>\n';
-		tag2 += '<input type="hidden" name="priceHigh" value="'+max+'"/>\n';
+		tag2 += '<input type="hidden" name="priceRow" value="'+min.replace(",", "")+'"/>\n';
+		tag2 += '<input type="hidden" name="priceHigh" value="'+max.replace(",", "")+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
 		fnCategoryGoodsInfiniteScrollInit();
 	}else{

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

@@ -424,7 +424,7 @@
 .pd_detail > .inner.wide{padding-left:0!important; padding-right:0!important; padding-bottom:0;}
 
 .pd_detail .movbox {position: relative;height: 0;padding-top: 100%;padding-bottom:50.25%;overflow: hidden;transition: all 300ms ease;transform: scale(1);}
-.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;}
+.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;pointer-events:none;}
 
 
 .pd_detail .thumb_box{position: relative;}
@@ -659,7 +659,7 @@
 .riview_box .best_review a .lap > .pic.none + div.txt_best_review{padding-left:0;}
 .riview_box .best_review a .lap > .pic + div.txt_best_review{padding-left:1.6rem;}
 .riview_box .best_review a .lap > div.txt_best_review p{height:6.4rem; margin-top: 0.8rem; overflow:hidden; line-height:2.1333rem; color:#666; font-size:1.3rem; font-weight:200; display:-webkit-box; text-overflow:ellipsis; -webkit-line-clamp:3; -webkit-box-orient:vertical;}
-.riview_box .best_review a .star_score {display:block; margin-bottom:0.7rem; vertical-align:middle; image-rendering:pixelated;}
+.riview_box .best_review a .star_score {display:block; margin-bottom:0.7rem; image-rendering:pixelated;}
 .riview_box .best_review a .star_score .star{vertical-align:middle;}
 .riview_box .best_review a .pic .thumb {display:block; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
 .riview_box .best_review a .pic .thumb.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:2;}
@@ -692,7 +692,7 @@
 .pd_detail .pd_recommend .area_slider .page .pic {position:relative;}
 .pd_detail .pd_recommend .area_slider .page .pic span.thumb {display:block; width:100%; height:0; padding-top:100%; background-color:#f5f5f5; background-repeat:no-repeat; background-position:50% 50%; background-size:contain;}
 .pd_detail .pd_recommend .area_slider .page .item_wrap {}
-.pd_detail .pd_recommend .area_slider .page .item_wrap .item_area {position:relative; display:block; height:100%; width:100%; padding:1.0rem; box-sizing:border-box; vertical-align:middle;}
+.pd_detail .pd_recommend .area_slider .page .item_wrap .item_area {position:relative; display:block; height:100%; width:100%; padding:1.0rem; box-sizing:border-box;}
 .pd_detail .pd_recommend .area_slider .page .item_wrap .item_area h5 {margin: 0 0 3.0rem;color:#222;font-size:2.0rem;font-weight:500;}
 .pd_detail .pd_recommend .area_slider .page .item_wrap .item_area h5 span {color:#666; font-weight:200;}
 .pd_detail .pd_recommend .area_slider .page .item_wrap .item_area .li_item {height:calc(100% - 14.0rem); overflow-y:auto;}
@@ -814,7 +814,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .cs .fold_head .fold_tit .lap2 span{font-weight:500;}
 .cs .fold_head .fold_state{padding:0.2rem 0.3rem;}
 .cs .fold_head .data{font-family: 'LATO', 'Noto Sans kr', sans-serif;}
-.Purchase_pop .select_custom .combo .list>li{padding:1.2rem; line-height:2rem; word-wrap: break-word;}
+.Purchase_pop .select_custom .combo .list>li{padding:1.2rem 4.2rem 1.2rem 1.2rem; line-height:2rem; word-wrap: break-word;}
 /* 210415 */
 .dp .popup_box .button_list.clear button{width:100% !important;}
 .dp .open_categori a{display: inline-block;font-size: 1.2rem;font-weight: 300;padding-right: 1.4rem;background: url(/images/mo/ico_sort_arrow.png) no-repeat right center;background-size: 0.7rem 0.43rem;}
@@ -822,30 +822,14 @@ header .htop.trans{position:absolute; background:transparent !important;}
 /*.dp .dp_Bulletship .inner:first-child{margin-bottom:0; padding-bottom:0;}*/
 .dp .items_option{padding-top:0; margin:0 2rem;}
 .dp .items_option #filter{height:4.5rem; border:0.1rem solid #dddddd; font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
-.dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0}
+.dp .items_option.fix{position:fixed; top:0; z-index:999; width:100%; left:0; margin:0; box-shadow:rgb(0 0 0 / 30%) 0px 3px 15px 0px;}
 .dp .dp_listItems_wrap .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;}
 .Purchase_pop .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
 /* 210416 */
 .dp .filter_box .filter_body .daps1{position:sticky; top:0; background-color:#fff; z-index: 9999;}
-.deal_list_select .list>li[aria-disabled="true"] {
-	text-decoration: line-through;
-    background: #fff;
-    color: #bbb;
-	pointer-events: none;
-}
-.deal_list_select .list>li[data-soldout="true"] {
-	pointer-events: none;
-}
-.deal_list_select .list>li[data-soldout="true"]::after {
-	content: '품절';
-    display: inline-block;
-    font-size: 12px;
-    color: #bbbbbb;
-    position: absolute;
-    right: 15px;
-    top: 0;
-    bottom: 0;
-}
+.deal_list_select .list>li[aria-disabled="true"] {text-decoration: line-through;background: #fff;color: #bbb;pointer-events: none;}
+.deal_list_select .list>li[data-soldout="true"] {pointer-events: none;}
+.deal_list_select .list>li[data-soldout="true"]::after {content: '품절';display: inline-block;font-size: 12px;color: #bbbbbb;position: absolute;right: 15px;top: 0;bottom: 0;}
 .dp .mid_banner{margin-top:-6rem}
 /* 210419 */
 .pd_qnalist_pop .ui_foot{padding:0 2rem}
@@ -861,6 +845,29 @@ header .subs .dp_list_btn_gnbs span i {display: block;position: absolute;left: 0
 header .subs .dp_list_btn_gnbs span {display: block;width: 24px;height: 24px;margin: 0 auto;position: relative;}
 header .subs .dp_list_btn_gnbs span i {background: url(/images/mo/ico_btn_more.png) no-repeat;background-size: 1.3rem 0.733rem;background-position: 50% 50%;}
 header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-transform: rotate(-180deg);}
+/* 210422 */
+/* 플롯팅 메뉴 > 구매하기 */
+.brand_floormenu{position:fixed; bottom:0; left:0; width:100%; height:5.8rem; line-height:5.8rem; z-index:20;}
+.brand_floormenu > div{float:left; color:#fff; text-align:center;}
+.brand_floormenu > div:nth-child(1){width:37%;}
+.brand_floormenu > div:nth-child(2){width:63%; background-color:#fd4802;}
+.brand_floormenu button{display:block; width:100%; height:5.8rem; line-height:5.8rem; font-size:1.6rem; font-weight:500;}
+.brand_floormenu .share_like{overflow:hidden;}
+.brand_floormenu .share_like > button{float:left; width:100%; font-size:0; text-indent:-999999px;}
+.brand_floormenu .share_like > button.refresh{background:#000 url(/images/mo/dp_refresh.png) center center no-repeat; background-color:#222222;}
+/*.brand_floormenu .share_like > button.like{background:#000 url(/images/mo/ico_floorbtn_like.png) center center no-repeat; background-size:2rem;}*/
+.brand_floormenu .prd_buy > .buying{display:block; background-color:#fd4802;}
+.brand_floormenu .prd_buy > .cantbuying{display:none;}
+.brand_floormenu.soldout .prd_buy > .buying{display:none;}
+.brand_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
+.dp_lookbook ~ .popup_box .popup_con{margin-bottom:5rem}
+.dp_listItems_cont.type1 .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
+/* 210423 */
+.br .brand_si{margin-top:0.1rem}
+.br .brand_si .swiper-wrapper{height:0;}
+.br .brand_si .swiper-wrapper .swiper-slide:nth-child(odd){border-bottom:0rem none;}
+.Purchase_pop .select_custom .opt_price{font-size:1.2rem; color:#888888}
+.select_custom .combo .list>li[aria-disabled="true"] .opt_price{color:#bbb !important}
 
 
 
@@ -1142,7 +1149,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 /* pd_pop > 상품문의 페이지 */
 .modal.pd_pop.pd_qnalist_pop .modal-header {position:fixed; top:0; left:0; right:0; width:100%; height:auto; border-bottom:1px solid #eee !important; box-sizing:border-box; background:#fff; z-index:11; box-sizing:border-box;}
 .modal.pd_pop.pd_qnalist_pop .modal-body{position:relative; margin:auto; padding:9.3rem 0 3rem;}
-.modal.pd_pop.pd_qnalist_pop .ui_row{margin:0 -1.33rem!important 0; width:auto;}
+.modal.pd_pop.pd_qnalist_pop .ui_row{margin:0 -1.33rem!important; width:auto;}
 .modal.pd_pop.pd_qnalist_pop .pd_qnalist > .btn_group_flex{position:fixed; width: 100%; bottom: 0; margin-top: 0;}
 .pd_qnalist .qna_list .foldGroup {margin-bottom:0;}
 .pd_qnalist .qna_list {margin-top:3rem;}
@@ -1269,7 +1276,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .pd_review .area_rv_average .average .part_average dl dt {float:left; padding-left:0.7rem; width:7.2rem; font-size:1.2rem; box-sizing:border-box;}
 .pd_review .area_rv_average .average .part_average dl dd {position:relative; float:left; width:calc(100% - 7.2rem); padding-right:4.7rem; box-sizing:border-box;}
 .pd_review .area_rv_average .average .part_average dl dd::after {content:''; clear:both; display:block;}
-.pd_review .area_rv_average .average .part_average dl dd span {float:left; display:inline-block;}
+.pd_review .area_rv_average .average .part_average dl dd span {float:left; /*display:inline-block;*/}
 .pd_review .area_rv_average .average .part_average dl dd .ratio {width:100%; height:5px; margin-top:6px; background:#f5f5f5; overflow:hidden;}
 .pd_review .area_rv_average .average .part_average dl dd .ratio .progbar {display:inline-block; position:relative; height:8px; background:#ddd; vertical-align:top; margin-left:0}
 .pd_review .area_rv_average .average .part_average dl dd .ratio .progbar::after {content:''; position:absolute; right:-8px; top:0; width:0; height:0; border:4px solid #ddd; border-bottom-color:transparent;border-right-color:transparent;}
@@ -1682,7 +1689,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
   color: #222;
   font-weight: 300;
   word-break: keep-all;
-}}
+}
 
 /* 베스트 - dp_best */
 .dp .dp_best .count_wrap{padding-top:0;}
@@ -1986,7 +1993,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .filter_body > ul > li .filter_content [class*="pdColor"] {position: relative; display: inline-block; width:2.4rem; height: 2.4rem; cursor: pointer;}
 .filter_body > ul > li .colorbox li [class*="pdColor"]:before {content: ""; display: inline-block; width: 100%; height: 100%; border-radius: 50%; box-sizing: border-box;}
 .filter_body > ul > li.color .daps1 span [class*="pdColor"]{position:relative; display:inline-block; margin-left:0.5rem; width:1.2rem; height:1.2rem; border-radius:50%; overflow:hidden;}
-.filter_body > ul > li.color .daps1 span [class*="pdColor"]:before{content:''; position:absolute; top:0; left:0; display:block; width:100%; height:100%; cursor: pointer; vertical-align:top;}
+.filter_body > ul > li.color .daps1 span [class*="pdColor"]:before{content:''; position:absolute; top:0; left:0; display:block; width:100%; height:100%; cursor: pointer;}
 .pdColor-color01::before {background-color: #000;}
 .pdColor-color02::before {background-color: #7f7f7f;}
 .pdColor-color03::before {background-color: #ff0306;}
@@ -2221,7 +2228,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .htop.br_lookbook h1 { color: #fff !important; margin: 1rem 0 0 2rem;}
 .htop.br_lookbook .btn_back { margin: 1.4rem 0 0 0;}
 .htop.br_lookbook .btn_back img { width: 1.5rem; height: 1rem;}
-.htop.br_lookbook .button_wrap {height: 5.5rem; display: inline-block; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
+.htop.br_lookbook .button_wrap {height: 5.5rem; /*display: inline-block;*/ float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
 .htop.br_lookbook .button_wrap .br_search { margin: 0 2.5rem 0 0; width: 2.3rem; height: 2.4rem;}
 .htop.br_lookbook .button_wrap .br_store img:nth-child(1) { width: 1.8rem; height: 2.2rem; }
 .htop.br_lookbook .button_wrap .br_store span { width: 2.1rem; height: 1.5rem; position: absolute; top: 1.2rem; right: 1.5rem; background: #fd4802; border-radius: 0.8rem; font-size: 0.8rem; color: #fff; line-height: 1.6rem;}
@@ -2265,10 +2272,10 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 .br_search_wrap .swiper-container { width: 100%; height: 21.4rem; margin-left: auto; margin-right: auto; }
 .br_search_wrap .swiper-slide { text-align: center; font-size: 1.8rem; background: #fff; height: calc((100% - 30px) / 2); /* Center slide text vertically--> */ display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; -webkit-justify-content: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; -webkit-align-items: center; align-items: center; }
 .br_search_wrap .swiper-slide {width: 12rem; height: 8rem;}
-.br_search_wrap .swiper-slide {border-bottom: 0.1rem solid #eeeeee; border-right: 1px solid #eeeeee;}
+.br_search_wrap .swiper-slide {border-bottom: 0.1rem solid #eeeeee; border-right: 0.1rem solid #eeeeee; border-top: 0.1rem solid #eeeeee;}
 .br_search_wrap .swiper-slide:nth-child(1) {border-left: 0.1rem solid #eeeeee;}
 .br_search_wrap .swiper-slide:nth-child(2) {border-left: 0.1rem solid #eeeeee;}
-.br_search_wrap .swiper-slide > div { width: 12.6rem; height: 8rem; margin: 0; padding: 2.5rem 2rem 0; box-sizing: border-box;}
+.br_search_wrap .swiper-slide > div { width: 12.6rem; margin: 0; box-sizing: border-box; padding:0.6rem;}
 .br_search_wrap .swiper-pagination-bullet-active { background: #fd4802;}
 .br_search_wrap .hmenu .line { width: 100%; height: 1.4rem; background: #f5f5f5; margin: 1rem 0 0;}
 .br_search_wrap .hmenu .brand_si .swiper-pagination-bullet{margin-right:0.8rem;}
@@ -2291,7 +2298,7 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 /* 브랜드 - br_search */
 .htop.br { overflow: hidden;}
 /* 제거 예정/ 공통으로 교체 */
-.htop.br .button_wrap {height: 5.5rem; display: inline-block; float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
+.htop.br .button_wrap {height: 5.5rem; /*display: inline-block;*/ float: right; padding: 1.6rem 0 0; margin: 0 2.5rem 0 0; box-sizing: border-box;}
 .htop.br .button_wrap .br_search { margin: 0 2.5rem 0 0; }
 .htop.br .button_wrap .br_store img:nth-child(1) { height: 2rem; }
 .htop.br .button_wrap .br_store span { width: 2.1rem; height: 1.5rem; position: absolute; top: 1.2rem; right: 1.5rem; background: #fd4802; border-radius: 0.8rem; font-size: 0.8rem; color: #fff; line-height: 1.6rem;}

+ 66 - 30
src/main/webapp/ux/mo/js/common_m.js

@@ -29,14 +29,50 @@ $(document).ready(function() {
         });
 
         var lastScrollTop = 0;
+        $(window).on('mousewheel',function(e){
+            if($('body').hasClass('gnb_on') === false && $('main').hasClass('pd') === false){
+                var wheel = e.originalEvent.wheelDelta;
+                if(wheel>0){
+                    //스크롤 올릴때
+                    $(".tabbar").addClass('fixed');
+                    $(".gnb").addClass('fixed');
+                    $(".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");
+                    } else {
+                        $(".gnb").css('position', 'fixed');
+                        $(".pnb_mo").css('position', 'fixed');
+                    }
+                } else {
+                    //스크롤 내릴때
+                    $(".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 가 아닌, 스크롤 감지로 변경할 것
-            if ($(window).scrollTop() > $("header").height()) {
-                $(".tabbar").removeClass('fixed');
-            } else {
-                $(".tabbar").addClass('fixed');
-            }
+            //if ($(window).scrollTop() > $("header").height()) {
+            //    $(".tabbar").removeClass('fixed');
+            //} else {
+            //    $(".tabbar").addClass('fixed');
+            //}
 
             if ($(window).scrollTop() > $("header").height()) {
                 $(".btn_top").animate({
@@ -55,30 +91,30 @@ $(document).ready(function() {
             }
 
             // 210409_스크롤시 헤더 백그라운드 흰색
-            var st = $(this).scrollTop();
-            if($('header').hasClass("main") !== true){
-                if (st > lastScrollTop){
-                    $(".app .gnb").css("position", "fixed");
-                    $(".htop").css("background", "#fff");
-                    $(".app .gnb .btn-expand").css("position", "fixed");
-                    $(".tabbar").removeClass("fixed");
-                } else {
-                    $(".app .gnb").css("position", "fixed");
-                    $(".htop").css("background", "#fff");
-                    $(".app .gnb .btn-expand").css("position", "fixed");
-                    $(".tabbar").addClass("fixed");
-                    setTimeout(function(){
-                        if($(window).scrollTop() === 0){
-                            $(".app .gnb").css("position", "relative");
-                            $(".app .gnb .btn-expand").css("position", "absolute");
-                        }
-                    },300)
-                }
-                if(st < 10) {
-                    $(".htop").css("background", "transparent");
-                }
-                lastScrollTop = st;
-            }
+            //var st = $(this).scrollTop();
+            //if($('header').hasClass("main") !== true){
+            //    if (st > lastScrollTop){
+            //        $(".app .gnb").css("position", "fixed");
+            //        $(".htop").css("background", "#fff");
+            //        $(".app .gnb .btn-expand").css("position", "fixed");
+            //        $(".tabbar").removeClass("fixed");
+            //    } else {
+            //        $(".app .gnb").css("position", "fixed");
+            //        $(".htop").css("background", "#fff");
+            //        $(".app .gnb .btn-expand").css("position", "fixed");
+            //        $(".tabbar").addClass("fixed");
+            //        setTimeout(function(){
+            //            if($(window).scrollTop() === 0){
+            //                $(".app .gnb").css("position", "relative");
+            //                $(".app .gnb .btn-expand").css("position", "absolute");
+            //            }
+            //        },300)
+            //    }
+            //    if(st < 10) {
+            //        $(".htop").css("background", "transparent");
+            //    }
+            //    lastScrollTop = st;
+            //}
             
 
             //var posiGap = $(window).scrollTop();
@@ -753,7 +789,7 @@ $(document).ready(function () {
             $('#itemqna_cnt').html("<em class='c_primary'>"+content.length+"</em>/500자");//글자수 실시간 카운팅
         
             if (content.length > 200){
-                alert("최대 500자까지 입력 가능합니다.");
+                mcxDialog.alert("최대 500자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
                 $(this).val(content.substring(0, 500));
                 $('#itemqna_cnt').html("<em class='c_primary'>500</em>/500자");
             }

+ 10 - 10
src/main/webapp/ux/mo/js/main_m.js

@@ -40,16 +40,16 @@ tab_event();
 
 // 5초간 동작 없을 시 top으로 이동
 $(document).ready(function () {
-  var time;
-  $(document).bind('touchstart', function (e) {
-    clearInterval(time);
-    e.stopPropagation();
-  })
-  $(document).bind('touchend', function (e) {
-    time = setInterval(function () {
-      $('html, body').animate({scrollTop : 0}, 400);
-    }, 5000000);
-  })
+  //var time;
+  //$(document).bind('touchstart', function (e) {
+  //  clearInterval(time);
+  //  e.stopPropagation();
+  //})
+  //$(document).bind('touchend', function (e) {
+  //  time = setInterval(function () {
+  //    $('html, body').animate({scrollTop : 0}, 400);
+  //  }, 5000000);
+  //})
   //최신상품순(팝업)을 눌렀을 때 top으로 이동하는 기능 제거
   $(".select_dress").bind('touchend', function (e) {
     setTimeout(function(){

+ 46 - 10
src/main/webapp/ux/pc/css/common.css

@@ -204,8 +204,6 @@ section::after, .ui_row::after, .btn_group_block::after{content: '';display: blo
 }
 
 
-
-
 /* textarea */
 textarea {background-color:transparent; border:1px solid #d7d7d7; width:99%; overflow-y:auto}
 .textarea_full {width:832px; padding:10px}
@@ -635,6 +633,10 @@ content: "〉";font-size: 12px;padding-left: 8px;
   margin-left: 0;
 }
 
+/* page loading */
+#load {width: 100%;height: 100%;top: 0;left: 0;position: fixed;display: block;text-align: center;opacity: 0.6;background: #ffffff;background-image: url('/images/pc/movloading.gif');background-repeat: no-repeat;background-position: 50% 50%;background-size: 37px 36px;z-index: 99999;}
+
+
 /* pageNav */
 .pageNav {display: table; margin-left: auto; margin-right: auto;}
 .pageNav:after {display: table;clear: both;content: " ";}
@@ -783,7 +785,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .fgRDJH {padding: 0px 40px;font-size: 0px;box-sizing: border-box;}
 	@media (max-width: 1919px) and (min-width: 1401px){.fgRDJH {padding-left: 38px;padding-right: 38px;}}
 
-.itemLike {position: absolute;top: 20px;right: 18px;font-size: 0px;z-index: 10;width: 23px;height: 23px; background: url('/images/pc/ico_like.png');background-size: 46px;background-position:0px 0px;background-repeat: no-repeat;}
+.itemLike {position: absolute;top: 20px;right: 18px;font-size: 0px;z-index: 99;width: 23px;height: 23px; background: url('/images/pc/ico_like.png');background-size: 46px;background-position:0px 0px;background-repeat: no-repeat;}
 .itemLike::before, .itemLike::after {
 	content: "";position: absolute;top: 0px;right: 0px;width: 100%;height: 100%;
 	background-repeat: no-repeat;background-position: right top;background-size: contain;opacity: 0;transition: opacity 200ms ease 0s;
@@ -794,15 +796,16 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemLike.active::before {opacity: 1;}
 .itemLike.likeit::before {opacity: 1;}
 
-.itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
+.itemLink {z-index:20;position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
 .itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;background: #ffffff;}
 .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}
 .itemPic .pd_img,
 .itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
-.itemPic .pd_mov {z-index: 3;height: 100%;}
-.itemPic .pd_img {z-index: 2;transition: 0.5s;}
+.itemPic .pd_mov {z-index: 2;height: 100%;}
+.itemPic .pd_img {z-index: 1;transition: 0.5s;}
+.itemPic .pd_img::after {content: '';display: block; height: 100%;width: 100%;background: #333;}
 /* .itemPic .pd_img {position: absolute;width: 100%;width: auto; height: auto;max-height: 500px;top: 50%;left: 50%;transform: translate(-50%,-50%);} */
-.itemOpt{z-index:3;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:111px;padding: 32px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); }
+.itemOpt{z-index:3; pointer-events:none;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:111px;padding: 32px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); }
 .itemOpt p{font-size: 12px;line-height: 1.2;padding-bottom: 15px;}
 .itemOpt ul{display: block;margin: 0 auto;width: auto;}
 .itemOpt ul li{font-size: 14px;line-height: 1.2;display: inline-block;margin-left: 10px;}
@@ -827,7 +830,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 
 /* common.css로 이동 예정 */
 .itemcolorchip {margin:20px 5px 0px; max-width: 208px;}
-.itemcolorchip [class*="chip_"] {position: relative;display: inline-block;width: 15px;height: 15px;font-size: 0; vertical-align: middle; margin:0 0 0 4px;}
+.itemcolorchip [class*="chip_"] {position: relative;display: inline-block;width: 15px;height: 15px;font-size: 0; vertical-align: middle; margin:0 0 0 4px;border-radius: 50%;box-sizing: border-box;}
 .itemcolorchip [class*="chip_"]:before {content: "";display: inline-block;width: 100%;height: 100%;border-radius: 50%;box-sizing: border-box;}
 .itemcolorchip [class*="chip_"]:first-child {margin-left:0}
 
@@ -1234,7 +1237,39 @@ input[type="file"] {
 
 /* sort */
 
+/* datePicker */
+/* jquery ui datepicker month year picker */
+.ui-datepicker { font-family:arial,verdana,sans-serif }
+.ui-datepicker .ui-datepicker-select-month td ,
+.ui-datepicker .ui-datepicker-select-year td {
+	line-height: 3.4em;
+}
+.ui-datepicker .ui-datepicker-select-month td span,
+.ui-datepicker .ui-datepicker-select-month td a,
+.ui-datepicker .ui-datepicker-select-year td span,
+.ui-datepicker .ui-datepicker-select-year td a  {
+	font-size: 1.5em;
+	text-align: center;
+}
+.ui-datepicker .ui-datepicker-select-year td.outoffocus {
+	opacity: 0.5;
+}
+.ui-datepicker .ui-datepicker-prev { left: 15px;cursor: pointer;  }
+.ui-datepicker .ui-datepicker-next { right: 15px;cursor: pointer;  }
+.ui-datepicker .ui-datepicker-header { height: 40px  }
+.ui-widget.ui-widget-content { width: 300px;padding:5px 8px;border-radius: 0   }
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active{
+	border-color: #fff;background: #fff;font-size: 14px;padding: .6em 0.5em;color:#454545;text-align: center; 
+}
+.ui-datepicker-today a.ui-state-active, .ui-datepicker-current-day a.ui-state-active{  background-color:rgba(159,121,82,1);   }
+.ui-state-default:hover { background-color:rgba(159,121,82,0.6);color:#fff;   }
+.ui-widget-header {  font-size: 18px;font-weight: normal;line-height: 40px;background: transparent;border-width: 0;border-radius: 0;   }
+.ui-datepicker th {  border-bottom:1px #9f7952 solid;color:#9f7952; font-weight: normal;font-size: 14px }
 
+.ui-datepicker-prev:hover, .ui-datepicker-next:hover { border-width:0 ;background: transparent;  }
+.ui-datepicker-prev:before, .ui-datepicker-next:before { content: "";position:absolute;top:50%;left:50%;transform: translate3d(-50%,-50%,0);width: 8px;height: 16px;vertical-align: middle;background:url(../images/icon_bg.png) no-repeat -81px 0;   }
+.ui-icon {display: none;}
+.ui-datepicker-next:before {background-position: -95px 0}
 
 
 /* tab */
@@ -1264,7 +1299,7 @@ input[type="file"] {
 .quick_menu_group .area > div:first-child span:first-child a{margin-left:0}
 .quick_menu_group .area > div:first-child span:first-child a:after{display:none}
 .quick_menu_group .area > div:first-child span a:after{position:absolute;top:13px;left:0;width:1px;height:13px;background:#959596;content:''}
-.quick_menu_group .inr a{margin-left:16px;color:#eeeeee;}*/
+.quick_menu_group .inr a{margin-left:16px;color:#eeeeee;}
 
 
 
@@ -1277,12 +1312,13 @@ input[type="file"] {
 		margin-top: 26px !important; 
 		line-height: 0.6 !important; 
 	}
+}
 	.pageNav .disabled a {background-position: 0 9px !important; }
 	.pageNav .disabled.prev a {background-position: -23px 9px !important; }
 	.pageNav .next a,.pageNav > li:last-child a {background-position:-64px 9px !important; }
 	.pageNav .next a {background-position: -47px 9px !important; }
 	.filter_content .sort#tap01 ul li.noDepth.on > a::after {top:8px !important;}
-}
+
 
 /* 제거예정 */
 

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/main/webapp/ux/pc/css/ion.rangeSlider.min.css


+ 13 - 3
src/main/webapp/ux/pc/css/layout.css

@@ -112,7 +112,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .depth_menu.brand .head_category .menu .row ul li {margin-left:4px; width:182px;}
 .depth_menu.brand .head_category .menu .row ul li:first-child {margin-left:0}
 .depth_menu.brand .head_category .menu .row ul li a {position:relative; display:table-cell; width:182px; height:80px; text-align:center; vertical-align:middle;}
-.depth_menu.brand .head_category .menu .row ul li a img {display:inline-block; z-index:1; -webkit-transition:all .3s ease-in-out; transition:all .3s ease-in-out;}
+.depth_menu.brand .head_category .menu .row ul li a img {display:inline-block; width: 74%; z-index:1; -webkit-transition:all .3s ease-in-out; transition:all .3s ease-in-out;}
 .depth_menu.brand .head_category .menu .row ul li a span {display:none; position:absolute; left:0; top:0; right:0; bottom:0; width:100%; height:100%; padding:10px; box-sizing:border-box; border:1px solid #222; background:#fff; color:#222; font-size:18px; font-weight:500; text-align:center; z-index:2;}
 .depth_menu.brand .head_category .menu .row ul li a span em {position:absolute; left:0; top:50%; width:100%; transform:translateY(-50%);}
 .depth_menu.brand .head_category .menu .row ul li a:hover span,
@@ -2613,7 +2613,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_detail .thumb img,
 	.pd_detail .thumb video {position:absolute; left:0; top:50%; width:100%; transform:translateY(-50%) ; z-index:2;}
 	.pd_detail .movbox {position: relative;height: 0;padding-top: 100%;padding-bottom:50.25%;overflow: hidden;transition: all 300ms ease;transform: scale(1);}
-	.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;}
+	.pd_detail .movbox iframe{position: absolute;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;z-index: 1;pointer-events:none;}
 	.pd_detail .btn_popup {display:inline-block; padding:0px; box-sizing:border-box;}
 	.pd_detail .btn_popup span {color:#888; font-size:12px; font-weight:200; border-bottom:1px solid #888; /*vertical-align:top;*/}
 
@@ -3058,6 +3058,11 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 		.pd_desc_wrap .item_descrp .area_option .opt_wrap.absbottom {position:relative; top:auto; bottom:auto; right:auto;}
 	}
 
+	.pd_desc_wrap .btn_box .ui_row {margin-bottom: 0;}
+	.pd_desc_wrap .btn_box .ui_row [class^='ui_col_']:first-child {margin-right: 0;}
+	.pd_desc_wrap .btn_box .ui_row [class^='ui_col_']:last-child {margin-left: 0;}
+	.pd_desc_wrap .btn_box .btn {height:60px; font-size:18px; font-weight:300;}
+	.pd_desc_wrap .btn_box .btn:disabled{background:#aaa; border-color:#aaa; opacity:1;}
 
 	/* pd_popup */
 	.modal.pd_pop a.close-modal:last-child {display: none;}
@@ -3445,6 +3450,11 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 		.full_pop.pd_descrp_pop .full_pop_fix_r {padding-left:20px; padding-right:20px;}
 	}
 
+	.full_pop.pd_descrp_pop .btn_box .ui_row {margin-bottom: 0;}
+	.full_pop.pd_descrp_pop .btn_box .ui_row [class^='ui_col_']:first-child {margin-right: 0;}
+	.full_pop.pd_descrp_pop .btn_box .ui_row [class^='ui_col_']:last-child {margin-left: 0;}
+	.full_pop.pd_descrp_pop .btn_box .btn {height:60px; font-size:18px; font-weight:300;}
+	.full_pop.pd_descrp_pop .btn_box .btn:disabled{background:#aaa; border-color:#aaa; opacity:1;}
 
 	/* pd_pop > 상품문의 페이지 */
 	.pd_qnalist_pop {}
@@ -3757,7 +3767,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.br_sch_result .brand_banner_list ul {margin-top:-20px;}
 	.br_sch_result .brand_banner_list ul li {float:left; width:calc((100% - 140.1px)/8); margin-left:20px; margin-top:20px; background:#f5f5f5;}
 	.br_sch_result .brand_banner_list ul li:nth-child(8n - 7) {margin-left:0;}
-	.br_sch_result .brand_banner_list ul li a {display:block; position:relative; width:100%; height:0; padding-bottom:70.244%; background-repeat:no-repeat; background-position:50% 50%; box-sizing:border-box;}
+	.br_sch_result .brand_banner_list ul li a {display:block; position:relative; width:100%; height:0; padding-bottom:70.244%; background-repeat:no-repeat; background-position:50% 50%; box-sizing:border-box; background-size:80%;}
 	.br_sch_result .brand_banner_list ul li a span {display:none; position:absolute; top:0%; left:0%; width:100%; height:100%; background:#f5f5f5; border:1px solid #222; z-index:1;}
 	.br_sch_result .brand_banner_list ul li a span em {position:absolute;  top:50%; left:0%; width:100%; padding:10px; transform:translateY(-50%); color:#222; font-size:20px; font-weight:300; text-align:center; word-break:break-word; box-sizing:border-box;}
 	.br_sch_result .brand_banner_list ul li a:hover span,

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

@@ -415,14 +415,14 @@
 .main .wrap .content.main_pick {}
 .main_pick .cont_head {padding-bottom:60px;}
 .main_pick .cont_body {padding:0;position:relative;}
-.main_pick .cont_body .post-pick-nav {width:1250px; height:52px; background:#ffffff;margin:0 auto; cursor:pointer; padding:0 20px;}
+.main_pick .cont_body .post-pick-nav {width:1250px; height:auto; background:#ffffff;margin:0 auto; cursor:pointer; padding:0 20px;}
 .main_pick .post-pick-nav .swiper-button-next, 
 .main_pick .post-pick-nav .swiper-button-prev {position:absolute; top:50%; transform:translateY(-50%); width:13px; height:24px; margin:0; background-image:url('/images/pc/ico_arr_sm.png');}
 .main_pick .post-pick-nav .swiper-button-prev {left:0;}
 .main_pick .post-pick-nav .swiper-button-next {right:0;}
-.main_pick .post-pick-nav .swiper-slide{height:auto; text-align:center; cursor:pointer; /* border-bottom:2px solid transparent; */}
-.main_pick .post-pick-nav .swiper-slide img {opacity:0.4;}
-.main_pick .post-pick-nav .swiper-slide.swiper-slide-thumb-active img{opacity:1;}
+.main_pick .post-pick-nav .swiper-slide{width:auto; height:auto; text-align:center; cursor:pointer; /* border-bottom:2px solid transparent; */}
+.main_pick .post-pick-nav .swiper-slide img {opacity:0.2; width: 100%; height:auto;}
+.main_pick .post-pick-nav .swiper-slide.swiper-slide-thumb-active img{opacity:1; }
 .main_pick .post-pick-for {margin-top:60px; box-sizing:border-box; border:1px solid #dddddd;}
 .main_pick .post-pick-for::after {content:'';display:block; clear:both;}
 .main_pick .post-pick-for .pick_look {float:left; width:38.2022%; background:#888888;}

+ 331 - 0
src/main/webapp/ux/pc/css/mcxdialog_ui.css

@@ -0,0 +1,331 @@
+/**
+ * Mcx Dialog Mobile v0.1.0
+ * Copyright (C) 2018 mcx
+ * https://github.com/code-mcx/mcx-dialog-mobile
+ */
+.dialog-mobile-bg {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 19;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(0, 0, 0, 0.3);
+	-ms-transform: translate3d(0, 0, 0);
+	-webkit-transform: translate3d(0, 0, 0);
+	transform: translate3d(0, 0, 0);
+}
+/*alert confirm*/
+.dialog-mobile {
+	padding: 0 40px 40px 40px;
+	text-align:center;
+	position: fixed;
+	top: 50%;
+	left: 0;
+	z-index: 20;
+	min-width:200px;
+	background-color: #FFFFFF;
+	border-radius: 0px;
+	-ms-transform: translate3d(0, 0, 0);
+	-webkit-transform: translate3d(0, 0, 0);
+	transform: translate3d(0, 0, 0);
+}
+.dialog-mobile .dialog-title {
+    padding: 0.8em 1em 0.5em;
+    text-align: center;
+    color: #333333;
+	font-size: 18px;
+    font-weight: 500;
+    border-radius: 5px 5px 0 0;
+}
+.dialog-mobile .dialog-content {
+	position: relative;
+	padding:50px 0 40px 0;
+	line-height: 2em;
+	text-align: left;
+	color: #000;
+	font-size:15px;
+	text-align:center;
+}
+.dialog-mobile .dialog-content em {
+	color:#df6400
+}
+.dialog-mobile .dialog-button,
+.dialog-mobile .dialog-sure-button,
+.dialog-mobile .dialog-cancel-button {
+	display:inline-block;
+	position: relative;
+	margin:0 5px;
+	padding:0 30px;
+	min-width: 70px;
+	height: 38px;
+	line-height: 38px;
+	text-align: center;
+	font-size:14px;
+	cursor:pointer;
+	border-radius:0px;
+}
+.dialog-mobile .dialog-button{
+	color: #fff;
+	background:#000;
+	border:1px solid #000;
+	min-width:100px;
+}
+.dialog-mobile .dialog-cancel-button {
+	color: #000;
+	background: #fff;
+	border:1px solid #999;
+	min-width:100px;
+}
+.dialog-mobile .dialog-sure-button{
+	color: #fff;
+	background:#000;
+	border:1px solid #000;
+	min-width:100px;
+}
+.dialog-mobile button[i='1']{
+	color: #000 !important;
+	background:#fff !important;
+	border:1px solid #777;
+	min-width:100px;
+}
+
+/* 닫기 아이콘 */
+.dialog-close-btn {
+	position:absolute;
+	top:0;
+	right:0;
+	padding:20px;
+	width: 17px;
+	height: 17px;
+	cursor:pointer;
+	background:url('/image/btn_top_close.png') no-repeat 50% 50%;
+}
+
+/*bottom dialog*/
+.dialog-mobile-bottom {
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	z-index: 10001;
+	width: 100%;
+	color: #333333;
+	background-color: #EEEEEE;
+}
+.dialog-mobile-bottom .bottom-btn-item {
+	text-align: center;
+}
+.bottom-btn-item .dialog-item-btn {
+	background: #FFFFFF;
+	padding: 0.5em 0;
+	border-bottom: 1px solid #EEEEEE;
+}
+.bottom-btn-item .dialog-item-btn:last-child {
+	border-bottom: none;
+}
+.dialog-mobile-bottom .dialog-cancel-btn {
+	margin-top: 0.6em;
+	text-align: center;
+	background: #FFFFFF;
+	padding: 0.5em 0;
+}
+/*toast*/
+.dialog-mobile-toast {
+	position: fixed;
+	bottom: 5em;
+}
+.dialog-mobile-toast .toast-content {
+	padding: 0.5em 1em;
+	color: #FFFFFF;
+	border-radius: 2px;
+	background-color: #333333;
+}
+/*loading*/
+.mobile-loading-bg {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 10000;
+	width: 100%;
+	height: 100%;
+	background-color: rgba(0, 0, 0, 0.3);
+	-webkit-transform: translate3d(0, 0, 0);
+	transform: translate3d(0, 0, 0);
+}
+.mobile-loading {
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 10001;
+	min-width: 2em;
+	min-height: 2em;
+	padding: 0.8em 1.6em;
+	text-align: center;
+	border-radius: 2px;
+	color: #FFFFF0;
+	background-color: #0A0A0A;
+	-webkit-transform: translate3d(0, 0, 0);
+	transform: translate3d(0, 0, 0);
+}
+/*animation*/
+.animation-zoom-in, .animation-zoom-out,
+.animation-bottom-in, .animation-bottom-out,
+.animation-bg-fadeIn {
+	-webkit-animation-duration: 0.3s;
+	-webkit-animation-fill-mode: both;
+	animation-duration: 0.3s;
+	animation-fill-mode: both;
+}
+.animation-fade-in, .animation-fade-out {
+	-webkit-animation-duration: 1s;
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-fill-mode: both;
+	animation-duration: 1s;
+	animation-timing-function: ease-out;
+	animation-fill-mode: both;
+}
+.animation-zoom-in {
+	-webkit-animation-name: zoomIn;
+	animation-name: zoomIn;
+}
+.animation-zoom-out {
+	-webkit-animation-name: zoomOut;
+	animation-name: zoomOut;
+}
+.animation-fade-in {
+	-webkit-animation-name: fadeIn;
+	animation-name: fadeIn;
+}
+.animation-fade-out {
+	-webkit-animation-name: fadeOut;
+	animation-name: fadeOut;
+}
+.animation-bottom-in {
+	-webkit-animation-name: bottomIn;
+	animation-name: bottomIn;
+}
+.animation-bottom-out {
+	-webkit-animation-name: bottomOut;
+	animation-name: bottomOut;
+}
+.animation-bg-fadeIn {
+	-webkit-animation-name: fadeIn;
+	animation-name: fadeIn;
+}
+
+@-webkit-keyframes zoomIn {
+	from{
+		opacity: 0;
+		-webkit-transform: scale(0, 0);
+	}
+	to{
+		opacity: 1;
+		-webkit-transform: scale(1, 1);
+	}
+}
+@-webkit-keyframes zoomOut {
+	from{
+		opacity: 1;
+		-webkit-transform: scale(1, 1);
+	}
+	90%{
+		-webkit-transform: scale(0.3, 0.3);
+	}
+	to{
+		opacity: 0;
+		-webkit-transform: scale(0, 0);
+	}
+}
+@keyframes zoomIn {
+	from{
+		opacity: 0;
+		transform: scale(0, 0);
+	}
+	to{
+		opacity: 1;
+		transform: scale(1, 1);
+	}
+}
+@keyframes zoomOut {
+	from{
+		opacity: 1;
+		transform: scale(1, 1);
+	}
+	90%{
+		transform: scale(0.3, 0.3);
+	}
+	to{
+		opacity: 0;
+		transform: scale(0, 0);
+	}
+}
+@-webkit-keyframes fadeIn {
+	from{
+		opacity: 0;
+	}
+	to{
+		opacity: 1;
+	}
+}
+@-webkit-keyframes fadeOut {
+	from{
+		opacity: 1;
+	}
+	30%{
+		opacity: 0.3;
+	}
+	to{
+		opacity: 0;
+	}
+}
+@keyframes fadeIn {
+	from{
+		opacity: 0;
+	}
+	to{
+		opacity: 1;
+	}
+}
+@keyframes fadeOut {
+	from{
+		opacity: 1;
+	}
+	30%{
+		opacity: 0.3;
+	}
+	to{
+		opacity: 0;
+	}
+}
+@-webkit-keyframes bottomIn {
+	from{
+		bottom: -1000px;
+	}
+	to{
+		bottom: 0;
+	}
+}
+@-webkit-keyframes bottomOut {
+	from{
+		bottom: 0;
+	}
+	to{
+		bottom: -1000px;
+	}
+}
+@keyframes bottomIn {
+	from{
+		bottom: -1000px;
+	}
+	to{
+		bottom: 0;
+	}
+}
+@keyframes bottomOut {
+	from{
+		bottom: 0;
+	}
+	to{
+		bottom: -1000px;
+	}
+}

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
src/main/webapp/ux/pc/js/ion.rangeSlider.min.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
src/main/webapp/ux/pc/js/jquery-1.11.0.min.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
src/main/webapp/ux/pc/js/jquery-migrate-1.2.1.min.js


Разница между файлами не показана из-за своего большого размера
+ 9 - 0
src/main/webapp/ux/pc/js/vg-controller-client.latest.min.js


Некоторые файлы не были показаны из-за большого количества измененных файлов