فهرست منبع

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

card007 5 سال پیش
والد
کامیت
7ac8372353
44فایلهای تغییر یافته به همراه1077 افزوده شده و 643 حذف شده
  1. 5 3
      src/main/java/com/style24/front/biz/service/TsfCounselService.java
  2. 11 11
      src/main/java/com/style24/front/biz/service/TsfNoticeService.java
  3. 5 1
      src/main/java/com/style24/front/biz/service/TsfSocialService.java
  4. 26 2
      src/main/java/com/style24/front/biz/web/TsfCallcenterController.java
  5. 9 7
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  6. 35 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  7. 14 5
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  8. 1 0
      src/main/java/com/style24/persistence/domain/Contents.java
  9. 1 0
      src/main/java/com/style24/persistence/domain/GoodsImg.java
  10. 1 0
      src/main/java/com/style24/persistence/domain/GoodsSafeNo.java
  11. 2 0
      src/main/java/com/style24/persistence/domain/Review.java
  12. 4 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCounsel.xml
  13. 18 15
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  14. 15 11
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  15. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfNotice.xml
  16. 364 211
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  17. 8 4
      src/main/webapp/WEB-INF/views/mob/callcenter/FaqFormMob.html
  18. 16 8
      src/main/webapp/WEB-INF/views/mob/callcenter/GoodsQnaFormMob.html
  19. 55 40
      src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html
  20. 80 19
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html
  21. 30 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  22. 17 3
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  23. 2 2
      src/main/webapp/WEB-INF/views/web/callcenter/FaqFormWeb.html
  24. 12 4
      src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html
  25. 23 41
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  26. 13 5
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  27. 11 9
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  28. 1 10
      src/main/webapp/WEB-INF/views/web/customer/PrivacyPolicyLayerFormWeb.html
  29. 1 10
      src/main/webapp/WEB-INF/views/web/customer/PrivacyTrustLayerFormWeb.html
  30. 1 10
      src/main/webapp/WEB-INF/views/web/customer/UseTermsLayerFormWeb.html
  31. 3 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  32. 56 59
      src/main/webapp/WEB-INF/views/web/display/CategoryMainFormWeb.html
  33. 6 5
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  34. 24 8
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  35. 14 17
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  36. 42 27
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  37. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  38. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  39. 8 7
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  40. 15 0
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  41. 5 6
      src/main/webapp/biz/goods.js
  42. 41 34
      src/main/webapp/ux/mo/css/layout_m.css
  43. 66 30
      src/main/webapp/ux/mo/js/common_m.js
  44. 10 10
      src/main/webapp/ux/mo/js/main_m.js

+ 5 - 3
src/main/java/com/style24/front/biz/service/TsfCounselService.java

@@ -91,9 +91,11 @@ public class TsfCounselService {
 	 */
 	public Collection<Counsel> getOneToOneQnaList(Counsel counsel) {
 		Collection<Counsel> counselList = counselDao.getOneToOneQnaList(counsel);
-		for (Counsel item : counselList) {
-			item.setQuestContent(GagaStringUtil.replace(item.getQuestContent(), "\r\n", "<br/>"));
-			item.setAnsContent(GagaStringUtil.replace(item.getAnsContent(), "\r\n", "<br/>"));
+		if (counselList != null && !counselList.isEmpty()) {
+			for (Counsel item : counselList) {
+				item.setQuestContent(GagaStringUtil.replace(item.getQuestContent(), "\r\n", "<br/>"));
+				item.setAnsContent(GagaStringUtil.replace(item.getAnsContent(), "\r\n", "<br/>"));
+			}
 		}
 
 		return counselList;

+ 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);
 	}
 

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

@@ -24,6 +24,7 @@ import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCounselService;
 import com.style24.front.biz.service.TsfCouponService;
+import com.style24.front.biz.service.TsfDisplayService;
 import com.style24.front.biz.service.TsfGoodsService;
 import com.style24.front.biz.service.TsfRendererService;
 import com.style24.front.biz.service.TsfReviewService;
@@ -34,6 +35,7 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.Contents;
 import com.style24.persistence.domain.Counsel;
 import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.Goods;
@@ -90,6 +92,9 @@ public class TsfGoodsController extends TsfBaseController {
 
 	@Autowired
 	private TsfWishlistService wishListService;
+	
+	@Autowired
+	private TsfDisplayService displayService;
 
 	@Value("${has-ssl}")
 	private String hasSsl;
@@ -174,7 +179,9 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsVideoList", goodsService.getVideoList(goodsVideo));
 		// 상품 공지
 		mav.addObject("goodsNoticeList", goodsService.getGoodsNoticeList(paramsGoods));
-
+		
+		
+				
 		int goodsReviewCnt = 0;
 		if (TscConstants.GoodsType.DEAL.value().equals(goods.getGoodsType())) {	// 딜상품
 
@@ -263,6 +270,19 @@ public class TsfGoodsController extends TsfBaseController {
 				mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
 			}
 
+			// 상품 공통 베너
+			log.info("paramsGoods={}", paramsGoods);
+			Contents contents = new Contents();
+			contents.setContentsLoc("SPM001");
+			contents.setPreview(paramsGoods.getPreview());
+			contents.setViewDt(paramsGoods.getViewDt());
+			contents.setMaxRow(1);
+			if ("P".equals(paramsGoods.getFrontGb())){
+				contents.setCateNo(1714);
+			}else {
+				contents.setCateNo(1724);
+			}
+			mav.addObject("goodsBannerList", displayService.getContentsList(contents));
 		}
 
 		// 상품 문의건수
@@ -1265,6 +1285,20 @@ public class TsfGoodsController extends TsfBaseController {
 		mav.addObject("goodsNotiList", goodsService.getGoodsNotiList(goods));
 		// 상품 안전인증 정보
 		mav.addObject("goodsSafeNo", goodsService.getGoodsSafeNo(goods));
+		
+		// 상품 공통 베너
+		log.info("paramsGoods={}", paramsGoods);
+		Contents contents = new Contents();
+		contents.setContentsLoc("SPM001");
+		contents.setPreview(paramsGoods.getPreview());
+		contents.setViewDt(paramsGoods.getViewDt());
+		contents.setMaxRow(1);
+		if ("P".equals(paramsGoods.getFrontGb())){
+			contents.setCateNo(1714);
+		}else {
+			contents.setCateNo(1724);
+		}
+		mav.addObject("goodsBannerList", displayService.getContentsList(contents));
 
 		mav.addObject("params", paramsGoods);
 

+ 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;

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

@@ -26,6 +26,7 @@ public class GoodsImg extends TscBaseDomain {
 	private int mouseoverImgOrd;
 	private String sysImgUrl;
 	private int brandNo;
+	private String modelInfo;
 
 	private String goodsImgPath;
 	private String col;

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

@@ -19,6 +19,7 @@ public class GoodsSafeNo extends TscBaseDomain {
 	private String certNum;
 	private String certState;
 	private String certDiv;
+	private String certOrganName;
 	private String certDt;
 
 //	public boolean getIsCertNum() {

+ 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

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

@@ -401,7 +401,7 @@
 		FROM TB_GOODS_VIDEO A
 		WHERE A.GOODS_CD = #{goodsCd} 
 		AND A.DISP_YN = 'Y'
-		AND A.KMC_KEY IS NOT NULL
+		AND NULLIF(A.KMC_KEY,'') IS NOT NULL
 		ORDER BY A.VIDEO_SQ DESC
 		<if test="maxRownum != null and maxRownum > 0">
 		LIMIT #{maxRownum}
@@ -425,18 +425,21 @@
 	<!-- 상품 이미지 정보 -->
 	<select id="getGoodsImgList" parameterType="Goods" resultType="GoodsImg">
 		/* TsfGoods.getGoodsImgList */
-		SELECT GOODS_CD
-		     , COLOR_CD
-		     , DISP_ORD
-		     , SYS_IMG_NM
-		     , DEFAULT_IMG_YN
-		     , MOUSEOVER_IMG_YN
-		FROM TB_GOODS_IMG
-		WHERE GOODS_CD = #{goodsCd}
+		SELECT A.GOODS_CD
+		     , A.COLOR_CD
+		     , A.DISP_ORD
+		     , A.SYS_IMG_NM
+		     , A.DEFAULT_IMG_YN
+		     , A.MOUSEOVER_IMG_YN
+		     , B.MODEL_INFO
+		FROM TB_GOODS_IMG A
+		LEFT OUTER JOIN TB_GOODS_MODEL_INFO B ON A.GOODS_CD = B.GOODS_CD
+		                                      AND B.MODEL_INFO IS NOT NULL
+		WHERE A.GOODS_CD = #{goodsCd}
 		<if test='selfGoodsYn != null and selfGoodsYn == "Y"'>
-		AND COLOR_CD = #{colorCd}
+		AND A.COLOR_CD = #{colorCd}
 		</if>
-		ORDER BY DISP_ORD
+		ORDER BY A.DISP_ORD
 	</select>
 	
 	<!-- 딜상품 구성상품정보 조회 -->
@@ -636,6 +639,7 @@
 		     , CERT_NUM
 		     , CERT_STATE
 		     , CERT_DIV
+		     , CERT_ORGAN_NAME
 		     , CERT_DT
 		FROM TB_GOODS_SAFE_NO A
 		WHERE GOODS_CD = #{goodsCd}

+ 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">

+ 8 - 4
src/main/webapp/WEB-INF/views/mob/callcenter/FaqFormMob.html

@@ -41,7 +41,7 @@
 					</form>
 				</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>
@@ -103,13 +103,15 @@
 			$('#faqForm input[name=faqType]').val('');
 		}
 		
+		$('#faqForm input[name=pageNo]').val(1);
+		
+		$('#ulFaq').html('');
+		
 		$('#btnFaqMore').trigger('click');
 	}
 	
 	// FAQ 목록 콜백함수
 	var fnGetListCallback = function(result) {
-		$('#ulFaq').html('');
-
 		if (result.dataList != null && result.dataList.length > 0) {
 			$.each(result.dataList, function(idx, item) {
 				let tag = '<li>\n';
@@ -158,7 +160,9 @@
 		}
 		
 		$('#faqForm input[name=faqType]').val('');
-		$('#btnFaqMore').trigger('click');
+		
+// 		$('#btnFaqMore').trigger('click');
+		fnGetList($('#ulFaqType>li').eq(0).find('a'));
 	}
 /*]]>*/
 </script>

+ 16 - 8
src/main/webapp/WEB-INF/views/mob/callcenter/GoodsQnaFormMob.html

@@ -32,15 +32,15 @@
 				<!-- 게시판info -->
 				<ul class="inquiry_box">
 					<li>
-						<p th:text="${qnaCountInfo.totCnt}">999</p>
+						<p th:text="${qnaCountInfo.totCnt}" id="qnaTotCnt">999</p>
 						<p>총 문의</p>
 					</li>
 					<li>
-						<p th:text="${qnaCountInfo.ansCnt}">456</p>
+						<p th:text="${qnaCountInfo.ansCnt}" id="qnaAnsCnt">456</p>
 						<p>답변완료</p>
 					</li>
 					<li>
-						<p th:text="${qnaCountInfo.ingCnt}">690</p>
+						<p th:text="${qnaCountInfo.ingCnt}" id="qnaIngCnt">690</p>
 						<p>처리 중</p>
 					</li>
 				</ul>
@@ -89,8 +89,6 @@
 	
 	// QNA 콜백함수
 	var fnGetListCallback = function(result) {
-		$('#ulQna').html('');
-
 		// 목록
 		if (result.dataList != null && result.dataList.length > 0) {
 			$.each(result.dataList, function(idx, item) {
@@ -135,8 +133,8 @@
 				$('#divQna').removeClass('nodata');
 			});
 		} else {
-			let tag = '<li>내역이 없습니다.</li>\n';
-			$('#ulQna').append(tag);
+// 			let tag = '<li>내역이 없습니다.</li>\n';
+// 			$('#ulQna').append(tag);
 			$('#divQna').addClass('nodata');
 		}
 		
@@ -161,7 +159,17 @@
 				gagajf.ajaxJsonSubmit('/callcenter/goods/qna/delete'
 						, jsonData
 						, function() {
-							fnGetList();
+							$('#qnaForm input[name=pageNo]').val(1);
+							$('#ulQna').html('');
+							$('#btnQnaMore').trigger('click');
+							
+							$.get('/callcenter/goods/qna/count/info'
+									, function(result) {
+										$('#qnaTotCnt').html(result.totCnt);
+										$('#qnaAnsCnt').html(result.ansCnt);
+										$('#qnaIngCnt').html(result.ingCnt);
+									}
+								);
 						});
 			}
 		});

+ 55 - 40
src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html

@@ -71,38 +71,7 @@
 	
 	// 목록 콜백함수
 	var fnGetListCallback = function(result) {
-		$('#ulNotice').html('');
-
 		// 중요 공지 목록
-		if (result.urgentList != null && result.urgentList.length > 0) {
-			$.each(result.urgentList, function(idx, item) {
-				let tag = '<li>\n';
-				tag += '	<div class="fold_head">\n';
-				tag += '		<a href="javascript:void(0)">\n';
-				tag += '			<div>\n';
-				tag += '				<div class="fold_tit">\n';
-				tag += '					<div class="lap1">\n';
-				tag += '						<span class="fold_state done">중요</span>\n';
-				tag += '						<span class="prod">공지</span>\n';
-				tag += '					</div>\n';
-				tag += '					<div class="lap2"><span>' + item.noticeTitle + '</span></div>\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">\n';
-				tag += '		<div class="fold_answer">\n';
-				tag += '			<div class="answer_body">' + 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 tag = '<li>\n';
@@ -111,7 +80,12 @@
 				tag += '			<div>\n';
 				tag += '				<div class="fold_tit">\n';
 				tag += '					<div class="lap1">\n';
-				tag += '						<span class="prod">공지</span>\n';
+				
+				if (item.urgentYn == 'Y') {
+					tag += '						<span class="fold_state done">중요</span>\n';
+				}
+				
+// 				tag += '						<span class="prod">공지</span>\n';
 				tag += '					</div>\n';
 				tag += '					<div class="lap2"><span>' + item.noticeTitle + '</span></div>\n';
 				tag += '				</div>\n';
@@ -125,16 +99,10 @@
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';
-				
+
 				$('#ulNotice').append(tag);
 			});
-		}
-		
-		if (result.urgentList == null && result.dataList == null) {
-			let tag = '<li>내역이 없습니다.</li>\n';
-			$('#ulNotice').append(tag);
-			$('#divNotice').addClass('nodata');
-		} else {
+			
 			$('#divNotice').removeClass('nodata');
 			
 			if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
@@ -143,7 +111,54 @@
 			} else {
 				$('#btnNoticeMore').parent().hide();
 			}
+		} else {
+// 			let tag = '<li>내역이 없습니다.</li>\n';
+// 			$('#ulNotice').append(tag);
+			$('#divNotice').addClass('nodata');
 		}
+		
+// 		// 일반 공지 목록
+// 		if (result.dataList != null && result.dataList.length > 0) {
+// 			$.each(result.dataList, function(idx, item) {
+// 				let tag = '<li>\n';
+// 				tag += '	<div class="fold_head">\n';
+// 				tag += '		<a href="javascript:void(0)">\n';
+// 				tag += '			<div>\n';
+// 				tag += '				<div class="fold_tit">\n';
+// 				tag += '					<div class="lap1">\n';
+// 				tag += '						<span class="prod">공지</span>\n';
+// 				tag += '					</div>\n';
+// 				tag += '					<div class="lap2"><span>' + item.noticeTitle + '</span></div>\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">\n';
+// 				tag += '		<div class="fold_answer">\n';
+// 				tag += '			<div class="answer_body">' + item.noticeContent + '</div>\n';
+// 				tag += '		</div>\n';
+// 				tag += '	</div>\n';
+// 				tag += '</li>\n';
+				
+// 				$('#ulNotice').append(tag);
+// 			});
+// 		}
+		
+// 		if (result.urgentList == null && result.dataList == null) {
+// 			let tag = '<li>내역이 없습니다.</li>\n';
+// 			$('#ulNotice').append(tag);
+// 			$('#divNotice').addClass('nodata');
+// 		} else {
+// 			$('#divNotice').removeClass('nodata');
+			
+// 			if (result.paging.pageable.totalPage > result.paging.pageable.pageNo) {
+// 				$('#btnNoticeMore').parent().show();
+// 				$('#noticeForm input[name=pageNo]').val(result.paging.pageable.pageNo + 1);
+// 			} else {
+// 				$('#btnNoticeMore').parent().hide();
+// 			}
+// 		}
 	}
 /*]]>*/
 </script>

+ 80 - 19
src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html

@@ -32,15 +32,15 @@
 				<!-- 게시판info -->
 				<ul class="inquiry_box">
 					<li>
-						<p th:text="${qnaCountInfo.totCnt}">999</p>
+						<p th:text="${qnaCountInfo.totCnt}" id="qnaTotCnt">999</p>
 						<p>총 문의</p>
 					</li>
 					<li>
-						<p th:text="${qnaCountInfo.ansCnt}">456</p>
+						<p th:text="${qnaCountInfo.ansCnt}" id="qnaAnsCnt">456</p>
 						<p>답변완료</p>
 					</li>
 					<li>
-						<p th:text="${qnaCountInfo.ingCnt}">690</p>
+						<p th:text="${qnaCountInfo.ingCnt}" id="qnaIngCnt">690</p>
 						<p>처리 중</p>
 					</li>
 				</ul>
@@ -111,13 +111,13 @@
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap">
 												<div class="select">
-													<select class="select_hidden" name="counselClsf">
-														<option value="">(필수) 문의 유형을 선택해 주세요</option>
+													<select class="select_hidden" name="counselClsf" required="required" data-valid-name="문의유형">
+														<option value="">문의 유형을 선택해 주세요 (필수)</option>
 														<option th:if="${counselClsfList}" th:each="oneData, status : ${counselClsfList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
 													</select>
-													<!-- <div class="select_dress">(필수) 문의 유형을 선택해 주세요<span></span></div> -->
+													<!-- <div class="select_dress">문의 유형을 선택해 주세요 (필수)<span></span></div> -->
 													<ul class="select_options">
-														<li rel="">(필수) 유형을 선택해 주세요</li>
+														<li rel="">문의 유형을 선택해 주세요 (필수)</li>
 														<li th:if="${counselClsfList}" th:each="oneData, status : ${counselClsfList}" th:rel="${oneData.cd}" th:text="${oneData.cdNm}"></li>
 													</ul>
 												</div>
@@ -128,7 +128,7 @@
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap test">
 												<span class="input_group_addon"><span class="ico"></span></span>
-												<input type="text" class="form_control" placeholder="(필수) 문의 제목을 입력해 주세요" maxlength="30" name="questTitle" required="required" data-valid-name="제목"/>
+												<input type="text" class="form_control" placeholder="제목을 입력해 주세요 (필수)" maxlength="30" name="questTitle" required="required" data-valid-name="제목"/>
 											</div>
 											<!-- 숫자, 특수문자, 불완성형 한글 제외하여 입력 -->
 										</div>
@@ -136,7 +136,7 @@
 									<div class="form_field">
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap">
-												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (500자 이내)" required="required" data-valid-name="내용"></textarea>
+												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (필수)" required="required" data-valid-name="내용"></textarea>
 												<p class="txt_cnt">
 													<span id="contactus_cnt" class="contactus_cnt"><em class="c_primary">0</em>/500</span>
 												</p>
@@ -144,20 +144,21 @@
 											<!-- 특수문자 : \ / : < >  사용 불가 > 입력 시, “특수문자 \ / : < > 는 사용할 수 없습니다.” 얼럿 호출 스크립트 입력 불가능 -->
 										</div>
 									</div>
+									
 									<div class="form_field">
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap">
 												<!-- 이미지첨부 -->
 												<div class="form_field">
 													<div class="imgUpload">
-														<label for="fileAdd" class="fileAdd">첫번째업로드</label>
-														<input type="file" id="fileAdd" name="file1"/>
+														<label for="fileAdd" class="fileAdd">업로드</label>
+														<input type="file" id="fileAdd" name="file1">
 														<input type="hidden" name="file1OrgFileNm"/>
 														<input type="hidden" name="file1SysFileNm"/>
 													</div>
 													<div class="imgUpload">
-														<label for="fileAdds" class="fileAdd">두번째업로드</label>
-														<input type="file" id="fileAdds" name="file2"/>
+														<label for="fileAdds" class="fileAdd">업로드</label>
+														<input type="file" id="fileAdds" name="file2">
 														<input type="hidden" name="file2OrgFileNm"/>
 														<input type="hidden" name="file2SysFileNm"/>
 													</div>
@@ -234,6 +235,56 @@
 	});
 	
 	$(document).ready(function() {
+		$('select').each(function() {
+			var $this = $(this), numberOfOptions = $(this).children('option').length;
+			
+			$this.addClass('select_hidden');
+			$this.wrap('<div class="select"></div>');
+			$this.after('<div class="select_dress"></div>');
+			
+			var $dressSelect = $this.next('div.select_dress');
+			$dressSelect.text($this.children('option').eq(0).text());
+			
+			var $selList = $('<ul />', {
+				'class': 'select_options'
+			}).insertAfter($dressSelect);
+			
+			for (var i = 0; i < numberOfOptions; i++) {
+				$('<li />', {
+					text: $this.children('option').eq(i).text(),
+					rel: $this.children('option').eq(i).val(),
+					class: $this.children('option').eq(i).attr('disabled')
+				}).appendTo($selList);
+			}
+			
+			var $selListItems = $selList.children('li');
+			
+			$dressSelect.click(function(e) {
+				e.stopPropagation();
+				$('div.select_dress.active').not(this).each(function(){
+					$(this).removeClass('active').next('ul.select_options').hide();
+				});
+				$(this).toggleClass('active').next('ul.select_options').toggle();
+			});
+			
+			$selListItems.click(function(e) {
+				e.stopPropagation();
+				
+				if($(this).hasClass('disabled')){
+					$this.val($(this).attr('rel',false));
+				} else {
+					$dressSelect.text($(this).text()).removeClass('active');
+					$this.val($(this).attr('rel'));
+					$selList.hide();
+				}
+			});
+			
+			$(document).click(function() {
+				$dressSelect.removeClass('active');
+				$selList.hide();
+			});
+		});
+		
 		// 타이틀명
 		$('#htopTitle').text('고객센터');
 		
@@ -250,8 +301,6 @@
 	
 	// QNA 콜백함수
 	var fnGetListCallback = function(result) {
-		$('#ulQna').html('');
-
 		// 목록
 		if (result.dataList != null && result.dataList.length > 0) {
 			$.each(result.dataList, function(idx, item) {
@@ -279,13 +328,15 @@
 					
 					if (!gagajf.isNull(item.sysFileNm1)) {
 						tag += '		<span class="thumb_pic">\n';
-						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+// 						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="">\n';
 						tag += '		</span>\n';
 					}
 					
 					if (!gagajf.isNull(item.sysFileNm2)) {
 						tag += '		<span class="thumb_pic">\n';
-						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+// 						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+						tag += '			<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="">\n';
 						tag += '		</span>\n';
 					}
 					
@@ -317,8 +368,8 @@
 			});
 			$('#divQna').removeClass('nodata');
 		} else {
-			let tag = '<li>내역이 없습니다.</li>\n';
-			$('#ulQna').append(tag);
+// 			let tag = '<li>내역이 없습니다.</li>\n';
+// 			$('#ulQna').append(tag);
 			$('#divQna').addClass('nodata');
 		}
 
@@ -343,7 +394,17 @@
 				gagajf.ajaxJsonSubmit('/callcenter/onetoone/qna/delete'
 						, jsonData
 						, function() {
+							$('#qnaForm input[name=pageNo]').val(1);
+							$('#ulQna').html('');
 							$('#btnQnaMore').trigger('click');
+							
+							$.get('/callcenter/onetoone/qna/count/info'
+									, function(result) {
+										$('#qnaTotCnt').html(result.totCnt);
+										$('#qnaAnsCnt').html(result.ansCnt);
+										$('#qnaIngCnt').html(result.ingCnt);
+									}
+								);
 						});
 			}
 		});

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

@@ -35,10 +35,36 @@
 			</div>
 		</div>
 		<!-- //상품설명 노출 -->
+		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+		<div class="movblock">
+			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+			<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+			</th:block>
+			<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+			</th:block>
+		</div>
+		</th:block>
+		
+		<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+		<div class="mdhtml_box">
+		<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+		<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<a th:href="${goodsBanner.strVar1}" target="_blank">
+			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+			</a>
+		</th:block>
+		<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+			<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+		</th:block>
+		</th:block>
+		
+		</div>
+		</th:block>
 		<!-- 관리자 에디터입력 내용 노출 -->
 			<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 		<div class="mdhtml_box" th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></div>
 			</th:block>
+			
 		<!-- //관리자 에디터입력 내용 노출 -->
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
 		<div class="mdhtml_box" th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></div>
@@ -49,7 +75,9 @@
 											or #strings.contains(goodsImgList,'_M4.')
 											or #strings.contains(goodsImgList,'_M5.')}">
 			<span class="tit_view">OUTFIT VIEW</span>
-			<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
+			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+			<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+			</th:block>
 			<div class="view">
 				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1.') 
 																			or #strings.contains(goodsImg.sysImgNm,'_M2.')
@@ -155,7 +183,7 @@
 					<i class="ico ico_kcl"></i>
 				</div>
 				<div>
-					<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+					<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 					</p>
 					<p class="normal">
 						<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >

+ 17 - 3
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -247,6 +247,19 @@
 					</th:block>
 				</div>
 				</th:block>
+				<!-- 공통상품베너 -->
+				<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+				<div class="mdhtml_box">
+				<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+				<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<a th:href="${goodsBanner.strVar1}" target="_blank">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+					</a>
+				</th:block>
+				<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+				</th:block>
+				</th:block>
 				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
 				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
@@ -364,14 +377,15 @@
 							<i class="ico ico_kcl"></i>
 						</div>
 						<div>
-							<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+							<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 							</p>
-							<p class="normal">
+								<p class="normal" >
 								<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
 								해당 없음 
 								</th:block>
 								<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
-								<span>인증번호:</span> <a class="num" th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank"  th:text="${goodsSafeNo.certNum}">CB123A123-1234</a>
+								인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+								<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 								</th:block>
 							</p>
 						</div>

+ 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);
+									}
+								);
 						});
 			}
 		});

+ 23 - 41
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,15 @@
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';
-			
+
 				$('#ulNotice').append(tag);
 			});
-		}
-		
-		if (result.urgentList == null && result.dataList == null) {
-			let tag = '<li>내역이 없습니다.</li>\n';
-			$('#ulNotice').append(tag);
-			$('#divNotice').addClass('nodata');
-		} else {
+			
 			$('#divNotice').removeClass('nodata');
+		} else {
+// 			let tag = '<li>등록된 공지사항이 없습니다.</li>\n';
+// 			$('#ulNotice').html(tag);
+			$('#divNotice').addClass('nodata');
 		}
 
 		// Create pagination

+ 13 - 5
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>
@@ -199,13 +199,13 @@
 					
 					if (!gagajf.isNull(item.sysFileNm1)) {
 						tag += '					<span class="thumb_pic">\n';
-						tag += '						<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+						tag += '						<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="" onerror="this.src=\'/images/pc/thumb/bg_item_none.png\'">\n';
 						tag += '					</span>\n';
 					}
 					
 					if (!gagajf.isNull(item.sysFileNm2)) {
 						tag += '					<span class="thumb_pic">\n';
-						tag += '						<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
+						tag += '						<img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="" onerror="this.src=\'/images/pc/thumb/bg_item_none.png\'">\n';
 						tag += '					</span>\n';
 					}
 					
@@ -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>

+ 24 - 8
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html

@@ -51,6 +51,22 @@
 	</div>
 	</th:block>
 	
+	<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+	<div class="mdhtml_box">
+	<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+	<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+		<a th:href="${goodsBanner.strVar1}" target="_blank">
+		<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+		</a>
+	</th:block>
+	<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+		<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+	</th:block>
+	</th:block>
+	
+	</div>
+	</th:block>
+	
 	<!-- 관리자 에디터입력 내용 노출  상단 html -->
 	<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
 	</div>	
@@ -101,7 +117,7 @@
 		<span class="tit_view">FABRIC</span>
 		<div class="view">
 			<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_S1.')}">
-			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+			<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720}" alt="">
 			</th:block>
 		</div>
 	</div>
@@ -114,7 +130,7 @@
 			<span>
 				<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1.') 
 																		or #strings.contains(goodsImg.sysImgNm,'_L2.')}">
-				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+				<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250}" alt="">
 				</th:block>
 			</span>
 		</div>
@@ -175,16 +191,16 @@
 		</div>
 		<div class="area_kcl" th:if="${goodsSafeNo != null}">
 			<i class="ico ico_kcl"></i>
-			<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+			<p class="tit normal"  th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 				어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
 			</p>
 			<p class="normal" >
-				<th:block th:if="${not #strings.isEmpty(goodsSafeNo.isCertNum)}" >
-				 인증번호: :CB123A123-1234
-				<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
+				<th:block th:if="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
+				해당 없음 
 				</th:block>
-				<th:block th:unless="${goodsSafeNo.isCertNum}">
-				해당사항 없음
+				<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
+				인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+				<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 				</th:block>
 			</p>
 			<p class="t_info dot_info">

+ 14 - 17
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -195,7 +195,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt1" disabled>
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list" id="goodsDealOptUp1">
 													<!--  옵션 1 -->
 												</ul>
@@ -205,7 +205,7 @@
 									<div class="form_field">
 										<div class="select_custom deal_opt2" disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" id="goodsDealOptUp2">
 													<!--  옵션 2 -->
 												</ul>
@@ -297,9 +297,9 @@
 					};
 		let jsonData = JSON.stringify(data);
 		
-		$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1');
+		$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1선택');
 		$('.form_field .select_custom.deal_opt2').attr('disabled', true);
-		$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2');
+		$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2선택');
 		
 		gagajf.ajaxJsonSubmit('/goods/detail/option1/list', jsonData, function(result) {
 			
@@ -329,10 +329,10 @@
 						$('.form_field .select_custom.deal_opt1').attr('disabled', false);
 						//------
 						tag1 += '<div class="combo">\n';
-						tag1 += '<div class="select">옵션1</div>\n';
+						tag1 += '<div class="select">옵션1선택</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
-						tag1 += '<li class="selected" id="goodsOpt1">옵션1</li>\n';	
+						//tag1 += '<li class="selected" id="goodsOpt1">옵션1선택</li>\n';	
 					}
 					let soldoutYn = ""; 
 					if (item.stockQty <= 0) soldoutYn = "true";
@@ -345,7 +345,7 @@
 					}
 					tag2 += '<div>'+ item.optCd1Nm+'</div>\n';
 					if (item.addPrice > 0){
-						tag2 += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+						tag2 += '<div>+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag2 += '<input type="hidden" name="opt1" value="'+ goodsCd +'" currPrice="'+ currPrice+'" optCd1="'+item.optCd1+'"  minOrdQty="'+item.minOrdQty+'"  maxOrdQty="'+item.maxOrdQty+'"   selfGoodsYn="'+selfGoodsYn+'" />\n';
 					tag2 += '</li>\n';
@@ -367,18 +367,15 @@
 				if (flag == "layer"){
 					$objUp.prepend(tagUpS);
 					var pop_desc_option02 = new sCombo('.pd_descrp_pop .opt_select .select_custom.deal_opt1');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_descrp_pop .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else if (flag == "Up"){
 					$objUp.prepend(tagUpS);
 					var detail_deal_option02 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt1');
-					$('.pd_detail .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_detail .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_detail .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}else{
 					$objDown.prepend(tagDownS);
 					var desc_option02 = new sCombo('.pd_desc_wrap .opt_select .select_custom.deal_opt1');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').addClass('on');
-					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.list').css('display','block');
+					$('.pd_desc_wrap .opt_select .select_custom.deal_opt1').find('.combo .select').trigger('click');
 				}
 				
 			}
@@ -450,7 +447,7 @@
 						tag1 += '<div class="select">옵션2</div>\n';
 						tag1 += '<ul class="list">\n';
 						//------
-						tag1 += '<li class="selected" id="goodsOpt2">옵션2</li>\n';	
+						//tag1 += '<li class="selected" id="goodsOpt2">옵션2</li>\n';	
 					}
 					let soldoutYn = ""; 
 					if ("Y" == item.soldoutYn || item.stockQty <= 0)soldoutYn = "true";
@@ -463,7 +460,7 @@
 					}
 					tag2 += '<div>'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){
-						tag2 += '<div>'+ item.addPrice.addComma() +'원</div>\n';	
+						tag2 += '<div>+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag2 += '<input type="hidden" name="opt2" value="'+ goodsCd +'" currPrice="'+ currPrice+'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'" optCd1Nm="'+item.optCd1Nm+'"  optCd2="'+item.optCd2+'"  minOrdQty="'+minOrdQty+'"  maxOrdQty="'+maxOrdQty+'" selfGoodsYn="'+selfGoodsYn+'"/>\n';
 					tag2 += '</li>\n';
@@ -658,9 +655,9 @@
 			//$('.pd_descrp_pop .form_field .select_custom.deal_opt_item').find('.combo .select').html(dTag);
 
 			$('.form_field .select_custom.deal_opt1').attr('disabled', true);
-			$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1');
+			$('.form_field .select_custom.deal_opt1').find('.combo .select').html('옵션1선택');
 			$('.form_field .select_custom.deal_opt2').attr('disabled', true);
-			$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2');
+			$('.form_field .select_custom.deal_opt2').find('.combo .select').html('옵션2선택');
 			
 		}, "text");
 	}

+ 42 - 27
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">
@@ -261,14 +261,14 @@
 										<div class="select_custom item_opt1"  th:classappend="${'item_opt1_'+status.count +' '+goodsCompose.compsGoodsCd}" 
 																			th:if="${goodsCompose.goodsOption1List != null and !goodsCompose.goodsOption1List.empty}" >
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsCompose.goodsOption1List}" >
 													<li th:onclick="fnOption2([[${status.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],[[${goodsCompose.qty}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])"
 														th:attr="aria-disabled=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}, data-soldout=${(goodsCompose.goodsStat != 'G008_90')? 'true':''}"
 														>
 														<div th:text="${goodsOption.optCd1Nm}">상품옵션</div>
-														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
+														<div th:if="${goodsOption.addPrice > 0}" th:text="|+${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 													</li>
 													</th:block>
@@ -279,7 +279,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2" th:classappend="${'item_opt2_'+status.count +' '+goodsCompose.compsGoodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" th:id="|goodsOpt2${goodsCompose.compsGoodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -300,12 +300,12 @@
 									<div class="form_field">
 										<div class="select_custom item_opt1 item_opt1_1" th:classappend="${goodsInfo.goodsCd}" >
 											<div class="combo">
-												<div class="select">옵션1</div>
+												<div class="select">옵션1선택</div>
 												<ul class="list">
 													<th:block th:each="goodsOption, optionStatus : ${goodsOption1List}" >
 													<li th:onclick="fnOption2([[${optionStatus.count}]], [[${goodsOption.goodsCd}]],[[${goodsOption.optCd1}]],1,[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]])">
 														<div th:text="${goodsOption.optCd1}">상품옵션</div>
-														<div th:if="${goodsOption.addPrice > 0}" th:text="|${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
+														<div th:if="${goodsOption.addPrice > 0}" th:text="|+${#numbers.formatInteger(goodsOption.addPrice, 0,'COMMA')}원|">0원</div>
 														<input type="hidden" name="opt" th:attr="addPrice=${goodsOption.addPrice}, optCd1=${goodsOption.optCd1},optCd2=${goodsOption.optCd2}, optCd=${goodsOption.optCd}"/>
 													</li>
 													</th:block>
@@ -316,7 +316,7 @@
 									<div class="form_field">
 										<div class="select_custom item_opt2 item_opt2_1" th:classappend="${goodsInfo.goodsCd}"  disabled>
 											<div class="combo">
-												<div class="select">옵션2</div>
+												<div class="select">옵션2선택</div>
 												<ul class="list" th:id="|goodsOpt2${goodsInfo.goodsCd}|" >
 													<!-- 옵션2 -->
 												</ul>
@@ -481,6 +481,24 @@
 					</th:block>
 				</div>
 				</th:block>
+				<!-- 공통상품베너 -->
+				<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+				<div class="mdhtml_box">
+				<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+				<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<a th:href="${goodsBanner.strVar1}" target="_blank">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+					</a>
+				</th:block>
+				<th:block th:unless="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+					<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+				</th:block>
+				</th:block>
+				
+				</div>
+				</th:block>
+				
+				
 				
 				<!-- 관리자 에디터입력 내용 노출  상단 html -->
 				<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block >
@@ -492,7 +510,9 @@
 													or #strings.contains(goodsImgList,'_M4.')
 													or #strings.contains(goodsImgList,'_M5.')}">
 					<span class="tit_view">OUTFIT VIEW</span>
-					<span class="model_info">(모델정보 : 185cm / 78kg / XL 착용)</span>
+					<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+					<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+					</th:block>
 					<div class="view">
 						<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_M1.') 
 																					or #strings.contains(goodsImg.sysImgNm,'_M2.')
@@ -545,7 +565,7 @@
 						<span>
 							<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1.') 
 																					or #strings.contains(goodsImg.sysImgNm,'_L2.')}">
-							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm}" alt="">
+							<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt="">
 							</th:block>
 						</span>
 					</div>
@@ -606,7 +626,7 @@
 					</div>
 					<div class="area_kcl" th:if="${goodsSafeNo != null}">
 						<i class="ico ico_kcl"></i>
-						<p class="tit normal" th:text="${goodsSafeNo.certDiv}">
+						<p class="tit normal" th:text="${goodsSafeNo.certDiv + ' / ' + goodsSafeNo.certOrganName}">
 							어린이제품 안전인증 / 한국건설생활시험연구원(KCL)
 						</p>
 						<p class="normal" >
@@ -614,7 +634,7 @@
 							해당 없음 
 							</th:block>
 							<th:block th:unless="${#strings.contains(goodsSafeNo.certNum, '해당')}" >
-							인증번호: : <th:block th:text="${goodsSafeNo.certNum}"></th:block>
+							인증번호: <th:block th:text="${goodsSafeNo.certNum}"></th:block>
 							<a th:href="@{http://www.safetykorea.kr/search/searchPop(certNum=${goodsSafeNo.certNum})}" target="_blank" class="linktxt3">상세보기</a>
 							</th:block>
 						</p>
@@ -1233,7 +1253,7 @@
 					}
 					tag += '<div class="opt_name">'+ item.optCd2+'</div>\n';
 					if (item.addPrice > 0){
-						tag += '<div class="opt_price">'+ item.addPrice.addComma() +'원</div>\n';	
+						tag += '<div class="opt_price">+'+ item.addPrice.addComma() +'원</div>\n';	
 					}
 					tag += '<input type="hidden" name="opt2" value="'+ item.goodsCd+'|'+item.optCd +'|'+qty +'" goodsCd="'+item.goodsCd+'" id="'+item.optCd+'" addPrice="'+item.addPrice+'"  optCd="'+item.optCd+'"  optCd1="'+item.optCd1+'"  optCd2="'+item.optCd2+'"  />\n';
 					tag += '</li>\n';
@@ -1250,32 +1270,25 @@
 				$obj.append(tag);
 				if (selfGoodsYn == "Y"){
 					if (ridx == 1){
-						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');	
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.list').css('display','block');
+						var opt_selecter02_1 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_1');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
 					}else if (ridx == 2){
 						var opt_selecter02_2 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_2');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_2').find('.combo .select').trigger('click');
 					}else if (ridx == 3){
 						var opt_selecter02_3 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_3');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_3').find('.combo .select').trigger('click');
 					}else if (ridx == 4){
 						var opt_selecter02_4 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_4');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_4').find('.combo .select').trigger('click');
 					}else{
 						var opt_selecter02_5 = new sCombo('.opt_set_select .select_custom.item_opt2.item_opt2_5');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').addClass('on');
-						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').find('.list').css('display','block');
+						$('.opt_set_select .select_custom.item_opt2.item_opt2_5').find('.combo .select').trigger('click');
 					}
 					
 				}else{
 					var opt_selecter02 = new sCombo('.opt_select .select_custom.item_opt2.item_opt2_1');
-					//$('.opt_select .select_custom.item_opt2').removeClass('on');
-					$('.opt_select .select_custom.item_opt2.item_opt2_1').addClass('on');
-					$('.opt_select .select_custom.item_opt2.item_opt2_1').find('.list').css('display','block');
+					$('.opt_set_select .select_custom.item_opt2.item_opt2_1').find('.combo .select').trigger('click');
 					
 				}	
 			}
@@ -1517,8 +1530,10 @@
 					if (minutes < '10') { minutes = '0' + minutes; }
 					if (seconds < '10') { seconds = '0' + seconds; }
 	
+					console.log('days :' + days);
 					if (Number(days) > 0 ){
-						$('#d-days').html(days);	
+						hours = Number(hours) + (Number(days) * 24);
+						$('#d-days').remove();
 					}else{
 						//$('#d-days').css('display','none');
 						$('#d-days').remove();

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

@@ -314,7 +314,7 @@
 								<div class="form_field">
 									<div class="select_custom deal_opt1" disabled>
 										<div class="combo">
-											<div class="select">옵션1</div>
+											<div class="select">옵션1선택</div>
 											<ul class="list" id="goodsDealOptDown1">
 												<!--  옵션 1 -->
 											</ul>
@@ -324,7 +324,7 @@
 								<div class="form_field">
 									<div class="select_custom deal_opt2" disabled>
 										<div class="combo">
-											<div class="select">옵션2</div>
+											<div class="select">옵션2선택</div>
 											<ul class="list" id="goodsDealOptDown2">
 												<!--  옵션 2 -->
 											</ul>

+ 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{

+ 41 - 34
src/main/webapp/ux/mo/css/layout_m.css

@@ -130,7 +130,7 @@
 .cs_contactUs_my textarea { width: 100%; height: 15rem; box-sizing: border-box; padding: 1.5rem; font-size: 1.4rem;}
 .cs_contactUs_my .form_field { margin: 0 0 1.2rem; }
 .cs_contactUs_my .info_addfile ul li {font-size: 1.2rem; color: #c6c6c6;}
-.cs_contactUs_my_footer { width: 100%; height: 5.7rem; background: #222; color: #fff; text-align: center;  font-size: 1.6rem; line-height: 5.7rem; bottom: 0; position: fixed; z-index: 1000;}
+.cs_contactUs_my_footer { width: 100%; height: 5.7rem; background: #222; color: #fff; text-align: center;  font-size: 1.6rem; line-height: 5.7rem; bottom: 0; position: fixed; z-index: 100;}
 .cs_contactUs_my .select_dress { height: 4.5rem; padding: 0 1.5rem; line-height: 4.5rem;}
 .cs_contactUs_my .blt_dot {position:relative; padding-left:1rem}
 .cs_contactUs_my .blt_dot::before {content:''; position:absolute; left:0; top:50%; margin-top:-0.2rem; width:0.3rem; height:0.3rem; background:#888;}
@@ -379,7 +379,7 @@
 /* .item_prod .itemLike.active::before {opacity: 1;} */
 .itemLike.likeit::before {opacity: 1;}
 .item_prod .itemLink {position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden;}
+.item_prod .itemPic {position: relative;width: 100%;margin-bottom: 1.5rem;padding-top: 150%;font-size: 0px;overflow: hidden; background-color: #fff;}
 /*.item_prod .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0.03;background-color: rgb(0, 0, 0);}*/
 .item_prod .itemPic .pd_img {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
 .item_prod .itemBrand {display: inline-block; margin: 0px 0.5rem 0.3rem; font-size: 1rem;font-weight: 300;color: rgb(137, 137, 137); text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:10rem;overflow:hidden;}
@@ -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(){