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

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

card007 5 лет назад
Родитель
Сommit
4faff70171
37 измененных файлов с 1408 добавлено и 387 удалено
  1. 2 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  2. 2 2
      src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java
  3. 1 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  4. 187 5
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  5. 7 12
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  6. 8 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  7. 2 1
      src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html
  8. 19 19
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDescFormMob.html
  9. 54 6
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  10. 18 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDeliveryFormMob.html
  11. 55 37
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  12. 18 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  13. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsOtherFormMob.html
  14. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  15. 1 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsShopBenefitFormMob.html
  16. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  17. 0 1
      src/main/webapp/WEB-INF/views/web/common/advertisements/GoodsDetailScriptsWeb.html
  18. 166 95
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  19. 13 13
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDescFormWeb.html
  20. 66 16
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  21. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsDeliveryFormWeb.html
  22. 244 33
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  23. 18 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  24. 51 45
      src/main/webapp/WEB-INF/views/web/goods/GoodsOtherFormWeb.html
  25. 2 2
      src/main/webapp/WEB-INF/views/web/goods/GoodsQnaDetailFormWeb.html
  26. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsShopBenefitFormWeb.html
  27. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  28. 6 6
      src/main/webapp/biz/goods.js
  29. 387 1
      src/main/webapp/biz/search.js
  30. 3 1
      src/main/webapp/ux/mo/css/common_m.css
  31. 7 9
      src/main/webapp/ux/mo/css/layout_m.css
  32. 9 4
      src/main/webapp/ux/mo/css/style24_m.css
  33. 27 31
      src/main/webapp/ux/mo/js/common_m.js
  34. 22 7
      src/main/webapp/ux/pc/css/common.css
  35. 1 21
      src/main/webapp/ux/pc/css/main.css
  36. 1 1
      src/main/webapp/ux/pc/js/common-ui.js
  37. 2 2
      src/main/webapp/ux/style24_link.js

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

@@ -169,6 +169,7 @@ public class TsfReviewService {
 	 * @author sowon
 	 * @since 2021. 3. 25
 	 */
+	@Transactional("shopTxnManager")
 	public void saveMypageReview(Review review) {
 		review.setDispYn("Y");
 		review.setDelYn("N");
@@ -306,6 +307,7 @@ public class TsfReviewService {
 	 * @author sowon
 	 * @since 2021. 3. 25
 	 */
+	@Transactional("shopTxnManager")
 	public void updateMypageReview(Review review) {
 		review.setRegNo(TsfSession.getInfo().getCustNo());
 		review.setUpdNo(TsfSession.getInfo().getCustNo());		

+ 2 - 2
src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java

@@ -176,8 +176,8 @@ public class SearchEngineDiquest {
 		Map<String, Object> paramMap = this.convertObjectToMap(params);
 		paramMap.put("adminIp", ipAddr);
 		paramMap.put("adminPort", port);
-		paramMap.put("pageNumber", "1");
-		paramMap.put("rowsPerPage", "30");
+		paramMap.put("pageNumber", String.valueOf(params.getPageNo()));
+		paramMap.put("rowsPerPage", String.valueOf(params.getPageSize()));
 		log.info("///[getGoodsList] paramMap: {}", paramMap);
 
 		try {

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

@@ -1016,6 +1016,7 @@ public class TsfDisplayController extends TsfBaseController {
 
 		Collection<SearchEngine> dataList = new ArrayList<SearchEngine>();
 
+		log.info("getSearchGoodsList params::{}",params);
 		// 검색엔진 연동 여부
 		String syncYn = commonService.getSearchEngineSyncYn();
 		if (syncYn.equals("Y")) { // 검색엔진을 통한 상품리스트 조회

+ 187 - 5
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -214,6 +214,11 @@ public class TsfGoodsController extends TsfBaseController {
 			goodsCouponList = couponService.getGoodsCouponList(paramsGoods);
 			mav.addObject("goodsCouponList", goodsCouponList);
 
+			//즉시쿠폰
+			paramsGoods.setMaxRownum(1);
+			goodsCouponList = couponService.getGoodsCoupon1List(paramsGoods);
+			mav.addObject("goodsCoupon1List", goodsCouponList);
+
 			// 다다익선
 			paramsGoods.setMaxRownum(1);
 			mav.addObject("tmtbList", goodsService.getTmtbList(paramsGoods));
@@ -231,6 +236,50 @@ public class TsfGoodsController extends TsfBaseController {
 			// 딜용상품평건수
 			mav.addObject("goodsReviewCnt", goodsReviewCnt);
 
+			// pc 추천 영역
+			if ("P".equals(paramsGoods.getFrontGb())) {
+				// 이상픔과 함께본 상품
+				paramsGoods.setMaxRownum(15);
+				String[] arrGoodsCd = {
+					"B192DO995P",
+					"L191TJ571P",
+					"L191WB304P",
+					"B192DO996P",
+					"L191WB305P",
+					"B192SH720P",
+					"L191WB703P",
+					"10813858",
+					"10813859",
+					"L171JP121P",
+					"10813860",
+					"L171JP721P",
+					"10813862",
+					"L171TJ501P",
+					"10814432",
+					"10813855",
+					"L171TJ561P",
+					"B172SH710P",
+					"B192SH730P"};
+
+				StringBuilder sql = new StringBuilder();
+				if (arrGoodsCd.length > 0) {
+					int idx = 1;
+					for (String goodsCd : arrGoodsCd) {
+						if (!StringUtils.isBlank(goodsCd)) {
+							if (idx > 1) {
+								sql.append("UNION ALL ");
+							}
+							sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
+						}
+					}
+					paramsGoods.setGoodsSql(sql.toString());
+				}
+
+				paramsGoods.setArrGoodsCd(arrGoodsCd);
+				mav.addObject("togetherGoodsList", goodsService.getRecommendGoodsList(paramsGoods));
+
+			}
+
 		} else {
 			if (TscConstants.GoodsType.NORMAL.value().equals(goods.getGoodsType())) {	// 일반상품
 				//if ("Y".equals(goods.getSelfGoodsYn())) {  // 자사상품
@@ -260,6 +309,10 @@ public class TsfGoodsController extends TsfBaseController {
 			lookbook.setCustNo(paramsGoods.getCustNo());
 			mav.addObject("lookbookList", coreLookbookService.getLookbookListForGoods(lookbook));
 
+			// 상품 즉시할인 쿠폰정보
+			paramsGoods.setMaxRownum(1);
+			mav.addObject("goodsCoupon1List", couponService.getGoodsCoupon1List(paramsGoods));
+
 			// 상품쿠폰
 			paramsGoods.setMaxRownum(1);
 			mav.addObject("goodsCouponList", couponService.getGoodsCouponList(paramsGoods));
@@ -283,9 +336,134 @@ public class TsfGoodsController extends TsfBaseController {
 			mav.addObject("bestReviewList", reviewService.getReviewList(review));
 
 			//다다익선
-			if (!"P".equals(goods.getFrontGb())) {
-				paramsGoods.setMaxRownum(20);
-				mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
+			paramsGoods.setMaxRownum(20);
+			mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
+//			if (!"P".equals(goods.getFrontGb())) {
+//				paramsGoods.setMaxRownum(20);
+//				mav.addObject("goodsList", goodsService.getTmtbGoodsList(paramsGoods));
+//			}
+
+			// pc 추천 영역
+			if ("P".equals(paramsGoods.getFrontGb())) {
+				// 이상픔과 함께본 상품
+				paramsGoods.setMaxRownum(15);
+				String[] arrGoodsCd = {
+					"B192DO995P",
+					"L191TJ571P",
+					"L191WB304P",
+					"B192DO996P",
+					"L191WB305P",
+					"B192SH720P",
+					"L191WB703P",
+					"10813858",
+					"10813859",
+					"L171JP121P",
+					"10813860",
+					"L171JP721P",
+					"10813862",
+					"L171TJ501P",
+					"10814432",
+					"10813855",
+					"L171TJ561P",
+					"B172SH710P",
+					"B192SH730P"};
+
+				StringBuilder sql = new StringBuilder();
+				if (arrGoodsCd.length > 0) {
+					int idx = 1;
+					for (String goodsCd : arrGoodsCd) {
+						if (!StringUtils.isBlank(goodsCd)) {
+							if (idx > 1) {
+								sql.append("UNION ALL ");
+							}
+							sql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
+						}
+					}
+					paramsGoods.setGoodsSql(sql.toString());
+				}
+
+				paramsGoods.setArrGoodsCd(arrGoodsCd);
+				mav.addObject("togetherGoodsList", goodsService.getRecommendGoodsList(paramsGoods));
+
+				// 브랜드 추천 상품
+				paramsGoods.setMaxRownum(15);
+				String[] arrBrandGoodsCd = {
+					"L191WB304P",
+					"B192DO996P",
+					"L191WB305P",
+					"B192DO995P",
+					"L191TJ571P",
+					"B192SH720P",
+					"L191WB703P",
+					"10813858",
+					"10813859",
+					"L171JP121P",
+					"10813860",
+					"L171JP721P",
+					"10813862",
+					"L171TJ501P",
+					"10814432",
+					"10813855",
+					"L171TJ561P",
+					"B172SH710P",
+					"B192SH730P"};
+
+				StringBuilder brandSql = new StringBuilder();
+				if (arrGoodsCd.length > 0) {
+					int idx = 1;
+					for (String goodsCd : arrBrandGoodsCd) {
+						if (!StringUtils.isBlank(goodsCd)) {
+							if (idx > 1) {
+								brandSql.append("UNION ALL ");
+							}
+							brandSql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
+						}
+					}
+					paramsGoods.setGoodsSql(brandSql.toString());
+				}
+
+				paramsGoods.setArrGoodsCd(arrBrandGoodsCd);
+				mav.addObject("recommendGoodsList", goodsService.getRecommendGoodsList(paramsGoods));
+
+				// 비슷한 상품
+				paramsGoods.setMaxRownum(15);
+				String[] arrLikeGoodsCd = {
+					"B192DO995P",
+					"L191TJ571P",
+					"L191WB304P",
+					"L171TJ561P",
+					"B172SH710P",
+					"B192SH730P",
+					"B192DO996P",
+					"L191WB305P",
+					"B192SH720P",
+					"L191WB703P",
+					"10813858",
+					"10813859",
+					"L171JP121P",
+					"10813860",
+					"L171JP721P",
+					"10813862",
+					"L171TJ501P",
+					"10814432",
+					"10813855"};
+
+				StringBuilder likeSql = new StringBuilder();
+				if (arrGoodsCd.length > 0) {
+					int idx = 1;
+					for (String goodsCd : arrLikeGoodsCd) {
+						if (!StringUtils.isBlank(goodsCd)) {
+							if (idx > 1) {
+								likeSql.append("UNION ALL ");
+							}
+							likeSql.append("SELECT '").append(goodsCd).append("' AS GOODS_CD, ").append(idx++).append(" AS DISP_ORD FROM DUAL\r\n");
+						}
+					}
+					paramsGoods.setGoodsSql(likeSql.toString());
+				}
+
+				paramsGoods.setArrGoodsCd(arrLikeGoodsCd);
+				mav.addObject("likeGoodsList", goodsService.getRecommendGoodsList(paramsGoods));
 			}
 
 			// 상품 공통 베너
@@ -666,7 +844,7 @@ public class TsfGoodsController extends TsfBaseController {
 		Collection<MeasurementStyle> measurementStyleList = new ArrayList<MeasurementStyle>();
 		if ("Y".equals(goods.getSelfGoodsYn())) {
 			paramsGoods.setOptCd1(colorCd);
-			
+
 //			measurementList = goodsService.getMeasurementList(paramsGoods);
 //			if (measurementList != null && !measurementList.isEmpty()) {
 //				typeCd = measurementList.iterator().next().getTypecd();
@@ -954,6 +1132,7 @@ public class TsfGoodsController extends TsfBaseController {
 		goods.setMaxRownum(20);
 		mav.addObject("goodsList", goodsService.getTmtbGoodsList(goods));
 		//log.info("goodsTmtbForm = goods{}", goods);
+		goods.setIthrCd("IN15_02");
 		mav.addObject("params", goods);
 
 		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
@@ -1011,6 +1190,7 @@ public class TsfGoodsController extends TsfBaseController {
 		goods.setArrGoodsCd(arrGoodsCd);
 		mav.addObject("goodsList", goodsService.getRecommendGoodsList(goods));
 		//log.info("goodsTogetherForm = goods{}", goods);
+		goods.setIthrCd("IN15_03");
 		mav.addObject("params", goods);
 
 		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
@@ -1070,6 +1250,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		mav.addObject("goodsList", goodsService.getRecommendGoodsList(goods));
 		//log.info("goodsRecommendForm = goods{}", goods);
+		goods.setIthrCd("IN15_04");
 		mav.addObject("params", goods);
 
 		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
@@ -1129,6 +1310,7 @@ public class TsfGoodsController extends TsfBaseController {
 
 		mav.addObject("goodsList", goodsService.getRecommendGoodsList(goods));
 		//log.info("goodsLikeForm = goods{}", goods);
+		goods.setIthrCd("IN15_05");
 		mav.addObject("params", goods);
 
 		mav.setViewName(super.getDeviceViewName("goods/GoodsOtherForm"));
@@ -1404,7 +1586,7 @@ public class TsfGoodsController extends TsfBaseController {
 	 * @since 2021. 3. 26
 	 */
 	@PostMapping("/detail/delivery/frame")
-	public ModelAndView goodsDetailDeliveryForm(Goods paramsGoods) {
+	public ModelAndView goodsDetailDeliveryForm(@RequestBody Goods paramsGoods) {
 		ModelAndView mav = new ModelAndView();
 		// 상품관련 기본값 설정(회원 등급, 앱, PC/모바일 등)
 		setGoods(paramsGoods);

+ 7 - 12
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -850,7 +850,7 @@
 		                                     AND B.GOODS_CD = BB.GOODS_CD
 		                                     AND BB.GOODS_GB = 'G800_30'  -- 제외상품
 		                                     AND BB.GOODS_CD IS NULL
-		    INNER JOIN TB_GOODS G USE INDEX (IX_GOODS_11) ON B.GOODS_CD = G.GOODS_CD
+		    INNER JOIN TB_GOODS G ON B.GOODS_CD = G.GOODS_CD
 		                          AND G.GOODS_STAT = 'G008_90'
 		                          AND G.SELF_MALL_YN = 'Y'
 		                          AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
@@ -957,7 +957,7 @@
 		             ${goodsSql}
 		           ) A
 		      JOIN ( SELECT @rownum := 0) R     
-		      INNER JOIN TB_GOODS G USE INDEX (IX_GOODS_11) ON A.GOODS_CD = G.GOODS_CD
+		      INNER JOIN TB_GOODS G ON A.GOODS_CD = G.GOODS_CD
 		      INNER JOIN TB_BRAND D ON G.BRAND_CD = D.BRAND_CD
 		                            AND D.USE_YN = 'Y'
 		      INNER JOIN TB_SITE_BRAND SB ON D.BRAND_CD  = SB.BRAND_CD
@@ -1451,7 +1451,7 @@
 		            <choose>
 		                <when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
 		                    FROM	TB_CONTENTS CT
-		                    , TMP_CONTENTS_GOODS CTG
+		                    , TB_CONTENTS_GOODS CTG
 		                    , TB_GOODS G USE INDEX (`PRIMARY`, IX_GOODS_11)
 		                    , TB_GOODS_STOCK S
 		                    , TB_BRAND B
@@ -1667,7 +1667,7 @@
 		<choose>
 		        	<when test="contentsLoc == 'SMM009' or contentsLoc == 'SMM007' or contentsLoc == 'SMM012'"> <!-- md추천 -->
 		        		FROM	TB_CONTENTS CT
-		        		, TMP_CONTENTS_GOODS CTG
+		        		, TB_CONTENTS_GOODS CTG
 		        		, TB_GOODS G USE INDEX (`PRIMARY`, IX_GOODS_11)
 		        		, TB_GOODS_STOCK S
 		        		, TB_BRAND B
@@ -1885,9 +1885,9 @@
 		            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
 		FROM   TB_GOODS G
 		INNER  JOIN (SELECT G.GOODS_CD
-		                  , MIN(VS.OPT_CD) AS OPT_CD
-		                  , MIN(CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_NM
-		             FROM   TB_GOODS G USE INDEX(IX_GOODS_11)
+		                  , (SELECT OPT_CD FROM vw_stock X WHERE X.GOODS_CD = G.GOODS_CD AND X.SOLDOUT_YN = 'N' AND X.CURR_STOCK_QTY > 0 ORDER BY OPT_CD LIMIT 1) AS OPT_CD
+		                  , CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END AS BRAND_NM
+		             FROM   TB_GOODS G
 		             INNER  JOIN TB_BRAND BR
 		             ON     G.BRAND_CD = BR.BRAND_CD
 		             INNER  JOIN TB_BRAND_GROUP D
@@ -1895,16 +1895,12 @@
 		             AND    D.USE_YN = 'Y'
 		             INNER  JOIN TB_SUPPLY_COMPANY CM
 		             ON     G.SUPPLY_COMP_CD = CM.SUPPLY_COMP_CD
-		             INNER  JOIN VW_STOCK VS
-		             ON     G.GOODS_CD = VS.GOODS_CD
 		             WHERE  1=1
 		             AND    G.GOODS_STAT = 'G008_90'
 		             AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT
 		             AND    G.GOODS_TYPE = 'G056_N'
 		             AND    G.SELF_MALL_YN = 'Y'
 		             AND    G.MIN_ORD_QTY = 1
-		             AND    VS.SOLDOUT_YN = 'N'
-		             AND    VS.CURR_STOCK_QTY > 0
 		             AND    BR.USE_YN = 'Y'
 		             AND    CM.USE_YN = 'Y'
 		             <if test="goodsCd != null and goodsCd != ''">
@@ -1919,7 +1915,6 @@
 		             <if test="selfGoodsYn != null and selfGoodsYn != ''">
 		             AND    G.SELF_GOODS_YN = #{selfGoodsYn}
 		             </if>
-		             GROUP  BY G.GOODS_CD
 		             LIMIT  20 ) A
 		ON     G.GOODS_CD = A.GOODS_CD
 	</select>

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

@@ -88,14 +88,19 @@
 	let fnClickGnbTab = function(gtabSq) {
 		gagajf.setCookie("st24ck_gnb_tab", gtabSq, 1);
 	}
+
+	let fnClickBrandGnbTab = function(gtabSq) {
+		gagajf.setCookie("st24ck_brand_gnb_tab", gtabSq, 1);
+	}
 	
 	// 브랜드 GNB탭 생성
 	let fnCreateBrandGnbTab = function() {
 		$('#ulGnbTab').html('');
 		
 		let tag = '';
+		let ckBrandGnbTabSq = gagajf.getCookie("st24ck_brand_gnb_tab");
 		// tag += '<ul>\n';
-		tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + [[${brandGroupInfo?.brandGroupNo}]] + ');" class="on">홈</a></li>\n';
+		tag += '	<li class="'+(gagajf.isNull(ckBrandGnbTabSq) ? "on" : "")+'"><a href="javascript:void(0);" onclick="cfnGoToBrandMain(' + [[${brandGroupInfo?.brandGroupNo}]] + ');fnClickBrandGnbTab(\'\');" class="on">홈</a></li>\n';
 		tag += '	<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + [[${brandGroupInfo?.brandGroupNo}]] + ',\'' + [[${brandGroupInfo?.cateGb}]] + '\');" class="on">상품</a></li>\n';
 		
 		$.getJSON('/display/brand/gnb/tab/list?brandGroupNo=' + [[${brandGroupInfo?.brandGroupNo}]]
@@ -104,9 +109,9 @@
 					if (result.length > 0) {
 						$.each(result, function(idx, item) {
 							if (item.contentsType == 'L') { // 컨텐츠유형:링크
-								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+								tag += '<li class="'+ (ckBrandGnbTabSq == item.gtabSq ? "on" : "") +'"><a href="' + item.linkUrl + '" onclick="fnClickBrandGnbTab(' + item.gtabSq + ');">' + item.gtabNm + '</a></li>\n';
 							}else{
-								tag += '<li><a href="' + item.linkUrl + '">' + item.gtabNm + '</a></li>\n';
+								tag += '<li class="'+ (ckBrandGnbTabSq == item.gtabSq ? "on" : "") +'"><a href="' + item.linkUrl + '" onclick="fnClickBrandGnbTab(' + item.gtabSq + ');">' + item.gtabNm + '</a></li>\n';
 							}
 						});
 					}

+ 2 - 1
src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html

@@ -101,8 +101,9 @@
 																</div>
 																<p class="itemBrand" th:text="${goodsItem.brandGroupNm}">BRAND NAME1</p>
 																<div class="itemName" th:text="${goodsItem.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
-																<p class="itemPrice">[[${#numbers.formatInteger(goodsItem.currPrice,0,'COMMA')} + 원]]
+																<p class="itemPrice">
 																	<span class="itemPrice_original" th:if="${goodsItem.currPrice != goodsItem.listPrice}" th:text="${#numbers.formatInteger(goodsItem.listPrice,3,'COMMA')}">89,000</span>
+																	[[${#numbers.formatInteger(goodsItem.currPrice,0,'COMMA')}]]
 																	<span class="itemPercent" th:if="${goodsItem.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsItem.dcRate,0,0)}%|">10%</span>
 																</p>
 															</a>

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

@@ -36,25 +36,12 @@
 		</div>
 		<!-- //상품설명 노출 -->
 		<!-- 관리자 에디터입력 내용 노출 -->
-		<div class="mdhtml_box">
-				<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
+		
+		<div class="mdhtml_box  bnnoti" th:if="${goodsNoticeList != null and !goodsNoticeList.empty}">
 			<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
-				</th:block>
-			<!-- 관리자 에디터입력 내용   공지 html -->
-			<th:block th:each="goodsVideo, status : ${goodsVideoList}">
-			<div class="movblock">
-				<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-				<div style="height:4rem"></div><!-- 여백용 html -->
-				<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-				</th:block>
-				<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-				<div style="height:4rem"></div><!-- 여백용 html -->
-				<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-				</th:block>
-			</div>
-			</th:block>
-			<!-- 공통상품베너 -->
-			<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+		</div>
+		<!-- 공통상품베너 -->
+		<div class="mdhtml_box  bnnoti" th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 			<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 			<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
 				<div style="height:4rem"></div><!-- 여백용 html -->
@@ -67,8 +54,21 @@
 				<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
 			</th:block>
 			</th:block>
+		</div>	
+		<div class="mdhtml_box">
+			<!-- 관리자 에디터입력 내용   공지 html -->
+			<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+			<div class="movblock">
+				<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+				</th:block>
+				<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+				<div style="height:4rem"></div><!-- 여백용 html -->
+				<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+				</th:block>
+			</div>
 			</th:block>
-			
 			<!-- 관리자 에디터입력 내용 노출  상단 html -->
 			<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >
 				<div style="height:4rem"></div><!-- 여백용 html -->

+ 54 - 6
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -103,16 +103,26 @@
 			<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)}" >
+									(freeGoodsList != null and !freeGoodsList.empty) or 
+									(goodsCoupon1List != null and !goodsCoupon1List.empty)}" >
 				<div class="benefit_box">
-					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or (tmtbList != null and !tmtbList.empty)}">
+					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or 
+													(tmtbList != null and !tmtbList.empty) or
+													(freeGoodsList != null and !freeGoodsList.empty) or 
+													(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
 						<dt>쇼핑혜택</dt>
 						<dd>
+							<th:block th:if="${goodsCoupon1List != null and !goodsCoupon1List.empty}">
+							<span th:each="goodsCoupon, status : ${goodsCoupon1List}" 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="${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: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}">
@@ -420,7 +430,7 @@
 		</div>
 		<div class="prd_buy">
 			<button type="button" class="buying btPop_auto" id="btn_purchase">구매하기</button>
-			<button type="button" class="cantbuying" style="display:block;">SOLD OUT</button>
+			<button type="button" class="cantbuying" >SOLD OUT</button>
 		</div>
 	</div>
 	<!-- //바닥메뉴 -->
@@ -1036,6 +1046,11 @@
 		$('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
 		$('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
 		return false;
+	}
+	
+	// 상품평 상세 레이어 호출후 콜백에서 호출하므로 여기에 있어야함
+	var fnReviewDetailLayerCollBack = function(){
+		
 	}
 	
 	 $(document).ready( function() {
@@ -1445,6 +1460,39 @@
 				lastScrollTop = st;
 			}
 		});
+		
+		$(document).on('click','.pop_open_btn',function(){
+			$('.modal.photo_comment_popup .pop_detail').toggleClass('active');
+		});
+
+		let vh = window.innerHeight * 0.01;
+		document.documentElement.style.setProperty('--vh', `${vh}px`);
+
+		// 210407_스크롤감지 헤더 그림자
+		$('.pd_delivery_pop').scroll(function(){
+        	$(".pd_delivery_pop .modal-header").css("box-shadow", "rgb(0 0 0 / 20%) 0px 0px 5px");
+        	$(".pd_delivery_pop .modal-header").css("border-bottom", "0px none");
+			if($(".pd_delivery_pop").scrollTop() === 0){
+				$(".pd_delivery_pop .modal-header").css("box-shadow", "none");
+				$(".pd_delivery_pop .modal-header").css("border-bottom", "1px solid #eee");
+			}
+		});
+		$('.pd_review_pop').scroll(function(){
+			$(".pd_review_pop .modal-header").css("box-shadow", "rgb(0 0 0 / 20%) 0px 0px 5px");
+			$(".pd_review_pop .modal-header").css("border-bottom", "0px none");
+			if($(".pd_review_pop").scrollTop() === 0){
+				$(".pd_review_pop .modal-header").css("box-shadow", "none");
+				$(".pd_review_pop .modal-header").css("border-bottom", "1px solid #eee");
+			}
+		});
+		$('.pd_qnalist_pop').scroll(function(){
+			$(".pd_qnalist_pop .modal-header").css("box-shadow", "rgb(0 0 0 / 20%) 0px 0px 5px");
+			$(".pd_qnalist_pop .modal-header").css("border-bottom", "0px none");
+			if($(".pd_qnalist_pop").scrollTop() === 0){
+				$(".pd_qnalist_pop .modal-header").css("box-shadow", "none");
+				$(".pd_qnalist_pop .modal-header").css("border-bottom", "1px solid #eee");
+			}
+		});
 		  
 			// 광고 스크립트용
 			var goodsNavigation = [[${goodsNavigation}]];

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

@@ -43,7 +43,24 @@
 		
 	// 구성 상품 상세 배송정보
 	var fnGoodsDetailDelivery = function(params) {
-		gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		//gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/delivery/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealDelivery").css("display", "block");
+					$("#goodsDealDelivery").html(result);
+				}
+			}
+		});	
 	}
 	
 	$(document).ready( function() {

+ 55 - 37
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -166,7 +166,7 @@
 						</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}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
+								<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]],'IN15_01')">  <!-- 해당 컬러 상품페이지로 이동 -->
 									<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 								</a>
 							</li>
@@ -200,18 +200,26 @@
 			<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)}" >
+									(freeGoodsList != null and !freeGoodsList.empty) or 
+									(goodsCoupon1List != null and !goodsCoupon1List.empty)}" >
 				<div class="benefit_box">
 					<dl class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or
 													(tmtbList != null and !tmtbList.empty) or
-													(freeGoodsList != null and !freeGoodsList.empty)}" >
+													(freeGoodsList != null and !freeGoodsList.empty) or 
+													(goodsCoupon1List != null and !goodsCoupon1List.empty)}" >
 						<dt>쇼핑혜택</dt>
 						<dd>
+							<th:block th:if="${goodsCoupon1List != null and !goodsCoupon1List.empty}">
+							<span th:each="goodsCoupon, status : ${goodsCoupon1List}" 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="${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: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}">
@@ -251,8 +259,8 @@
 							<div class="swiper-slide" th:each="goodsInfo, status : ${goodsList}">
 								<div class="item_prod">
 									<div class="item_state">
-										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=''">관심상품 추가</button>
-										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '',[[${params.ithrCd}]],'[[${params.contentsLoc}]]','','pc_detail');" class="itemLink" >
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_02', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_02','','','pc_detail');" class="itemLink" >
 											<div class="itemPic">
 												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=156'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 											</div>
@@ -299,11 +307,27 @@
 					</div>
 				</div>
 				<!-- //상품설명 노출 -->
+				<!-- 공지사항 노출 -->
+				<div class="mdhtml_box  bnnoti" th:if="${goodsNoticeList != null and !goodsNoticeList.empty}">
+					<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
+				</div>
+				<!-- 공통상품베너 -->
+				<div class="mdhtml_box  bnnoti" th:if="${goodsBannerList != null and !goodsBannerList.empty}">
+					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
+					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<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, '#')}">
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
+					</th:block>
+					</th:block>
+				</div>	
 				<!-- 관리자 에디터입력 내용 노출 -->
 				<div class="mdhtml_box">
-						<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
-					<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
-						</th:block>
 					<!-- 관리자 에디터입력 내용   공지 html -->
 					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
 					<div class="movblock">
@@ -317,21 +341,7 @@
 						</th:block>
 					</div>
 					</th:block>
-					<!-- 공통상품베너 -->
-					<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
-					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
-					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
-						<div style="height:4rem"></div><!-- 여백용 html -->
-						<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, '#')}">
-						<div style="height:4rem"></div><!-- 여백용 html -->
-						<img th:src="${imgUrl+goodsBanner.imgPath1}" alt="">
-					</th:block>
-					</th:block>
-					</th:block>
+					
 					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >
 					<div style="height:4rem"></div><!-- 여백용 html -->
 					<th:block th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsTopDesc))}"></th:block>
@@ -833,12 +843,12 @@
 												<th:block th:each="optCd : ${#strings.arraySplit(lookbookGoods.optCdInfo,',')}">
 												<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>  
 												</th:block>
-												<button type="button" class="itemLike" th:classappend="${lookbookGoods.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${lookbookGoods.goodsCd}, ithrCd=${ithrCd}, contentsLoc=${contentsLoc}, planDtlSq=''">관심상품 추가</button>
+												<button type="button" class="itemLike" th:classappend="${lookbookGoods.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${lookbookGoods.goodsCd}, ithrCd=${ithrCd}, contentsLoc='', planDtlSq=''">관심상품 추가</button>
 												<th:block th:if="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
 												<a href="javascript:void(0);" class="itemLink" >
 												</th:block>
 												<th:block th:unless="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
-												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
+												<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '','IN15_06','' )">
 												</th:block>
 													<div class="itemPic">
 														<img class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm+'?RS=96'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
@@ -895,7 +905,7 @@
 							</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}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
+									<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]], 'IN15_01')">  <!-- 해당 컬러 상품페이지로 이동 -->
 										<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm+'?RS=50'}" alt="">
 									</a>
 								</li>
@@ -2317,7 +2327,7 @@
 		tag += '				<div class="itemsGrp rowtype">\n';
 		tag += '					<div class="item_prod '+ soldout+'"> <!-- 품절일때 sold_out 클래스 추가 요청 -->\n';
 		tag += '						<div class="item_state">\n';
-		tag += '							<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+goodsCd+'\',\'\',\'\')">\n';
+		tag += '							<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+goodsCd+'\',\'\',\'IN15_06\')">\n';
 		tag += '								<div class="itemPic">\n';
 		tag += '									<img alt="BLACK-a" class=" vLHTC pd_img" src="'+goodsImg +'?RS=70"  onerror="this.src=\'/images/pc/thumb/bg_item_none.png\'">\n';
 		tag += '								</div>\n';
@@ -2342,6 +2352,12 @@
 		}
 	}
 	
+	// 상품평 상세 레이어 호출후 콜백에서 호출하므로 여기에 있어야함
+	var fnReviewDetailLayerCollBack = function(){
+		
+	}
+	
+	
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
@@ -2359,20 +2375,17 @@
 		
 		// 함께본 상품(ajax html)
 		params.goodsOtherGb = "together";
-		params.ithrCd = "tmtb";
-		params.contentsLoc = "tmtb";
+		params.ithrCd = "IN15_03";
 		fnGoodsTogetherSearch(params);
 		
 		// 추천 상품(ajax html)
 		params.goodsOtherGb = "recommend";
-		params.ithrCd = "tmtb";
-		params.contentsLoc = "tmtb";
+		params.ithrCd = "IN15_04";
 		fnGoodsRecommendSearch(params);
 		
 		// 비슷한 상품(ajax html)
 		params.goodsOtherGb = "like";
-		params.ithrCd = "tmtb";
-		params.contentsLoc = "tmtb";
+		params.ithrCd = "IN15_05";
 		fnGoodsLikeSearch(params);
 	
 		var opt_selecter01_1 = new sCombo('.pop_option_select .select_custom.item_opt1.item_opt1_1');
@@ -2423,6 +2436,12 @@
 			$(this).parents('.btn_more_box').toggleClass('covered');
 			var descrpToggle = $(this).find('span');
 			$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
+			
+			//210525_더보기 닫을 시 현재 위치로 화면 포커스
+			if($('.pd_descrp .btn_more_box').hasClass('covered') === true){
+				var offset = $('.pd_descrp .btn_more_box').offset();
+				$('html').animate({scrollTop : offset.top - 80}, 400);
+			}
 			return false;
 		}); 
 		
@@ -2525,7 +2544,6 @@
         });
 		//--상품문의 창 순서 -
 		
-		
 		//--상품리뷰 창 순서 -
 		var reviewCount = 0;
 		//팝업 - 상품상세 베스트리뷰

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

@@ -403,8 +403,24 @@
 	
 	// 구성 상품 상세 배송정보
 	var fnGoodsDetailDelivery = function(params) {
-		
-		gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		//gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/delivery/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealDelivery").css("display", "block");
+					$("#goodsDealDelivery").html(result);
+				}
+			}
+		});	
 	}
 	
 	// 배송정보 상품선택시

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

@@ -26,8 +26,8 @@
 				<div class="swiper-slide" th:each="goodsInfo, status : ${goodsList}">
 					<div class="item_prod">
 						<div class="item_state">
-							<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=''">관심상품 추가</button>
-							<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '',[[${params.ithrCd}]],[[${params.contentsLoc}]],'','pc_detail');" class="itemLink" >
+							<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'likeit active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc='', planDtlSq=''">관심상품 추가</button>
+							<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '',[[${params.ithrCd}]],'','','pc_detail');" class="itemLink" >
 								<div class="itemPic">
 									<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm+'?RS=156'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 								</div>

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

@@ -94,10 +94,10 @@
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			return false;
 		}
-		if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
+		/* if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
 			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
 			return;
-		}
+		} */
 		
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		

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

@@ -32,7 +32,7 @@
 							<tbody>
 								<tr th:if="${(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
 									<th>즉시할인</th>
-									<td th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}"><p>최대
+									<td th:each="goodsCoupon, status : ${goodsCoupon1List}" 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:unless="${goodsCoupon.dcWay == 'G240_10'}" th:text="|${goodsCoupon.dcVal}%|"></th:block>
 									 할인</p></td>

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

@@ -1049,7 +1049,7 @@ var paymentInfoSet = function() {
 						$("#orderAmtForm .recipNm").text($("#orderForm #orderGiftInfo input[name=recipNm]").val());
 						$("#orderAmtForm .recipPhnno").text($("#orderForm #orderGiftInfo input[name=recipPhnno]").val());
 						
-						if (gagajf.isNull($("#orderForm #orderGiftInfo input[name=recipPhnno]").val())) {
+						if (gagajf.isNull($("textarea#giftMsg").val())) {
 							giftMsg = "감사합니다.";
 						} else {
 							giftMsg = $("textarea#giftMsg").val();

+ 0 - 1
src/main/webapp/WEB-INF/views/web/common/advertisements/GoodsDetailScriptsWeb.html

@@ -15,7 +15,6 @@
  *******************************************************************************
  -->
 <th:block th:fragment="scripts">
-	<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
 	<script th:inline="javascript">
 
 		window._eglqueue = window._eglqueue || [];

+ 166 - 95
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -251,82 +251,13 @@
 							</div>
 							<div class="lnb_category">
 								<ul class="category" id="ulAllCate">
-<!--									<li>-->
-<!--										<a href="javascript:;">전체</a>-->
-<!--									</li>-->
-<!--									<li>-->
-<!--										<a href="javascript:;">여성</a>-->
-<!--										&lt;!&ndash; 2뎁스 &ndash;&gt;-->
-<!--										<div class="sub_cate">-->
-<!--											<ul>-->
-<!--												<li><a href="javascript:;">원피스</a></li>-->
-<!--												<li>-->
-<!--													<a href="javascript:;">니트/가디건/베스트</a>-->
-<!--													<div class="sub_cate">-->
-<!--														<ul>-->
-<!--															<li><a href="javascript:;">티셔츠/셔츠01</a></li>-->
-<!--															<li><a href="javascript:;">니트/가디건/베스트01</a></li>-->
-<!--															<li><a href="javascript:;">팬츠/레깅스01</a></li>-->
-<!--														</ul>-->
-<!--													</div>-->
-<!--												</li>-->
-<!--												<li>-->
-<!--													<a href="javascript:;">팬츠/레깅스</a>-->
-<!--													&lt;!&ndash; 3뎁스 &ndash;&gt;-->
-<!--													<div class="sub_cate">-->
-<!--														<ul>-->
-<!--															<li>-->
-<!--																<a href="javascript:;">티셔츠/셔츠02</a>-->
-<!--																&lt;!&ndash; 4뎁스 &ndash;&gt;-->
-<!--																<div class="sub_cate">-->
-<!--																	<ul>-->
-<!--																		<li><a href="javascript:;">티셔츠/셔츠03</a></li>-->
-<!--																		<li><a href="javascript:;">니트/가디건/베스트03</a></li>-->
-<!--																		<li><a href="javascript:;">팬츠/레깅스03</a></li>-->
-<!--																	</ul>-->
-<!--																</div>-->
-<!--															</li>-->
-<!--															<li><a href="javascript:;">니트/가디건/베스트02</a></li>-->
-<!--															<li><a href="javascript:;">팬츠/레깅스02</a></li>-->
-<!--														</ul>-->
-<!--													</div>-->
-<!--												</li>-->
-<!--											</ul>-->
-<!--										</div>-->
-<!--									</li>-->
-<!--									<li>-->
-<!--										<a href="javascript:;">남성</a>-->
-<!--										<div class="sub_cate">-->
-<!--											<ul>-->
-<!--												<li><a href="javascript:;">티셔츠/셔츠</a></li>-->
-<!--												<li><a href="javascript:;">트레이닝/스포츠</a></li>-->
-<!--												<li><a href="javascript:;">언더웨어</a></li>-->
-<!--											</ul>-->
-<!--										</div>-->
-<!--									</li>-->
-<!--									<li>-->
-<!--										<a href="javascript:;">유아동</a>-->
-<!--										<div class="sub_cate">-->
-<!--											<ul>-->
-<!--												<li><a href="javascript:;">티셔츠/셔츠</a></li>-->
-<!--												<li><a href="javascript:;">언더웨어</a></li>-->
-<!--											</ul>-->
-<!--										</div>-->
-<!--									</li>-->
-<!--									<li>-->
-<!--										<a href="javascript:;">라이프</a>-->
-<!--										<div class="sub_cate">-->
-<!--											<ul>-->
-<!--												<li><a href="javascript:;">잡화</a></li>-->
-<!--											</ul>-->
-<!--										</div>-->
-<!--									</li>-->
 								</ul>
 							</div>
 						</div>
 						<!-- //lnb -->
 						<!-- cont -->
 						<div class="cont">
+							<form id="filterForm">
 							<div class="sec_body">
 								<div class="area_filter">
 									<div class="filter_list">
@@ -359,10 +290,10 @@
 										</ul>
 										<div class="form_field">
 											<div>
-												<input id="price" type="checkbox"><label for="price"> <span>남여 공용만 보기</span> </label>
+												<input id="unisex" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="unisex"> <span>남여 공용만 보기</span> </label>
 											</div>
 											<div>
-												<input id="chk-2" type="checkbox" checked=""><label for="chk-2"> <span>신상품만 보기</span> </label>
+												<input id="newGoods" type="checkbox" onclick="fnFilterOption(this,'on');"><label for="newGoods"> <span>신상품만 보기</span> </label>
 											</div>
 										</div>
 									</div>
@@ -373,7 +304,7 @@
 												<th:block th:each="oneData, status : ${filterBrandList}">
 													<li>
 														<label class="brand_btn" >
-															<input type="checkbox" group="filterValue" th:id="${'chkFilterBrand' + status.index}" name="brandGroup" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" ><span th:text="${oneData.filterNm}"></span>
+															<input type="checkbox" group="filterValue" th:id="${'chkFilterBrand' + status.index}" name="brandGroup" th:value="${oneData.filterCd}" th:data-id="${oneData.filterNm}" onclick="filterSel(this,'brandGroup','off');"><span th:text="${oneData.filterNm}"></span>
 														</label>
 													</li>
 												</th:block>
@@ -413,9 +344,9 @@
 										</div>
 										<!-- //사이즈 -->
 										<!-- 가격 -->
-										<div class="sort tap04">
+										<div class="sort tap04" id="priceFilterDiv">
 											<div class="range">
-												<input type="text" class="js-range-slider01" name="my_range01" value="" />
+												<input type="text" class="js-range-slider01" name="" value="" />
 												<input type="hidden" id="price_input_from" name="price_input_from" value=""/>
 												<input type="hidden" id="price_input_to" name="price_input_to" value=""/>
 												<input type="hidden" id="hPriceFrom" name="hPriceFrom" value=""/>
@@ -439,7 +370,7 @@
 												<li><input type="checkbox" id="percent10" name="range" value="100"><label for="percent10"><span></span><span>100%</span></label></li>
 											</ul>
 											<div class="range">
-												<input type="text" class="js-range-slider02" name="my_range02" value="" />
+												<input type="text" class="js-range-slider02" name="" value="" />
 												<input type="hidden" id="dcrate_input_from" name="dcrate_input_from" value=""/>
 												<input type="hidden" id="dcrate_input_to" name="dcrate_input_to" value=""/>
 												<input type="hidden" id="hDcRateFrom" name="hDcRateFrom" value=""/>
@@ -539,15 +470,15 @@
 											<p><span id="totCntId"></span>개의 상품</p>
 										</div>
 										<div>
-											<ul>
+											<ul id="sortArea">
 												<li>
-													<a href="" class="on">최신상품순</a>
+													<a href="javascript:void(0);" id="sortingNEW" class="on" onclick="fnSortingChange(this,'NEW');">최신상품순</a>
 												</li>
 												<li>
-													<a href="">인기상품순</a>
+													<a href="javascript:void(0);" id="sortingBEST" onclick="fnSortingChange(this,'BEST');">인기상품순</a>
 												</li>
 												<li>
-													<a href="">리뷰 많은순</a>
+													<a href="javascript:void(0);" id="sortingREVIEW" onclick="fnSortingChange(this,'REVIEW');">리뷰 많은순</a>
 												</li>
 											</ul>
 										</div>
@@ -903,6 +834,7 @@
 									<!-- //검색필터 결과 상품 노출 -->
 								</div>
 							</div>
+							</form>
 						</div>
 						<!-- //cont -->
 					</div>
@@ -1294,7 +1226,8 @@
 	<form id="searchGoodsForm" name="searchGoodsForm">
 		<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
 		<input type="hidden" name="pageSize" value ="30"/>
-		<input type="hidden" name="keyword" value ="티셔츠"/>
+		<input type="hidden" name="keyword" th:value="${params.keyword}"/>
+		<input type="hidden" name="sortingType" value="NEW"/>
 	</form>
 
 	<script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
@@ -1302,6 +1235,10 @@
 	<script th:src="@{'/biz/search.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/search.js"></script>
 
 	<script th:inline="javascript">
+		var fnSearchGoodsListSearch = function (){
+			gagaInfiniteScroll.getHistory();
+		}
+
 		// 상품 검색
 		var fnGetInfiniteScrollDataList = function (pageNum) {
 			$("#searchGoodsForm input[name=pageNo]").val(pageNum + 1);
@@ -1328,11 +1265,116 @@
 				//fnImgOnoff();
 			}
 		}
+
+		$(window).on("pageshow", function(event) {
+			//할인율
+			custom_values02 = ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'];
+			var my_from02 = custom_values02.indexOf('0%');
+			var my_to02 = custom_values02.indexOf('100%');
+			if(gagajf.isNull($('#searchGoodsForm').find("input[name=dcRateFrom]").val())){
+				my_from02 = $('#searchGoodsForm').find("input[name=dcRateFrom]").val();
+			}
+			if(gagajf.isNull($('#searchGoodsForm').find("input[name=dcRateTo]").val())){
+				my_to02 = $('#searchGoodsForm').find("input[name=dcRateTo]").val();
+			}
+
+			$(".dp .js-range-slider02, .sch_result .js-range-slider02").ionRangeSlider({
+				type: "double",
+				min: 0,
+				max: 100,
+				from: my_from02,
+				to: my_to02,
+				grid: true,
+				skin: "round",
+				postfix: "%",
+				prettify_separator: ",",
+				values: custom_values02,
+				min_interval: 1,
+				onFinish : function (data){
+					fnCheckDcRate(data);
+				}
+			});
+
+			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
+				var historyData = sessionStorage.getItem(document.location.href);
+				if(historyData!=null){
+					// console.log('historyData>>'+historyData);
+					historyData = JSON.parse(historyData);
+				}else{
+					historyData = {};
+				}
+			}else{
+				fnCategoryGoodsInfiniteScrollInit();
+				fnSearchGoodsListSearch();
+			}
+		});
 	
 		$(document).ready( function() {
+			// let priceLen;
+			// var filterPriceList = [[${filterPriceList}]];
+			// if(!gagajf.isNull(filterPriceList)){
+			// 	priceLen = filterPriceList.length-1;
+			// 	$.each(filterPriceList, function (priceIdx, priceItem){
+			// 		custom_values[priceIdx] = priceItem.filterNm;
+			// 		if(priceLen==0){
+			// 			custom_values[1] = priceItem.filterNm;
+			// 		}
+			// 	});
+			// 	let my_from;
+			// 	let my_to;
+			// 	if(filterPriceList.length > 1){
+			// 		my_from = custom_values.indexOf(custom_values[0]);
+			// 		my_to = custom_values.indexOf(custom_values[priceLen]);
+			// 	}else{
+			// 		my_from = 0;
+			// 		my_to = 1;
+			// 	}
+			//
+			// 	if(gagajf.isNull($("#filterForm input:hidden[name=priceFrom]").val())){
+			// 		my_from = $("#filterForm input:hidden[name=priceFrom]").val();
+			// 	}
+			// 	if(gagajf.isNull($("#filterForm input:hidden[name=priceTo]").val())){
+			// 		my_to = $("#filterForm input:hidden[name=priceTo]").val();
+			// 	}
+			// 	let minValue;
+			// 	let maxValue;
+			// 	if(filterPriceList.length > 1){
+			// 		minValue = custom_values[0];
+			// 		maxValue = custom_values[priceLen];
+			// 	}else{
+			// 		minValue = custom_values[0];
+			// 		maxValue = custom_values[1];
+			// 	}
+			//
+			// 	$(".dp .js-range-slider01, .sch_result .js-range-slider01").ionRangeSlider({
+			// 		type: "double",
+			// 		min: minValue,
+			// 		max: maxValue,
+			// 		from: my_from,
+			// 		to: my_to,
+			// 		grid: true,
+			// 		skin: "round",
+			// 		postfix: "원",
+			// 		prettify_separator: ",",
+			// 		values: custom_values,
+			// 		min_interval: 1,
+			// 		// onStart : function(data){
+			// 		//  	fnCheckPrice(data);
+			// 		// },
+			// 		// onChange : fnCheckPrice,
+			// 		onFinish : function(data,priceLen){
+			// 			fnCheckPrice(data,priceLen);
+			// 		}
+			// 	});
+			// }
+
 			fnCreateSearchCategoryList();
 			// fnCreateSearchFilter();
 
+			if ($('#sizeLi1').find('label').length == 0) $('#sizeLi1').hide();
+			if ($('#sizeLi2').find('label').length == 0) $('#sizeLi2').hide();
+			if ($('#sizeLi3').find('label').length == 0) $('#sizeLi3').hide();
+
 			//결과내 재 검색 - 검색어 입력 시
 			$(document).on('keyup','.sch_result .area_info .inner_search input',function(e){
 				var reSearchValue = $(this).val();
@@ -1361,7 +1403,7 @@
 			});
 
 			//할인율
-			var custom_values02 = ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'];
+			/*var custom_values02 = ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'];
 			var my_from02 = custom_values02.indexOf('0%');
 			var my_to02 = custom_values02.indexOf('10%');
 			$(".dp .js-range-slider02, .sch_result .js-range-slider02").ionRangeSlider({
@@ -1375,7 +1417,7 @@
 				postfix: "%",
 				prettify_separator: ",",
 				values: custom_values02
-			});
+			});*/
 
 			//검색결과 탭
 			$(document).on('click','.sch_result .taps ul li',function(e){
@@ -1387,16 +1429,9 @@
 
 			$(document).on('click','.lnb .lnb_category ul li a',function(e){
 				$(this).toggleClass('on');
-				$(this).parent('li').siblings('li').children('a').removeClass('on');
-				$(this).parent('li').siblings('li').removeClass('on');
-				$(this).parent('li').siblings('li').find('a').removeClass('on');
-
-				$(this).parent('li').toggleClass('on');
-				$(this).parent('li').siblings('li').find('.sub_cate').hide();
-				$(this).parent('li').children(".sub_cate").toggle();
 			});
 
-			fnGetInfiniteScrollDataList(1);
+			//fnGetInfiniteScrollDataList(1);
 		});
 
 		// 좌측 카테고리 생성
@@ -1421,22 +1456,22 @@
 			let tag = '';
 			if(cate1 != null){
 				tag += '<li>\n';
-				tag += '	<a href="javascript:;">'+cate1.cate1Nm+'</a>';
+				tag += '	<a href="javascript:void(0);" onclick="fnSetCateFilter(\''+cate1.cate1No+'\');">'+cate1.cate1Nm+'</a>';
 				if(cate1.leafYn == 'N' && cate1.cate2List.length > 0){
 					tag += '<div class="sub_cate">\n';
 					tag += '	<ul>\n';
 					$.each(cate1.cate2List, function (idx2,cate2){
-						tag += '<li><a href="javascript:;">'+cate2.cate2Nm+'</a>\n';
+						tag += '<li><a href="javascript:void(0);" onclick="fnSetCateFilter(\''+cate1.cate1No+'\',\''+cate2.cate2No+'\');">'+cate2.cate2Nm+'</a>\n';
 						if(cate2.leafYn == 'N' && cate2.cate3List.length > 0){
 							tag += '<div class="sub_cate">\n';
 							tag += '	<ul>\n';
 							$.each(cate2.cate3List, function (idx3,cate3){
-								tag += '<li><a href="javascript:;">'+cate3.cate3Nm+'</a>\n';
+								tag += '<li><a href="javascript:void(0);" onclick="fnSetCateFilter(\''+cate1.cate1No+'\',\''+cate2.cate2No+'\',\''+cate3.cate3No+'\');">'+cate3.cate3Nm+'</a>\n';
 								if(cate3.leafYn == 'N' && cate3.cate4List.length >0){
 									tag += '<div class="sub_cate">\n';
 									tag += '	<ul>\n';
 									$.each(cate3.cate4List, function (idx4,cate4){
-										tag += '<li><a href="javascript:;">'+cate4.cate4Nm+'</a>\n';
+										tag += '<li><a href="javascript:void(0);" onclick="fnSetCateFilter(\''+cate1.cate1No+'\',\''+cate2.cate2No+'\',\''+cate3.cate3No+'\',\''+cate4.cate4No+'\');">'+cate4.cate4Nm+'</a>\n';
 										/*if(cate4.leafYn = 'N' && cate4.cate5List.length>0){
 											tag += '<div class="sub_cate">\n';
 											tag += '	<ul>\n';
@@ -1472,9 +1507,45 @@
 		var fnSearchData = function (){
 			let keyword = $("#InnerSearchForm").find("input[name=search]").val();
 			let brandGroupNo = $("#InnerSearchForm").find("input[name=brandGroupNo]").val();
+			$("#searchGoodsForm").find('input[name=keyword]').val($("#InnerSearchForm").find("input[name=search]").val());
 			cfnGoToSearchGoodsListForm(keyword,brandGroupNo);
 		}
 
+		// 상품이미지
+		var fnImgOnoff = function (){
+			var nowFocus = $('.dp .itemPic');
+			var nowMov = $('.itemPic').children('.pd_mov');
+			var nowImg = $('.itemPic').children('.pd_img');
+			var ogrSrc;
+			var overSrc;
+			var srcName = nowImg.attr('src');
+			overSrc = srcName.substring(0, srcName.lastIndexOf('.'));
+
+			var srcImg;
+			var srcdat;
+
+			$(nowFocus).on('mouseover', function() {
+				$(this).children('.pd_mov').siblings(".itemOpt").addClass('on');
+				$(this).children('.pd_mov').css("opacity","0");
+			});
+			$(nowFocus).on('mouseleave', function() {
+				$(this).children('.pd_mov').siblings(".itemOpt").removeClass('on');
+				$(this).children('.pd_mov').css("opacity","1");
+			});
+			$(nowFocus).on('mouseover', function() {
+				$(this).children('.pd_img').siblings(".itemOpt").addClass('on');
+				srcImg = $(this).children('.pd_img').attr('src');
+				srcdat = $(this).children('.pd_img').attr('data-img');
+				$(this).children('.pd_img').attr('src',srcdat);
+			});
+			$(nowFocus).on('mouseleave', function() {
+				$(this).parents('.itemPic').removeClass();
+				$(this).children('.pd_img').siblings(".itemOpt").removeClass('on');
+				$(this).children('.pd_img').attr('src', srcImg);
+				$(this).children('.pd_img').css("opacity","1");
+			});
+		}
+
 	</script>
 
 </th:block>

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

@@ -40,19 +40,6 @@
 			<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 		<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 			</th:block>
-		<!-- 관리자 에디터입력 내용   공지 html -->
-		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
-		<div class="movblock">
-			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<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'}">
-			<div style="height:100px"></div><!-- 여백용 html -->
-			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
-			</th:block>
-		</div>
-		</th:block>
 		<!-- 공통상품베너 -->
 		<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 		<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
@@ -68,6 +55,19 @@
 		</th:block>
 		</th:block>
 		</th:block>
+		<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+		<div class="movblock">
+			<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+			<div style="height:100px"></div><!-- 여백용 html -->
+			<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'}">
+			<div style="height:100px"></div><!-- 여백용 html -->
+			<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+			</th:block>
+		</div>
+		</th:block>
+		
 		
 		<!-- 관리자 에디터입력 내용 노출  상단 html -->
 		<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty }" >

+ 66 - 16
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -125,9 +125,19 @@
 								<dl>
 									<div class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or
 																		(tmtbList != null and !tmtbList.empty) or
-																		(freeGoodsList != null and !freeGoodsList.empty)}" >
+																		(freeGoodsList != null and !freeGoodsList.empty)  or 
+																		(goodsCoupon1List != null and !goodsCoupon1List.empty)}" >
 										<dt>쇼핑혜택</dt>
 											<dd>
+												<span th:if="${(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
+												<th:block th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}">
+													<em class="c_primary" >
+													<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>
+													 즉시할인
+												</th:block>
+												</span>
 												<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
 												<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
 												최대 <em class="c_primary" >
@@ -346,7 +356,45 @@
 		<th:block th:include="~{web/goods/GoodsIncludeFormWeb :: goodsDealComposeForm}"></th:block>
 		
 		<!-- 이 상품과 함께 본 상품 -->
-		<div class="content wide pd_clickother" id="goodsTogetherbArea">
+		<div class="content wide pd_clickother" id="goodsTogetherbArea" th:if="${togetherGoodsList != null and !togetherGoodsList.empty}">
+			<div class="cont_head">
+				<h3 class="subH1 t_c mb40">이 상품과 함께 본 상품</h3>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="area_slider">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide" th:each="goodsInfo, status : ${togetherGoodsList}">
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_03', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_03','','','pc_detail');" class="itemLink" >
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm +'?RS=300'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											</div>
+											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+											<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+											<p class="itemPrice">
+												<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+												<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+												<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+											</p>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+						
+					</div>
+					<!-- Add Pagination-->
+					<div class="swiper-pagination"></div>
+					<!-- Add Arrows -->
+					<div class="swiper-button-next"></div>
+					<div class="swiper-button-prev"></div>
+				</div>
+				<!-- // CONT-BODY -->
+			</div>
 		</div>
 		<!-- // 이 상품과 함께 본 상품 -->
 	</div>
@@ -1026,12 +1074,12 @@
 	params.brandGroupNm = [[${goodsInfo.brandGroupNm}]];
 
 	//함께본 상품(ajax html)
-	$('#goodsTogetherbArea').load('GoodsDetailFormWeb.html', function() {
+/* 	$('#goodsTogetherbArea').load('GoodsDetailFormWeb.html', function() {
 		params.goodsOtherGb = "together";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
 		fnGoodsTogetherSearch(params);
-	});
+	}); */
 	
 	//상품상세정보 더보기
 	$(document).on('click','.pd_descrp_pop .btn_more_box button',function(e){
@@ -1051,19 +1099,21 @@
 		return false;
 	});
 	
-	//슬라이드 - 이 상품과 함께 본 상품 
+	//슬라이드 - 이 상품과 함께 본 상품
 	var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
-		slidesPerView: 5,
-		spaceBetween: 20,
-		navigation: {
-			nextEl: '.pd_clickother .swiper-button-next',
-			prevEl: '.pd_clickother .swiper-button-prev',
-		},
-		pagination: {
-			el: '.pd_clickother .swiper-pagination',
-			clickable: true,
-		},
-	});
+	     slidesPerView: 5,
+	     slidesToScroll: 5,
+	     slidesPerGroup: 5,
+	     spaceBetween: 20,
+	     navigation: {
+	         nextEl: '.pd_clickother .swiper-button-next',
+	         prevEl: '.pd_clickother .swiper-button-prev',
+	     },
+	     pagination: {
+	         el: '.pd_clickother .swiper-pagination',
+	         clickable: true,
+	     },
+	 });   
 	
 	$(document).ready( function() {
 		

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

@@ -44,7 +44,7 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 		
-	// 구성 상품 상세 배송정보
+/* 	// 구성 상품 상세 배송정보
 	var fnGoodsDetailDelivery = function(params) {
 		gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
 	}
@@ -57,7 +57,7 @@
 		params.goodsCd = goodsCd;
 		fnGoodsDetailDelivery(params);  // ajax html
 		
-	});
+	}); */
 	
 /*]]>*/
 </script>

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

@@ -180,9 +180,19 @@
 								<dl>
 									<div class="bnf_shopping" th:if="${(goodsCouponList != null and !goodsCouponList.empty) or
 																		(tmtbList != null and !tmtbList.empty) or
-																		(freeGoodsList != null and !freeGoodsList.empty)}" >
+																		(freeGoodsList != null and !freeGoodsList.empty) or 
+																		(goodsCoupon1List != null and !goodsCoupon1List.empty) }" >
 										<dt>쇼핑혜택</dt>
 											<dd>
+												<span th:if="${(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
+												<th:block th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}">
+													<em class="c_primary" >
+													<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>
+													 즉시할인
+												</th:block>
+												</span>
 												<span th:if="${goodsCouponList != null and !goodsCouponList.empty}">
 												<th:block th:each="goodsCoupon, status : ${goodsCouponList}" th:if="${status.first}">
 												최대 <em class="c_primary" >
@@ -226,7 +236,7 @@
 									</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}]])">  <!-- 해당 컬러 상품페이지로 이동 -->
+											<a href="javascript:void(0);" th:class="${params.colorCd == goodsOption1.optCd1}? 'on':''" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], [[${goodsOption1.optCd1}]], 'IN15_01')">  <!-- 해당 컬러 상품페이지로 이동 -->
 												<img th:src="${imgGoodsUrl+'/'+goodsOption1.sysImgNm +'?RS=64'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 											</a>
 										</li>
@@ -626,8 +636,8 @@
 							<div class="swiper-slide" th:each="goodsInfo, status : ${goodsList}">
 								<div class="item_prod">
 									<div class="item_state">
-										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd=${params.ithrCd}, contentsLoc=${params.contentsLoc}, planDtlSq=''">관심상품 추가</button>
-										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '',[[${params.ithrCd}]],[[${params.contentsLoc}]],'','pc_detail');" class="itemLink" >
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_02', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_02','','','pc_detail');" class="itemLink" >
 											<div class="itemPic">
 												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm +'?RS=300'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
 												
@@ -679,19 +689,6 @@
 						<th:block th:if="${goodsNoticeList != null and !goodsNoticeList.empty}" >
 					<th:block  th:each="goodsNotice, status : ${goodsNoticeList}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsNotice.noticeContent))}"></th:block >
 						</th:block>
-					<!-- 관리자 에디터입력 내용   공지 html -->
-					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
-					<div class="movblock">
-					 	<div style="height:100px"></div><!-- 여백용 html -->
-						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
-						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-						</th:block>
-						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
-						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
-						</th:block>
-					</div>
-					</th:block>
-					<!-- 공통상품베너 -->
 					<th:block th:if="${goodsBannerList != null and !goodsBannerList.empty}">
 					<th:block th:each="goodsBanner, status : ${goodsBannerList}" >
 					<th:block th:if="${goodsBanner.strVar1 != null and  not #strings.equals(goodsBanner.strVar1, '#')}">
@@ -706,6 +703,20 @@
 					</th:block>
 					</th:block>
 					</th:block>
+					<!-- 관리자 에디터입력 내용   공지 html -->
+					<th:block th:each="goodsVideo, status : ${goodsVideoList}">
+					<div class="movblock">
+					 	<div style="height:100px"></div><!-- 여백용 html -->
+						<th:block th:if="${goodsVideo.videoGb == 'Y'}">
+						<iframe th:src="${'https://www.youtube.com/embed/'+goodsVideo.kmcKey+'?rel=0&mute=1'}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+						</th:block>
+						<th:block th:unless="${goodsVideo.videoGb == 'Y'}">
+						<iframe width="100%" height="100%" th:src="${kollusMediaUrl+'/'+goodsVideo.kmcKey +'?player_version=html5&mute'}" frameborder="0" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe>
+						</th:block>
+					</div>
+					</th:block>
+					<!-- 공통상품베너 -->
+					
 					
 					<!-- 관리자 에디터입력 내용 노출  상단 html -->
 					<th:block  th:if="${goodsInfo.goodsTopDesc != null  and !goodsInfo.goodsTopDesc.empty}" >
@@ -1039,7 +1050,45 @@
 		</div>
 		<!-- //상품상세정보 -->
 		<!-- 이 상품과 함께 본 상품 -->
-		<div class="content wide pd_clickother" id="goodsTogetherbArea">
+		<div class="content wide pd_clickother" id="goodsTogetherbArea" th:if="${togetherGoodsList != null and !togetherGoodsList.empty}">
+			<div class="cont_head">
+				<h3 class="subH1 t_c mb40">이 상품과 함께 본 상품</h3>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="area_slider">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide" th:each="goodsInfo, status : ${togetherGoodsList}">
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_03', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_03','','','pc_detail');" class="itemLink" >
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm +'?RS=300'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											</div>
+											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+											<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+											<p class="itemPrice">
+												<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+												<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+												<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+											</p>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+						
+					</div>
+					<!-- Add Pagination-->
+					<div class="swiper-pagination"></div>
+					<!-- Add Arrows -->
+					<div class="swiper-button-next"></div>
+					<div class="swiper-button-prev"></div>
+				</div>
+				<!-- // CONT-BODY -->
+			</div>
 		</div>
 		<!-- // 이 상품과 함께 본 상품 -->
 		<!-- STYLE24의 스타일링 추천 -->
@@ -1090,7 +1139,7 @@
 																	<a href="javascript:void(0);" class="itemLink" >
 																	</th:block>
 																	<th:block th:unless="${(lookbookGoods.stockQty <= 0 or lookbookGoods.soldoutYn == 'Y')}">
-																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '',[[${ithrCd}]],[[${contentsLoc}]] )">
+																	<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${lookbookGoods.goodsCd}]], '','IN15_06','')">
 																	</th:block>
 																		<div class="itemPic">
 																			<img alt="" class="vLHTC pd_img"  th:src="${imgGoodsUrl+'/'+lookbookGoods.sysImgNm+'?RS=100'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
@@ -1126,11 +1175,87 @@
 		</div>
 		<!-- // STYLE24의 스타일링 추천 -->
 		<!-- 브랜드 추천상품 -->
-		<div class="content wide pd_brand" id="goodsRecommendbArea">
+		<div class="content wide pd_brand" id="goodsRecommendbArea" th:if="${recommendGoodsList != null and !recommendGoodsList.empty}">
+			<div class="cont_head">
+				<h3 class="subH1 t_c mb40" th:text="${goodsInfo.brandGroupNm +' 추천상품'}"></h3>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="area_slider">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide" th:each="goodsInfo, status : ${recommendGoodsList}">
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_04', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_04','','','pc_detail');" class="itemLink" >
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm +'?RS=300'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											</div>
+											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+											<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+											<p class="itemPrice">
+												<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+												<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+												<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+											</p>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+						
+					</div>
+					<!-- Add Pagination-->
+					<div class="swiper-pagination"></div>
+					<!-- Add Arrows -->
+					<div class="swiper-button-next"></div>
+					<div class="swiper-button-prev"></div>
+				</div>
+				<!-- // CONT-BODY -->
+			</div>
 		</div>
 			<!-- // 브랜드 추천상품 -->
 		<!-- 이 상품과 비슷한 상품 -->
-		<div class="content wide pd_relate" id="goodsLikebArea">
+		<div class="content wide pd_relate" id="goodsLikebArea" th:if="${likeGoodsList != null and !likeGoodsList.empty}">
+			<div class="cont_head">
+				<h3 class="subH1 t_c mb40">이 상품과 비슷한 상품</h3>
+			</div>
+			<div class="cont_body">
+				<!-- CONT-BODY -->
+				<div class="area_slider">
+					<div class="swiper-container">
+						<div class="swiper-wrapper">
+							<div class="swiper-slide" th:each="goodsInfo, status : ${likeGoodsList}">
+								<div class="item_prod">
+									<div class="item_state">
+										<button type="button" class="itemLike" th:classappend="${goodsInfo.wishYn == 'Y'}? 'active' : ''"  onclick="cfnPutWishList(this);" th:attr="goodsCd=${goodsInfo.goodsCd}, ithrCd='IN15_05', contentsLoc='', planDtlSq=''">관심상품 추가</button>
+										<a href="javascript:void(0);" th:onclick="cfnGoToGoodsDetail([[${goodsInfo.goodsCd}]], '','IN15_05','','','pc_detail');" class="itemLink" >
+											<div class="itemPic">
+												<img alt="" class="vLHTC pd_img" th:src="${imgGoodsUrl+'/'+goodsInfo.sysImgNm +'?RS=300'}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+											</div>
+											<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
+											<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
+											<p class="itemPrice">
+												<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+												<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+												<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+											</p>
+										</a>
+									</div>
+								</div>
+							</div>
+						</div>
+						
+					</div>
+					<!-- Add Pagination-->
+					<div class="swiper-pagination"></div>
+					<!-- Add Arrows -->
+					<div class="swiper-button-next"></div>
+					<div class="swiper-button-prev"></div>
+				</div>
+				<!-- // CONT-BODY -->
+			</div>
 		</div>
 		<!-- // 이 상품과 비슷한 상품 -->
 	</div>
@@ -1839,7 +1964,7 @@
 		}
 		tag += '								</p>\n';
 		if (gagajf.isNull(soldout)){
-			tag += '								<button type="button" class="btn btn_default" onclick="cfnGoToGoodsDetail(\''+goodsCd+'\',\'\',\'\')"><span>자세히 보기</span></button>\n';	
+			tag += '								<button type="button" class="btn btn_default" onclick="cfnGoToGoodsDetail(\''+goodsCd+'\',\'\',\'IN15_06\')"><span>자세히 보기</span></button>\n';	
 		}
 		tag += '							</div>\n';
 		tag += '						</div>\n';
@@ -1860,13 +1985,60 @@
 	//슬라이드 - 함께하면 할인되는 다다익선 상품
 	var togetherItemSwiper = new Swiper('.pd .pd_together .area_slider .swiper-container', {
 		slidesPerView: 6,
-		spaceBetween: 20,
-		scrollbar: {
-			el: '.pd_together .swiper-scrollbar',
-			hide: true,
-		},
+        freemode: true,
+        spaceBetween: 20,
+        scrollbar: {
+            el: '.pd_together .swiper-scrollbar',
+            hide: true,
+        },
 	});  	
 	
+	//슬라이드 - 이 상품과 함께 본 상품
+	var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
+	     slidesPerView: 5,
+	     slidesToScroll: 5,
+	     slidesPerGroup: 5,
+	     spaceBetween: 20,
+	     navigation: {
+	         nextEl: '.pd_clickother .swiper-button-next',
+	         prevEl: '.pd_clickother .swiper-button-prev',
+	     },
+	     pagination: {
+	         el: '.pd_clickother .swiper-pagination',
+	         clickable: true,
+	     },
+	 });   
+	
+	//슬라이드 - 브랜드 추천상품
+	var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
+		slidesPerView: 5,
+        spaceBetween: 20,
+        slidesPerGroup: 5,
+        navigation: {
+            nextEl: '.pd_brand .swiper-button-next',
+            prevEl: '.pd_brand .swiper-button-prev',
+        },
+        pagination: {
+            el: '.pd_brand .swiper-pagination',
+            clickable: true,
+        },
+	});  
+	
+	//슬라이드 - 이 상품과 비슷한 상품 
+	var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
+		slidesPerView: 5,
+        spaceBetween: 20,
+        slidesPerGroup: 5,
+        navigation: {
+            nextEl: '.pd_relate .swiper-button-next',
+            prevEl: '.pd_relate .swiper-button-prev',
+        },
+        pagination: {
+            el: '.pd_relate .swiper-pagination',
+            clickable: true,
+        },
+	});	  
+	
 	//슬라이드 - STYLE24의 스타일링 추천
 	var rcmdItemSwiper = new Swiper('.pd .pd_recommend .area_slider .swiper-container', {
 		slidesPerView: 1,
@@ -1889,6 +2061,14 @@
 		var descrpToggle = $(this).find('span');
 		$(descrpToggle).text($(descrpToggle).text() == '상세정보 더보기' ? '상세정보 접기' : '상세정보 더보기');
 		return false;
+		
+		//210525_더보기 닫을 시 현재 위치로 화면 포커스
+		if($('.pd_descrp .btn_more_box').hasClass('covered') === true){
+			var offset = $('.pd_descrp .btn_more_box').offset();
+			$('html').animate({scrollTop : offset.top - 80}, 400);
+		}
+
+         return false;
 	}); 
 	
 
@@ -1915,7 +2095,7 @@
 	params.supplyCompCd = [[${params.supplyCompCd}]];
 	params.brandGroupNm = [[${goodsInfo.brandGroupNm}]];
 	
-	//함께본 상품(ajax html)
+ /* 	//함께본 상품(ajax html)
 	$('#goodsTogetherbArea').load('GoodsDetailFormWeb.html', function() {
 		params.goodsOtherGb = "together";
 		params.ithrCd = "tmtb";
@@ -1937,14 +2117,14 @@
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
 		fnGoodsLikeSearch(params);
-	});
-	
+	}); */
+	 
 	//$(document).ready( function() {
 	$(function(){
 		//210526_ 추가 : 이미지 style 속성 제거
 		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
 		
-		var params = new Object();
+/* 		var params = new Object();
 		params.goodsCd = [[${params.goodsCd}]];
 		params.viewDt = [[${params.viewDt}]];
 		params.preview = [[${params.preview}]];
@@ -1970,7 +2150,7 @@
 		params.goodsOtherGb = "like";
 		params.ithrCd = "tmtb";
 		params.contentsLoc = "tmtb";
-		//fnGoodsLikeSearch(params);
+		//fnGoodsLikeSearch(params); */
 		
 		var opt_selecter01 = new sCombo('.opt_select .select_custom.item_opt1.item_opt1_1');
 		var opt_selecter01_1 = new sCombo('.opt_set_select .select_custom.item_opt1.item_opt1_1');
@@ -2040,7 +2220,7 @@
 	}
 	
 	// 상품평 상세 레이어 호출후 콜백에서 호출하므로 여기에 있어야함
-	var fnReviewDetailLayerCollBack = function(){debugger;
+	var fnReviewDetailLayerCollBack = function(){
 		
 		fnReviewDetail();
 	       
@@ -2112,6 +2292,37 @@
 		});		
 	}
 	
+	// 상품배송 레이어 호출후 콜백에서 호출하므로 여기에 있어야함
+	var fnGoodsDeliveryCollBack = function(){
+		
+		// 상품배송 정보
+		var params = new Object();
+		let goodsCd = [[${goodsInfo.goodsCd}]];
+		params.goodsCd = goodsCd;
+
+		//gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/delivery/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealDelivery").css("display", "block");
+					$("#goodsDealDelivery").html(result);
+				}
+			}
+		});	
+	}
+	
+	
+	
 	 $(document).on('click','.option_box [class^="opt_"] .select_custom .select',function(e){
 
 		 let selectHeight = $(this);

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

@@ -685,7 +685,24 @@
 	
 	// 구성 상품 상세 배송정보
 	var fnGoodsDetailDelivery = function(params) {
-		gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		//gagajf.ajaxSubmit("/goods/detail/delivery/frame", "html", "goodsDealDelivery", params);
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/delivery/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealDelivery").css("display", "block");
+					$("#goodsDealDelivery").html(result);
+				}
+			}
+		});	
 	}
 	
 	// 배송정보 상품선택시

+ 51 - 45
src/main/webapp/WEB-INF/views/web/goods/GoodsOtherFormWeb.html

@@ -40,10 +40,10 @@
 								<p class="itemBrand" th:text="${goodsInfo.brandGroupNm}">BRAND NAME1</p>
 								<div class="itemName" th:text="${goodsInfo.goodsFullNm}">남성 로고 자카드 방풍 패딩</div>
 								<p class="itemPrice">
-										<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
-										<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
-										<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
-									</p>
+									<th:block th:text="${#numbers.formatInteger(goodsInfo.currPrice, 0,'COMMA')}"></th:block>
+									<span class="itemPrice_original" th:if="${goodsInfo.listPrice > goodsInfo.currPrice}"  th:text="${#numbers.formatInteger(goodsInfo.listPrice, 0,'COMMA')}">1,000,000</span>
+									<span class="itemPercent" th:if="${goodsInfo.dcRate > 0}" th:text="|${#numbers.formatDecimal(goodsInfo.dcRate,0,0)}%|">30%</span>
+								</p>
 							</a>
 						</div>
 					</div>
@@ -68,47 +68,53 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
-	var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
-	     slidesPerView: 5,
-	     slidesToScroll: 5,
-	     slidesPerGroup: 5,
-	     spaceBetween: 20,
-	     navigation: {
-	         nextEl: '.pd_clickother .swiper-button-next',
-	         prevEl: '.pd_clickother .swiper-button-prev',
-	     },
-	     pagination: {
-	         el: '.pd_clickother .swiper-pagination',
-	         clickable: true,
-	     },
-	 });   
-		//슬라이드 - 브랜드 추천상품
-	var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
-		slidesPerView: 5,
-		spaceBetween: 20,
-		navigation: {
-			nextEl: '.pd_brand .swiper-button-next',
-			prevEl: '.pd_brand .swiper-button-prev',
-		},
-		pagination: {
-			el: '.pd_brand .swiper-pagination',
-			clickable: true,
-		},
-	});  
-
-	//슬라이드 - 이 상품과 비슷한 상품 
-	var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
-		slidesPerView: 5,
-		spaceBetween: 20,
-		navigation: {
-			nextEl: '.pd_relate .swiper-button-next',
-			prevEl: '.pd_relate .swiper-button-prev',
-		},
-		pagination: {
-			el: '.pd_relate .swiper-pagination',
-			clickable: true,
-		},
-	});	  
+	if ('together' == [[${params.goodsOtherGb}]]){
+		var otherItemSwiper = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
+		     slidesPerView: 5,
+		     slidesToScroll: 5,
+		     slidesPerGroup: 5,
+		     spaceBetween: 20,
+		     navigation: {
+		         nextEl: '.pd_clickother .swiper-button-next',
+		         prevEl: '.pd_clickother .swiper-button-prev',
+		     },
+		     pagination: {
+		         el: '.pd_clickother .swiper-pagination',
+		         clickable: true,
+		     },
+		 });   
+		
+	}
+	//슬라이드 - 브랜드 추천상품
+	if ('recommend' == [[${params.goodsOtherGb}]]){
+		var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
+			slidesPerView: 5,
+			spaceBetween: 20,
+			navigation: {
+				nextEl: '.pd_brand .swiper-button-next',
+				prevEl: '.pd_brand .swiper-button-prev',
+			},
+			pagination: {
+				el: '.pd_brand .swiper-pagination',
+				clickable: true,
+			},
+		});  
+	}
+	if ('like' == [[${params.goodsOtherGb}]]){
+		//슬라이드 - 이 상품과 비슷한 상품 
+		var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
+			slidesPerView: 5,
+			spaceBetween: 20,
+			navigation: {
+				nextEl: '.pd_relate .swiper-button-next',
+				prevEl: '.pd_relate .swiper-button-prev',
+			},
+			pagination: {
+				el: '.pd_relate .swiper-pagination',
+				clickable: true,
+			},
+		});	  
+	}	
 	
 
 /*]]>*/

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

@@ -101,10 +101,10 @@
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			return false;
 		}
-		if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
+		/* if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
 			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
 			return;
-		}
+		} */
 		
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		

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

@@ -32,7 +32,7 @@
 							<tbody>
 								<tr th:if="${(goodsCoupon1List != null and !goodsCoupon1List.empty)}">
 									<th>즉시할인</th>
-									<td th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}">최대
+									<td th:each="goodsCoupon, status : ${goodsCoupon1List}" th:if="${status.first}">
 									<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>
 									 할인</td>

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

@@ -485,7 +485,7 @@ var reviewCreate = function () {
         cancelBtnText: "취소",
         sureBtnText: "확인",
         sureBtnClick: function(){
-        	gagajf.ajaxFormSubmit($('#reviewForm').prop('action'), '#reviewForm', fnSaveCallback);
+        	gagajf.ajaxFormSubmit($('#reviewForm').prop('action'), '#reviewForm', fnSaveCallback, true);
         }
     });
 	

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

@@ -18,7 +18,7 @@ var fnGoodsTogetherSearch = function(params) {
 				$("#goodsTogetherbArea").css("display", "block");
 				$("#goodsTogetherbArea").html(result);
 				
-				var otherItemSwiper1 = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
+				/*var otherItemSwiper1 = new Swiper('.pd .pd_clickother .area_slider .swiper-container', {
 				     slidesPerView: 5,
 				     slidesToScroll: 5,
 				     slidesPerGroup: 5,
@@ -31,7 +31,7 @@ var fnGoodsTogetherSearch = function(params) {
 				         el: '.pd_clickother .swiper-pagination',
 				         clickable: true,
 				     },
-				 });   
+				 });   */
 			}
 		}
 	});
@@ -55,7 +55,7 @@ var fnGoodsRecommendSearch = function(params) {
 			if (result != null) {
 				$("#goodsRecommendbArea").css("display", "block");
 				$("#goodsRecommendbArea").html(result);
-				 var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
+				/* var relateItemSwiper = new Swiper('.pd .pd_brand .area_slider .swiper-container', {
 		                slidesPerView: 5,
 		                spaceBetween: 20,
 		                slidesPerGroup: 5,
@@ -67,7 +67,7 @@ var fnGoodsRecommendSearch = function(params) {
 		                    el: '.pd_brand .swiper-pagination',
 		                    clickable: true,
 		                },
-		            });  
+		            });  */
 			}
 		}
 	});
@@ -91,7 +91,7 @@ var fnGoodsLikeSearch = function(params) {
 			if (result != null) {
 				$("#goodsLikebArea").css("display", "block");
 				$("#goodsLikebArea").html(result);
-				var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
+				/*var relateItemSwiper = new Swiper('.pd .pd_relate .area_slider .swiper-container', {
 	                slidesPerView: 5,
 	                spaceBetween: 20,
 	                slidesPerGroup: 5,
@@ -103,7 +103,7 @@ var fnGoodsLikeSearch = function(params) {
 	                    el: '.pd_relate .swiper-pagination',
 	                    clickable: true,
 	                },
-	            });      
+	            });      */
 			}
 		}
 	});

+ 387 - 1
src/main/webapp/biz/search.js

@@ -43,7 +43,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		}else{
 			tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		}
-		tag += '<a href="javascript:void(0);" class="itemLink" onclick="fnClickGoodsCd(\''+item.goodsCd+'\',\''+item.mainColorCd+'\');">';
+		tag += '<a href="javascript:void(0);" class="itemLink" onclick="fnClickGoodsCd(\''+item.goodsCd+'\',\'\');">';
 		tag += '			<div class="itemPic">';
 		if(!gagajf.isNull(item.videos)){
 			var videoArr = item.videos.split(",");
@@ -182,4 +182,390 @@ var fnCategoryGoodsInfiniteScrollInit = function(){
 	$("#listBox").html("");
 }
 
+var filterHtml = '';
+var filterStatHtml = '';
+
+// 공용,신상 조건
+var fnFilterOption = function (obj, stat){
+	var thisId = $(obj).attr('id');
+	var tag = '';
+
+	if(thisId == 'unisex'){
+		if(stat=='on'){
+			$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+			tag += '<input type="hidden" name="unisex" value="G007_Z"/>\n';
+			$("#searchGoodsForm").append(tag);
+		}else{
+			$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+			$("#searchGoodsForm input:hidden[name=unisex]").remove();
+		}
+	}else{
+		if(stat=='on'){
+			$(obj).attr('onclick','fnFilterOption(this,\'off\');');
+			tag += '<input type="hidden" name="newGoods" value="40"/>\n';
+			$("#searchGoodsForm").append(tag);
+		}else{
+			$(obj).attr('onclick','fnFilterOption(this,\'on\');');
+			$("#searchGoodsForm input:hidden[name=newGoods]").remove();
+		}
+	}
+	fnCategoryGoodsInfiniteScrollInit();
+	fnSearchGoodsListSearch();
+}
+
+// 상품상세 필터 조회
+var filterSel = function (obj, gubun, staus, sizeGb){
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	let $obj = $(obj);
+	if(staus=='on'){
+		filterStatHtml = '';
+		if(gubun=='size'){
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\''+sizeGb+'\');');
+		}else{
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'off\',\'\');');
+		}
+
+		$("#filterData").find('span').each(function(idx,item) {
+			if(gubun=='color'){
+				if($obj.attr('data-id').replace('#','').trim() == $(this).closest("span").attr('id')) {
+					$(this).closest("span").remove();
+				}
+			}else{
+				if($obj.attr('data-id') == $(this).closest("span").text()) {
+					$(this).closest("span").remove();
+				}
+			}
+		});
+		filterStatHtml = $("#filterData").html();
+	}else{
+		if(gubun=='size'){
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\''+sizeGb+'\');');
+		}else{
+			$(obj).attr('onclick','filterSel(this,\''+gubun+'\',\'on\',\'\');');
+		}
+
+		let tag = '';
+		if(gubun=='color'){
+			tag += '<span id="'+$obj.attr('data-id').replace('#','')+'">';
+			if($obj.attr('data-id')=='#FFFFFF'){
+				tag += '	<span class="pdColor-color" style="background-color: #'+$obj.attr('data-id')+';border:1px solid #aaa;" value="'+$obj.attr('data-id')+'"></span>';
+			}else{
+				tag += '	<span class="pdColor-color" style="background-color: #'+$obj.attr('data-id')+'" value="'+$obj.attr('data-id')+'"></span>';
+			}
+			tag += '	<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\',\'on\');"></a >';
+			tag += '</span>';
+		}else{
+			tag += '<span>'+$obj.attr('data-id');
+			if(!gagajf.isNull(sizeGb)){
+				tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\',\'on\',\''+sizeGb+'\');"></a >';
+			}else{
+				tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilter(this,\''+gubun+'\',\'on\',\'\');"></a >';
+			}
+			tag += '</span>';
+		}
+
+		$("#filterData").append(tag);
+
+		filterStatHtml += tag;
+	}
+
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnFilterSet(gubun, sizeGb);
+}
+
+var fnFilterSet = function (searchId, sizeGb, appGb){
+	fnCategoryGoodsInfiniteScrollInit();
+	$("#searchGoodsForm input:hidden[name="+searchId+"Arr]").remove();
+	var tag = '';
+	var mobTag = '';
+	if(searchId=='size'){
+		$('#filterForm input[name='+searchId+']:checked').each(function(){
+			tag = '<input type="hidden" name="'+searchId+'Arr" value="'+$(this).attr('data-id')+'"/>\n';
+			$("#searchGoodsForm").append(tag);
+		});
+	}else{
+		$('#filterForm input[name='+searchId+']:checked').each(function(){
+			tag = '<input type="hidden" name="'+searchId+'Arr" value="'+$(this).val()+'"/>\n';
+			$("#searchGoodsForm").append(tag);
+		});
+	}
+
+	if(appGb == 'Mob'){
+		var data = '';
+		var tag = '';
+		var filterSet = '';
+		$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+		$('#filterForm input[name='+searchId+']:checked').each(function(idx){
+			if(searchId=='color'){
+				$('#'+searchId+'FilterDiv').find('.daps1').find('.pic').find('span').html('');
+				var mobTag = '';
+				var color = $(this).attr('data-id');
+				console.log('color::'+$(this).attr('data-id'));
+				if(color=='FFFFFF'){
+					mobTag += '<span class="pdColor-color" style="background-color:#'+color+';border:1px solid #aaa;"></span>';
+				}else{
+					mobTag += '<span class="pdColor-color" style="background-color:#'+color+'"></span>';
+				}
+				$("#"+searchId+"FilterDiv").find('.daps1').find('.pic').append(mobTag);
+			}else{
+				$('#'+searchId+'FilterDiv').find('.daps1').find('span').html('');
+				if(idx>0){
+					data += ',';
+				}
+				data += $(this).attr('data-id');
+				$("#"+searchId+"FilterDiv").find('.daps1').append('<span class="pic">'+data+'</span>');
+			}
+		});
+
+	}
+	fnSetFilterHtml();
+	fnSearchGoodsListSearch();
+}
+
+var fnSetFilterHtml = function (gubun, staus, mobGb){
+	filterHtml = '';
+
+	$('#filterForm input[name=size]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="sizeArr" value="'+$(this).attr('data-id')+'"/>\n';
+	});
+	$('#filterForm input[name=brandGroup]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="brandGroupArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=age]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="ageArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=season]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="seasonArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=color]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="colorArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=benefit]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="benefitArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=price]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="priceArr" value="'+$(this).val()+'"/>\n';
+	});
+	$('#filterForm input[name=dcRate]:checked').each(function(){
+		filterHtml += '<input type="hidden" name="dcRateArr" value="'+$(this).val()+'"/>\n';
+	});
+	if(!gagajf.isNull($("#filterForm input[name=hPriceFrom]").val())){
+		filterHtml += '<input type="hidden" name="priceFrom" value="'+$("#filterForm input[name=hPriceFrom]").val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#filterForm input[name=hPriceTo]").val())){
+		filterHtml += '<input type="hidden" name="priceTo" value="'+$("#filterForm input[name=hPriceTo]").val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#filterForm input[name=hDcRateFrom]").val())){
+		filterHtml += '<input type="hidden" name="dcRateFrom" value="'+$("#filterForm input[name=hDcRateFrom]").val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#filterForm input[name=hDcRateTo]").val())){
+		filterHtml += '<input type="hidden" name="dcRateTo" value="'+$("#filterForm input[name=hDcRateTo]").val()+'"/>\n';
+	}
+
+	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate1No]').val())){
+		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate1No]').val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate2No]').val())){
+		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate2No]').val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate3No]').val())){
+		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate3No]').val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate4No]').val())){
+		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate4No]').val()+'"/>\n';
+	}
+	if(!gagajf.isNull($("#searchGoodsForm").find('input[name=cate5No]').val())){
+		filterHtml += '<input type="hidden" name="cate1No" value="'+$("#searchGoodsForm").find('input[name=cate5No]').val()+'"/>\n';
+	}
+
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
+}
+
+// 상품상세 필터 삭제
+var fnDeleteFilter = function (obj, gubun, staus, sizeGb){
+	if(gubun=='size'){
+		$("#"+gubun+"FilterDiv #sizeLi"+sizeGb).each(function(idx,item) {
+			$('#sizeLi'+sizeGb+' .size_btn').each(function (){
+				if($(obj).closest("span").text() == $(this).find('input').attr('data-id')){
+					$(this).find('input').click();
+				}
+			});
+		});
+	}else{
+		$("#"+gubun+"FilterDiv > ul > li").each(function(idx,item) {
+			if(gubun == 'color'){
+				if($(obj).closest("span").attr('id') == $(this).find('input').attr('data-id').trim()){
+					$(this).find('input').click();
+				}
+			}else{
+				if($(obj).closest("span").text() == $(this).find('input').attr('data-id')){
+					$(this).find('input').click();
+				}
+			}
+		});
+	}
+
+	$(obj).closest("span").remove();
+}
+
+// 정렬 순서
+var fnSortingChange = function (obj, sortingType, stat, appGb){
+	fnCategoryGoodsInfiniteScrollInit();
+	if(stat != 'back'){
+		if($("#searchGoodsForm input[name=sortingType]").val()==sortingType){
+			return;
+		}
+	}
+
+	if(appGb != 'Mob'){
+		$("#sortArea").find('li').each(function (){
+			$(this).find('a').attr('class','off');
+		});
+	}else{
+		$("#sortArea").find('button').each(function (){
+			$(this).removeClass("on");
+		});
+		$("#sorting"+sortingType).addClass("on");
+		$("#filter").text($("#sorting"+sortingType).find('span').text());
+	}
+
+	$(obj).addClass("on");
+	if(stat=='back'){
+		$("#sorting"+sortingType).addClass("on");
+	}
+	$("#searchGoodsForm").find("[name=sortingType]").val(sortingType);
+	$("#searchGoodsForm").find("[name=pageNo]").val(1);
+	gagaInfiniteScroll.pageStatus.loadPage = 1;
+	gagaInfiniteScroll.pageStatus.pageNum = [];
+	gagaInfiniteScroll.pageStatus.sortingType = sortingType;
+
+	$('#endPage').hide();
+	$('#noFilterData').hide();
+	fnSearchGoodsListSearch();
+}
+
+// 상품상세
+var fnClickGoodsCd = function (goodsCd, mainColorCd){
+	let scrollpos = $(window).scrollTop();
+	localStorage.setItem('scrollpos', scrollpos);
+	cfnGoToGoodsDetail(goodsCd, mainColorCd);
+}
+
+var fnSetCateFilter = function (cate1No, cate2No, cate3No, cate4No, cate5No){
+	fnCategoryGoodsInfiniteScrollInit();
+	$("#searchGoodsForm input:hidden[name=cate1No]").remove();
+	$("#searchGoodsForm input:hidden[name=cate2No]").remove();
+	$("#searchGoodsForm input:hidden[name=cate3No]").remove();
+	$("#searchGoodsForm input:hidden[name=cate4No]").remove();
+	$("#searchGoodsForm input:hidden[name=cate5No]").remove();
+	let tag = '';
+
+	if(!gagajf.isNull(cate1No)){
+		tag += '<input type="hidden" name="cate1No" value="'+cate1No+'"/>';
+	}
+	if(!gagajf.isNull(cate2No)){
+		tag += '<input type="hidden" name="cate2No" value="'+cate2No+'"/>';
+	}
+	if(!gagajf.isNull(cate3No)){
+		tag += '<input type="hidden" name="cate3No" value="'+cate3No+'"/>';
+	}
+	if(!gagajf.isNull(cate4No)){
+		tag += '<input type="hidden" name="cate4No" value="'+cate4No+'"/>';
+	}
+	if(!gagajf.isNull(cate5No)){
+		tag += '<input type="hidden" name="cate5No" value="'+cate5No+'"/>';
+	}
+
+	$("#searchGoodsForm").append(tag);
+	fnSetFilterHtml();
+
+	fnSearchGoodsListSearch();
+}
+
+// 필터 가격 확인
+var fnCheckPrice = function (data,priceLen){
+	$("#priceSpan").remove();
+	$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
+	$("#searchGoodsForm input:hidden[name=priceTo]").remove();
+	let min = data.from;
+	let max = data.to;
+	$("#price_input_from").val(custom_values[0]);
+	$("#price_input_to").val(custom_values[priceLen]);
+
+	fnFilterSlider('price' , custom_values[min].addComma(), custom_values[max].addComma());
+}
+
+// 필터 할인율 확인
+var fnCheckDcRate = function (data){
+	$("#dcrateSpan").remove();
+	$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
+	$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
+	let min = data.from;
+	let max = data.to;
+	$("#price_input_from").val(0);
+	$("#price_input_to").val(100);
+
+	fnFilterSlider('dcrate' , custom_values02[min].replace('%',''), custom_values02[max].replace('%',''));
+}
+
+
+var fnFilterSlider = function (gubun, min, max){
+	fnCategoryGoodsInfiniteScrollInit();
+	let tag = '';
+	let oriMin = '';
+	let oriMax = '';
+	filterHtml = '';
+	filterStatHtml = '';
+	filterStatHtml = $("#filterData").html();
+	$("#searchGoodsForm").find('input[name=priceFrom]').remove();
+	$("#searchGoodsForm").find('input[name=priceTo]').remove();
+	$("#searchGoodsForm").find('input[name=dcRateFrom]').remove();
+	$("#searchGoodsForm").find('input[name=dcRateTo]').remove();
+	if(gubun=='price'){
+		oriMin = $("#price_input_from").val();
+		oriMax = $("#price_input_to").val();
+	}else{
+		oriMin = $("#dcrate_input_from").val();
+		oriMax = $("#dcrate_input_to").val();
+	}
+
+	if(gubun=='price'){
+		if(min!=max){
+			tag += '<span id="priceSpan">'+ min +'원~'+max+'원';
+		}else{
+			tag += '<span id="priceSpan">'+max+'원';
+		}
+		$("#filterForm").find('input[name=hPriceFrom]').val(min);
+		$("#filterForm").find('input[name=hPriceTo]').val(max);
+	}else{
+		if(min!=max){
+			tag += '<span id="dcrateSpan">'+ min +'~'+max+'%';
+		}else{
+			tag += '<span id="dcrateSpan">'+max+'%';
+		}
+		$("#filterForm").find('input[name=hDcRateFrom]').val(min);
+		$("#filterForm").find('input[name=hDcRateTo]').val(max);
+	}
+	tag += '<a href="javascript:void(0);" class="filter_delete" onclick="fnDeleteFilterSlider(this,\''+gubun+'\', \''+oriMin+'\', \''+oriMax+'\');"></a >';
+	tag += '</span>';
+
+	$("#filterData").append(tag);
+	filterStatHtml += tag;
+
+	var tag2 = '';
+	if(gubun=='price'){
+		tag2 += '<input type="hidden" name="priceFrom" value="'+min.replace(",", "")+'"/>\n';
+		tag2 += '<input type="hidden" name="priceTo" value="'+max.replace(",", "")+'"/>\n';
+		$("#searchGoodsForm").append(tag2);
+	}else{
+		tag2 += '<input type="hidden" name="dcRateFrom" value="'+min+'"/>\n';
+		tag2 += '<input type="hidden" name="dcRateTo" value="'+max+'"/>\n';
+		$("#searchGoodsForm").append(tag2);
+	}
+	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
+	fnSetFilterHtml();
+	fnSearchGoodsListSearch();
+}
+
 //****************상품리스트  end **********************************

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

@@ -935,7 +935,7 @@ section.main.scr, section.ev_list.scr, section.dp_exhibition.scr, section.dp_loo
 
 /* footer */
 footer{background-color: #f1f1f1;}
-footer .btn_top{position: fixed; bottom: 9%; right: 2.0rem; opacity: 0; background-color: rgba(0, 0, 0, 0.4); width: 4.1rem; height: 4.0rem; font-size: 0; z-index: 50; background:url(/images/mo/mo_btn_top.png) no-repeat;}
+footer .btn_top{position: fixed; bottom: 9%; right: 2.0rem; opacity: 0; background-color: rgba(0, 0, 0, 0.4); width: 4.1rem; height: 4.0rem; font-size: 0; z-index: 500; background:url(/images/mo/mo_btn_top.png) no-repeat;}
 footer .btn_top span{display: block;width: 2.4rem;height: 2.4rem;margin: 0 auto;position: relative;opacity: 1;color: #222222;font-size: 1.1rem;font-weight: 600;line-height: 3.4rem;letter-spacing: -0.025em;}
 footer .f1{background-color: #f1f1f1;padding: 0 0 4.5rem; position: relative;}
 footer .f1 .inner{padding: 0 2.0rem 2.0rem;}
@@ -1942,6 +1942,8 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 }
 
 
+/* Notch  */
+@media only screen and (min-width: 375px) and (max-width: 415px) and (min-height: 722px) and (max-height: 897px){/* footer{padding-bottom: 8rem;}  *//* footer .f1 {padding: 0 0 8.5rem;}  *//* footer .btn_top {bottom: 20.5%;} */.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.shopping_bag .od_calc_wrap{padding-bottom: 88px; background-color: #f5f5f5; background-color: #aa2020;}.cs_contactUs_my_footer,.product_floormenu,.product_floormenu.fixed{height: calc(env(safe-area-inset-bottom) + 8.8rem);height: calc(constant(safe-area-inset-bottom) + 8.8rem);background: #38c056; padding-bottom: 88px;}}footer, footer .f1 {padding-bottom: calc(env(safe-area-inset-bottom) + 3.5rem);padding-bottom: clac(constant(safe-area-inset-bottom) + 3.5rem);}footer .btn_top {bottom: calc(env(safe-area-inset-bottom) + 6.5rem);bottom: clac(constant(safe-area-inset-bottom) + 6.5rem);}.my .my_delivery .inner > .btn_group,.adrsAdd_pop .modal-footer .btn,.cs_contactUs_my_footer,.shopping_bag .od_calc_wrap,.product_floormenu,.product_floormenu.fixed{	/* background: #f5f5f5; height: 5.8rem; height: calc() + 5.8rem); height: calc() + 5.8rem); */ 	padding-bottom: constant(safe-area-inset-bottom); 	padding-bottom: env(safe-area-inset-bottom); background: #f5f5f5; background: #000000;}
 
 
 /* APP ONLY */

+ 7 - 9
src/main/webapp/ux/mo/css/layout_m.css

@@ -148,7 +148,7 @@
 .cs_contactUs_my .imgUpload{margin-left:0.6rem;}
 .cs_contactUs_my .imgUpload:first-child{margin: 0;}
 .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: 100;}
+.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;}
@@ -664,13 +664,12 @@
 [class*="pd_descrp"] .descrp_box > div > span.tit_desc {display:block; margin-bottom:1rem; font-size:1.3rem; font-weight:500; letter-spacing:-0.025em;}
 [class*="pd_descrp"] .descrp_box > div > p {font-size:1.3rem; font-weight:200; line-height:1.5; word-break:keep-all;}
 [class*="pd_descrp"] .mdhtml_box {margin-top:4rem;}
-[class*="pd_descrp"] .mdhtml_box a{display:block; margin:0 -2rem; padding-top: 26%; overflow: hidden; position: relative;}
-[class*="pd_descrp"] .mdhtml_box img {width:100%;}
 [class*="pd_descrp"] .mdhtml_box img {width:100%;height: 100%; display: block;}
-[class*="pd_descrp"] .mdhtml_box a img {/*width:100%;*/max-width: none;width: auto;height: 100%;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
 [class*="pd_descrp"] .mdhtml_box iframe {display:block; margin-left:auto; margin-right:auto}
 [class*="pd_descrp"] .mdhtml_box .movblock {position:relative; display:block; height:0; line-height:0; margin-left:auto; margin-right:auto; padding-top:56.25%; background:#eee}
 [class*="pd_descrp"] .mdhtml_box .movblock > iframe {position:absolute; left:0; right:0; top:0; bottom:0; width:100%; height:100%; z-index:2}
+[class*="pd_descrp"] .mdhtml_box.bnnoti p{display:block; margin:0 -2rem; padding-top: 26%; overflow: hidden; position: relative;}
+[class*="pd_descrp"] .mdhtml_box.bnnoti img {/*width:100%;*/max-width: none;width: auto;height: 100%;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
 [class*="pd_descrp"] [class^="view_"] {margin-top:6rem; text-align:center;}
 [class*="pd_descrp"] [class^="view_"]:first-of-type {margin-top:0;}
 [class*="pd_descrp"] [class^="view_"] .tit_view {display:block; color:#222; font-size:2.1rem; font-weight:400; text-align:center;}
@@ -811,7 +810,7 @@
 
 
 /* 플롯팅 메뉴 > 구매하기 */
-.product_floormenu{position:fixed; bottom:0; left:0; width:100%; height:5.8rem; line-height:5.8rem; z-index:30;}
+.product_floormenu{position:fixed; bottom:0; left:0; width:100%; /*height:5.8rem; line-height:5.8rem;*/ z-index:30;}
 .product_floormenu > div{float:left; color:#fff; text-align:center;}
 .product_floormenu > div:nth-child(1){width:37%;}
 .product_floormenu > div:nth-child(2){width:63%; background-color:#fd4802;}
@@ -831,8 +830,6 @@
 .product_floormenu.soldout .prd_buy > .buying{display:none;}
 .product_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
 .product_floormenu.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0);}
-.product_floormenu,.product_floormenu.fixed{background: #f5f5f5; background: #009688; height: 5.8rem;  height: calc(env(safe-area-inset-bottom) + 5.8rem); height: calc(constant(safe-area-inset-bottom) + 5.8rem);}
-  @media only screen and (min-width: 375px) and (max-width: 415px) and (min-height: 722px) and (max-height: 897px){.product_floormenu,.product_floormenu.fixed{height: calc(env(safe-area-inset-bottom) + 5.8rem);height: calc(constant(safe-area-inset-bottom) + 5.8rem);background: #840096;}}
 
 
 /* 토스트팝업 > 구매하기 */
@@ -1889,7 +1886,7 @@
 .dp .dp_listItems_wrap .items_option .select{display:block;}
 /* .dp .dp_listItems_wrap .items_option #filter{font-size:1.2rem; color:#666666; width:100%;line-height:4.5rem; padding:0 1.5rem; background-color:#fff;} */
 .dp .dp_listItems_wrap .open_categori{background-color:#fff; padding: 1.6rem 2rem;}
-.dp .dp_listItems_wrap .list_content .itemsGrp{margin-bottom:-4rem;}
+.dp .dp_listItems_wrap .list_content .itemsGrp{margin-bottom:0;}
 .dp .dp_listItems_wrap .itemsGrp .item_prod:last-child{margin-bottom:0;}
 .dp .dp_listItems_wrap .btn_default{margin-top:0;}
 .dp .dp_listItems_wrap .btn_default:after{content:''; display:inline-block; margin-left:0.8rem; width:1.1rem; height:0.7rem; background:url(/images/mo/ico_btn_more.png) center center no-repeat; background-size:contain;}
@@ -2258,7 +2255,7 @@
 .itemBadge .badge13 {background:#f5f5f5; border-color:#f5f5f5;}
 
 /* 상품코멘트*/
-.viewComment{padding:0 0.7rem; display:inline-block; height:1.8rem; line-height:1.8rem; font-size:1rem; text-align:center; white-space: nowrap; border:1px solid #fd4802; color:#fd4802; border-radius:1.8rem;}
+.viewComment{padding:0 0.7rem; display:inline-block; height:1.8rem; line-height:1.8rem; font-size:1rem; text-align:center; white-space: nowrap; border:0.1rem solid #fd4802; color:#fd4802; border-radius:1.8rem;}
 
 
 /*===================== 브랜드 ===================*/
@@ -2440,6 +2437,7 @@
 .br_search_wrap .brand_title { width: 100%; height: 4.3rem; margin: 2.4rem 0 0; border-bottom: 0.2rem solid black; }
 .br_search_wrap .brand_title input { width: calc(100% - 4.0rem); height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 100; color: #000; border-bottom:2px solid #000; margin-bottom:1.6rem;}
 .br_search_wrap .brand_title .btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1.2rem; right: 5rem; }
+.br_search_wrap .brand_title button { width: 4rem; height: 4rem;}
 .br_search_wrap .brand_title button img { width: 2rem; height: 2rem; position: absolute; top: 1.2rem; right: 2.2rem;}
 .br_search_wrap .inner .result {padding-bottom:3rem; margin: 1.5rem 0 1rem; border-bottom:0.1rem solid #dddddd;}
 .br_search_wrap .inner:last-child .result {border:0px none;}

+ 9 - 4
src/main/webapp/ux/mo/css/style24_m.css

@@ -419,10 +419,10 @@
 
 .main_1stage {padding: 2rem 0 0rem 0;}
 .main_1stage .bnnbox{position: relative; /*height:11.3rem;*/ overflow:hidden; padding-top: 35%;}
-.main_1stage .txtWrap{margin: 0 auto; position: absolute; top: 50%; left: 10%; transform:translate(-10%, -50%); z-index: 1;}
+.main_1stage .txtWrap{margin: 0 auto; position: absolute; top: 50%; left: 2rem; transform:translate(0%, -50%); z-index: 1;}
 .main_1stage .txtWrap p{font-size: 1.8rem;font-weight: 500;letter-spacing: -0.025em;text-align: left;line-height: 1;color: #222222;padding-bottom:1.0rem;}
 .main_1stage .txtWrap p:last-child {padding-bottom:0px;}
-.main_1stage img {position: absolute; top: 50%; left:50%; transform:translate(-50%, -50%); max-width:none; width:auto; height:100%;}
+.main_1stage img {position: absolute; top: 50%; left:50%; transform:translate(-60%, -50%); max-width:none; width:auto; height:100%;}
 
 .post-bnnWide {position: relative;top:0rem;display: block;margin: 0 0 3.4rem;}
 .post-bnnWide .swiper-wrapper {width: 100%;height: 100%;height: auto;margin: 0px auto;padding: 0 0 2.5rem;}
@@ -1470,8 +1470,9 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 /* my_delivery_1 */
 .my_delivery .modal {display: inline-block; overflow-y: none;}
+.my_delivery .blocker {position: relative;}
 .my_delivery .blocker:before {display: none;}
-.my_delivery .modal .modal-body {margin-bottom: 5rem;}
+.my_delivery .modal .modal-body {margin-top: 0 !important; margin-bottom: 5rem;}
 .my_delivery .modal .modal-footer {position: fixed; left: 0; bottom: 0; width: 100%;}
 .my .my_delivery .inner {margin:0; padding: 0;}
 .my .my_delivery .inner > .btn_group {position: fixed; left: 0; bottom: 0; width: 100%; z-index: 99; transition:all 0.3s;}
@@ -1961,6 +1962,7 @@ background-size:100%;}
 .adrsAdd_pop .tbl_wrap .tbl.tbl_dlvr .input_wrap button.btn_sch {position: absolute; top: 0; right: 0; border:0; width: 5rem; height: 4.5rem; background:transparent url('/images/mo/ico_search_btn.png') no-repeat center; background-size:2rem; margin-left: 0;}
 .adrsAdd_pop .tbl_wrap .tbl.tbl_dlvr .input_wrap input.form_control + input.form_control {margin-top: -1px;}
 .adrsAdd_pop .tbl_wrap .tbl.tbl_dlvr input[type='text'] {width: 100%; font-size: 1.3rem; color: #888; font-weight: 300;}
+.adrsAdd_pop .tbl_wrap .tbl.tbl_dlvr input[type='text']:first-of-type {padding-right: 5rem;}
 .adrsAdd_pop .dlvr_basic {margin-top: 1.5rem;}
 .adrsAdd_pop .dlvr_basic label {font-size: 1.4rem;}
 .adrsAdd_pop .tbl_wrap .tbl.tbl_request {padding:1.6rem 0;}
@@ -1994,6 +1996,7 @@ background-size:100%;}
 .adrsModify_pop .tbl_wrap .tbl.tbl_dlvr .input_wrap button.btn_sch {position: absolute; top: 0; right: 0; border:0; width: 5rem; height: 4.5rem; background:transparent url('/images/mo/ico_search_btn.png') no-repeat center; background-size:2rem; margin-left: 0;}
 .adrsModify_pop .tbl_wrap .tbl.tbl_dlvr .input_wrap input.form_control + input.form_control {margin-top: -1px;}
 .adrsModify_pop .tbl_wrap .tbl.tbl_dlvr input[type='text'] {width: 100%; font-size: 1.3rem; color: #888; font-weight: 300;}
+.adrsModify_pop .tbl_wrap .tbl.tbl_dlvr input[type='text']:first-of-type {padding-right: 5rem;}
 .adrsModify_pop .dlvr_basic {margin-top: 1.5rem;}
 .adrsModify_pop .dlvr_basic label {font-size: 1.4rem;}
 .adrsModify_pop .tbl_wrap .tbl.tbl_request {padding:1.6rem 0;}
@@ -2272,6 +2275,7 @@ background-size:100%;}
 .nonMBorder .cont_head h3 {margin-bottom:40px; font-size:40px; font-weight:500;} 
 .nonMBorder input[type="text"] {float:none; width:100%; height:4.5rem; padding:1.7rem 1.5rem; color:#222; font-size:1.3rem; font-weight:300;}
 .nonMBorder input[type="text"]::placeholder {color:#888; font-weight:200;}
+.nonMBorder input[placeholder="배송주소"] {padding-right: 4.5rem;}
 .nonMBorder .form_field {display:block; margin-top:1rem;}
 .nonMBorder .form_field:first-of-type {margin-top:0px;}
 .nonMBorder .cont_foot {position:relative; width:530px; margin:40px auto 0; color:#888; font-size:16px; line-height:1;}
@@ -2535,7 +2539,8 @@ main.container .od_gift .inner:last-child {padding-bottom: 0;}
 .od_gift .tbl_wrap .tbl.tbl_dlvr .input_wrap {display: block; width: 100%; position: relative;}
 .od_gift .tbl_wrap .tbl.tbl_dlvr .input_wrap button.btn_sch {position: absolute; top: 0; right: 0; border:0; width: 5rem; height: 4.5rem; background:transparent url('/images/mo/ico_search_btn.png') no-repeat center; background-size:2rem; margin-left: 0;}
 .od_gift .tbl_wrap .tbl.tbl_dlvr .input_wrap input.form_control + input.form_control {margin-top: -1px;}
-.od_gift .tbl_wrap .tbl.tbl_dlvr input[type='text'] {width: 100%; font-size: 1.3rem; color: #888; font-weight: 300;}
+.od_gift .tbl_wrap .tbl.tbl_dlvr input[type='text'] {width: 100%; font-size: 1.3rem; color: #888; font-weight: 300; padding-right: 0.9rem;}
+.od_gift .tbl_wrap .tbl.tbl_dlvr input[placeholder='배송주소'] {padding-right: 4.5rem;}
 .od_gift .dlvr_basic {margin-top: 1.5rem;}
 .od_gift .dlvr_basic label {font-size: 1.4rem;}
 .od_gift .tbl_wrap .tbl.tbl_request {padding:1.6rem 0 0;}

+ 27 - 31
src/main/webapp/ux/mo/js/common_m.js

@@ -313,13 +313,11 @@ $(document).ready(function () {
                     $("header").css('display', 'none');
                     $("header").css('position', 'fixed');
                     $(".tabbar").removeClass("fixed");
-                    $(".product_floormenu").removeClass("fixed");
                 //스크롤 내릴때
                 } else {
                     $("header").css('display', 'block');
                     $("header").css('position', 'fixed');
                     $(".tabbar").addClass("fixed");
-                    $(".product_floormenu").addClass("fixed");
                 }
                 lastScrollTop = commonSt;
             //경우2 : htopMian + gnb
@@ -334,7 +332,6 @@ $(document).ready(function () {
                     $("#gnb").css('position', 'fixed');
                     $("#gnb").css('top', '0');
                     $(".tabbar").removeClass("fixed");
-                    $(".product_floormenu").removeClass("fixed");
                     $("section.content, section.main, .bnrtype_banner").addClass('scr');
                 //스크롤 내릴때
                 } else {
@@ -344,7 +341,6 @@ $(document).ready(function () {
                     $("#gnb").css('position', 'fixed');
                     $("#gnb").css('top', '55px');
                     $(".tabbar").addClass("fixed");
-                    $(".product_floormenu").addClass("fixed");
                     $("section.content, section.main, .bnrtype_banner").removeClass('scr');
                 }
                 if(commonSt < 170){
@@ -354,7 +350,6 @@ $(document).ready(function () {
                     $("#gnb").css('position', 'fixed');
                     $("#gnb").css('top', '55px');
                     $(".tabbar").addClass("fixed");
-                    $(".product_floormenu").addClass("fixed");
                     $("section.content, section.main, .bnrtype_banner").removeClass('scr');
                 }
                 lastScrollTop = commonSt;
@@ -366,11 +361,9 @@ $(document).ready(function () {
                 //스크롤 올릴때
                 if (commonSt > lastScrollTop) {
                     $(".tabbar").removeClass("fixed");
-                    $(".product_floormenu").removeClass("fixed");
                 //스크롤 내릴때
                 } else {
                     $(".tabbar").addClass("fixed");
-                    $(".product_floormenu").addClass("fixed");
                 }
                 if(commonSt < 10){
                     $(".tabbar").addClass("fixed");
@@ -671,6 +664,8 @@ $(document).ready(function () {
             e.stopPropagation();
         });
 
+        // =============구매하기팝업========================================================
+
         // pop open
         function popOpenScroll(){
             $('html, body').css({'overflow': 'hidden', 'height': '100%'}); 
@@ -686,12 +681,6 @@ $(document).ready(function () {
             $('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
             return false;
         }
-        // pop close
-        function popClsScroll2(){
-            $('html, body').css({'overflow': 'auto', 'height': '100%'}); //n 해제
-            $('#element').off('scroll touchmove mousewheel'); // 터치무브, 휠 스크롤 가능
-            return false;
-        }
         
         // popup (media)
         $(".btn_popOpen").on("click", function(e) {
@@ -761,21 +750,34 @@ $(document).ready(function () {
             return false;
         });
 
-        // btPopAuto
-        $('.btPopClose').click(function(){
-            popClsScroll2();
+         // 쇼핑백팝업
+         $("#btn_shoppingBag_pop").click(function() {
+            popClsScroll();
             $('.container').removeClass('btPop_open');
             autome.style.top  = 100 + "%";
+            $("html, body").animate({"scrollTop": 0}, 0);
+            $("#shoppingBagModal").fadeIn();
+            setTimeout(function(){
+                $("#shoppingBagModal").fadeOut(500);
+            },2000);
             return false;
         });
 
+        // btPopAuto
+        //$('.btPopClose').click(function(){
+        //    popClsScroll2();
+        //    $('.container').removeClass('btPop_open');
+        //    autome.style.top  = 100 + "%";
+        //    return false;
+        //});
+
         let autome = document.querySelector('.btPopAuto'); 
-        let headsize = this.querySelector('.btPopAuto .btPopAuto_head');
-        let bodysize = this.querySelector('.btPopAuto .btPopAuto_body');
+        //let headsize = this.querySelector('.btPopAuto .btPopAuto_head');
+        //let bodysize = this.querySelector('.btPopAuto .btPopAuto_body');
         //console.log('★ btPop_auto헤더 높이 : ' + headsize.offsetHeight);
         //console.log('★ btPop_auto바디 높이 : ' + bodysize.clientHeight);
 
-        let autotop = appHeight - (headsize.offsetHeight + bodysize.offsetHeight);
+        //let autotop = appHeight - (headsize.offsetHeight + bodysize.offsetHeight);
         //console.log('★ btPopAuto전체 높이 - 컨텐츠 높이 : ' + autotop);
         //console.log('★ btPopAuto전체 높이 - 컨텐츠 높이 /10 : ' + autotop /10);
 
@@ -906,18 +908,7 @@ $( document ).ready( function() {
             return false;
         });
 
-        // 쇼핑백팝업
-        $("#btn_shoppingBag_pop").click(function() {
-            popClsScroll2();
-            $('.container').removeClass('btPop_open');
-            autome.style.top  = 100 + "%";
-            $("html, body").animate({"scrollTop": 0}, 0);
-            $("#shoppingBagModal").fadeIn();
-            setTimeout(function(){
-                $("#shoppingBagModal").fadeOut(500);
-            },2000);
-            return false;
-        });	
+       
 
         //210510_삭제
         // $(document).on('click','.popup_box .button_list button',function(){
@@ -935,5 +926,10 @@ $( document ).ready( function() {
         //    $("header").css('position', 'fixed');
         //    }
         //});
+
+        //210604_하단 고정버튼 있을 시 tabbar 제거
+        if($('div').hasClass('product_floormenu') || $('div').hasClass('cs_contactUs_my_footer') || $('div').hasClass('od_calc_wrap')){
+            $('.tabbar').css('display', 'none');
+        }
           
 });

+ 22 - 7
src/main/webapp/ux/pc/css/common.css

@@ -147,12 +147,6 @@ i.big {font-size:18px; position:relative; top:2px;}
 [class*="_fb"] .util_group span::after{background: #222222 !important;}
 /* [class*="bk"] .brand_visual::after{} */
 
-/* 
-스크립트 작성대기
-A는 br_head [class*="bk"] 끝자리 스타일값
-B는 brand_visual 의 after...... 
- */
-
 /* chip */
 .chip {
 display: inline; padding: .2em .6em .3em; font-size: 11px;font-weight: 500;line-height: 1;
@@ -633,10 +627,31 @@ content: "〉";font-size: 12px;padding-left: 8px;
   margin-left: 0;
 }
 
+
 /* page loading */
 #load {width: 100%;height: 100%;top: 0;left: 0;position: fixed;display: block;text-align: center;opacity: 0.6;background: #ffffff;background-image: url('/images/pc/movloading.gif');background-repeat: no-repeat;background-position: 50% 50%;background-size: 37px 36px;z-index: 99999;}
 
 
+/* popup_notice */
+.popup_main_notice {position:fixed; left:50%; top:50%; transform:translate(-50%,-50%); z-index:200;}
+.popup_main_notice .swiper-button-prev,
+.popup_main_notice .swiper-button-next {position:absolute; top:50%; transform:translateY(-50%); display:inline-block; width:60px; height:60px; background-image:url('/images/pc/btn_main_pop_arrow.png'); background-repeat:no-repeat; background-size:auto 100%; z-index:2;}
+.popup_main_notice .swiper-button-prev {left:0; background-position:0 50%;}
+.popup_main_notice .swiper-button-next {right:0; background-position:100% 50%;}
+.popup_main_notice .swiper-button-prev::after,
+.popup_main_notice .swiper-button-next::after {display:none; color:transparent;}
+.popup_main_notice .popup_content {position:relative; line-height:1; vertical-align:top; width:auto; min-width:400px; max-width:1200px;}
+.popup_main_notice .popup_content .popup_body {position:relative; background:#fff;}
+.popup_main_notice .popup_content .popup_body .swiper-slide {width:400px;}
+.popup_main_notice .popup_content .popup_footer {background:#222; height:60px; padding:23px 30px 0; box-sizing:border-box;}
+.popup_main_notice .popup_content .popup_footer::after {content:''; clear:both; display:block;}
+.popup_main_notice .popup_content .popup_footer a.btn_underline {display:inline-block; float:left; color:#888; font-size:14px; font-weight:200; border-color:#888}
+.popup_main_notice .popup_content .popup_footer a.btn_popup_close {display:inline-block; float:right; color:#fff; font-size:14px; font-weight:300;}
+
+.popup_main_notice .popup_body.onlyNotice .swiper-button-prev,
+.popup_main_notice .popup_body.onlyNotice .swiper-button-next {display:none;}
+
+
 /* pageNav */
 .pageNav {display: table; margin-left: auto; margin-right: auto;}
 .pageNav:after {display: table;clear: both;content: " ";}
@@ -762,7 +777,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemsGrp.rowtype .item_prod .itemLike {left:240px; z-index:99;}
 .itemsGrp.rowtype .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; padding-top: 0; width: 280px; height: 420px;}
 .itemsGrp.rowtype .item_prod .itemPic .shape {z-index: 89;}
-.itemsGrp.rowtype .item_prod .itemPic::after {background: #f9f9f9; opacity:1; z-index: 87;}
+/* .itemsGrp.rowtype .item_prod .itemPic::after {background: #f9f9f9; opacity:1; z-index: 87;} */
 .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 88;}
 .itemsGrp.rowtype .item_state.soldout .itemPic:before {content:'SOLD OUT'; position:absolute; top:50%; left:50%; color:#fff; font-size:28px; font-weight:500; background:rgba(0,0,0,.7); width:100%; height:100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 89; text-align:center;}
 .itemsGrp.rowtype .item_prod .itemBrand {margin:0px; font-size: 16px; font-weight: 300;}

+ 1 - 21
src/main/webapp/ux/pc/css/main.css

@@ -456,7 +456,7 @@
 /* main_1stage */
 .main .wrap .content.main_1stage {}
 .main_1stage .bnnbox{position:relative;}
-.main_1stage .txtWrap{margin:0 auto; position:absolute; top:50%; left:30%; transform:translate(-70%, -50%);z-index:1; text-align:left;}
+.main_1stage .txtWrap{margin:0 auto; position:absolute; top:50%; left:31.25%; transform:translate(0, -50%);z-index:1; text-align:left;}
 .main_1stage .txtWrap p{color:#222222; font-size:40px; font-weight:500; text-align:left; line-height:1.25;}
 .main_1stage .txtWrap .btn{position:relative; width:160px; height:52px; border:1px solid #959899; margin:20px auto 0; text-align:center; font-weight:300; }
 .main_1stage img {margin:0 auto;width:100%;}
@@ -834,23 +834,3 @@ header.minify .common_header.br_header::after {bottom:-565px;}
 	.main .post-visual .swiper-button-next {margin-left:595px;}
 }
 
-
-
-/* popup_메인공지 */
-.popup_main_notice {position:fixed; left:50%; top:50%; transform:translate(-50%,-50%); z-index:200;}
-.popup_main_notice .swiper-button-prev,
-.popup_main_notice .swiper-button-next {position:absolute; top:50%; transform:translateY(-50%); display:inline-block; width:60px; height:60px; background-image:url('/images/pc/btn_main_pop_arrow.png'); background-repeat:no-repeat; background-size:auto 100%; z-index:2;}
-.popup_main_notice .swiper-button-prev {left:0; background-position:0 50%;}
-.popup_main_notice .swiper-button-next {right:0; background-position:100% 50%;}
-.popup_main_notice .swiper-button-prev::after,
-.popup_main_notice .swiper-button-next::after {display:none; color:transparent;}
-.popup_main_notice .popup_content {position:relative; line-height:1; vertical-align:top; width:auto; min-width:400px; max-width:1200px;}
-.popup_main_notice .popup_content .popup_body {position:relative; background:#fff;}
-.popup_main_notice .popup_content .popup_body .swiper-slide {width:400px;}
-.popup_main_notice .popup_content .popup_footer {background:#222; height:60px; padding:23px 30px 0; box-sizing:border-box;}
-.popup_main_notice .popup_content .popup_footer::after {content:''; clear:both; display:block;}
-.popup_main_notice .popup_content .popup_footer a.btn_underline {display:inline-block; float:left; color:#888; font-size:14px; font-weight:200; border-color:#888}
-.popup_main_notice .popup_content .popup_footer a.btn_popup_close {display:inline-block; float:right; color:#fff; font-size:14px; font-weight:300;}
-
-.popup_main_notice .popup_body.onlyNotice .swiper-button-prev,
-.popup_main_notice .popup_body.onlyNotice .swiper-button-next {display:none;}

+ 1 - 1
src/main/webapp/ux/pc/js/common-ui.js

@@ -40,7 +40,7 @@ $(document).ready(function(){
 	// main css 호출 제거
 	var uifn_DISCR = $('#container').attr('class');
 	var uifn_DISCRCLASS = "main";
-	if (uifn_DISCR.indexOf(uifn_DISCRCLASS) == -1) {
+	if (uifn_DISCR != null && uifn_DISCR.indexOf(uifn_DISCRCLASS) == -1) {
 		jQuery("link[rel=stylesheet][href*='css/main.css']").remove();
 	};
 

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

@@ -477,7 +477,7 @@ var cfnGoToGoodsDetail = function (goodsCd, colorCd, ithrCd, contentsLoc, planDt
 	if (typeof (ithrCd) != 'undefined') params += "&ithrCd=" + ithrCd;
 	if (typeof (contentsLoc) != 'undefined' && contentsLoc != "") params += "&contentsLoc=" + contentsLoc;
 	if (typeof (planDtlSq) != 'undefined') params += "&planDtlSq=" + planDtlSq;
-	if (typeof (rccode) != 'undefined') params += "&rccode=pc_detail";	// 추천솔루션 제공 상품클릭시
+	if (typeof (rccode) != 'undefined') params += "&rccode="+ rccode;	// 추천솔루션 제공 상품클릭시
 	cfnGoToPage(_PAGE_GOODS_DETAIL + params);
 }
 
@@ -832,7 +832,7 @@ function cfGoodsDelivery(goodsCd) {
 	}
 
 	if ("P" == _frontGb){
-		cfnOpenFullLayer(_PAGE_GOODS_DELIVERY_LAYER + goodsCd, 'layer_goods_delivery');
+		cfnOpenFullLayer(_PAGE_GOODS_DELIVERY_LAYER + goodsCd, 'layer_goods_delivery',null , fnGoodsDeliveryCollBack);
 	}else{
 		cfnOpenLayer(_PAGE_GOODS_DELIVERY_LAYER + goodsCd, 'layer_goods_delivery');
 	}