Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/develop' into jsh77b

jsh77b 5 anni fa
parent
commit
f74119aa2d
30 ha cambiato i file con 693 aggiunte e 266 eliminazioni
  1. 12 1
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 30 0
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  3. 1 0
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  4. 1 0
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 12 0
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  6. 37 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  7. 8 8
      src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java
  8. 7 1
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  9. 34 7
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  10. 1 1
      src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java
  11. 28 0
      src/main/java/com/style24/persistence/domain/Freegift.java
  12. 2 2
      src/main/java/com/style24/persistence/domain/Plan.java
  13. 81 27
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  14. 59 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  15. 15 8
      src/main/webapp/WEB-INF/views/mob/common/layout/GoodsLayoutMob.html
  16. 1 1
      src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html
  17. 18 19
      src/main/webapp/WEB-INF/views/mob/goods/CardPrmtFormMob.html
  18. 178 134
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  19. 10 18
      src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/display/AllBrandFormWeb.html
  21. 8 2
      src/main/webapp/WEB-INF/views/web/goods/CardPrmtFormWeb.html
  22. 9 4
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  23. 5 9
      src/main/webapp/WEB-INF/views/web/goods/GoodsShopBenefitFormWeb.html
  24. 30 15
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  25. BIN
      src/main/webapp/images/mo/ico_btn_home.png
  26. BIN
      src/main/webapp/images/mo/ico_btn_search.png
  27. BIN
      src/main/webapp/images/mo/ico_btn_store.png
  28. 72 5
      src/main/webapp/ux/mo/js/common_m.js
  29. 32 1
      src/main/webapp/ux/mo/js/main_m.js
  30. 1 1
      src/main/webapp/ux/style24_link.js

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

@@ -6,6 +6,7 @@ import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Delivery;
+import com.style24.persistence.domain.Freegift;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsDesc;
@@ -315,7 +316,17 @@ public interface TsfGoodsDao {
 	 * @date 2021. 4. 11
 	 * @date 2021. 4. 11
 	 */
 	 */
 	Collection<Tmtb> getTmtbList(Goods goods);
 	Collection<Tmtb> getTmtbList(Goods goods);
-
+	
+	/**
+	 * 상품의 사은품 목록 
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 4. 13
+	 */
+	Collection<Freegift> getFreeGoodsList(Goods goods);
+	
 	/**
 	/**
 	 * 컨텐츠카테고리상품 목록
 	 * 컨텐츠카테고리상품 목록
 	 * @param cate - 카테고리 정보
 	 * @param cate - 카테고리 정보

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

@@ -352,4 +352,34 @@ public interface TsfPlanningDao {
 	 */
 	 */
 	Collection<Plan> getReplyList(Plan plan);
 	Collection<Plan> getReplyList(Plan plan);
 	
 	
+	/**
+	 * 기획전/이벤트 댓글 저장
+	 *
+	 * @param Plan
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	void saveEntryReply(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 댓글 카운트
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	int getEntryReplyCount(Plan plan);
+	
+	/**
+	 * 기획전/이벤트 댓글 삭제
+	 *
+	 * @param Plan
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	void deleteEntryReply(Plan plan);
+	
 }
 }

+ 1 - 0
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -305,6 +305,7 @@ public class TsfCouponService {
 		Coupon joinCoupon = couponDao.getJoinCoupon(coupon);
 		Coupon joinCoupon = couponDao.getJoinCoupon(coupon);
 		if (joinCoupon != null) {
 		if (joinCoupon != null) {
 			CustCoupon custCoupon = new CustCoupon();
 			CustCoupon custCoupon = new CustCoupon();
+			custCoupon.setCustNo(coupon.getCustNo());
 			custCoupon.setCpnId(joinCoupon.getCpnId());
 			custCoupon.setCpnId(joinCoupon.getCpnId());
 			custCoupon.setAvailStdt(joinCoupon.getAvailStdt());
 			custCoupon.setAvailStdt(joinCoupon.getAvailStdt());
 			custCoupon.setAvailEddt(joinCoupon.getAvailEddt());
 			custCoupon.setAvailEddt(joinCoupon.getAvailEddt());

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

@@ -323,6 +323,7 @@ public class TsfCustomerService {
 	public void saveJoinPostProcessing(Customer customer) {
 	public void saveJoinPostProcessing(Customer customer) {
 		// 1. 쿠폰지급 : 운영관리 > 회원등급정책관리 > WELCOME 등급
 		// 1. 쿠폰지급 : 운영관리 > 회원등급정책관리 > WELCOME 등급
 		Coupon coupon = new Coupon();
 		Coupon coupon = new Coupon();
+		coupon.setCustNo(customer.getCustNo());
 		coupon.setFrontGb(customer.getFrontGb());
 		coupon.setFrontGb(customer.getFrontGb());
 		coupon.setCustGrade(customer.getCustGrade());
 		coupon.setCustGrade(customer.getCustGrade());
 		coupon.setCustNo(customer.getCustNo());
 		coupon.setCustNo(customer.getCustNo());

+ 12 - 0
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -15,6 +15,7 @@ import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Delivery;
+import com.style24.persistence.domain.Freegift;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsDesc;
@@ -712,6 +713,17 @@ public class TsfGoodsService {
 	public Collection<Tmtb> getTmtbList(Goods goods) {
 	public Collection<Tmtb> getTmtbList(Goods goods) {
 		return goodsDao.getTmtbList(goods);
 		return goodsDao.getTmtbList(goods);
 	}
 	}
+	
+	/**
+	 * 상품의 다다익선 목록 
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 4. 13
+	 */
+	public Collection<Freegift> getFreeGoodsList(Goods goods) {
+		return goodsDao.getFreeGoodsList(goods);
+	}
 
 
 	/**
 	/**
 	 * 컨텐츠카테고리상품 목록
 	 * 컨텐츠카테고리상품 목록

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

@@ -522,4 +522,41 @@ public class TsfPlanningService {
 		return planningDao.getReplyList(plan);
 		return planningDao.getReplyList(plan);
 	}
 	}
 
 
+
+	/**
+	 * 기획전/이벤트 댓글 저장
+	 *
+	 * @param Plan
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	public void saveEntryReply(Plan plan) {
+		plan.setCustNo(TsfSession.getInfo().getCustNo());
+		planningDao.saveEntryReply(plan);
+	}
+	
+	/**
+	 * 기획전/이벤트 댓글 카운트
+	 *
+	 * @param Plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	public int getEntryReplyCount(Plan plan) {
+		return planningDao.getEntryReplyCount(plan);
+	}
+	
+	/**
+	 * 기획전/이벤트 댓글 삭제
+	 *
+	 * @param Plan
+	 * @return 
+	 * @author sowon
+	 * @date 2021. 4. 13
+	 */
+	public void deleteEntryReply(Plan plan) {
+		planningDao.deleteEntryReply(plan);
+	}
 }
 }

+ 8 - 8
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

@@ -186,11 +186,11 @@ public class NiceCertify {
 
 
 		String sRequestNo = TsfSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
 		String sRequestNo = TsfSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
 		log.info("sRequestNo ===> {}, sRequestNumber ===> {}",sRequestNo ,sRequestNumber);
 		log.info("sRequestNo ===> {}, sRequestNumber ===> {}",sRequestNo ,sRequestNumber);
-		if (!sRequestNo.equals(sRequestNumber)) {
-			sResponseNumber = "";
-			sAuthType = "";
-			throw new IllegalStateException("세션값 불일치 오류 입니다.");
-		}
+//		if (!sRequestNo.equals(sRequestNumber)) {
+//			sResponseNumber = "";
+//			sAuthType = "";
+//			throw new IllegalStateException("세션값 불일치 오류 입니다.");
+//		}
 
 
 		String sAdult = "";		 // 미성년 : 0, 성인 : 1
 		String sAdult = "";		 // 미성년 : 0, 성인 : 1
 		String sforeignerYn = ""; // 외국인여부(외국인:Y)
 		String sforeignerYn = ""; // 외국인여부(외국인:Y)
@@ -320,9 +320,9 @@ public class NiceCertify {
 
 
 
 
 		String sCPRequestNo = TsfSession.getAttribute("CPREQUEST");
 		String sCPRequestNo = TsfSession.getAttribute("CPREQUEST");
-		if (!sCPRequestNo.equals(sCPRequestNum)) {
-			throw new IllegalStateException("세션값 불일치 오류 입니다.");
-		}
+//		if (!sCPRequestNo.equals(sCPRequestNum)) {
+//			throw new IllegalStateException("세션값 불일치 오류 입니다.");
+//		}
 
 
 		String sGender = "";
 		String sGender = "";
 		String sAdult = "N"; //미성년자
 		String sAdult = "N"; //미성년자

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

@@ -234,6 +234,11 @@ public class TsfGoodsController extends TsfBaseController {
 			// 다다익선
 			// 다다익선
 			paramsGoods.setMaxRownum(1);
 			paramsGoods.setMaxRownum(1);
 			mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
 			mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
+			
+			// 사은품
+			paramsGoods.setMaxRownum(1);
+			mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods));
+			
 
 
 			// 베스트 상품평
 			// 베스트 상품평
 			Review review = new Review();
 			Review review = new Review();
@@ -561,8 +566,9 @@ public class TsfGoodsController extends TsfBaseController {
 		// 다다익선
 		// 다다익선
 		paramsGoods.setMaxRownum(1);
 		paramsGoods.setMaxRownum(1);
 		mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
 		mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
-
 		// 사은품
 		// 사은품
+		paramsGoods.setMaxRownum(1);
+		mav.addObject("freeGoodsList", goodsService.getFreeGoodsList(paramsGoods));
 
 
 		// 상품 기본정보 --즉시할인정보
 		// 상품 기본정보 --즉시할인정보
 		mav.addObject("goodsInfo", goods);
 		mav.addObject("goodsInfo", goods);

+ 34 - 7
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -241,22 +241,49 @@ public class TsfPlanningController extends TsfBaseController {
 	 */
 	 */
 	@PostMapping("/reply/list")
 	@PostMapping("/reply/list")
 	@ResponseBody
 	@ResponseBody
-	public GagaMap getReplyList(Plan plan) {
+	public GagaMap getReplyList(@RequestBody Plan plan) {
 		GagaMap result = new GagaMap();
 		GagaMap result = new GagaMap();
-		plan.setPlanSq(plan.getPlanSq());
-		
-		result.set("replyList",planningService.getReplyList(plan));
 		if (TsfSession.isLogin()) {
 		if (TsfSession.isLogin()) {
 			result.set("custNo",TsfSession.getInfo().getCustNo());
 			result.set("custNo",TsfSession.getInfo().getCustNo());
 		}
 		}
 		TscPageRequest pageable = new TscPageRequest((plan.getPageNo() > 0 ? plan.getPageNo() - 1 : 0), plan.getPageSize(), plan.getPageUnit());
 		TscPageRequest pageable = new TscPageRequest((plan.getPageNo() > 0 ? plan.getPageNo() - 1 : 0), plan.getPageSize(), plan.getPageUnit());
-		//pageable.setTotalCount(reviewService.getCompleteReviewCount(review));
-		pageable.setTotalCount(10);
+		pageable.setTotalCount(planningService.getEntryReplyCount(plan));
 		plan.setPageable(pageable);
 		plan.setPageable(pageable);
 		log.info("pageable: {}", pageable);
 		log.info("pageable: {}", pageable);
 		log.info("totalCount {}", pageable.getTotalCount());
 		log.info("totalCount {}", pageable.getTotalCount());
-		
 		result.set("paging", plan);
 		result.set("paging", plan);
+		result.set("replyList",planningService.getReplyList(plan));
+		result.set("replyCount",planningService.getEntryReplyCount(plan));
+		return result;
+	}
+	
+	/**
+	 * 기획전/이벤트 댓글 저장
+	 *
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping("/reply/save")
+	@ResponseBody
+	public GagaMap saveEntryReply(@RequestBody Plan plan) {
+		GagaMap result = new GagaMap();
+		planningService.saveEntryReply(plan);
+		return result;
+	}
+	
+	/**
+	 * 기획전/이벤트 댓글 삭제
+	 *
+	 * @return
+	 * @author sowon	
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping("/reply/delete")
+	@ResponseBody
+	public GagaMap deleteEntryReply(@RequestBody Plan plan) {
+		GagaMap result = new GagaMap();
+		planningService.deleteEntryReply(plan);
 		return result;
 		return result;
 	}
 	}
 
 

+ 1 - 1
src/main/java/com/style24/front/support/config/TsfRedisSessionConfig.java

@@ -86,7 +86,7 @@ public class TsfRedisSessionConfig extends AbstractHttpSessionApplicationInitial
 		DefaultCookieSerializer serializer = new DefaultCookieSerializer();
 		DefaultCookieSerializer serializer = new DefaultCookieSerializer();
 		serializer.setCookiePath("/");
 		serializer.setCookiePath("/");
 		serializer.setUseBase64Encoding(false);
 		serializer.setUseBase64Encoding(false);
-
+		// TODO : SSL 적용 후 주석 풀고 테스트 해야함 2021-04-13
 		// SSL인증서 적용 시 주석 제거
 		// SSL인증서 적용 시 주석 제거
 //		serializer.setUseSecureCookie(true);
 //		serializer.setUseSecureCookie(true);
 //		serializer.setSameSite("NONE");
 //		serializer.setSameSite("NONE");

+ 28 - 0
src/main/java/com/style24/persistence/domain/Freegift.java

@@ -0,0 +1,28 @@
+package com.style24.persistence.domain;
+
+import lombok.Data;
+
+
+/**
+ * 사은품 Domain
+ *
+ * @author eskim
+ * @since 2021. 04. 12
+ */
+@SuppressWarnings("serial")
+@Data
+public class Freegift {
+	
+	private Integer freegiftSq;
+	private Integer freegiftSectionSq;
+	private Integer afreegiftValSq;
+	private String allYn;
+	private String sectionGb;
+	private String sectionVal;
+	private String productNo;
+	private String goodsNm;
+	private String itemQty;
+	private String leftQty;
+	private String targetVal;
+	
+}

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

@@ -267,14 +267,14 @@ public class Plan extends TscBaseDomain {
 	private String entryVal6;			//참여값6
 	private String entryVal6;			//참여값6
 	private String entryVal7;			//참여값7
 	private String entryVal7;			//참여값7
 	private String entryVal8;			//참여값8
 	private String entryVal8;			//참여값8
-	
+	private Integer planEntrySq;		//참여일련번호
 	
 	
 	
 	
 	
 	
 	// Pagination
 	// Pagination
 	private TscPageRequest pageable;
 	private TscPageRequest pageable;
 	private int pageNo = 1;
 	private int pageNo = 1;
-	private int pageSize = 50;
+	private int pageSize = 10;
 	private int pageUnit = 10;
 	private int pageUnit = 10;
 
 
 	private String condition; // 키워드 종류
 	private String condition; // 키워드 종류

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

@@ -626,6 +626,11 @@
 		     , FN_GET_GOODS_NM(GOODS_NM,GOODS_GB,FOREIGN_BUY_YN,PARALLEL_IMPORT_YN,ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
 		     , FN_GET_GOODS_NM(GOODS_NM,GOODS_GB,FOREIGN_BUY_YN,PARALLEL_IMPORT_YN,ORDER_MADE_YN) AS GOODS_FULL_NM /*상품FULL명*/
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = Z.GOODS_CD AND COLOR_CD = IFNULL(Z.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = Z.GOODS_CD AND COLOR_CD = IFNULL(Z.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') AS SYS_IMG_NM
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = Z.GOODS_CD AND COLOR_CD = IFNULL(Z.MAIN_COLOR_CD,'XX') AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
 		     , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = Z.GOODS_CD AND COLOR_CD = IFNULL(Z.MAIN_COLOR_CD,'XX') AND MOUSEOVER_IMG_YN = 'Y') AS SYS_IMG_NM2
+		     , V.VIDEO_GB_M
+		     , V.VIDEO_VAL_M
+		     , V.VIDEO_GB_S
+		     , V.VIDEO_VAL_S
+		     , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
 		FROM (
 		FROM (
 		      SELECT B.GOODS_CD 
 		      SELECT B.GOODS_CD 
 		           , G.GOODS_NM
 		           , G.GOODS_NM
@@ -643,11 +648,6 @@
 		           , S.STOCK_QTY
 		           , S.STOCK_QTY
 		           , S.SOLDOUT_YN
 		           , S.SOLDOUT_YN
 		           , S.OPT_CD
 		           , S.OPT_CD
-		           , V.VIDEO_GB_M
-		           , V.VIDEO_VAL_M
-		           , V.VIDEO_GB_S
-		           , V.VIDEO_VAL_S
-		           , (CASE WHEN W.GOODS_CD IS NULL THEN 'N' ELSE 'Y' END) AS WISH_YN
 		      FROM TB_TMTB A
 		      FROM TB_TMTB A
 		      INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ  = B.TMTB_SQ
 		      INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ  = B.TMTB_SQ
 		                                       AND B.DEL_YN = 'N'
 		                                       AND B.DEL_YN = 'N'
@@ -683,26 +683,6 @@
 		                       FROM VW_STOCK
 		                       FROM VW_STOCK
 		                       WHERE DISP_YN = 'Y'
 		                       WHERE DISP_YN = 'Y'
 		                       GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
 		                       GROUP BY GOODS_CD) S ON G.GOODS_CD = S.GOODS_CD
-		      LEFT OUTER JOIN (SELECT MAX(GOODS_CD) AS GOODS_CD 
-		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_GB END) AS  VIDEO_GB_M
-		                             , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_VAL END) AS  VIDEO_VAL_M
-		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_GB END) AS  VIDEO_GB_S
-		                             , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_VAL END) AS  VIDEO_VAL_S
-		                       FROM (
-		                             SELECT A.DISPLOC_VAL AS GOODS_CD
-		                                  , B.VIDEO_GB 
-		                                  , B.VIDEO_VAL 
-		                                  , A.REG_DT 
-		                                  , RANK() OVER(PARTITION BY A.DISPLOC_VAL ORDER BY A.REG_DT ) RNUM 
-		                             FROM TB_VIDEO_DISPLOC  A
-		                             INNER JOIN  TB_VIDEO B ON A.VIDEO_SQ = B.VIDEO_SQ 
-		                                                    AND B.DISP_YN ='Y'
-		                             WHERE A.DISPLOC_GB ='G'
-		                             AND A.DISP_YN = 'Y'
-		                            ) V
-		                       ) V ON G.GOODS_CD = V.GOODS_CD
-		      LEFT OUTER JOIN TB_WISHLIST W ON G.GOODS_CD = W.GOODS_CD
-		                              AND IFNULL(#{custNo}, 0) = W.CUST_NO
 		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		      AND A.TMTB_STAT ='G232_11'
 		      AND A.TMTB_STAT ='G232_11'
 		       <![CDATA[
 		       <![CDATA[
@@ -711,6 +691,26 @@
 		       ]]>
 		       ]]>
 		      ORDER BY A.TMTB_SQ 
 		      ORDER BY A.TMTB_SQ 
 		) Z
 		) Z
+		LEFT OUTER JOIN (SELECT MAX(GOODS_CD) AS GOODS_CD 
+		                       , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_GB END) AS  VIDEO_GB_M
+		                       , MAX(CASE WHEN  RNUM = 1 THEN  VIDEO_VAL END) AS  VIDEO_VAL_M
+		                       , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_GB END) AS  VIDEO_GB_S
+		                       , MAX(CASE WHEN  RNUM = 2 THEN  VIDEO_VAL END) AS  VIDEO_VAL_S
+		                 FROM (
+		                       SELECT A.DISPLOC_VAL AS GOODS_CD
+		                            , B.VIDEO_GB 
+		                            , B.VIDEO_VAL 
+		                            , A.REG_DT 
+		                            , RANK() OVER(PARTITION BY A.DISPLOC_VAL ORDER BY A.REG_DT ) RNUM 
+		                       FROM TB_VIDEO_DISPLOC  A
+		                       INNER JOIN  TB_VIDEO B ON A.VIDEO_SQ = B.VIDEO_SQ 
+		                                              AND B.DISP_YN ='Y'
+		                       WHERE A.DISPLOC_GB ='G'
+		                       AND A.DISP_YN = 'Y'
+		                      ) V
+		                 ) V ON Z.GOODS_CD = V.GOODS_CD
+		LEFT OUTER JOIN TB_WISHLIST W ON Z.GOODS_CD = W.GOODS_CD
+		                        AND IFNULL(#{custNo}, 0) = W.CUST_NO
 		LIMIT #{maxRownum}
 		LIMIT #{maxRownum}
 	</select>
 	</select>
 	
 	
@@ -886,10 +886,18 @@
 		      INNER JOIN TB_TMTB_VAL D ON C.TMTB_SQ = D.TMTB_SQ
 		      INNER JOIN TB_TMTB_VAL D ON C.TMTB_SQ = D.TMTB_SQ
 		                               AND C.TMTB_SECTION_SQ  = D.TMTB_SECTION_SQ  
 		                               AND C.TMTB_SECTION_SQ  = D.TMTB_SECTION_SQ  
 		                               AND D.DEL_YN  = 'N'
 		                               AND D.DEL_YN  = 'N'
+		      INNER JOIN TB_TMTB_APPLY_GOODS B ON A.TMTB_SQ = B.TMTB_SQ
+		                                       AND B.GOODS_CD =  #{goodsCd}
+		                                       AND B.DEL_YN = 'N'
+		                                       AND B.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
+		      LEFT OUTER JOIN TB_TMTB_APPLY_GOODS E ON A.TMTB_SQ = E.TMTB_SQ
+		                                       AND E.GOODS_CD = #{goodsCd}
+		                                       AND E.DEL_YN = 'N'
+		                                       AND E.GOODS_GB = 'G800_30'  -- 제외상품 
 		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		      WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		      AND A.TMTB_STAT ='G232_11'  -- 진행중
 		      AND A.TMTB_STAT ='G232_11'  -- 진행중
-		      AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD =  #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB IN ( 'G800_10', 'G800_20')) -- 기본과 적용상품
-		      AND A.TMTB_SQ NOT IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD =  #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB = 'G800_30') -- 제외상품 
+		      AND A.DEL_YN = 'N'
+		      AND E.GOODS_CD IS NULL                                      -- 제외상품이 아닌 다다익선 
 		      ORDER BY A.TMTB_SQ , C.TMTB_SECTION_SQ , D.TMTB_VAL_SQ 
 		      ORDER BY A.TMTB_SQ , C.TMTB_SECTION_SQ , D.TMTB_VAL_SQ 
 		) Z
 		) Z
 		WHERE 1 = 1
 		WHERE 1 = 1
@@ -898,6 +906,52 @@
 		</if> 
 		</if> 
 	</select>
 	</select>
 	
 	
+	<!-- 상품의 사은품 목록 -->
+	<select id="getFreeGoodsList"  parameterType="Goods" resultType="Freegift">
+		/* TsfGoods.getFreeGoodsList */
+		SELECT Z.*
+		FROM (
+		      SELECT  A.FREEGIFT_SQ
+		            , B.FREEGIFT_SECTION_SQ
+		            , C.FREEGIFT_VAL_SQ
+		            , A.ALL_YN              -- 모두지급
+		            , B.SECTION_GB          -- G810_10|수량, G810_11|금액
+		            , B.SECTION_VAL
+		            , C.PRODUCT_NO          -- 사은품 번호
+		            , F.GOODS_NM            -- 사은품 명
+		            , C.ITEM_QTY            -- 사은품 지급 수량
+		            , C.LEFT_QTY            -- 잔여수량
+		            , D.TARGET_VAL
+		      FROM TB_FREEGIFT A
+		      INNER JOIN TB_FREEGIFT_SECTION B ON A.FREEGIFT_SQ = B.FREEGIFT_SQ
+		                                       AND B.DEL_YN = 'N'
+		      INNER JOIN TB_FREEGIFT_VAL C ON B.FREEGIFT_SQ = C.FREEGIFT_SQ
+		                                   AND B.FREEGIFT_SECTION_SQ = C.FREEGIFT_SECTION_SQ
+		                                   AND C.DEL_YN = 'N'
+		                                   AND C.LEFT_QTY > 0    -- 사은품 잔여수량
+		      INNER JOIN TB_FREE_GOODS F ON F.PRODUCT_NO = C.PRODUCT_NO
+                           AND F.USE_YN = 'Y'
+		      INNER JOIN TB_FREEGIFT_GOODS D ON A.FREEGIFT_SQ = D.FREEGIFT_SQ
+		                                   AND D.GOODS_GB  IN ( 'G800_10',  'G800_20')
+		                                   AND D.TARGET_GB = 'G260_10'
+		                                   AND D.DEL_YN = 'N'
+		                                   AND D.TARGET_VAL = #{goodsCd}
+		      LEFT OUTER JOIN TB_FREEGIFT_GOODS E ON A.FREEGIFT_SQ = E.FREEGIFT_SQ
+		                                   AND E.GOODS_GB = 'G800_30'
+		                                   AND E.TARGET_GB = 'G260_10'
+		                                   AND E.DEL_YN = 'N'
+		                                   AND E.TARGET_VAL = #{goodsCd}
+		      WHERE NOW() BETWEEN  A.FREEGIFT_STAT AND A.FREEGIFT_EDDT
+		      AND  A.FREEGIFT_STAT = 'G232_11'
+		      AND E.TARGET_VAL IS NULL
+		      AND A.DEL_YN = 'N'
+		) Z
+		WHERE 1 = 1
+		<if test="maxRownum != null and maxRownum > 0">
+		LIMIT #{maxRownum}
+		</if> 
+	</select>
+	
 	<!-- 컨텐츠카테고리상품 목록 -->
 	<!-- 컨텐츠카테고리상품 목록 -->
 	<select id="getContentsCategoryGoodsList"  parameterType="Cate4Srch" resultType="Goods">
 	<select id="getContentsCategoryGoodsList"  parameterType="Cate4Srch" resultType="Goods">
 		/* TsfGoods.getContentsCategoryGoodsList */
 		/* TsfGoods.getContentsCategoryGoodsList */

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

@@ -1204,6 +1204,7 @@
 	<!-- 댓글 리스트  (수정필)-->
 	<!-- 댓글 리스트  (수정필)-->
 	<select id="getReplyList" resultType="Plan" parameterType="Plan">
 	<select id="getReplyList" resultType="Plan" parameterType="Plan">
 		/* TsfPlanning.getReplyList */	
 		/* TsfPlanning.getReplyList */	
+		<include refid="selectForPagingHeader"/>
 		SELECT Z.*
 		SELECT Z.*
 		      ,(SELECT CUST_ID FROM TB_CUSTOMER WHERE CUST_NO = Z.ENTRY_CUST_NO) AS CUST_ID
 		      ,(SELECT CUST_ID FROM TB_CUSTOMER WHERE CUST_NO = Z.ENTRY_CUST_NO) AS CUST_ID
 		FROM 
 		FROM 
@@ -1224,10 +1225,67 @@
 			     , PE.REG_DT
 			     , PE.REG_DT
 			     , PE.UPD_NO
 			     , PE.UPD_NO
 			     , PE.UPD_DT
 			     , PE.UPD_DT
+			     , RANK() OVER(ORDER BY REG_DT DESC) AS NUMB
 			FROM TB_PLAN_ENTRY PE
 			FROM TB_PLAN_ENTRY PE
 			WHERE 1=1
 			WHERE 1=1
 		    AND PE.PLAN_SQ = #{planSq}
 		    AND PE.PLAN_SQ = #{planSq}
-		    ORDER BY REG_NO DESC
+		    ORDER BY REG_DT DESC
 		)Z
 		)Z
+		<include refid="selectForPagingFooter"/>
 	</select>
 	</select>
+	
+	<insert id="saveEntryReply" parameterType="Plan">
+		/* TsfPlanning.saveEntryReply */	
+		INSERT INTO TB_PLAN_ENTRY
+		(
+		  PLAN_SQ
+		, ENTRY_CUST_NO
+		, ENTRY_DT
+		, ENTRY_VAL1
+		, ENTRY_VAL2
+		, ENTRY_VAL3
+		, ENTRY_VAL4
+		, ENTRY_VAL5
+		, ENTRY_VAL6
+		, ENTRY_VAL7
+		, ENTRY_VAL8
+		, REG_NO
+		, REG_DT
+		, UPD_NO
+		, UPD_DT
+		)
+		VALUES(
+		  #{planSq}
+		, #{custNo}
+		, CURRENT_TIMESTAMP
+		, #{entryVal1}
+		, #{entryVal2}
+		, #{entryVal3}
+		, #{entryVal4}
+		, #{entryVal5}
+		, #{entryVal6}
+		, #{entryVal7}
+		, #{entryVal8}
+		, #{custNo}
+		, CURRENT_TIMESTAMP
+		, #{custNo}
+		, CURRENT_TIMESTAMP
+		)	
+	</insert>
+	
+	<select id="getEntryReplyCount" resultType="int" parameterType="Plan">
+		/* TsfPlanning.getEntryReplyCount */		
+		SELECT COUNT(*) AS COUNT
+		FROM TB_PLAN_ENTRY
+		WHERE PLAN_SQ = #{planSq}
+	</select>
+	
+	
+	<delete id="deleteEntryReply" parameterType="Plan">
+		/* TsfPlanning.deleteEntryReply */
+		DELETE 
+		FROM TB_PLAN_ENTRY
+		WHERE PLAN_ENTRY_SQ = #{planEntrySq}		
+	</delete>
+	
 </mapper>
 </mapper>

+ 15 - 8
src/main/webapp/WEB-INF/views/mob/common/layout/GoodsLayoutMob.html

@@ -13,16 +13,23 @@
 		<!-- GNB -->
 		<!-- GNB -->
 			
 			
 		<header class=" "> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
 		<header class=" "> <!-- 서브페이지에서는 <header>의 클래스.main 제거 -->
-			<section class="htop trans" id="htopSub" style="background: #fff;">
+			<section class="htop" id="htopSub">
 				<button class="btn_back" title="이전페이지로">
 				<button class="btn_back" title="이전페이지로">
-					<span>
-						<i class="gl1"></i>
-						<i class="gl2"></i>
-						<i class="gl3"></i>
-					</span>
+					<span><i class="gl1"></i><i class="gl2"></i><i class="gl3"></i></span>
 				</button>
 				</button>
-				<!-- 210405_타이틀 수정 -->
-				<!--<h1 id="htopTitle">PAGE TITLE</h1>-->
+				<h1 id="htopTitle"></h1>
+				<div class="button_wrap">
+					<button class="home">
+						<img src="/images/mo/ico_btn_home.png" alt="홈">
+					</button>
+					<button class="search">
+						<img src="/images/mo/ico_btn_search.png" alt="검색">
+					</button>
+					<button class="store">
+						<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
+						<span>99+</span>
+					</button>
+				</div>
 			</section>
 			</section>
 		</header>
 		</header>
 
 

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

@@ -23,7 +23,7 @@
 		<section class="content mb_idInquiry_1">
 		<section class="content mb_idInquiry_1">
 			<div class="inner">
 			<div class="inner">
 				<div class="close">
 				<div class="close">
-					<a href="javascript:history.back(-1);" class="btn_close"><span></span><span></span></a>
+					<a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
 				</div>
 				</div>
 			</div>
 			</div>
 			<div class="inner">
 			<div class="inner">

+ 18 - 19
src/main/webapp/WEB-INF/views/mob/goods/CardPrmtFormMob.html

@@ -21,17 +21,17 @@
 		</div>
 		</div>
 		<div class="modal-body" th:if="${cardInfoList != null and !cardInfoList.empty}">
 		<div class="modal-body" th:if="${cardInfoList != null and !cardInfoList.empty}">
 			<div class="pop_cont">
 			<div class="pop_cont">
-				<th:block th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'A' }">
-				<div class="benefit_blk" th:if="${status.first}">
+				<th:block  th:with="selection=${cardInfoList.?[prmtGb == 'A']}">
+				<div class="benefit_blk" th:if="${selection.size() > 0}">
 					<h6>할인혜택</h6>
 					<h6>할인혜택</h6>
-					<div class="tbl type1" th:if="${status.first}">
-						<table th:if="${status.first}">
-							<colgroup  th:if="${status.first}">
-								<col width="85"  th:if="${status.first}">
-								<col width="*"  th:if="${status.first}">
+					<div class="tbl type1" >
+						<table >
+							<colgroup  >
+								<col width="85"  >
+								<col width="*"  >
 							</colgroup>
 							</colgroup>
-							<tbody  th:if="${status.last}">
-								<tr >
+							<tbody >
+								<tr th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'A' }">
 									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
 									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
 									<td>
 									<td>
 										<div class="info_card">
 										<div class="info_card">
@@ -51,18 +51,17 @@
 						</table>
 						</table>
 					</div>
 					</div>
 				</div>
 				</div>
-				</th:block>
-				<th:block th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'B' }">
-				<div class="benefit_blk" th:if="${status.first}">
+				<th:block th:with="selection=${cardInfoList.?[prmtGb == 'B']}">
+				<div class="benefit_blk" th:if="${selection.size() > 0}">
 					<h6>무이자 할부</h6>
 					<h6>무이자 할부</h6>
-					<div class="tbl type1" th:if="${status.first}">
-						<table th:if="${status.first}">
-							<colgroup th:if="${status.first}">
-								<col width="85" th:if="${status.first}">
-								<col width="*" th:if="${status.first}">
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="85">
+								<col width="*">
 							</colgroup>
 							</colgroup>
-							<tbody th:if="${status.first}">
-								<tr>
+							<tbody>
+								<tr th:each="cardInfo, status : ${cardInfoList}" th:if="${cardInfo.prmtGb == 'B' }">
 									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
 									<th th:text="${cardInfo.prmtTargetNm}">KB국민카드</th>
 									<td>
 									<td>
 										<div class="info_card">
 										<div class="info_card">

+ 178 - 134
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -38,130 +38,145 @@
 		<input type="hidden" name="goodsType" th:value="${goodsInfo.goodsType}"/>
 		<input type="hidden" name="goodsType" th:value="${goodsInfo.goodsType}"/>
 		<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
 		<input type="hidden" name="selfGoodsYn" th:value="${goodsInfo.selfGoodsYn}"/>
 	<section class="pd_detail">
 	<section class="pd_detail">
-		<div class="inner wide">
-			<!-- 제품사진영역 -->
-			<div class="thumb_box"  th:if="${goodsImgList != null and !goodsImgList.empty}">
-				<div class="area_slider">
-					<div class="swiper-container thumb_list">
-						<div class="swiper-wrapper">
-							<!-- <div class="swiper-slide"><div class="thumb mov"><img src="/images/mo/thumb/tmp_pdDetail1.jpg" alt=""></div></div> -->
-							<th:block th:each="goodsImg, status : ${goodsImgList}">
-							<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
-															or #strings.contains(goodsImg.sysImgNm,'_L1.')
-															or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
-							<div class="thumb"><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></div></div>
-							</th:block>
+		<!-- 210409_ 구조변경 : .pd_info, .pd_info1 추가  -->
+		<div class="pd_info">
+			<div class="pd_info1" data-speed="10">
+
+				<div class="inner wide" th:if="${goodsImgList != null and !goodsImgList.empty}">
+					<!-- 제품사진영역 -->
+					<div class="thumb_box">
+						<div class="area_slider">
+							<div class="swiper-container thumb_list">
+								<div class="swiper-wrapper">
+									<th:block th:each="goodsImg, status : ${goodsImgList}">
+									<div class="swiper-slide" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+																or #strings.contains(goodsImg.sysImgNm,'_L1.')
+																or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+										<div class="thumb" ><img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'"></div></div>  <!--  mov -->
+									</th:block>	
+								</div>
+								<!-- Add Pagination -->
+								<div class="swiper-pagination"></div>
+							</div>
 						</div>
 						</div>
-						<!-- Add Pagination -->
-						<div class="swiper-pagination"></div>
 					</div>
 					</div>
+					<!-- //제품사진영역 -->
 				</div>
 				</div>
+
 			</div>
 			</div>
-			<!-- //제품사진영역 -->
-		</div>
-		
-		<div class="inner">
-			<div class="timer_box" style="display:none;">
-				<p>
-					<span class="tt">남은시간</span>
-					<span class="timer">
-						<em id="d-days">0</em>
-						<em id="d-hours">0</em>
-						<em id="d-minutes">0</em>
-						<em id="d-seconds">0</em>
-					</span>
-				</p>
-			</div>
-			<div class="descript_box">
-				<p class="name" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업</p>
-				<p class="comment" th:text="${goodsInfo.goodsTnm}">#가을 느낌 물씬!</p>
-				<p class="price_blk">
-					<span class="sale_price"><em th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}">134,100</em>원</span>
-					<span class="org_price" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" ><del><em th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</em>원</del></span>
-					<span class="sale_percent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-				</p>
-				<p class="save_point" th:if="${goodsInfo.pntAmt > 0}">스타일포인트 <th:block th:text="${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}"></th:block>P 적립예정</p>
-				<div class="btn_group_flex">
-					<div><button class="btn btn_default" id="btn_saleCoupon_pop" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
+
+			<div class="inner">
+				<!-- 210409_ 구조변경 : .covered 추가  -->
+				<div class="covered">
+					<div class="timer_box" style="display:none;">
+						<p>
+							<span class="tt">남은시간</span>
+							<span class="timer">
+								<em id="d-days">0</em>
+								<em id="d-hours">0</em>
+								<em id="d-minutes">0</em>
+								<em id="d-seconds">0</em>
+							</span>
+						</p>
+					</div>
+					<div class="descript_box">
+						<p class="name" th:text="${goodsInfo.goodsFullNm}">유니 삼단블록 플리스 집업</p>
+						<p class="comment" th:text="${goodsInfo.goodsTnm}">#가을 느낌 물씬!</p>
+						<p class="price_blk">
+							<span class="sale_price"><em th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}">134,100</em>원</span>
+							<span class="org_price" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}" ><del><em th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">149,000</em>원</del></span>
+							<span class="sale_percent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+						</p>
+						<p class="save_point" th:if="${goodsInfo.pntAmt > 0}">스타일포인트 <th:block th:text="${#numbers.formatInteger(goodsInfo.pntAmt, 0,'COMMA')}"></th:block>P 적립예정</p>
+						<div class="btn_group_flex">
+							<div><button class="btn btn_default" id="btn_saleCoupon_pop" th:onclick="cfGoodsCouponInfo([[${goodsInfo.goodsCd}]],[[${goodsInfo.goodsType}]])">쿠폰받기</button></div>
+						</div>
+					</div>
 				</div>
 				</div>
 			</div>
 			</div>
-		</div>
 
 
-		<div class="inner wide" th:if="${not #strings.isEmpty(goodsInfo.delvResDt) }">
-			<div class="desc_status">예약판매 상품 - <em th:text="${goodsInfo.delvResDt}">2020.12.30</em> 출고예정</div>
-		</div>
+			<div class="inner wide" th:if="${not #strings.isEmpty(goodsInfo.delvResDt) }">
+				<div class="desc_status">예약판매 상품 - <em th:text="${goodsInfo.delvResDt}">2020.12.30</em> 출고예정</div>
+			</div>
 
 
-		<div class="inner">
-			<div class="option_box">
-				<th:block th:if="${goodsInfo.selfGoodsYn =='Y' }"> <!-- 자사상품 -->
-				<th:block th:if="${goodsInfo.goodsType =='G056_N' }">	<!-- 일반상품 -->
-				<div class="opt_color"  th:if="${goodsOption1List != null and !goodsOption1List.empty}">
-					<div class="opt_header">
-						<span class="title">컬러</span>
-						<span class="color" th:text="${goodsInfo.colorNm}">그레이</span>
-					</div>
-					<ul>
-						<li th:each="goodsOption1, status : ${goodsOption1List}">
-							<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
-								<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
-							</a>
-						</li>
-					</ul>
-				</div>
-				<div class="opt_size"  th:if="${goodsOption2List != null and !goodsOption2List.empty}" >
-					<div class="opt_header">
-						<span class="title">사이즈</span>
+			<div class="inner">
+				<div class="option_box">
+					<th:block th:if="${goodsInfo.selfGoodsYn =='Y' }"> <!-- 자사상품 -->
+					<th:block th:if="${goodsInfo.goodsType =='G056_N' }">	<!-- 일반상품 -->
+					<div class="opt_color"  th:if="${goodsOption1List != null and !goodsOption1List.empty}">
+						<div class="opt_header">
+							<span class="title">컬러</span>
+							<span class="color" th:text="${goodsInfo.colorNm}">그레이</span>
+						</div>
+						<ul>
+							<li th:each="goodsOption1, status : ${goodsOption1List}">
+								<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
+									<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
+								</a>
+							</li>
+						</ul>
 					</div>
 					</div>
-					<div class="form_field2">
-						<div class="lap">
-							<div  th:each="goodsOption2, status : ${goodsOption2List}">
-								<label>
-									<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
-											th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"
-											th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )" />
-									<span th:text="${goodsOption2.optCd2}" >100</span>
-								</label>
+					<div class="opt_size"  th:if="${goodsOption2List != null and !goodsOption2List.empty}">
+						<div class="opt_header">
+							<span class="title">사이즈</span>
+							<span class="size">
+								<em class="selectOptCd1"></em>
+								<em class="selectOptCd1addPrice"></em>
+							</span>
+						</div>
+						<div class="form_field">
+							<div th:each="goodsOption2, status : ${goodsOption2List}">
+								<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
+										th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"
+										th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )" />
+								<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}">90</span></label>
 							</div>
 							</div>
 						</div>
 						</div>
 					</div>
 					</div>
+					<div class="info_restock" style="display:none;"><a href="javascript:void(0);" id="btn_pushRestock_pop" class="btn_popup" th:onclick="cfGoodsInstockAlarmInfo([[${goodsInfo.goodsCd}]], [[${goodsInfo.colorCd}]])">재입고 알림 신청</a></div>
+					</th:block>
+					</th:block>
 				</div>
 				</div>
-				</th:block>
-				</th:block>
-				<div class="info_restock" style="display:none;"><a href="javascript:void(0);" id="btn_pushRestock_pop" class="btn_popup" th:onclick="cfGoodsInstockAlarmInfo([[${goodsInfo.goodsCd}]], [[${goodsInfo.colorCd}]])">재입고 알림 신청</a></div>
 			</div>
 			</div>
-		</div>
-		
-		<div class="inner">
-			<div class="benefit_box" th:if="${(cardInfoList != null and !cardInfoList.empty) or
-											(goodsCouponList != null and !goodsCouponList.empty)
-											}" >
-				<dl class="bnf_shopping" th:if="${goodsCouponList != null and !goodsCouponList.empty}">
-					<dt>쇼핑혜택</dt>
-					<dd>
-						<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
-							<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
-							최대 <em>
-								<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
-								<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
-							</em> 쿠폰 할인
+
+			<div class="inner" th:if="${(cardInfoList != null and !cardInfoList.empty) or
+									(goodsCouponList != null and !goodsCouponList.empty) or
+									(tmtbList != null and !tmtbList.empty) or
+									(freeGoodsList != null and !freeGoodsList.empty)}" >
+				<div class="benefit_box">
+					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (tmtbList != null and !tmtbList.empty)}">
+						<dt>쇼핑혜택</dt>
+						<dd>
+							<th:block th:if="${goodsCouponList != null and !goodsCouponList.empty}">
+							<span th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">최대 <em>
+										<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
+										<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
+										</em> 쿠폰 할인</span>
+							</th:block> 
+							<th:block th:if="${tmtbList != null and !tmtbList.empty}">
+							<span th:each="tmtb, status : ${tmtbList}" th:if="${status.first}">
+								<em><th:block th:text="${#numbers.formatInteger(tmtb.sectionVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.sectionGb == 'G810_10')? '개':'금액'}"></th:block></em> 이상 구매 시 
+								<em><th:block th:text="${#numbers.formatInteger(tmtb.dcVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.dcWay == 'G240_10')? '원':'%'}"></th:block></em></em> 할인
+							</span>
 							</th:block>
 							</th:block>
-						</span> 
-						<span><em>99개</em> 이상 구매 시 <em>9,999,999원</em> 할인</span>
-						<span>미니언즈 우산 증정</span>
-						<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
-					</dd>
-				</dl>
-				<dl class="bnf_card"  th:if="${cardInfoList != null and !cardInfoList.empty}">
-					<dt>카드혜택</dt>
-					<dd>
-						<th:block th:each="cardInfo, status : ${cardInfoList}">
-						<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb != '3'}"><th:block th:text="${cardInfo.prmtTargetNm}"></th:block> <em><th:block th:text="${#numbers.formatInteger(cardInfo.dcVal, 0,'COMMA')+ cardInfo.dcWayNm}"></th:block></em> <th:block th:text="${cardInfo.prmtGbNm}"></span>
-						<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb == '3'}" th:text="${cardInfo.prmtNm}">프로모션명</span>
-						<span th:if="${cardInfo.prmtGb == 'B'}">신용카드 무이자 혜택</span>
-						</th:block>
-						<button type="button" id="btn_bnfCard_pop" class="btn_popup" onclick="cfCardInfo();return false;"><span>자세히</span></button>
-					</dd>
-				</dl>
+							<span th:if="${freeGoodsList != null and !freeGoodsList.empty}">
+							<th:block th:each="freeGoods, status : ${freeGoodsList}" th:if="${status.first}">
+							<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></span>
+							<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
+						</dd>
+					</dl>
+					<dl class="bnf_card">
+						<dt>카드혜택</dt>
+						<dd>
+							<th:block th:each="cardInfo, status : ${cardInfoList}">
+							<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb != '3'}"><th:block th:text="${cardInfo.prmtTargetNm}"></th:block> <em><th:block th:text="${#numbers.formatInteger(cardInfo.dcVal, 0,'COMMA')+ cardInfo.dcWayNm}"></th:block></em> <th:block th:text="${cardInfo.prmtGbNm}"></span>
+							<span th:if="${cardInfo.prmtGb == 'A' and cardInfo.dcGb == '3'}" th:text="${cardInfo.prmtNm}">프로모션명</span>
+							<span th:if="${cardInfo.prmtGb == 'B'}">신용카드 무이자 혜택</span>
+							</th:block>
+							<button type="button" id="btn_bnfCard_pop" class="btn_popup" onclick="cfCardInfo();return false;"><span>자세히</span></button>
+						</dd>
+					</dl>
+				</div>
 			</div>
 			</div>
 		</div>
 		</div>
 
 
@@ -542,11 +557,11 @@
 				</div>
 				</div>
 				<!-- //STYLE24의 스타일링 추천 -->
 				<!-- //STYLE24의 스타일링 추천 -->
 				<!-- 동일브랜드 추천상품 -->
 				<!-- 동일브랜드 추천상품 -->
-				<div class="pd_samebrand" id="goodsRecommendbArea">
+				<div class="pd_clickother" id="goodsRecommendbArea">
 				</div>
 				</div>
 				<!-- //동일브랜드 추천상품 -->
 				<!-- //동일브랜드 추천상품 -->
 				<!-- 이 상품과 비슷한 상품영역 -->
 				<!-- 이 상품과 비슷한 상품영역 -->
-				<div class="pd_relate" id="goodsLikebArea">
+				<div class="pd_clickother" id="goodsLikebArea">
 				</div>
 				</div>
 				<!-- //이 상품과 비슷한 상품영역 -->
 				<!-- //이 상품과 비슷한 상품영역 -->
 			</div>
 			</div>
@@ -580,20 +595,20 @@
 						<div class="opt_size" th:if="${goodsOption2List != null and !goodsOption2List.empty}">
 						<div class="opt_size" th:if="${goodsOption2List != null and !goodsOption2List.empty}">
 							<div class="opt_header">
 							<div class="opt_header">
 								<span class="title">사이즈</span>
 								<span class="title">사이즈</span>
+								<span class="size">
+									<em class="selectOptCd1"></em>
+									<em class="selectOptCd1addPrice"></em>
+								</span>
 							</div>
 							</div>
-							<div class="form_field2">
-								<div class="lap">
-									<div th:each="goodsOption2, status : ${goodsOption2List}">
-										<label>
-											<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
-													th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"
-													th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )" />
-											<span th:text="${goodsOption2.optCd2}" >100</span>
-										</label>
-									</div>
-								</div>
+							<div class="form_field">
+							<div th:each="goodsOption2, status : ${goodsOption2List}">
+								<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
+										th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd2=${goodsOption2.optCd2}, optCd=${goodsOption2.optCd}"
+										th:onclick="fnViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )" />
+								<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}">90</span></label>
 							</div>
 							</div>
 						</div>
 						</div>
+						</div>
 						<!-- 해당상품 품절시 노출 -->
 						<!-- 해당상품 품절시 노출 -->
 						<div class="info_restock" style="display:none;"><a href="javascript:void(0);" id="btn_pushRestock_pop" class="btn_popup" th:onclick="cfGoodsInstockAlarmInfo([[${goodsInfo.goodsCd}]], [[${goodsInfo.colorCd}]])">재입고 알림 신청</a></div>
 						<div class="info_restock" style="display:none;"><a href="javascript:void(0);" id="btn_pushRestock_pop" class="btn_popup" th:onclick="cfGoodsInstockAlarmInfo([[${goodsInfo.goodsCd}]], [[${goodsInfo.colorCd}]])">재입고 알림 신청</a></div>
 						<!-- //해당상품 품절시 노출 -->
 						<!-- //해당상품 품절시 노출 -->
@@ -816,7 +831,6 @@
 			</div>
 			</div>
 		</div>
 		</div>
 		<!-- 구매하기팝업 -->
 		<!-- 구매하기팝업 -->
-	
 	</section>
 	</section>
 	<!-- ★ 컨텐츠 종료 -->	
 	<!-- ★ 컨텐츠 종료 -->	
 </form>
 </form>
@@ -839,9 +853,36 @@
 		</div>
 		</div>
 	</div>
 	</div>
 	<!-- //바닥메뉴 -->
 	<!-- //바닥메뉴 -->
+	
+	<div class="pd_pop full_pop pd_itemthumb_pop" id="pdItemThumbPop" style="display: none;" th:if="${goodsImgList != null and !goodsImgList.empty}" > 
+		<div class="full_popup_wrap">
+			<h5 class="sr-only">상품썸네일 크게보기</h5>
+			<div class="btn_close">
+				<a href="javascript:void(0);" id="btn_close_itemThumbPop" onclick="cfCloseLayer('pdItemThumbPop')">닫기버튼</a>
+			</div>
+			<div class="full_pop_container">
+				<div id="popThumb1" class="scaleview">
+					<video id="video_0" loop="" autoplay="" poster="https://images.kolonmall.com/Prod_Img/JN/2021/LM15/L4PAM21041GRX_LM15.jpg" data-playing="">
+					<source src="https://images.kolonmall.com/Prod_Img/product_video/L4PAM21041GRX.mp4" type="video/mp4">
+					</video>
+					<div class="video_controls">
+						<button type="button" class="btn_video_play"><span>play</span></button>
+						<button type="button"class="btn_video_pause"><span>pause</span></button>
+					</div>
+				</div>
+				<th:block th:each="goodsImg, status : ${goodsImgList}">
+				<div id="popThumb2" class="scaleview" th:if="${ not (#strings.contains(goodsImg.sysImgNm,'_S1.') 
+													or #strings.contains(goodsImg.sysImgNm,'_L1.')
+													or #strings.contains(goodsImg.sysImgNm,'_L2.'))}">
+					<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=1080'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+				</div>
+				</th:block>
+			</div>
+		</div>
+	</div>
+		
 </main>
 </main>
 
 
-	
 <script th:inline="javascript">
 <script th:inline="javascript">
 /*<![CDATA[*/
 /*<![CDATA[*/
 	
 	
@@ -892,13 +933,13 @@
 		if (selfGoodsYn == "Y"){
 		if (selfGoodsYn == "Y"){
 			$target = $obj;
 			$target = $obj;
 			$target.prop("checked",true);
 			$target.prop("checked",true);
-			$("#selectOptCd1").html(optCd2);
+			$(".selectOptCd1").html(optCd2);
 		}else{
 		}else{
 			$target = $obj.find('input[name="opt2"]');
 			$target = $obj.find('input[name="opt2"]');
 		}
 		}
 		let addPrice  = $target.attr("addPrice");
 		let addPrice  = $target.attr("addPrice");
-		$("#selectOptCd1addPrice").html('');
-		if (Number(addPrice) > 0) $("#selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
+		$(".selectOptCd1addPrice").html('');
+		if (Number(addPrice) > 0) $(".selectOptCd1addPrice").html("(+" + addPrice.addComma() + ")");
 		
 		
 		$("#cartForm  input[name=optCd]").val(optCd);
 		$("#cartForm  input[name=optCd]").val(optCd);
 		$("#cartForm  input[name=optCd1]").val(optCd1);
 		$("#cartForm  input[name=optCd1]").val(optCd1);
@@ -1517,6 +1558,11 @@
 			var opt_select = new sCombo('.pd .op1 .opt_select .select_custom');
 			var opt_select = new sCombo('.pd .op1 .opt_select .select_custom');
 		});
 		});
 		
 		
+		$(document).on('click','.pd .pop_option_select .item_opt1',function(e){
+			$(this).toggleClass("on");
+			$(this).children(".combo").children(".list").slideToggle(0);
+			return false;
+		});
 
 
 		if (!gagajf.isNull([[${goodsInfo.socialSq}]])){
 		if (!gagajf.isNull([[${goodsInfo.socialSq}]])){
 			$('.timer_box').css('display', 'block');
 			$('.timer_box').css('display', 'block');
@@ -1630,6 +1676,11 @@
 			},
 			},
 		});
 		});
 
 
+		$(document).on('click','.pd_detail .thumb_box',function(e){
+			$('#pdItemThumbPop').css("display", "block");
+			return false;
+		})
+		
 		$(document).on('click','.pd_bestreviewdetail_pop .thumblist ul li',function(e){
 		$(document).on('click','.pd_bestreviewdetail_pop .thumblist ul li',function(e){
 
 
 			$(this).parents(".swiper-slide").find(".review > .pic > .thumb").empty();
 			$(this).parents(".swiper-slide").find(".review > .pic > .thumb").empty();
@@ -1746,15 +1797,8 @@
 			copyToClipboard();
 			copyToClipboard();
 		});
 		});
 		
 		
-		
-		
 	});
 	});
 	
 	
-	// 상품 대표설명 > 좌측 상품썸네일 navi, 우측 상품정보 고정 
-	$(window).scroll(function(){
-		
-	});
-
 /*]]>*/
 /*]]>*/
 </script>
 </script>
 
 

+ 10 - 18
src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html

@@ -36,16 +36,16 @@
 								</tr>
 								</tr>
 								<tr th:if="${(goodsCouponList != null and !goodsCouponList.empty)}">
 								<tr th:if="${(goodsCouponList != null and !goodsCouponList.empty)}">
 									<th>쿠폰할인</th>
 									<th>쿠폰할인</th>
-									<td th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">최대
+									<td th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}"><p>최대
 									<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
 									<th:block th:if="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${#numbers.formatInteger(goodsCoupon.dcVal, 0,'COMMA')}원|"></th:block>
 									<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
 									<th:block th:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
-									 할인</td>
+									 할인</p></td>
 								</tr>
 								</tr>
 							</tbody>
 							</tbody>
 						</table>
 						</table>
 					</div>
 					</div>
 				</div>
 				</div>
-				<div class="benefit_blk">
+				<div class="benefit_blk" th:if="${(tmtbList != null and !tmtbList.empty)}">
 					<h6>다다익선</h6>
 					<h6>다다익선</h6>
 					<div class="tbl type1">
 					<div class="tbl type1">
 						<table>
 						<table>
@@ -54,19 +54,15 @@
 								<col width="*">
 								<col width="*">
 							</colgroup>
 							</colgroup>
 							<tbody>
 							<tbody>
-								<tr>
-									<th>9,999개 이상 구매 시</th>
-									<td>9,999,999원 할인</td>
-								</tr>
-								<tr>
-									<th>9,999개 이상 구매 시</th>
-									<td>20% 할인</td>
+								<tr th:each="tmtb, status : ${tmtbList}">
+									<th><th:block th:text="${#numbers.formatInteger(tmtb.sectionVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.sectionGb == 'G810_10')? '개':'금액'}"></th:block> 이상 구매 시</th>
+									<td><p><th:block th:text="${#numbers.formatInteger(tmtb.dcVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.dcWay == 'G240_10')? '원':'%'}"></th:block> 할인</p></td>
 								</tr>
 								</tr>
 							</tbody>
 							</tbody>
 						</table>
 						</table>
 					</div>
 					</div>
 				</div>	   
 				</div>	   
-				<div class="benefit_blk">
+				<div class="benefit_blk" th:if="${freeGoodsList != null and !freeGoodsList.empty}">
 					<h6>사은품</h6>
 					<h6>사은품</h6>
 					<div class="tbl type1">
 					<div class="tbl type1">
 						<table>
 						<table>
@@ -75,13 +71,9 @@
 								<col width="*">
 								<col width="*">
 							</colgroup>
 							</colgroup>
 							<tbody>
 							<tbody>
-								<tr>
-									<th>99,999,999원 이상 구매 시</th>
-									<td>미니언즈 우산 99개 증정</td>
-								</tr>
-								<tr>
-									<th>99,999,999원 이상 구매 시</th>
-									<td>미니언즈 우산 99개 증정 외 택1</td>
+								<tr  th:each="freeGoods, status : ${freeGoodsList}">
+									<th><th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시</th>
+									<td><p><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></p></td>
 								</tr>
 								</tr>
 							</tbody>
 							</tbody>
 						</table>
 						</table>

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

@@ -32,7 +32,7 @@
 				<div class="brand_banner_list" th:if="${mainBrandList != null}" th:with="imgUrl=${@environment.getProperty('upload.image.view')}">
 				<div class="brand_banner_list" th:if="${mainBrandList != null}" th:with="imgUrl=${@environment.getProperty('upload.image.view')}">
 					<ul>
 					<ul>
 						<li th:each="item, status : ${mainBrandList}">
 						<li th:each="item, status : ${mainBrandList}">
-							<a href="javascript:void(0);" th:style="${'background-image:url('+imgUrl+ item.logoFileNm+');'}">
+							<a href="javascript:void(0);" th:onClick="cfnGoToBrandMain([[${item.brandGroupNo}]]);" th:style="${'background-image:url('+imgUrl+ item.logoFileNm+');'}">
 								<span><em th:text="${item.brandGroupNm}">BUCKAROO</em></span>
 								<span><em th:text="${item.brandGroupNm}">BUCKAROO</em></span>
 							</a>
 							</a>
 						</li>
 						</li>

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

@@ -21,7 +21,9 @@
 		</div>
 		</div>
 		<div class="modal-body" th:if="${cardInfoList != null and !cardInfoList.empty}">
 		<div class="modal-body" th:if="${cardInfoList != null and !cardInfoList.empty}">
 			<div class="pop_cont">
 			<div class="pop_cont">
-				<div class="benefit_blk">
+				<th:block  th:with="selection=${cardInfoList.?[prmtGb == 'A']}">
+				<div class="benefit_blk"  th:if="${selection.size() > 0}">
+					<th:block >
 					<h6>할인혜택</h6>
 					<h6>할인혜택</h6>
 					<div class="tbl type1">
 					<div class="tbl type1">
 						<table>
 						<table>
@@ -53,8 +55,11 @@
 							</tbody>
 							</tbody>
 						</table>
 						</table>
 					</div>
 					</div>
+					</th:block>
 				</div>
 				</div>
-				<div class="benefit_blk">
+				</th:block>
+				<th:block th:with="selection=${cardInfoList.?[prmtGb == 'B']}">
+				<div class="benefit_blk" th:if="${selection.size() > 0}" >
 					<h6>무이자 할부</h6>
 					<h6>무이자 할부</h6>
 					<div class="tbl type1">
 					<div class="tbl type1">
 						<table>
 						<table>
@@ -76,6 +81,7 @@
 						</table>
 						</table>
 					</div>
 					</div>
 				</div>
 				</div>
+				</th:block>
 				<th:block th:each="cardInfo, status : ${cardInfoList}" >
 				<th:block th:each="cardInfo, status : ${cardInfoList}" >
 				<div class="benefit_blk"  th:if="${cardInfo.prmtGb == 'B' and not #strings.isEmpty(cardInfo.note) and cardInfo.rownum ==  1}">
 				<div class="benefit_blk"  th:if="${cardInfo.prmtGb == 'B' and not #strings.isEmpty(cardInfo.note) and cardInfo.rownum ==  1}">
 					<th:block >
 					<th:block >

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

@@ -133,10 +133,13 @@
 								</div>
 								</div>
 							</div>
 							</div>
 							<div class="benefit_box" th:if="${(cardInfoList != null and !cardInfoList.empty) or
 							<div class="benefit_box" th:if="${(cardInfoList != null and !cardInfoList.empty) or
-																(goodsCouponList != null and !goodsCouponList.empty)
-															}" >
+															(goodsCouponList != null and !goodsCouponList.empty) or
+															(tmtbList != null and !tmtbList.empty) or
+															(freeGoodsList != null and !freeGoodsList.empty)}" >
 								<dl>
 								<dl>
-									<div class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (tmtbList != null and !tmtbList.empty)}">
+									<div class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or 
+																		(tmtbList != null and !tmtbList.empty) or 
+																		(freeGoodsList != null and !freeGoodsListbList.empty) }">
 										<dt>쇼핑혜택</dt>
 										<dt>쇼핑혜택</dt>
 											<dd>
 											<dd>
 												<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
 												<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
@@ -153,7 +156,9 @@
 												<em class="c_primary"><th:block th:text="${#numbers.formatInteger(tmtb.dcVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.dcWay == 'G240_10')? '원':'%'}"></th:block></em></em> 할인
 												<em class="c_primary"><th:block th:text="${#numbers.formatInteger(tmtb.dcVal, 0,'COMMA')}"></th:block><th:block th:text="${(tmtb.dcWay == 'G240_10')? '원':'%'}"></th:block></em></em> 할인
 												</th:block>
 												</th:block>
 												</span>
 												</span>
-												<span>미니언즈 우산 증정</span>
+												<span th:if="${freeGoodsList != null and !freeGoodsList.empty}">
+												<th:block th:each="freeGoods, status : ${freeGoodsList}" th:if="${status.first}">
+												<th:block th:text="${freeGoods.goodsNm}"></th:block> 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></span>
 												<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
 												<button type="button" id="btn_bnfShopping_pop" class="btn_popup" th:onclick="cfGoodsShopBenefitInfo([[${goodsInfo.goodsCd}]])"><span>자세히</span></button>
 											</dd>
 											</dd>
 									</div>
 									</div>

+ 5 - 9
src/main/webapp/WEB-INF/views/web/goods/GoodsShopBenefitFormWeb.html

@@ -61,8 +61,8 @@
 							</tbody>
 							</tbody>
 						</table>
 						</table>
 					</div>
 					</div>
-				</div>	   
-				<div class="benefit_blk">
+				</div>
+				<div class="benefit_blk" th:if="${freeGoodsList != null and !freeGoodsList.empty}">
 					<h6>사은품</h6>
 					<h6>사은품</h6>
 					<div class="tbl type1">
 					<div class="tbl type1">
 						<table>
 						<table>
@@ -71,13 +71,9 @@
 								<col width="*">
 								<col width="*">
 							</colgroup>
 							</colgroup>
 							<tbody>
 							<tbody>
-								<tr>
-									<th>99,999,999원 이상 구매 시</th>
-									<td>미니언즈 우산 99개 증정</td>
-								</tr>
-								<tr>
-									<th>99,999,999원 이상 구매 시</th>
-									<td>미니언즈 우산 99개 증정 외 택1</td>
+								<tr th:each="freeGoods, status : ${freeGoodsList}">
+									<th><th:block th:text="${#numbers.formatInteger(freeGoods.sectionVal, 0,'COMMA')}"></th:block></th:block><th:block th:text="${(freeGoods.sectionGb == 'G810_10')? '개':'원'}"></th:block> 이상 구매 시</th>
+									<td><th:block th:text="${freeGoods.goodsNm}"></th:block> <th:block th:text="${#numbers.formatInteger(freeGoods.itemQty, 0,'COMMA')}"></th:block>개 증정 <th:block th:if="${freeGoods.allYn == 'N'}" th:text="외 택1"></th:block></td>
 								</tr>
 								</tr>
 							</tbody>
 							</tbody>
 						</table>
 						</table>

+ 30 - 15
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -49,7 +49,7 @@
 												th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
 												th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
 												<span>페이스북</span>
 												<span>페이스북</span>
 											</button>
 											</button>
-											<button type="button" class="tw"
+											<button type="button" class="tw" 
 												th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
 												th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm+ '#style24몰'}', '', '');|">
 												<span>트위터</span>
 												<span>트위터</span>
 											</button>
 											</button>
@@ -287,6 +287,7 @@ let goods2 = [[${goods2Info}]];
 let goods4 = [[${goods4Info}]];
 let goods4 = [[${goods4Info}]];
 let template =[[${templateOrd}]];
 let template =[[${templateOrd}]];
 let replyList = [[${replyList}]];
 let replyList = [[${replyList}]];
+let replyCount = [[${replyCount}]];
 let _mall = [[${@environment.getProperty('domain.front')}]];
 let _mall = [[${@environment.getProperty('domain.front')}]];
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
@@ -753,9 +754,6 @@ var fnTextConfirm = function() {
 var ajaxReplyList = function () {
 var ajaxReplyList = function () {
 	gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10);
 	gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10);
 	gagaPaging.load(1);
 	gagaPaging.load(1);
-	 /* $.getJSON('/planning/reply/list?planSq='+plan.planSq, function(result, status) { */
-		
-	/*  }); */
 }
 }
 
 
 var fnSearchCallback = function (result) {
 var fnSearchCallback = function (result) {
@@ -763,7 +761,7 @@ var fnSearchCallback = function (result) {
 	 if (result!=null) {
 	 if (result!=null) {
 		 var html = '';
 		 var html = '';
 		 html += '<div class="cmt_list_tit">';
 		 html += '<div class="cmt_list_tit">';
-		 html += '	<strong>댓글</strong><span class="cnt">('+result.replyList.length.addComma()+')</span>';
+		 html += '	<strong>댓글</strong><span class="cnt">('+result.replyCount.addComma()+')</span>';
 		 html += '</div>';
 		 html += '</div>';
 		 if (result.replyList.length>0) {
 		 if (result.replyList.length>0) {
 			 html += '<ul class="cmt_list">';
 			 html += '<ul class="cmt_list">';
@@ -775,15 +773,12 @@ var fnSearchCallback = function (result) {
 				 html += '		</div>';
 				 html += '		</div>';
 				 html += '		<div class="cmt_cont">';
 				 html += '		<div class="cmt_cont">';
 				 html += '			<div class="img_wrap clear">';
 				 html += '			<div class="img_wrap clear">';
-				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img01.jpg" alt="썸네일"></span>';
-				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img02.jpg" alt="썸네일"></span>';
-				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img03.jpg" alt="썸네일"></span>';
-				 html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img04.jpg" alt="썸네일"></span>';
+				// html += '				<span class="pics"><img class="picsThumbs" src="/images/pc/thumb/ev_list_img01.jpg" alt="썸네일"></span>';
 				 html += '			</div>';
 				 html += '			</div>';
 				 html += '			<p>'+item.entryVal1+'</p>';
 				 html += '			<p>'+item.entryVal1+'</p>';
 				 if (item.entryCustNo == result.custNo) {
 				 if (item.entryCustNo == result.custNo) {
-					 html += '			<button class="btn btn_default btn_del"><span>삭제</span></button>';
-				}
+					 html += '			<button class="btn btn_default btn_del" value="'+item.planEntrySq+'" onclick="fnDelReply(this.value)"><span>삭제</span></button>';
+				 }
 				 html += '		</div>';
 				 html += '		</div>';
 				 html += '	</li>';
 				 html += '	</li>';
 			 });
 			 });
@@ -805,6 +800,23 @@ var fnSearchCallback = function (result) {
 	gagaPaging.createPagination(result.paging.pageable);
 	gagaPaging.createPagination(result.paging.pageable);
 }
 }
 
 
+// 댓글 삭제
+var fnDelReply = function(obj) {
+	
+	data = {planEntrySq : obj};
+	var jsonData = JSON.stringify(data);
+
+	mcxDialog.confirm("댓글을 삭제 하시겠습니까?", {
+		cancelBtnText : "취소",
+		sureBtnText : "확인",
+		sureBtnClick : function() {
+
+		gagajf.ajaxJsonSubmit('/planning/reply/delete', jsonData,function() {
+			ajaxReplyList();	
+			});
+		}
+	})
+}
 $('#fileAdd').on('change', function() { fnChooseFile(this); });
 $('#fileAdd').on('change', function() { fnChooseFile(this); });
 
 
 var fnChooseFile = function(obj,fileNo) {
 var fnChooseFile = function(obj,fileNo) {
@@ -866,7 +878,8 @@ var fnReplySave = function() {
 		return;
 		return;
 	}
 	}
 	
 	
-	data = {content : content};
+	data = {entryVal1 : content,
+			planSq : plan.planSq};
 	var jsonData = JSON.stringify(data);
 	var jsonData = JSON.stringify(data);
 
 
 	mcxDialog.confirm("댓글을 등록 하시겠습니까?", {
 	mcxDialog.confirm("댓글을 등록 하시겠습니까?", {
@@ -875,9 +888,11 @@ var fnReplySave = function() {
 		sureBtnClick : function() {
 		sureBtnClick : function() {
 
 
 		gagajf.ajaxJsonSubmit('/planning/reply/save', jsonData,function() {
 		gagajf.ajaxJsonSubmit('/planning/reply/save', jsonData,function() {
-						
-		});
-	}
+			ajaxReplyList();	
+			$('#replyText').val('');
+			});
+		}
+	})
 }
 }
 
 
 
 

BIN
src/main/webapp/images/mo/ico_btn_home.png


BIN
src/main/webapp/images/mo/ico_btn_search.png


BIN
src/main/webapp/images/mo/ico_btn_store.png


+ 72 - 5
src/main/webapp/ux/mo/js/common_m.js

@@ -4,6 +4,10 @@
 1. Init    (초기설정)
 1. Init    (초기설정)
 
 
 * * * * * * * * * * * * * * * * * * * * * */
 * * * * * * * * * * * * * * * * * * * * * */
+window.addEventListener('load', function(){
+    setTimeout(scrollTo, 0, 0, 1);
+  }, false);
+  
 
 
 $(document).ready(function() {
 $(document).ready(function() {
 
 
@@ -50,13 +54,16 @@ $(document).ready(function() {
                 }, 50);
                 }, 50);
             }
             }
 
 
+            // 210409_스크롤시 헤더 백그라운드 흰색
             var st = $(this).scrollTop();
             var st = $(this).scrollTop();
             if (st > lastScrollTop){
             if (st > lastScrollTop){
                 $(".app .gnb").css("position", "fixed");
                 $(".app .gnb").css("position", "fixed");
+                $(".htop").css("background", "#fff");
                 $(".app .gnb .btn-expand").css("position", "fixed");
                 $(".app .gnb .btn-expand").css("position", "fixed");
                 $(".tabbar").removeClass("fixed");
                 $(".tabbar").removeClass("fixed");
             } else {
             } else {
                 $(".app .gnb").css("position", "fixed");
                 $(".app .gnb").css("position", "fixed");
+                $(".htop").css("background", "#fff");
                 $(".app .gnb .btn-expand").css("position", "fixed");
                 $(".app .gnb .btn-expand").css("position", "fixed");
                 $(".tabbar").addClass("fixed");
                 $(".tabbar").addClass("fixed");
                 setTimeout(function(){
                 setTimeout(function(){
@@ -66,7 +73,14 @@ $(document).ready(function() {
                     }
                     }
                 },300)
                 },300)
             }
             }
+            if(st < 10) {
+                $(".htop").css("background", "transparent");
+            }
             lastScrollTop = st;
             lastScrollTop = st;
+
+            var posiGap = $(window).scrollTop();
+            //console.log(posiGap);
+
         });
         });
 
 
         // items like on/off
         // items like on/off
@@ -654,7 +668,7 @@ $(document).ready(function () {
             popOpenScroll();
             popOpenScroll();
             //$('.btPop_body .lap span').css('color', 'red')
             //$('.btPop_body .lap span').css('color', 'red')
             //console.log($(this)[0]);
             //console.log($(this)[0]);
-            console.log();
+            //console.log();
             $('.container').addClass('btPop_open');
             $('.container').addClass('btPop_open');
             // autome.style.top  = autotop /10 + "vh";
             // autome.style.top  = autotop /10 + "vh";
             if (autotop > 251) {
             if (autotop > 251) {
@@ -776,14 +790,59 @@ $(document).ready(function () {
 /* ================================================== JS branch JS ========================================================*/
 /* ================================================== JS branch JS ========================================================*/
 $( document ).ready( function() {
 $( document ).ready( function() {
 
 
-    /* 마이페이지/상품상세_header style */
-    if($('main').hasClass("my")){
-        $('.htop').css({"border-bottom": "1px solid rgba(0, 0, 0, 0.1)"});
-    }else if(($('main').hasClass("pd"))){
+    /* 주문결제_Header Style */
+    // var odPage = document.getElementsByClassName('od');
+    if($('main').children("section").hasClass("shopping_bag")){
+        $('.htop .home').css({"display": "inline-block"});
+        $('.htop .search').css({"display": "none"});
+        $('.htop .store').css({"display": "none"});
+    }else if($('main').children("section").hasClass("od_gift")){
+        $('.htop .home').css({"display": "none"});
+        $('.htop .search').css({"display": "inline-block"});
+        $('.htop .store').css({"display": "inline-block"});
+    }else if($('main').children("section").hasClass("od_extra")){ //추가결제(특수결제)
+        $('.htop .home').css({"display": "none"});
+        $('.htop .search').css({"display": "none"});
+        $('.htop .store').css({"display": "none"});
+    }else if($('main').children("section").hasClass("odPayment")){ //회원,비회원주문
+        $('.htop .home').css({"display": "none"});
+        $('.htop .search').css({"display": "none"});
+        $('.htop .store').css({"display": "none"});
+    }else if($('main').children("section").hasClass("nonMBorder")){ //비회원주문-로그인
+        $('.htop .home').css({"display": "none"});
+        $('.htop .search').css({"display": "none"});
+        $('.htop .store').css({"display": "none"});
+    };
+
+    /* 상품상세_Header Style */
+    let pdPage = document.getElementsByClassName('pd');
+    if($(pdPage).children("section").hasClass("pd_detail")){
         $('.htop').css({"background": "transparent","position":"absolute","width":"100%"});
         $('.htop').css({"background": "transparent","position":"absolute","width":"100%"});
+        $('.htop h1').css({"border-bottom": "none"});
+        $('.htop h1').css({"display": "none"});
         $('.htop .home').css({"display": "inline-block"});
         $('.htop .home').css({"display": "inline-block"});
     };
     };
     
     
+    /* 마이페이지_Header Style */
+    let container = document.getElementsByClassName('container');
+    if($(container).hasClass('my')){
+        $('.htop').css({"border-bottom": "1px solid rgba(0, 0, 0, 0.1)"});
+    };    
+    /* 마이페이지_비회원_Header Style */
+    let myPage = document.getElementsByClassName('my');
+    if($(myPage).children("nav").hasClass("pnb")){
+        $('.htop .home').css({"display": "none"});
+        $('.htop .search').css({"display": "none"});
+        $('.htop .store').css({"display": "none"});
+    };
+
+    /* 검색_Header Style */
+    let schPage = document.getElementsByClassName('sch');
+    if($(schPage).children("section").hasClass("sch_result")){
+        $('.htop h1').css({"display": "none"});
+        $('.htop .search').css({"display": "none"});
+    };  
+    
         /* 고객센터_accordion */
         /* 고객센터_accordion */
         $(document).on('click','.cs .foldGroup .fold_head, .my .foldGroup .fold_head',function(e){
         $(document).on('click','.cs .foldGroup .fold_head, .my .foldGroup .fold_head',function(e){
             $(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
             $(this).parents('.foldGroup li').find('.fold_cont').slideToggle(100);
@@ -824,6 +883,14 @@ $( document ).ready( function() {
             return false;
             return false;
         });	
         });	
 
 
+        //210409_토스트 팝업 버튼 클릭시 닫기
+        $(document).on('click','.popup_box .button_list button',function(){
+            $(this).parents('.popup_box').hide().removeClass('active');
+            $("body").css({"overflow":"visible"});
+        })
+
+        
+
 });
 });
 // $(window).load(function() {
 // $(window).load(function() {
 //     $('#load').hide();
 //     $('#load').hide();

+ 32 - 1
src/main/webapp/ux/mo/js/main_m.js

@@ -56,4 +56,35 @@ $(document).ready(function () {
       clearInterval(time);
       clearInterval(time);
     }, 50)
     }, 50)
   })
   })
-})
+})
+
+var startX,startY, endX,endY;
+$(".app").on('touchstart',function(event){
+    startX = event.originalEvent.changedTouches[0].screenX;
+    startY = event.originalEvent.changedTouches[0].screenY;
+});
+$(".app").on('touchend',function(event){
+     endX=event.originalEvent.changedTouches[0].screenX;
+     endY=event.originalEvent.changedTouches[0].screenY;
+    if(startY-endY>50){
+      $(".box p.toTop").fadeOut(300);
+      $(".box p.toBottom").fadeIn(300);
+    }else if(endY-startY>50){
+       if($(window).scrollTop() === 0){
+         $(".covered").css({"margin-top": "3.5rem","transition":"transform 0.5s easy-in-out"});  
+       } else {
+         $(".covered").css({"margin-top": "0rem","transition":"transform 0.5s easy-in-out"}); 
+       }
+     }else if(startY-endY<50 || endY-startY<50 ){
+      $(".box p.toBottom, .box p.toTop").fadeOut(300);
+     }
+  if(startX-endX>50){
+      $(".box p.toLeft").fadeOut(300);
+      $(".box p.toRight").fadeIn(300);     
+     }else if(endX-startX>50){
+      $(".box p.toRight").fadeOut(300);
+      $(".box p.toLeft").fadeIn(300);     
+     }else if(startX-endX<50 || endX-startX<50 ){
+      $(".box p.toRight, .box p.toLeft").fadeOut(300);
+     }
+});

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

@@ -449,7 +449,7 @@ function layerPop_resize(tgt) {
  */
  */
 function cfCloseLayer(tgt) {
 function cfCloseLayer(tgt) {
 	if (_frontGb == "M"){
 	if (_frontGb == "M"){
-		btnClose(tgt);
+		$('#' + tgt).hide();
 	}else{
 	}else{
 		$('#' + tgt).hide();
 		$('#' + tgt).hide();
 		$('#' + tgt).remove();
 		$('#' + tgt).remove();