Explorar o código

Merge branch 'develop' into jsshin

jsshin %!s(int64=4) %!d(string=hai) anos
pai
achega
7765bdf500
Modificáronse 62 ficheiros con 1153 adicións e 431 borrados
  1. 2 2
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  2. 2 0
      src/main/java/com/style24/front/biz/service/TsfGiftcardService.java
  3. 123 80
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  4. 4 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  5. 1 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  6. 6 6
      src/main/java/com/style24/front/biz/thirdparty/SearchEngineDiquest.java
  7. 1 1
      src/main/java/com/style24/front/biz/web/TsfCallcenterController.java
  8. 5 40
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  9. 47 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  10. 21 0
      src/main/java/com/style24/front/support/env/TsfConstants.java
  11. 1 0
      src/main/java/com/style24/persistence/domain/GoodsCompose.java
  12. 1 0
      src/main/java/com/style24/persistence/domain/searchengine/SearchEngine.java
  13. 2 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  14. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  15. BIN=BIN
      src/main/webapp/WEB-INF/lib/Istyle.jar
  16. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html
  17. 75 1
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  18. 3 3
      src/main/webapp/WEB-INF/views/mob/common/fragments/GnbMob.html
  19. 160 46
      src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html
  20. 8 8
      src/main/webapp/WEB-INF/views/mob/display/LookbookDetailFormMob.html
  21. 4 4
      src/main/webapp/WEB-INF/views/mob/display/MallMainFormMob.html
  22. 47 17
      src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html
  23. 15 3
      src/main/webapp/WEB-INF/views/mob/display/SearchLayerMob.html
  24. 121 9
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  25. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  26. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  27. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  28. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  29. 14 8
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  30. 2 2
      src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html
  31. 1 1
      src/main/webapp/WEB-INF/views/web/display/BestMainFormWeb.html
  32. 25 11
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  33. 5 5
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  34. 158 78
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/display/OutletMainFormWeb.html
  36. 94 35
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  37. 16 3
      src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html
  38. 115 3
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  39. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  40. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  41. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreCancelDetailFormWeb.html
  42. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html
  43. 1 1
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  44. 15 15
      src/main/webapp/biz/goods.js
  45. 4 1
      src/main/webapp/biz/search.js
  46. BIN=BIN
      src/main/webapp/images/mo/goApp.png
  47. BIN=BIN
      src/main/webapp/images/mo/ico_btn_expand.png
  48. BIN=BIN
      src/main/webapp/images/mo/logo_STYLE24_b.png
  49. BIN=BIN
      src/main/webapp/images/mo/mo_btn_back.png
  50. BIN=BIN
      src/main/webapp/images/mo/thumb/brand16.png
  51. BIN=BIN
      src/main/webapp/images/pc/br_logo_style24.png
  52. BIN=BIN
      src/main/webapp/images/pc/br_logo_style24_bk.png
  53. BIN=BIN
      src/main/webapp/images/pc/logo_STYLE24_footer.png
  54. BIN=BIN
      src/main/webapp/images/pc/logo_STYLE24_sub.png
  55. BIN=BIN
      src/main/webapp/images/pc/thumb/bg_item_none.png
  56. BIN=BIN
      src/main/webapp/images/pc/thumb/tmp_gift_empty.jpg
  57. 15 2
      src/main/webapp/ux/mo/css/common_m.css
  58. 17 10
      src/main/webapp/ux/mo/css/layout_m.css
  59. 5 4
      src/main/webapp/ux/mo/css/style24_m.css
  60. 3 2
      src/main/webapp/ux/pc/css/layout.css
  61. 2 1
      src/main/webapp/ux/pc/css/main.css
  62. 0 17
      src/main/webapp/ux/pc/js/common-ui.js

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

@@ -692,8 +692,8 @@ public class TsfDisplayService {
 	public Collection<Filter> getCategoryFilterList(Collection<Filter> filterList, String filterGb) {
 		Collection<Filter> resultList = new ArrayList<Filter>();
 		int idx = 0;
-		String maxPrice = null;
-		String minPrice = null;
+		String maxPrice = "0";
+		String minPrice = "0";
 		for (Filter filter : filterList) {
 			if(!"".equals(filter.getFilterCd()) && !filter.getFilterCd().equals(null)){
 				if(filter.getFilterGb().equals("PRICE")){

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

@@ -5,6 +5,7 @@ import java.util.Collection;
 import com.style24.core.biz.thirdparty.Yes24Giftcard;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.style24.front.biz.dao.TsfGiftcardDao;
 import com.style24.front.support.security.session.TsfSession;
@@ -84,6 +85,7 @@ public class TsfGiftcardService {
 	 * @throws Exception
 	 * @since 2021. 3. 15
 	 */
+	@Transactional("shopTxnManager")
 	public void createGiftcardUseConfirm(GiftCard giftcard) throws Exception {
 		// 고객번호 설정
 		int custNo = TsfSession.getInfo().getCustNo();

+ 123 - 80
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -61,7 +61,6 @@ public class TsfGoodsService {
 	@Autowired
 	private ObjectMapper mapper;
 
-	
 	/**
 	 * 상품뷰이력 생성
 	 *
@@ -453,14 +452,14 @@ public class TsfGoodsService {
 	 * @since 2021. 3. 22
 	 */
 	public int getGoodsSetStockQty(GoodsStock goodsStock) {
-		
+
 //		input param
 //		arrGoodsOption : goodsOption // [{goodsCd|optCd|qty},{goodsCd|optCd|qty}]
 //		,minOrdQty : minOrdQty
 //		,maxOrdQty : maxOrdQty
 //		,goodsCd : mGoodsCd
 //		,selfGoodsYn : selfGoodsYn
-		
+
 		int result = 0;
 		int index = 0;	// 상품순서
 		//int masterStoreCnt = 0;
@@ -468,16 +467,16 @@ public class TsfGoodsService {
 		boolean returnFlag = false;
 		//String[][] arrGoodsStoreList = null;	// 상품코드, 매장코드, 상품별 주문수량
 
-		log.info("[getGoodsSetStockQty] goodsStock = {}", goodsStock);
+		//log.info("[getGoodsSetStockQty] goodsStock = {}", goodsStock);
 
 		// 예약상품 여부 확인
 		int goodsResSellCount = goodsDao.getGoodsResSellCount(goodsStock.getGoodsCd());
-				
+
 		int ableOrderCnt = 0;
 		for (String arrGoodsCd : goodsStock.getArrGoodsOption()) {	// [{goodsCd|optCd|qty},{goodsCd|optCd|qty}]
 
 			String[] goodsSizeInfo = arrGoodsCd.split("\\|");
-			log.info("[getGoodsSetStockQty] goodsSizeInfo = {}", goodsSizeInfo);
+			//log.info("[getGoodsSetStockQty] goodsSizeInfo = {}", goodsSizeInfo);
 			if (goodsSizeInfo.length == 3) {
 
 				GoodsStock tmpStock = new GoodsStock();
@@ -491,8 +490,8 @@ public class TsfGoodsService {
 				} else {
 					stockByGoodsSize = goodsDao.getGoodsStoreStockQty(tmpStock);
 				}
-				
-				log.info("[getGoodsSetStockQty] stockByGoodsSize = {}", stockByGoodsSize);
+
+				//log.info("[getGoodsSetStockQty] stockByGoodsSize = {}", stockByGoodsSize);
 				if (stockByGoodsSize <= 0) {
 					returnFlag = true;
 					break;
@@ -507,7 +506,7 @@ public class TsfGoodsService {
 						}
 					}
 				}
-				log.info("[getGoodsSetStockQty] ableOrderCnt = {}", ableOrderCnt);
+				//log.info("[getGoodsSetStockQty] ableOrderCnt = {}", ableOrderCnt);
 			} else {
 				returnFlag = true;
 				break;
@@ -574,57 +573,59 @@ public class TsfGoodsService {
 	public Collection<Goods> getTmtbGoodsList(Goods goods) {
 		goods.setArrTmtbSq(null);		// 배열 사용하여 진행시에 IN절에 걸려 query timeout 걸려 null처리
 		Collection<Goods> result = new ArrayList<Goods>();
-			
+
 		Collection<Tmtb> tmtbSqList = goodsDao.getTmtbSqList(goods);
 		if (tmtbSqList == null || tmtbSqList.isEmpty()) {
 			return result;
 		}
-		log.info("[tmtbSqList]={}",tmtbSqList);
-		log.info("[goods]={}",goods);
+		//log.info("[tmtbSqList]={}",tmtbSqList);
+		//log.info("[goods]={}",goods);
 		int rCount = 0;	//다다익선 조회수
 		int tCount = goods.getMaxRownum();	//리턴 잔여수
-		if (tCount == 0) tCount = 20;
-		
-		for (Tmtb tmtb: tmtbSqList) {
-			
+		if (tCount == 0) {
+			tCount = 20;
+		}
+
+		for (Tmtb tmtb : tmtbSqList) {
+
 			goods.setTmtbSq(tmtb.getTmtbSq());
 			Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
 			if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
 				continue;
 			}
-			
+
 			if (tCount <= 0) { //잔여수가 없으면 종료
 				break;
 			}
-			
+
 			//다다익선 조회 상품 수
 			rCount = tmtbGoodsList.size();
-			
+
 			if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
 				result.addAll(tmtbGoodsList);
 				tCount = tCount - rCount; //남은 잔여수 계산
-			}else {
+			} else {
 				if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
 					result.addAll(tmtbGoodsList);
 					break;
-				}else {
-					
-					for (int i=0; i<tCount; i++) {  //잔여수량만큼 loop
+				} else {
+
+					for (int i = 0; i < tCount; i++) {  //잔여수량만큼 loop
 						int tmtbGoodsListCnt = 0;
-						for(Goods tmtbGoods: tmtbGoodsList) {
+						for (Goods tmtbGoods : tmtbGoodsList) {
 							if (i == tmtbGoodsListCnt) {
 								result.add(tmtbGoods);
-								tCount --;
+								tCount--;
 								break;
 							}
-							tmtbGoodsListCnt ++;
+							tmtbGoodsListCnt++;
 						}
 					}
 				}
-				
+
 			}
 		}
-		
+
 		return result;
 	}
 
@@ -714,10 +715,10 @@ public class TsfGoodsService {
 	 * @date 2021. 3. 10
 	 */
 	public Collection<Measurement> getMeasurementList(Goods goods) {
-		
-		 return goodsDao.getMeasurementList(goods);
+
+		return goodsDao.getMeasurementList(goods);
 	}
-	
+
 	/**
 	 * 실측사이즈 조회
 	 *
@@ -731,14 +732,14 @@ public class TsfGoodsService {
 		// 행, 열 변환
 		Collection<Measurement> measurementList = goodsDao.getMeasurementList(goods);
 		Collection<MeasurementStyle> measurementStyleList = new ArrayList<MeasurementStyle>();
-		
+
 		if (measurementList == null || measurementList.isEmpty()) {
 			return measurementStyleList;
 		}
-		
+
 		int colSize = measurementList.size(); 	// 열 column
 		int rowSize = 5; // 상의하위포함 최대사이즈
-		
+
 		String[][] arrMeasurementList = new String[rowSize + 1][colSize + 1];
 
 		// 사이즈 설정
@@ -747,7 +748,7 @@ public class TsfGoodsService {
 			arrMeasurementList[0][0] = measurement.getTypecd();
 			yIndex++;
 			arrMeasurementList[0][yIndex] = measurement.getOptCd2();
-			
+
 			// 부위명 설정
 			arrMeasurementList[1][0] = measurement.getTypecd();
 			arrMeasurementList[2][0] = measurement.getTypecd();
@@ -759,7 +760,7 @@ public class TsfGoodsService {
 			arrMeasurementList[3][yIndex] = String.valueOf(measurement.getValue3());
 			arrMeasurementList[4][yIndex] = String.valueOf(measurement.getValue4());
 			arrMeasurementList[5][yIndex] = String.valueOf(measurement.getValue5());
-		
+
 //			 arrMeasurementList = [[하의, 100, 110, 120, 130, 140, 150],
 //			                       [하의, 42.0, 44.0, 46.0, 48.0, 52.0, 54.0],
 //			                       [하의, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
@@ -768,43 +769,85 @@ public class TsfGoodsService {
 //			                       [하의, 51.0, 60.0, 65.0, 75.0, 79.0, 87.0]]
 //			                    	   
 		}
-		
-		for(int i=0; i< 6; i++) {
+
+		for (int i = 0; i < 6; i++) {
 			MeasurementStyle measurementStyle = new MeasurementStyle();
 			measurementStyle.setGoodsCd(goods.getGoodsCd());
 			measurementStyle.setSizeCount(colSize);
-			
-			log.info("arrMeasurementList[0].length = {}", arrMeasurementList[0].length);
-			for(int j=0; j<arrMeasurementList[0].length; j++) {
-				switch(j) {
-					case 0: measurementStyle.setTypecd(arrMeasurementList[i][j]); break;
-					case 1: measurementStyle.setSize1(arrMeasurementList[i][j]); break;
-					case 2: measurementStyle.setSize2(arrMeasurementList[i][j]); break;
-					case 3: measurementStyle.setSize3(arrMeasurementList[i][j]); break;
-					case 4: measurementStyle.setSize4(arrMeasurementList[i][j]); break;
-					case 5: measurementStyle.setSize5(arrMeasurementList[i][j]); break;
-					case 6: measurementStyle.setSize6(arrMeasurementList[i][j]); break;
-					case 7: measurementStyle.setSize7(arrMeasurementList[i][j]); break;
-					case 8: measurementStyle.setSize8(arrMeasurementList[i][j]); break;
-					case 9: measurementStyle.setSize9(arrMeasurementList[i][j]); break;
-					case 10: measurementStyle.setSize10(arrMeasurementList[i][j]); break;
-					case 11: measurementStyle.setSize11(arrMeasurementList[i][j]); break;
-					case 12: measurementStyle.setSize12(arrMeasurementList[i][j]); break;
-					case 13: measurementStyle.setSize13(arrMeasurementList[i][j]); break;
-					case 14: measurementStyle.setSize14(arrMeasurementList[i][j]); break;
-					case 15: measurementStyle.setSize15(arrMeasurementList[i][j]); break;
-					case 16: measurementStyle.setSize16(arrMeasurementList[i][j]); break;
-					case 17: measurementStyle.setSize17(arrMeasurementList[i][j]); break;
-					case 18: measurementStyle.setSize18(arrMeasurementList[i][j]); break;
-					case 19: measurementStyle.setSize19(arrMeasurementList[i][j]); break;
-					case 20: measurementStyle.setSize20(arrMeasurementList[i][j]); break;
+
+			//log.info("arrMeasurementList[0].length = {}", arrMeasurementList[0].length);
+			for (int j = 0; j < arrMeasurementList[0].length; j++) {
+				switch (j) {
+					case 0:
+						measurementStyle.setTypecd(arrMeasurementList[i][j]);
+						break;
+					case 1:
+						measurementStyle.setSize1(arrMeasurementList[i][j]);
+						break;
+					case 2:
+						measurementStyle.setSize2(arrMeasurementList[i][j]);
+						break;
+					case 3:
+						measurementStyle.setSize3(arrMeasurementList[i][j]);
+						break;
+					case 4:
+						measurementStyle.setSize4(arrMeasurementList[i][j]);
+						break;
+					case 5:
+						measurementStyle.setSize5(arrMeasurementList[i][j]);
+						break;
+					case 6:
+						measurementStyle.setSize6(arrMeasurementList[i][j]);
+						break;
+					case 7:
+						measurementStyle.setSize7(arrMeasurementList[i][j]);
+						break;
+					case 8:
+						measurementStyle.setSize8(arrMeasurementList[i][j]);
+						break;
+					case 9:
+						measurementStyle.setSize9(arrMeasurementList[i][j]);
+						break;
+					case 10:
+						measurementStyle.setSize10(arrMeasurementList[i][j]);
+						break;
+					case 11:
+						measurementStyle.setSize11(arrMeasurementList[i][j]);
+						break;
+					case 12:
+						measurementStyle.setSize12(arrMeasurementList[i][j]);
+						break;
+					case 13:
+						measurementStyle.setSize13(arrMeasurementList[i][j]);
+						break;
+					case 14:
+						measurementStyle.setSize14(arrMeasurementList[i][j]);
+						break;
+					case 15:
+						measurementStyle.setSize15(arrMeasurementList[i][j]);
+						break;
+					case 16:
+						measurementStyle.setSize16(arrMeasurementList[i][j]);
+						break;
+					case 17:
+						measurementStyle.setSize17(arrMeasurementList[i][j]);
+						break;
+					case 18:
+						measurementStyle.setSize18(arrMeasurementList[i][j]);
+						break;
+					case 19:
+						measurementStyle.setSize19(arrMeasurementList[i][j]);
+						break;
+					case 20:
+						measurementStyle.setSize20(arrMeasurementList[i][j]);
+						break;
 				}
 			}
 			measurementStyleList.add(measurementStyle);
 		}
 
-		log.info("measurementStyleList = {}", measurementStyleList);
-	
+		//log.info("measurementStyleList = {}", measurementStyleList);
+
 		return measurementStyleList;
 	}
 
@@ -843,9 +886,9 @@ public class TsfGoodsService {
 	 */
 	public Collection<GoodsCompose> getGoodsSetComposeList(Goods goods) {
 		Collection<GoodsCompose> getGoodsSetComposeList = goodsDao.getGoodsSetComposeList(goods);
-		for (GoodsCompose goodsExtend : getGoodsSetComposeList) {
+		for (GoodsCompose goodsCompose : getGoodsSetComposeList) {
 			Goods tmpGoods = new Goods();
-			tmpGoods.setGoodsCd(goodsExtend.getCompsGoodsCd());
+			tmpGoods.setGoodsCd(goodsCompose.getCompsGoodsCd());
 			tmpGoods.setSupplyCompCd(goods.getSupplyCompCd());
 			tmpGoods.setFrontGb(goods.getFrontGb());
 			tmpGoods.setIsApp(goods.getIsApp());
@@ -856,24 +899,24 @@ public class TsfGoodsService {
 			// 상품상세
 			Goods resultGoods = this.getGoodsDesc(tmpGoods);
 			if (resultGoods != null) {
-				goodsExtend.setGoodsTitle(resultGoods.getGoodsTitle());
-				goodsExtend.setGoodsTitleDesc(resultGoods.getGoodsTitleDesc());
-				goodsExtend.setGoodsSpecialDesc(resultGoods.getGoodsSpecialDesc());
-				goodsExtend.setGoodsTopDesc(resultGoods.getGoodsTopDesc());
-				goodsExtend.setGoodsDownDesc(resultGoods.getGoodsDownDesc());
-				goodsExtend.setGoodsDesc(resultGoods.getGoodsDesc());
+//				goodsCompose.setGoodsTitle(resultGoods.getGoodsTitle());
+//				goodsCompose.setGoodsTitleDesc(resultGoods.getGoodsTitleDesc());
+//				goodsCompose.setGoodsSpecialDesc(resultGoods.getGoodsSpecialDesc());
+//				goodsCompose.setGoodsTopDesc(resultGoods.getGoodsTopDesc());
+//				goodsCompose.setGoodsDownDesc(resultGoods.getGoodsDownDesc());
+				goodsCompose.setGoodsDesc(resultGoods.getGoodsDesc());
 			}
 
 			// 상품 옵션1(색상) 정보
-			goodsExtend.setGoodsOption1List(goodsDao.getGoodsOption1List(tmpGoods));
+			goodsCompose.setGoodsOption1List(goodsDao.getGoodsOption1List(tmpGoods));
 			// 상품 옵션2(사이즈) 정보
 			//goodsExtend.setGoodsOption2List(goodsDao.getGoodsOption2List(tmpGoods));
 			// 고시 정보
-			goodsExtend.setGoodsNotiList(goodsDao.getGoodsNotiList(tmpGoods));
+			goodsCompose.setGoodsNotiList(goodsDao.getGoodsNotiList(tmpGoods));
 			// 이미지 정보
-			goodsExtend.setGoodsImgList(goodsDao.getGoodsImgList(tmpGoods));
+			goodsCompose.setGoodsImgList(goodsDao.getGoodsImgList(tmpGoods));
 			// 상품 안전인증 정보
-			goodsExtend.setGoodsSafeNo(goodsDao.getGoodsSafeNo(tmpGoods));
+			goodsCompose.setGoodsSafeNo(goodsDao.getGoodsSafeNo(tmpGoods));
 
 		}
 		return getGoodsSetComposeList;
@@ -943,9 +986,9 @@ public class TsfGoodsService {
 					cate.setCate1No(null);
 				}
 
-				if(cate.getContentsLoc().equals("SCM002") ){
+				if (cate.getContentsLoc().equals("SCM002")) {
 					goodsList.addAll(goodsDao.getCategoryMainNewGoodsList(cate));
-				}else{
+				} else {
 					goodsList.addAll(goodsDao.getContentsCategoryNewGoodsList(cate));
 				}
 			}
@@ -965,7 +1008,7 @@ public class TsfGoodsService {
 					temp.setBenefitArr(temp.getIcon().split(","));
 				}
 			}
-		} else if(cate.getContentsLoc().equals("SOM003")){
+		} else if (cate.getContentsLoc().equals("SOM003")) {
 			goodsList = goodsDao.getContentsCategoryGoodsList(cate);
 			for (Goods temp : goodsList) {
 				if (temp.getSizes() != null) {

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

@@ -392,6 +392,7 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @date 2021. 4. 3
 	 */
+	@Transactional("shopTxnManager")
 	public void savePollCustAnswer(Poll poll) {
 		poll.setCustNo(TsfSession.getInfo().getCustNo());
 		// 단수형
@@ -533,6 +534,7 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @date 2021. 4. 7
 	 */
+	@Transactional("shopTxnManager")
 	public void saveAttendEntry(Plan plan) {
 		int custNo = TsfSession.getInfo().getCustNo();
 		plan.setCustNo(custNo);
@@ -601,6 +603,7 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @date 2021. 4. 13
 	 */
+	@Transactional("shopTxnManager")
 	public void saveEntryReply(Plan plan) {
 		int custNo = TsfSession.getInfo().getCustNo();
 		plan.setCustNo(custNo);
@@ -660,6 +663,7 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @date 2021. 4. 13
 	 */
+	@Transactional("shopTxnManager")
 	public void deleteEntryReply(Plan plan) {
 		planningDao.deleteEntryReply(plan);
 		planningDao.deleteEntryReplyAttach(plan);

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

@@ -452,6 +452,7 @@ public class TsfReviewService {
 	 * @author sowon
 	 * @since 2021. 3. 26
 	 */
+	@Transactional("shopTxnManager")
 	public void reviewDelete(Review review) {
 		review.setCustNo(TsfSession.getInfo().getCustNo());
 		reviewDao.reviewDelete(review);

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

@@ -178,18 +178,18 @@ public class SearchEngineDiquest {
 		Map<String, Object> paramMap = this.convertObjectToMap(params);
 		paramMap.put("adminIp", ipAddr);
 		paramMap.put("adminPort", port);
-//		log.info("///[getFilterList] paramMap: {}", paramMap);
+		log.info("///[getFilterList] paramMap: {}", paramMap);
 
 		try {
 			JSONObject jsonObj = SearchService.getFilterList(paramMap);
-//			log.info("///[getFilterList] jsonObj: {}", jsonObj.toJSONString());
+			log.info("///[getFilterList] jsonObj: {}", jsonObj.toJSONString());
 
 			Gson gson = new Gson();
 			FilterResponse response = gson.fromJson(jsonObj.toJSONString(), FilterResponse.class);
 
 			if (jsonObj.get("returnCode").toString().equals("1")) { // 성공
 				result = response.getResponse();
-//				log.info("///[getFilterList] result: {}", result);
+				log.info("///[getFilterList] result: {}", result);
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -213,16 +213,16 @@ public class SearchEngineDiquest {
 		paramMap.put("adminPort", port);
 		paramMap.put("pageNumber", String.valueOf(params.getPageNo()));
 		paramMap.put("rowsPerPage", String.valueOf(params.getPageSize()));
-//		log.info("///[getGoodsList] paramMap: {}", paramMap);
+		log.info("///[getGoodsList] paramMap: {}", paramMap);
 
 		try {
 			JSONObject jsonObj = SearchService.getGoodsList(paramMap);
-//			log.info("///[getGoodsList] jsonObj: {}", jsonObj.toJSONString());
+			log.info("///[getGoodsList] jsonObj: {}", jsonObj.toJSONString());
 
 			if (jsonObj.get("returnCode").toString().equals("1")) { // 성공
 				Gson gson = new Gson();
 				result = gson.fromJson(jsonObj.toJSONString(), GoodsListResponse.class);
-//				log.info("///[getGoodsList] result: {}", result);
+				log.info("///[getGoodsList] result: {}", result);
 			}
 		} catch (Exception e) {
 			e.printStackTrace();

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

@@ -187,7 +187,7 @@ public class TsfCallcenterController extends TsfBaseController {
 
 		if (device.isMobile() || device.isTablet()) { // 모바일이면
 			// 문의유형
-			mav.addObject("counselClsfList", rendererService.getCommonCodeList("G059", "Y", new String[] {"G596"}));
+			mav.addObject("counselClsfList", rendererService.getCommonCodeList("G059", "Y"));
 		}
 
 		mav.setViewName(super.getDeviceViewName("callcenter/OneToOneQnaForm"));

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

@@ -750,43 +750,8 @@ public class TsfMypageController extends TsfBaseController {
 		int custNo = TsfSession.getInfo().getCustNo();
 		orderChange.setCustNo(custNo);
 
-		// 2. 환불 사전 정보 조회
-		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
-		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
-		String allLastCanYn = refundPreInfo.getString("allLastCanYn");
-		String supplyCompCd = refundPreInfo.getString("supplyCompCd");
-
-		// 3. 환불금액계산
-		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
-
-		// 4. 주문변경 기본정보 설정
-		result.set("ordNo", orderChange.getOrdNo());					// 주문번호
-		result.setInt("custNo", custNo);								// 고객번호
-		// result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason", orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo", orderChange.getChgMemo());				// 변경메모
-
-		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd", orderChange.getBankCd());					// 환불계좌은행코드
-
-		result.setString("allLastCanYn", allLastCanYn);					// 전체 마지막 취소 여부
-		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
-		result.set("wdGb", orderChange.getWdGb());						// 회수방법
-		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
-
-		// 5. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());				// 변경자명
-		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
-		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());	// 회수지기본주소
-		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
-		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
-		result.set("chgerRtnMemo", orderChange.getChgerRtnMemo());		// 반품메모
-
-		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		GagaMap map = coreOrderChangeService.returnRequest(result);
+		GagaMap map = coreOrderChangeService.returnReq(orderChange);
+
 		int ordChgSq = map.getInt("ordChgSq");
 		int addPayCost = map.getInt("addPayCost");
 
@@ -815,12 +780,12 @@ public class TsfMypageController extends TsfBaseController {
 			}
 		}
 
-		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		map.set("status", GagaResponseStatus.SUCCESS.getCode());
 		if (orderChange.getAddPayCost() == 0) {
-			result.set("message", message.getMessage("RETURN_0001"));
+			map.set("message", message.getMessage("RETURN_0001"));
 		}
 
-		return result;
+		return map;
 	}
 
 	/**

+ 47 - 1
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -1,5 +1,6 @@
 package com.style24.front.biz.web;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -1067,10 +1068,55 @@ public class TsfOrderController extends TsfBaseController {
 					orderInfo.setGoodsCnt(String.valueOf(resultMap.get("goodsCnt")));
 					kakaotalkService.sendOrderComplete(orderInfo, userNo);
 					
+					GagaMap replaceInfo = new GagaMap(); 
+					DecimalFormat df = new DecimalFormat("###,###");
+					
+					replaceInfo.set("ordSumAmt"			, df.format(resultMap.getInt("ordSumAmt")));
+					replaceInfo.set("dcSumAmt"			, df.format(resultMap.getInt("dcSumAmt")));
+					replaceInfo.set("realOrdSumAmt"		, df.format(resultMap.getInt("realOrdSumAmt")));
+					replaceInfo.set("listSumAmt"		, df.format(resultMap.getInt("listSumAmt")));
+					replaceInfo.set("goodsSumAmt"		, df.format(resultMap.getInt("goodsSumAmt")));
+					replaceInfo.set("goodsDcSumAmt"		, df.format(resultMap.getInt("goodsDcSumAmt")));
+					replaceInfo.set("delvFeeSumAmt"		, df.format(resultMap.getInt("delvFeeSumAmt")));
+					replaceInfo.set("realDelvSumAmt"	, df.format(resultMap.getInt("realDelvSumAmt")));
+					replaceInfo.set("cpn1DcSumAmt"		, df.format(resultMap.getInt("cpn1DcSumAmt")));
+					replaceInfo.set("tmtbSumAmt"		, df.format(resultMap.getInt("tmtbSumAmt")));
+					replaceInfo.set("cpnDcSumAmt"		, df.format(resultMap.getInt("cpnDcSumAmt")));
+					replaceInfo.set("prePntDcSumAmt"	, df.format(resultMap.getInt("prePntDcSumAmt")));
+					replaceInfo.set("pntDcSumAmt"		, df.format(resultMap.getInt("pntDcSumAmt")));
+					replaceInfo.set("gfcdUseSumAmt"		, df.format(resultMap.getInt("gfcdUseSumAmt")));
+					replaceInfo.set("savePntSumAmt"		, df.format(resultMap.getInt("savePntSumAmt")));
+					replaceInfo.set("mileageDcAmt"		, df.format(resultMap.getInt("mileageDcAmt")));
+					replaceInfo.set("allianceDcAmt"		, df.format(resultMap.getInt("allianceDcAmt")));
+					replaceInfo.set("orderInfo"			, resultMap.get("orderInfo"));
+					replaceInfo.set("ordNm"				, resultMap.get("ordNm"));
+					replaceInfo.set("ordNo"				, resultMap.get("ordNo"));
+					replaceInfo.set("ordDt"				, resultMap.get("ordDt"));
+					replaceInfo.set("recipNm"			, resultMap.get("recipNm"));
+					replaceInfo.set("recipPhnno"		, resultMap.get("recipPhnno"));
+					replaceInfo.set("recipZipcode"		, resultMap.get("recipZipcode"));
+					replaceInfo.set("recipBaseAddr"		, resultMap.get("recipBaseAddr"));
+					replaceInfo.set("recipDtlAddr"		, resultMap.get("recipDtlAddr"));
+					replaceInfo.set("delvMemo"			, resultMap.get("delvMemo"));
+					replaceInfo.set("pgGbNm"			, resultMap.get("pgGbNm"));
+					replaceInfo.set("orderListInfo"		, resultMap.get("orderListInfo"));
+					replaceInfo.set("orderFreegiftInfo"	, resultMap.get("orderFreegiftInfo"));
+					
+					replaceInfo.set("vaBankNm"			, orderInfo.getCardNm());
+					replaceInfo.set("vaDeadline"		, orderInfo.getVaDeadline());
+					replaceInfo.set("vaNo"				, orderInfo.getVaNo());
+					
 					// 2021.06.15
 					// 주문완료 안내 메일 보내기
 					if (StringUtils.isNotBlank(orderInfo.getOrdEmail())) {
-						mailService.sendOrderComplete(resultMap, userNo);
+						
+						// 결제완료
+						mailService.sendOrderComplete(replaceInfo, userNo);
+						
+						// 입금요청
+						if ("G014_20".equals(orderInfo.getPayMeans())) {
+							mailService.sendVaDepositRequest(replaceInfo, userNo);
+						}
 					}
 				} catch (Exception e) {
 					// TODO Auto-generated catch block

+ 21 - 0
src/main/java/com/style24/front/support/env/TsfConstants.java

@@ -51,6 +51,27 @@ public class TsfConstants {
 			return value;
 		}
 	}
+	
+	// 정산구분상태
+	public enum OrdDtlItemStat {
+		
+		SALE_PAYMENT_COMPLETE("G720_10"), 			// 판매-결제완료
+		SALE_SHIPPING("G720_20"),					// 판매-배송완료
+		SALE_RETURN_CANCEL("G720_30"), 				// 환입-취소완료
+		SALE_RETURN_SOLDOUT_CANCEL("G720_40"),		// 환입-품절취소
+		SALE_RETURN_RETURN_COMPLETE("G720_50"),		// 환입-반품완료
+		SALE_RETURN_EXCHANGE_COMPLETE("G720_60");	// 환입-교환완료
+
+		private String value;
+
+		private OrdDtlItemStat(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
 
 //	// 카테고리구분
 //	public enum CATE_GB {

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

@@ -33,6 +33,7 @@ public class GoodsCompose extends TscBaseDomain {
 	private int currPrice;
 	private String goodsStat;
 	private String sysImgNm;
+	private String tobeFormYn;
 	private String crud;
 	private String compsGoodsNm;
 	private String compsGoodsFullNm;

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

@@ -85,6 +85,7 @@ public class SearchEngine implements Serializable {
 	private String mainColorCd;		// 메인컬러
 	private String selfGoodsYn;		// 자사상품여부
 	private String colorCd;
+	private String adFlag;			// 광고상품여부
 
 //	private String adminIp;			// 검색엔진IP
 //	private String adminPort;		// 검색엔진포트

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

@@ -745,6 +745,8 @@
 		         WHERE CONTACT_TYPE = #{contactType}
 		           AND CONTACT_METHOD = #{contactMethod}
 		           AND CONTACT_MEMO = #{contactMemo}) Z
+		 <if test="contactType == 'G054_308'">
 		 WHERE RESEND_CAN_YN = 'Y'
+		 </if>
 	</select>
 </mapper>

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

@@ -1142,6 +1142,7 @@
 		     , DATE_FORMAT(G.SELL_STDT ,'%Y%m%d%H%i%S') AS SELL_STDT
 		     , DATE_FORMAT(G.SELL_EDDT ,'%Y%m%d%H%i%S') AS SELL_EDDT
 		     , (SELECT TI.SIZE_GB FROM TB_ITEMKIND TI WHERE TI.ITEMKIND_CD = G.ITEMKIND_CD) AS SIZE_GB
+		     , G.TOBE_FORM_YN
 		     , A.COMPS_CURR_PRICE
 		     , FN_GET_CODE_NM('G073',G.GOODS_GB) AS GOODS_GB_NM
 		     , FN_GET_CODE_NM('G076',G.ORIGIN_CD) AS ORIGIN_NM
@@ -1899,12 +1900,12 @@
 		            AND    GS.STOCK_QTY <![CDATA[>]]> 0 /*재고있는상품*/
 		            AND    B.USE_YN = 'Y'
 		            AND    BG.USE_YN = 'Y'
+		            ORDER BY G.REG_DT DESC, G.GOODS_CD
 		            <if test="maxRow != null and maxRow !=''">
 		            LIMIT #{maxRow}
 		            </if>
 		           ) G
 		    WHERE  1=1
-		    ORDER BY G.REG_DT DESC, G.GOODS_CD
 		<if test="pageable != null and pageable.endRow != null and pageable.endRow > 0">
 			LIMIT #{pageable.limitStartRow} , #{pageable.pageSize}
 		</if>

BIN=BIN
src/main/webapp/WEB-INF/lib/Istyle.jar


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

@@ -95,7 +95,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="fold_cont">\n';
 				tag += '		<div class="fold_answer">\n';
-				tag += '			<div class="answer_body">' + item.noticeContent + '</div>\n';
+				tag += '			<div class="answer_body">' + item.noticeContent.escapeHtml().replace(/\n/g,'<br/>') + '</div>\n';
 				tag += '		</div>\n';
 				tag += '	</div>\n';
 				tag += '</li>\n';

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

@@ -10,7 +10,7 @@
 			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE);" class="btn-my">Mypage</a>
 			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);" class="btn-home">Home</a>
 			<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_WISHLIST);" class="btn-wish">Wish</a>
-			<a href="javascript:void(0);" class="btn-history">History</a>
+			<a href="javascript:void(0);" onclick="hstr()" class="btn-history">History</a>
 		</div>
 			<!-- 
 				<span class="txt-balloon" id="tutorial_mycloset" style=""> 툴팁예제</span>
@@ -154,6 +154,33 @@
 			</div>
 		</div>
 	</aside>
+	
+			
+<!-- 210623_ 추가 : 최근본상품 -->
+<div id="hstrFull">
+	<div class="fullHead">
+		<h1 id="htopTitle" >최근 본 상품</h1>
+		<a href="javascript:hstr_cls();" class="hstr_cls">close</a>
+	</div>
+	<div class="fullBody">
+		<div class="inner">
+
+			<div class="list_content">  <!-- 데이터 없을시 클래스 nodata 추가 -->
+				<div class="count_wrap">
+					<div>
+						<p><span id="quickMenuTodayCount">0</span>개의 상품</p>
+					</div>
+				</div>
+				<div class="itemsGrp" id="quickMenuTodayGoods"> <!-- itemsGrp rank hot deal -->
+					
+				</div>
+			</div>
+		</div>
+
+	</div>
+</div>
+<!-- // 210623_ 추가 : 최근본상품 -->
+	
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -167,12 +194,22 @@
 		return false;
 	}
 	
+	function hstr() { // 210623_ 추가 : 최근본상품 열고 닫기
+		$("#hstrFull").addClass('on');
+		return false;
+	}
+	function hstr_cls() {
+		$("#hstrFull").removeClass('on');
+		return false;
+	}
+	
 	$(document).on('click','.hasCate a',function(e){
 		$(this).next('.depthCate').slideToggle(300);
 		$(this).toggleClass('on');
 		return false;
 	});
 	
+	
 	// 퀵메뉴카테고리
 	let fnGetQuickMenuCategory = function(cate1) {
 		let tag = '';
@@ -221,6 +258,40 @@
 			});
 	}
 	
+	// 최근 본 상품
+	let fnGetRecentlyGoods = function() {
+		$.getJSON('/goods/recently/list', function(result, status) {
+			if (status == 'success') {
+				$('#quickMenuTodayGoods').html('');
+				
+				$('#quickMenuTodayCount').html(result.length);
+				let tag = '';
+				if (result.length > 0) {
+					$.each(result, function (idx, item) {
+						tag += '<div class="item_prod">\n';
+						tag += '	<div class="item_state">\n';
+						tag += '		<button type="button" class="itemLike">관심상품 추가</button>\n';
+						tag += '		<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\',\'\',\'IN22_01\')" class="itemLink">\n';
+						tag += '			<div class="itemPic">\n';
+						tag += '				<img class="vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="">\n';
+						tag += '			</div>\n';
+						tag += '		</a>\n';
+						tag += '	</div>\n';
+						tag += '</div>\n';
+					})
+					
+				}else {
+					tag += '<div class="no_item">';
+					tag += '	최근 본 상품이 없습니다.';
+					tag += '</div>';
+					
+				}
+				$('#quickMenuTodayGoods').html(tag);
+				
+			}
+		});
+	}
+	
 	// 팝업
 	let fnGetPopup = function(){
 		let data = {viewPage : [[${viewPage}]]
@@ -349,6 +420,9 @@
 		// 퀵메뉴탭 조회
 		fnCreateQuickMenuTab();
 		
+		// 최근 본 상품 조회
+		fnGetRecentlyGoods();
+		
 		// 팝업조회
 		fnGetPopup();
 		

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

@@ -32,10 +32,10 @@
 			</h1>
 			<div class="button_wrap">
 				<button class="search" onclick="cfnSearchLayer();">
-					<img src="/images/mo/ico_btn_search_w.png" alt="검색">
+					<img src="/images/mo/ico_btn_search.png" alt="검색">
 				</button>
 				<button class="store" onclick="cfnGoToPage(_PAGE_CART);">
-					<img src="/images/mo/ico_btn_store_w.png" alt="쇼핑백">
+					<img src="/images/mo/ico_btn_store.png" alt="쇼핑백">
 					<span id="spanGnbCartCnt" style="display: none;"></span>
 				</button>
 			</div>
@@ -116,7 +116,7 @@
 						});
 					}
 				}
-				tag += '<button>+</button>';
+				// tag += '<button>+</button>';
 				$('#ulGnbTab').html(tag);
 			});
 		// tag += '</ul>\n';

+ 160 - 46
src/main/webapp/WEB-INF/views/mob/display/CategoryGoodsListFormMob.html

@@ -1213,58 +1213,144 @@
 
 			}else if(!gagajf.isNull(cate4No)){
 				$.each(cateList, function(idx,item){
-					$.each(item.cate4List, function (idx4,item4){
-						if(item4.cate4No == cate4No){
-							if(idx<1) {
-								$("#htopTitle").append(fnDisplayTitle(item4.cate4Nm));
-							}
-							if(item4.cate5List != null && item4.cate5List.length > 0){
-								let leafTag = '';
-								leafTag += '<a href="javascript:void(0);" class="on" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item4.cate1No + ', ' + item4.cate2No + ', ' + item4.cate3No + ', ' + item4.cate4No + ' ';
-								if(formalGb=='G009_20'){
-									leafTag += ' ,\'\',\''+formalGb+'\'';
-								}
-								leafTag += ');">전체</a>';
-								$.each(item4.cate5List, function (idx5, item5){
-									leafTag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + [[${cateInfo.cateGb}]] + '\', ' + item5.cate1No + ' , ' + item5.cate2No + ', ' + item5.cate3No + ' , ' + item5.cate4No + ' , ' + item5.cate5No + ' ';
+					let cate2 = item.cate2List;
+					$.each(cate2, function(idx2, item2){
+						if(item2.cate2No == cate2No){
+							$.each(item2.cate3List, function(idx3,item3){
+								if(item3.cate3No == cate3No){
+									tag += '<a href="javascript:void(0);" class="daps1" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ' ,' + item2.cate2No + ',' + item3.cate3No + ' ';
 									if(formalGb=='G009_20'){
-										leafTag += ' ,\''+formalGb+'\'';
+										tag += ' ,\'\',\'\',\''+formalGb+'\'';
 									}
-									leafTag += ');">'+item5.cate5Nm+'</a>';
-								});
-								$('#leafCateList').append(leafTag);
-							}
+									tag += ' )">'+item3.cate3Nm+'</a>';
+									tag += '<ul class="daps2">\n';
+									tag += '<li>';
+									tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ' ,' + item2.cate2No + ',' + item3.cate3No + ' ';
+									if(formalGb=='G009_20'){
+										tag += ' ,\'\',\'\',\''+formalGb+'\'';
+									}
+									tag += ' )">전체</a>';
+									tag += '</li>\n';
+									$.each(item3.cate4List, function(idx4, item4){
+										if(item4.cate4No == cate4No){
+											if(idx<1) {
+												$("#htopTitle").append(fnDisplayTitle(item4.cate4Nm));
+											}
+											let leafTag = '';
+											leafTag += '<a href="javascript:void(0);" class="on" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item4.cate1No + ', ' + item4.cate2No + ', ' + item4.cate3No + ', ' + item4.cate4No + ' ';
+											if(formalGb=='G009_20'){
+												leafTag += ' ,\'\',\''+formalGb+'\'';
+											}
+											leafTag += ');">전체</a>';
+											if(item4.cate5List != null && item4.cate5List.length > 0){
+												$.each(item4.cate5List, function (idx5, item5){
+													leafTag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + [[${cateInfo.cateGb}]] + '\', ' + item5.cate1No + ' , ' + item5.cate2No + ', ' + item5.cate3No + ' , ' + item5.cate4No + ' , ' + item5.cate5No + ' ';
+													if(formalGb=='G009_20'){
+														leafTag += ' ,\''+formalGb+'\'';
+													}
+													leafTag += ');">'+item5.cate5Nm+'</a>';
+												});
+											}
+											$('#leafCateList').append(leafTag);
+										}
+										tag += '<li ';
+										if(item4.cate4No == cate4No){
+											tag += ' class="on"';
+										}
+										tag += '>\n';
+										tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item4.cate1No + ', ' + item4.cate2No + ', ' + item4.cate3No + ', ' + item4.cate4No + ' ';
+										if(formalGb=='G009_20'){
+											leafTag += ' ,\'\',\''+formalGb+'\'';
+										}
+										tag += ' );">'+item4.cate4Nm+'</a></li>';
+									});
+								}
+							});
 						}
 					});
+					tag += '</ul>\n';
 				});
+				$("#cateDepth").append(tag);
 			}else if(!gagajf.isNull(cate3No)){
 				$.each(cateList, function(idx,item){
-					$.each(item.cate3List, function (idx3,item3){
-						if(item3.cate3No == cate3No){
-							if(idx<1) {
-								$("#htopTitle").append(fnDisplayTitle(item3.cate3Nm));
+					let cate2 = item.cate2List;
+					$.each(cate2, function (idx2,item2){
+						if(item2.cate2No == cate2No){
+							tag += '<a href="javascript:void(0);" class="daps1" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ' ,' + item2.cate2No + ' ';
+							if(formalGb=='G009_20'){
+								tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
 							}
-							if(item3.cate4List != null && item3.cate4List.length > 0){
-								let leafTag = '';
-								leafTag += '<a href="javascript:void(0);" class="on" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item3.cate1No + ', ' + item3.cate2No + ', ' + item3.cate3No + ' ';
-								if(formalGb=='G009_20'){
-									leafTag += ' ,\'\',\'\',\''+formalGb+'\'';
-								}
-								leafTag += ');">전체</a>';
-								$.each(item3.cate4List, function (idx4, item4){
-									leafTag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + [[${cateInfo.cateGb}]] + '\', ' + item4.cate1No + ' , ' + item4.cate2No + ', ' + item4.cate3No + ' , ' + item4.cate4No + ' ';
+							tag += ' )">'+item2.cate2Nm+'</a>';
+							tag += '<ul class="daps2">\n';
+							tag += '<li>';
+							tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ' ,' + item2.cate2No + ' ';
+							if(formalGb=='G009_20'){
+								tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
+							}
+							tag += ' )">전체</a>';
+							tag += '</li>\n';
+							$.each(item2.cate3List, function (idx3, item3){
+								if(idx<1) {
+									tag += '<li';
+									if(item3.cate3No == cate3No){
+										tag += ' class="on"';
+									}
+									tag += '><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ', ' + item2.cate2No + ', ' + item3.cate3No + ' ';
 									if(formalGb=='G009_20'){
-										leafTag += ' ,\'\',\''+formalGb+'\'';
+										tag += ' ,\'\',\'\',\''+formalGb+'\'';
 									}
-									leafTag += ');">'+item4.cate4Nm+'</a>';
-								});
-								$('#leafCateList').append(leafTag);
+									tag += ');">'+item3.cate3Nm+'</a></li>';
+								}
+							});
+						}
+					});
+
+					$.each(cate2, function (idx2,item2){
+						let leafTag = '';
+						if(item2.cate2No == cate2No){
+							leafTag += '<a href="javascript:void(0);" class="on" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ', ' + item2.cate2No + ', ' + cate3No + ' ';
+							if(formalGb=='G009_20'){
+								leafTag += ' ,\'\',\'\',\''+formalGb+'\'';
 							}
+							leafTag += ');">전체</a>';
+							$.each(item2.cate3List, function(idx3, item3){
+								if(item3.cate3No == cate3No){
+									if(idx<1) {
+										$("#htopTitle").append(fnDisplayTitle(item3.cate3Nm));
+									}
+									if(item3.cate4List != null && item3.cate4List.length > 0){
+										$.each(item3.cate4List, function (idx4, item4){
+											leafTag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + [[${cateInfo.cateGb}]] + '\', ' + item4.cate1No + ' , ' + item4.cate2No + ', ' + item4.cate3No + ' , ' + item4.cate4No + ' ';
+											if(formalGb=='G009_20'){
+												leafTag += ' ,\'\',\''+formalGb+'\'';
+											}
+											leafTag += ');">'+item4.cate4Nm+'</a>';
+										});
+										// $('#leafCateList').append(leafTag);
+									}
+								}
+							});
+							$('#leafCateList').append(leafTag);
 						}
 					});
+					tag += '</ul>\n';
 				});
+				$("#cateDepth").append(tag);
 			}else if(!gagajf.isNull(cate2No)){
 				$.each(cateList, function(idx,item){
+					tag += '<a href="javascript:void(0);" class="daps1" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item.cate1No + ' ';
+					if(formalGb=='G009_20'){
+						tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+					}
+					tag += ' )">'+item.cate1Nm+'</a>';
+					tag += '<ul class="daps2">\n';
+					tag += '<li>';
+					tag += '<a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item.cate1No + ' ';
+					if(formalGb=='G009_20'){
+						tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+					}
+					tag += ' )">전체</a>';
+					tag += '</li>\n';
 					$.each(item.cate2List, function (idx2,item2){
 						if(item2.cate2No == cate2No){
 							if(idx<1) {
@@ -1288,7 +1374,11 @@
 							}
 						}
 						if(idx<1) {
-							tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ', ' + item2.cate2No + ' ';
+							tag += '<li';
+							if(item2.cate2No == cate2No){
+								tag += ' class="on"';
+							}
+							tag += '><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item2.cate1No + ', ' + item2.cate2No + ' ';
 							if(formalGb=='G009_20'){
 								tag += ' ,\'\',\'\',\'\',\''+formalGb+'\'';
 							}
@@ -1296,22 +1386,46 @@
 						}
 
 					});
+					tag += '</ul>\n';
 				});
 				$("#cateDepth").append(tag);
 			}else{
 				$.each(cateList, function(idx,item){
 					$.each(allCateList, function (allIdx, allItem){
-						if(item.cate1No==allItem.cate1No){
-							if(idx<1) {
-								$("#htopTitle").append(fnDisplayTitle(item.cate1Nm));
+						if(brandGroupNo > 0){
+							if(item.cate1No==allItem.cate1No){
+								if(idx<1) {
+									$("#htopTitle").append(fnDisplayTitle(item.cate1Nm));
+								}
+								if(idx<1) {
+									tag += '<li';
+									if(item.cate1No==allItem.cate1No){
+										tag += ' class="on"';
+									}
+									tag += '><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + item.cate1No + ' ';
+									if(formalGb=='G009_20'){
+										tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+									}
+									tag += ');">'+item.cate1Nm+'</a></li>';
+								}
 							}
-						}
-						if(idx<1) {
-							tag += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + allItem.cate1No + ' ';
-							if(formalGb=='G009_20'){
-								tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+						}else{
+							if(item.cate1No==allItem.cate1No){
+								if(idx<1) {
+									$("#htopTitle").append(fnDisplayTitle(item.cate1Nm));
+								}
+							}
+							if(idx<1) {
+								tag += '<li';
+								if(item.cate1No==allItem.cate1No){
+									tag += ' class="on"';
+								}
+								tag += '><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + allItem.cate1No + ' ';
+								if(formalGb=='G009_20'){
+									tag += ' ,\'\',\'\',\'\',\'\',\''+formalGb+'\'';
+								}
+								tag += ');">'+allItem.cate1Nm+'</a></li>';
 							}
-							tag += ');">'+allItem.cate1Nm+'</a></li>';
 						}
 					});
 

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

@@ -90,12 +90,12 @@
 															<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
 																<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
 															</th:block>
-															<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
-																<a href="javascript:void(0);" class="itemLink" >
-															</th:block>
-															<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+<!--															<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">-->
+<!--																<a href="javascript:void(0);" class="itemLink" >-->
+<!--															</th:block>-->
+<!--															<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">-->
 																<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]])">
-															</th:block>
+<!--															</th:block>-->
 																<div class="itemPic">
 																	<img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsItem.sysImgNm}">
 																</div>
@@ -207,12 +207,12 @@
 		tag +='		</div>\n';
 		tag +='		<div class="modal-body">\n';
 		tag +='			<div class="itemsGrp rowtype">\n';
-		tag +='				<div class="item_prod ';
+		tag +='				<div class="item_prod">\n';
+		tag +='					<div class="item_state';
 		if(obj9 == 'Y'){
-			tag += ' sold_out';
+			tag += ' soldout';
 		}
 		tag +='">\n';
-		tag +='					<div class="item_state">\n';
 		tag +='						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\''+obj7+'\',\'\',\'\')" class="itemLink">\n';
 		tag +='							<div class="itemPic">\n';
 		tag +='								<img class="vLHTC pd_img" src="'+goodsImgUrl+'/'+obj1+'?RS=260" alt="">\n';

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

@@ -120,8 +120,8 @@
 															<img alt="BLUE-a" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)"  >
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
-														<div class=" itemName" th:text="${goodsData.goodsFullNm}">가을 신상 남성 스탠다드핏 로고맨 블루 볼 캡 유니 경량다운 시보리넥 베스트</div>
 														<div class="itemComment" th:text="${goodsData.goodsTnm}">#주문 폭주 상품</div>
+														<div class=" itemName" th:text="${goodsData.goodsFullNm}">가을 신상 남성 스탠다드핏 로고맨 블루 볼 캡 유니 경량다운 시보리넥 베스트</div>
 														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">488,000</p>
 													</a>
 												</div>
@@ -177,8 +177,8 @@
 																		<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 																	</div>
 																	<p class="itemBrand" th:text="${bestItemData.brandGroupNm}">TBJ</p>
-																	<div class="itemName" th:text="${bestItemData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																	<div class="itemComment" th:text="${bestItemData.goodsTnm}"># 가을 느낌 물씬!</div>
+																	<div class="itemName" th:text="${bestItemData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																	<p class="itemPrice">
 																		<span class="itemPrice_original" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${#numbers.formatInteger(bestItemData.listPrice,3,'COMMA')}">89,000</span>[[${#numbers.formatInteger(bestItemData.currPrice,0,'COMMA')}]]
 																		<span class=" itemPercent" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${(bestItemData.listPrice == 0 ? 0 : #numbers.formatDecimal((bestItemData.listPrice - bestItemData.currPrice) / (bestItemData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
@@ -272,8 +272,8 @@
 																	<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
 																<p class="itemBrand" th:text="${goodsData.brandGroupNm}">TBJ</p>
-																<div class="itemName" th:text="${goodsData.goodsNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<div class="itemComment" th:text="${goodsData.goodsTnm}"># 가을 느낌 물씬!</div>
+																<div class="itemName" th:text="${goodsData.goodsNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<p class="itemPrice">
 																	<span class="itemPrice_original" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatInteger(goodsData.listPrice,0,'COMMA')}">89,000</span>[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')}]]
 																	<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatDecimal(goodsData.dcRate,1,0)} + '%'">10%</span>
@@ -436,8 +436,8 @@
 																			<img alt="" class=" pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">TBJ</p>
-																		<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																		<div class="itemComment" th:text="${goodsData.goodsTnm}"># 가을 느낌 물씬!</div>
+																		<div class="itemName" th:text="${goodsData.goodsFullNm}">11111 남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																		<p class="itemPrice">
 																			<span class="itemPrice_original" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')}]]
 																			<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>

+ 47 - 17
src/main/webapp/WEB-INF/views/mob/display/SearchGoodsListFormMob.html

@@ -22,11 +22,13 @@
 	<main role="" id="" class="container sch">
 		<section class="sch_result">
 			<div class="inner">
-				<div class="sch_title">
-					<input type="text" class="form_control" id="search" name="search" th:value="${params.keyword}" placeholder="" maxlength="100">
-					<!-- <button class="btn_x">X</button> -->
-					<button type="button" class="btn_sch" onclick="fnSearchData();"><img src="/images/mo/ico_btn_search.png" alt=""></button>
-				</div>
+				<form id="InnerSearchForm" name="InnerSearchForm">
+					<div class="sch_title">
+						<input type="text" class="form_control" id="keyword" name="keyword" th:value="${params.keyword}" placeholder="" maxlength="100">
+						<!-- <button class="btn_x">X</button> -->
+						<button type="button" class="btn_sch" onclick="fnSearchData();"><img src="/images/mo/ico_btn_search.png" alt=""></button>
+					</div>
+				</form>
 				<div class="related_keyword">
 					<div class="sub_category">
 						<div class="cate_wrap">
@@ -48,10 +50,10 @@
 					<div class="tabContents">
 						<div class="tab_cont active">
 							<!-- tab_cont [1] Start -->
-							<div class="inner" style="display:none;">
+							<div class="inner" id="goodsNodata" style="display:none;">
 								<!-- 전체 검색결과 없을때 -->
 								<div class="nodata">
-									<p>&lsquo;<span>티비제이 제기장 스웨터</span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
+									<p>&lsquo;<span id="goodsKeyword"></span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
 								</div>
 								<!-- // 전체 검색결과 없을때 -->
 							</div>
@@ -212,7 +214,7 @@
 								<!-- // 이런상품은 어떤가요 -->
 							</div>
 
-							<div class="inner">
+							<div class="inner" id="dataArea">
 								<!-- 필터 시작 -->
 								<div class="count_wrap">
 									<div>
@@ -255,7 +257,7 @@
 											</ul>
 										</div>
 									</div>
-									<div class="banner">
+									<div class="banner" style="display: none">
 										<img src="/images/mo/shc_banner.png" alt="">
 									</div>
 									<div class="last_page" id="endPage" style="display:none;">
@@ -274,13 +276,13 @@
 									<div class="list_item" id="planArea">
 
 									</div>
-									<div class="list_last">마지막페이지 입니다.</div>
+<!--									<div class="list_last">마지막페이지 입니다.</div>-->
 								</div>
 							</div>
-							<div class="inner" style="display:none;">
+							<div class="inner" id="planNodata" style="display:none;">
 								<!-- 전체 검색결과 없을때 -->
 								<div class="nodata">
-									<p>&lsquo;<span>티비제이 제기장 스웨터</span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
+									<p>&lsquo;<span id="planKeyword"></span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
 								</div>
 								<!-- // 전체 검색결과 없을때 -->
 							</div>
@@ -296,13 +298,13 @@
 
 										</ul>
 									</div>
-									<div class="list_last" style="display:none;">마지막페이지 입니다.</div>
+<!--									<div class="list_last" style="display:none;">마지막페이지 입니다.</div>-->
 								</div>
 							</div>
-							<div class="inner" style="display:none;">
+							<div class="inner" id="eventNodata" style="display:none;">
 								<!-- 전체 검색결과 없을때 -->
 								<div class="nodata">
-									<p>&lsquo;<span>티비제이 제기장 스웨터</span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
+									<p>&lsquo;<span id="eventKeyword"></span>&rsquo; 에 에 대한<br>검색 결과가 없습니다.</p>
 								</div>
 								<!-- // 전체 검색결과 없을때 -->
 							</div>
@@ -681,6 +683,8 @@
 	var fnDrawInfiniteScrollData = function (result){
 		$('#endPage').hide();
 		$('#noDataFilter').hide();
+		$('#goodsNodata').hide();
+		$('#goodsKeyword').text('');
 		totalCnt = result.paging.totalCount;
 		$("#totCntId").text(totalCnt.addComma());
 		$("#prodListCnt").text('('+totalCnt.addComma()+')');
@@ -693,6 +697,11 @@
 		}
 
 		if(dataListLen > 0){
+			$('#noFilterData').hide();
+			$('#endPage').hide();
+			$('#eventNodata').hide();
+			$('#eventKeyword').text('');
+			$('#dataArea').show();
 			var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 			let lastPage = result.paging.pageNo;
 			let endRow = result.paging.endRow - result.paging.pageSize;
@@ -711,6 +720,16 @@
 					$('#endPage').show();
 					$('#noDataFilter').hide();
 				}
+			}else{
+				if($("#searchGoodsForm input[name=pageNo]").val()==1){
+					$('#goodsNodata').show();
+					$('#goodsKeyword').text([[${params.keyword}]]);
+					$('#dataArea').hide();
+				}else{
+					$('#goodsNodata').show();
+					$('#goodsKeyword').text([[${params.keyword}]]);
+					$('#dataArea').hide();
+				}
 			}
 			gagaInfiniteScroll.draw('not');
 		}
@@ -732,6 +751,8 @@
 		}
 
 		if(result.eventList != null && result.eventList.length>0){
+			$("#eventNodata").hide();
+			$("#eventKeyword").text('');
 			$.each(result.eventList, function (idx,item){
 				let html = '';
 
@@ -754,6 +775,9 @@
 
 				$("#eventArea").append(html);
 			});
+		}else{
+			$("#eventNodata").show();
+			$("#eventKeyword").text([[${params.keyword}]]);
 		}
 	}
 
@@ -770,6 +794,8 @@
 		}
 
 		if(result.planList != null && result.planList.length>0){
+			$("#planNodata").hide();
+			$("#planKeyword").text('');
 			$.each(result.planList, function (idx,item){
 				let html = '';
 				html += '<div class="visual">\n';
@@ -805,14 +831,17 @@
 				html += '</div>\n';
 				$("#planArea").append(html);
 			});
+		}else{
+			$("#planNodata").show();
+			$("#planKeyword").text([[${params.keyword}]]);
 		}
 	}
 
 	// 검색
 	var fnSearchData = function (){
-		let keyword = $("#InnerSearchForm").find("input[name=search]").val();
+		let keyword = $("#InnerSearchForm").find("input[name=keyword]").val();
 		let brandGroupNo = $("#InnerSearchForm").find("input[name=brandGroupNo]").val();
-		$("#searchGoodsForm").find('input[name=keyword]').val($("#InnerSearchForm").find("input[name=search]").val());
+		$("#searchGoodsForm").find('input[name=keyword]').val($("#InnerSearchForm").find("input[name=keyword]").val());
 		cfnGoToSearchGoodsListForm(keyword,brandGroupNo);
 	}
 
@@ -1107,6 +1136,7 @@
 		fnGetSearchPlanningList();
 		fnGetSearchEventList();
 	}
+
 	/*]]>*/
 </script>
 

+ 15 - 3
src/main/webapp/WEB-INF/views/mob/display/SearchLayerMob.html

@@ -43,10 +43,10 @@
 			<div class="search-list" th:classappend="${#lists.isEmpty(recentlyKeywordList)?'nodata':''}"> <!-- 검색데이터 없을시 nodata 클래스 추가. -->
 				<ul>
 					<li th:if="${recentlyKeywordList}" th:each="oneData, status : ${recentlyKeywordList}">
-						<a href="javascript:void(0);" onclick="fnSearchKeyword([[@{oneData}]]);">
+						<a href="javascript:void(0);" th:onclick="fnSearchKeyword([[${oneData}]])">
 							<p th:text="${oneData}"></p>
 						</a>
-						<button type="button" class="xBtn" onclick="gagajf.setCookie('st24ck_today_keyword', \'[[${oneData}]]\', -1);"><span>삭제</span></button>
+						<button type="button" class="xBtn" th:onclick="fnDeleteCookie(this,[[${oneData}]]);"><span>삭제</span></button>
 					</li>
 				</ul>
 				<p class="nodata_txt" th:if="${#lists.isEmpty(recentlyKeywordList)}">최근 검색어가 없습니다.</p>
@@ -741,7 +741,7 @@
 			trendKeywordList.forEach(function (item, idx) {
 				var tag = '';
 				if (idx < 10) {
-					tag += '	<a href="">'+ item.keyword +'</a>';
+					tag += '	<a href="javascript:void(0);" onclick="fnSearchKeyword(\''+item.keyword+'\');">'+ item.keyword +'</a>';
 				}
 				$("#popularKeyArea").append(tag);
 			});
@@ -754,6 +754,18 @@
 		$("#recommandArea").hide();
 	});
 
+	// 선택 단어 검색
+	var fnSearchKeyword = function (obj){
+		$("#searchMainForm").find("input[name=keyword]").val(obj);
+		$('#btnSearchKeyword').trigger('click');
+	}
+
+	// 선택 단어 삭제
+	var fnDeleteCookie = function (obj, keyword){
+		$(obj).closest('li').remove();
+		gagajf.setCookie('st24ck_today_keyword',keyword, -1);
+	}
+
 	/*]]>*/
 </script>
 

+ 121 - 9
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html

@@ -430,6 +430,109 @@
 				</div>
 				</th:block>
 
+				<!-- 세트상품일 경우구상상품의 정보도 노출  -START -->
+				<th:block th:if="${goodsInfo.goodsType == 'G056_S' and goodsComposeList != null and !goodsComposeList.empty}">
+				<th:block  th:each="goodsCompose, status : ${goodsComposeList}">
+					<th:block th:if="${ goodsCompose.tobeFormYn == 'N' and goodsCompose.goodsDesc != null  and !goodsCompose.goodsDesc.empty}" >
+					<div class="mdhtml_box"	>
+						<div style="height:4rem"></div><!-- 여백용 html -->
+						<div th:id="${'goodsDescHtml_' + goodsCompose.compsGoodsCd}"></div>
+					</div>
+					</th:block>
+					
+					<th:block th:if="${goodsCompose.tobeFormYn == 'Y'}">
+									
+						<!-- 착용컷 노출 -->
+						<div class="view_outfit_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_C1') 
+															or #strings.contains(goodsCompose.goodsImgList,'_C2')
+															or #strings.contains(goodsCompose.goodsImgList,'_C3')
+															or #strings.contains(goodsCompose.goodsImgList,'_C4')
+															or #strings.contains(goodsCompose.goodsImgList,'_C5')}">
+							<span class="tit_view">OUTFIT VIEW</span>
+							<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${status.first}">
+							<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+							</th:block>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																							or #strings.contains(goodsImg.sysImgNm,'_C2')
+																							or #strings.contains(goodsImg.sysImgNm,'_C3')
+																							or #strings.contains(goodsImg.sysImgNm,'_C4')
+																							or #strings.contains(goodsImg.sysImgNm,'_C5')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+					
+						<!-- //착용컷 노출 -->
+						<!-- 상품컷 노출 -->
+						<div class="view_detail_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_01') or #strings.contains(goodsCompose.goodsImgList,'_02')
+															or #strings.contains(goodsCompose.goodsImgList,'_D1') or #strings.contains(goodsCompose.goodsImgList,'_D2')
+															or #strings.contains(goodsCompose.goodsImgList,'_D3') or #strings.contains(goodsCompose.goodsImgList,'_D4')
+															or #strings.contains(goodsCompose.goodsImgList,'_D5') or #strings.contains(goodsCompose.goodsImgList,'_D6')
+															or #strings.contains(goodsCompose.goodsImgList,'_D7') or #strings.contains(goodsCompose.goodsImgList,'_D8')
+															or #strings.contains(goodsCompose.goodsImgList,'_D9') or #strings.contains(goodsCompose.goodsImgList,'_D10')
+															or #strings.contains(goodsCompose.goodsImgList,'_D11') or #strings.contains(goodsCompose.goodsImgList,'_D12')
+															or #strings.contains(goodsCompose.goodsImgList,'_D13') or #strings.contains(goodsCompose.goodsImgList,'_D14')
+															or #strings.contains(goodsCompose.goodsImgList,'_D15') or #strings.contains(goodsCompose.goodsImgList,'_D16')
+															or #strings.contains(goodsCompose.goodsImgList,'_D17') or #strings.contains(goodsCompose.goodsImgList,'_D18')
+															or #strings.contains(goodsCompose.goodsImgList,'_D19') or #strings.contains(goodsCompose.goodsImgList,'_D20')}">
+							<span class="tit_view">PRODUCT VIEW</span>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') or #strings.contains(goodsImg.sysImgNm,'_02')
+																							or #strings.contains(goodsImg.sysImgNm,'_D1') or #strings.contains(goodsImg.sysImgNm,'_D2')
+																							or #strings.contains(goodsImg.sysImgNm,'_D3') or #strings.contains(goodsImg.sysImgNm,'_D4')
+																							or #strings.contains(goodsImg.sysImgNm,'_D5') or #strings.contains(goodsImg.sysImgNm,'_D6')
+																							or #strings.contains(goodsImg.sysImgNm,'_D7') or #strings.contains(goodsImg.sysImgNm,'_D8')
+																							or #strings.contains(goodsImg.sysImgNm,'_D9') or #strings.contains(goodsImg.sysImgNm,'_D10')
+																							or #strings.contains(goodsImg.sysImgNm,'_D11') or #strings.contains(goodsImg.sysImgNm,'_D12')
+																							or #strings.contains(goodsImg.sysImgNm,'_D13') or #strings.contains(goodsImg.sysImgNm,'_D14')
+																							or #strings.contains(goodsImg.sysImgNm,'_D15') or #strings.contains(goodsImg.sysImgNm,'_D16')
+																							or #strings.contains(goodsImg.sysImgNm,'_D17') or #strings.contains(goodsImg.sysImgNm,'_D18')
+																							or #strings.contains(goodsImg.sysImgNm,'_D19') or #strings.contains(goodsImg.sysImgNm,'_D20')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+						<!-- //상품컷 노출 -->
+						<!-- 원단 노출 -->
+						<div class="view_fabric_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_F1')}">
+							<span class="tit_view">FABRIC</span>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+						<!-- //원단 노출 -->
+						<!-- 라벨 노출 -->
+						<div class="view_label_box" th:if="${#strings.contains(goodsCompose.goodsImgList,'_L1') 
+															or #strings.contains(goodsCompose.goodsImgList,'_L2')}">
+							<span class="tit_view">LABEL INFO</span>
+							<div class="view">
+								<span>
+									<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
+																							or #strings.contains(goodsImg.sysImgNm,'_L2')}">
+									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</th:block>
+								</span>
+							</div>
+						</div>
+					
+						<!-- //네이밍룰 안맞는 이미지 노출 -->
+						<div class="view_detail_box" th:if="${not #strings.contains(goodsCompose.goodsImgList,'_01')}">
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsCompose.goodsImgList}" >
+									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</th:block>
+							</div>
+						</div>
+					
+						<!-- //라벨 노출 -->
+					</th:block>
+				</th:block>
+				</th:block>	
+				<!-- 세트상품일 경우구상상품의 정보도 노출  -END -->
+				
 				<!-- 관리자 에디터입력 내용 노출  하다단 html -->
 				<div class="mdhtml_box  bnnoti" th:if="${goodsInfo.goodsDownDesc != null  and !goodsInfo.goodsDownDesc.empty}" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDownDesc))}"></div>
 				
@@ -2352,20 +2455,29 @@
 	$(document).ready( function() {
 		
 		$('.timer_box').css('display', 'none');
-		
-		//210526_ 추가 : 이미지 style 속성 제거
-		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
-		
+
 		//상품상세 적용
 		// 입점 html 에 태그가 정상적이지 않아 스크립트로 처리
-		var goodsDesc = [[${goodsInfo.goodsDesc}]];
-		if ("N" == [[${goodsInfo.tobeFormYn}]] && !gagajf.isNull(goodsDesc)){
-			$('#goodsDescHtml').html([[${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}]]);
-			
-			$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style"); // 이 위치에 있어야해요.
+		if ("G056_S" == [[${goodsInfo.goodsType}]] ){
+			let goodsComposeList = ([[${goodsComposeList}]]);
+			if (goodsComposeList.length > 0){
+				$.each(goodsComposeList, function(idx, item) {
+					if ("N" == item.tobeFormYn && !gagajf.isNull(item.goodsDesc)){
+						$('#goodsDescHtml_'+ item.compsGoodsCd).html(item.goodsDesc);
+					}	
+				});
+			}
 			
+		}else{
+			let goodsDesc = [[${goodsInfo.goodsDesc}]];
+			if ("N" == [[${goodsInfo.tobeFormYn}]] && !gagajf.isNull(goodsDesc)){
+				$('#goodsDescHtml').html([[${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}]]);
+			}
 		}
 		
+		//210526_ 추가 : 이미지 style 속성 제거
+		$(".mdhtml_box style").remove();$(".mdhtml_box img").removeAttr("style");
+		
 		var params = new Object();
 		params.goodsCd = [[${params.goodsCd}]];
 		params.viewDt = [[${params.viewDt}]];

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html

@@ -151,7 +151,7 @@
 										<dt>배송비</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html

@@ -218,7 +218,7 @@
 										<dt>배송비</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html

@@ -146,7 +146,7 @@
 										<dt>배송비</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html

@@ -208,7 +208,7 @@
 										<dt>배송비</dt>
 										<dd>
 											<div>
-												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+												<span th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></span>원
 											</div>
 										</dd>
 									</div>

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

@@ -51,11 +51,11 @@
 					<a href="https://www.facebook.com/istyle24" class="fbook clickable fl mr5" target="_blank" title="새창 열림"><span class="sr-only">STYLE24 페이스북</span></a>
 					<a href="https://instagram.com/istyle24.official?igshid=o3nzm9tydg9n" class="insta clickable fl" target="_blank" title="새창 열림"><span class="sr-only">STYLE24 인스타그램</span></a>
 				</div>
-				<div class="isms_box mt30">
-					<a href="http://www.yes24.com/notice/pop_isms.html" onclick="window.open(this.href, '_blank','width=500,height=708,toolbars=no,scrollbars=no'); return false;">
-						<p>정보보호관리체계<br>ISMS 인증획득</p>
-					</a>
-				</div>
+<!--				<div class="isms_box mt30">-->
+<!--					<a href="http://www.yes24.com/notice/pop_isms.html" onclick="window.open(this.href, '_blank','width=500,height=708,toolbars=no,scrollbars=no'); return false;">-->
+<!--						<p>정보보호관리체계<br>ISMS 인증획득</p>-->
+<!--					</a>-->
+<!--				</div>-->
 			</div>
 		</div>
 		<div class="corporation_info">
@@ -67,7 +67,7 @@
 							<p>
 								<span>대표이사 : 윤종선</span>
 								<span>주소: 서울시 영등포구 은행로 <em data-font="lato">11</em>, <em data-font="lato">8</em>층 (여의도동, 일신빌딩)</span> <br>
-								<span>사업자등록번호: <em data-font="lato">116-27-32499</em></span>
+								<span>사업자등록번호: <em data-font="lato">116-81-32499</em></span>
 								<span>통신판매업 신고번호: 제<rm data-font="lato">2020</rm>-서울영등포-<rm data-font="lato">1432</rm></span>
 								<span><a class="clickable" href="http://www.ftc.go.kr/bizCommPop.do?wrkr_no=2298137000" target="_blank" title="새창 열림">사업자정보확인</a></span><br>
 								<span>개인정보보호책임자 : 김명인</span>
@@ -925,6 +925,7 @@
 					if (result.length > 0) {
 						$('#ulQuickMenuCate').html('');
 						$('#ulQuickMenuCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈</span></a></li>\n');
+						$('#ulQuickMenuCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_ALL_BRAND);"><span>브랜드</span></a></li>\n');
 						
 						let allCate = [[${allCateList}]];
 						$.each(result, function(idx, item) {
@@ -985,7 +986,7 @@
 							$.each(result, function (idx, item) {
 								tag += '		<div class="item_prod">\n';
 								tag += '			<div class="item_state">\n';
-								tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\', \'\', \'\', \'\');" class=" itemLink">\n';
+								tag += '				<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\',\'\',\'IN22_01\')" class=" itemLink">\n';
 								tag += '					<div class="itemPic">\n';
 								tag += '						<img class="vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="이미지설명"/>\n';
 								tag += '					</div>\n';
@@ -1726,12 +1727,17 @@
 		$('.' + NewLink).show();
 	});
 
-	//Family Site
+	// Family Site
 	$('.family_link').on('click','.btn',function(e){
 		e.preventDefault();
+		e.stopPropagation();
 		$(this).parents('.family_link').find('#family_site').slideToggle(100);
 		$(this).find('.ico.ico_ft_arrow_b').toggleClass('ico_ft_arrow_t');
 	});
+	$(document).click(function(){
+		$('#family_site').hide();
+		$(this).find('.ico.ico_ft_arrow_b').toggleClass('ico_ft_arrow_t');
+	});
 	
 	var tabAnchor = $('.quick_btn button'),
 	tabPanel = $('#quick_menu .quick_con');

+ 2 - 2
src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html

@@ -77,12 +77,12 @@
 	<script src="https://www.google.com/recaptcha/api.js" async defer></script>
 
 	<!-- Global site tag (gtag.js) - Google Analytics -->
-<!-- 	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-168660512-1"></script> -->
+<!-- 	<script async src="https://www.googletagmanager.com/gtag/js?id=G-MQWD9VX4KH"></script> -->
 	<script>
 // 		window.dataLayer = window.dataLayer || [];
 // 		function gtag(){dataLayer.push(arguments);}
 // 		gtag('js', new Date());
-// 		gtag('config', 'UA-168660512-1');
+// 		gtag('config', 'G-MQWD9VX4KH');
 	</script>
 	
 	<th:block th:if="${sessionInfo != null}">

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

@@ -22,7 +22,7 @@
 	<div id="container" class="container dp">
 		<div class="breadcrumb">
 			<ul>
-				<li class="bread_home"><a href="index.html">홈</a></li>
+				<li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
 				<li class="bread_2depth">베스트</li>
 			</ul>
 		</div>

+ 25 - 11
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -460,18 +460,32 @@
 			var cateGb =  [[${cateInfo.cateGb}]];
 console.log(allCateList);
 			console.log(cateList);
+
+			if(brandGroupNo>0){
+				$("#brandNm").show();
+				$("#brandNm").text(brandGroupNm);
+			}
+
 			if(cateList.length > 0){
 				$.each(cateList,function (idx,item){
 					$.each(allCateList, function (allIdx, allItem){
-						if(allItem.cate1No==item.cate1No){
-							if(idx<1){
-								$('#ulAllCate').append(fnCreateSearchEngineCategoryList(item));
+						if(brandGroupNo > 0){
+							if(allItem.cate1No==item.cate1No){
+								if(idx<1){
+									$('#ulAllCate').append(fnCreateSearchEngineCategoryList(item));
+								}
 							}
 						}else{
-							if(idx<1){
-								let html = '';
-								html += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + allItem.cate1No + ');">'+allItem.cate1Nm+'</a></li>';
-								$('#ulAllCate').append(html);
+							if(allItem.cate1No==item.cate1No){
+								if(idx<1){
+									$('#ulAllCate').append(fnCreateSearchEngineCategoryList(item));
+								}
+							}else{
+								if(idx<1){
+									let html = '';
+									html += '<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + allItem.cate1No + ');">'+allItem.cate1Nm+'</a></li>\n';
+									$('#ulAllCate').append(html);
+								}
 							}
 						}
 					});
@@ -509,9 +523,9 @@ console.log(allCateList);
 					$("#formTitle").text(formTitle);
 					$("#navNm").hide();
 					if(formalGb=='G009_20'){
-						navNm += '<li class="bread_2depth" id="navNm1">아울렛</li>';
+						navNm += '<li class="bread_2depth" id="navNm1"><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',\'\',\'\',\'\',\'\',\'\',\'' + formalGb + '\');">아울렛</a></li>\n';
 					}
-					navNm += '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
+					navNm += '<li class="bread_2depth" id="navNm1"><a href="javascript:void(0);"  onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a></li>\n';
 					if (brandGroupNo == 0) {
 						$("#navHome").attr('href', '/');
 						$("#navArea").append(navNm);
@@ -522,9 +536,9 @@ console.log(allCateList);
 				}else if(cate1.cate1No == cate1No && cate3No == null){
 					$("#navNm").hide();
 					if(formalGb=='G009_20'){
-						navNm += '<li class="bread_2depth" id="navNm1">아울렛</li>';
+						navNm += '<li class="bread_2depth" id="navNm1"><a href="javascript:void(0);" onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',\'\',\'\',\'\',\'\',\'\',\'' + formalGb + '\');">아울렛</a></li>\n';
 					}
-					navNm += '<li class="bread_2depth" id="navNm1">' + cate1.cate1Nm + '</li>';
+					navNm += '<li class="bread_2depth" id="navNm1"><a href="javascript:void(0);"  onclick="cfnGoToGoodsList(' + brandGroupNo + ',\'' + cateGb + '\',' + cate1.cate1No + ');">' + cate1.cate1Nm + '</a></li>\n';
 					$("#navArea").append(navNm);
 					//$("#navNm").text(cate1.cate1Nm);
 				}else if(cate3No != null){

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

@@ -88,12 +88,12 @@
 														<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
 															<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
 														</th:block>
-														<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
-															<a href="javascript:void(0);" class="itemLink" >
-														</th:block>
-														<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+<!--														<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">-->
+<!--															<a href="javascript:void(0);" class="itemLink" >-->
+<!--														</th:block>-->
+<!--														<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">-->
 															<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]])">
-														</th:block>
+<!--														</th:block>-->
 															<div class="itemPic">
 																<img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsItem.sysImgNm}">
 															</div>

+ 158 - 78
src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html

@@ -128,8 +128,8 @@
 															<img alt="BLUE-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 														</div>
 														<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
-														<div class=" itemName" th:text="${goodsData.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
 														<div class="itemComment" th:text="${goodsData.goodsTnm}">#가을느낌 물씬!</div>
+														<div class=" itemName" th:text="${goodsData.goodsFullNm}">스타 착용 여성 퍼 아플리케 오버핏 투마일 웨어링 점퍼</div>
 														<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">488,000원</p>
 													</a>
 												</div>
@@ -182,8 +182,8 @@
 																<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + bestItemData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class=" itemBrand" th:text="${bestItemData.brandGroupNm}">BRAND NAME</p>
-															<div class=" itemName" th:text="${bestItemData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 															<div class="itemComment" th:text="${bestItemData.goodsTnm}">#데일리웨어로 매일입고싶은</div>
+															<div class=" itemName" th:text="${bestItemData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 															<p class="itemPrice">[[${#numbers.formatInteger(bestItemData.currPrice,0,'COMMA')}]]
 																<span class="itemPrice_original" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${#numbers.formatInteger(bestItemData.listPrice,3,'COMMA')}">89,000</span>
 																<span class=" itemPercent" th:if="${bestItemData.currPrice != bestItemData.listPrice}" th:text="${(bestItemData.listPrice == 0 ? 0 : #numbers.formatDecimal((bestItemData.listPrice - bestItemData.currPrice) / (bestItemData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
@@ -261,70 +261,76 @@
 									<div id="countdown">
 										<div id="tiles"></div>
 									</div>
-									<div class="count_time" id="countdownTime">
-										<span id="h-hours">HOURS</span>
-										<span id="h-minutes">MINS</span>
-										<span id="h-seconds">SECS</span>
+<!--									<div class="count_time" id="countdownTime">-->
+<!--										<span id="h-hours">HOURS</span>-->
+<!--										<span id="h-minutes">MINS</span>-->
+<!--										<span id="h-seconds">SECS</span>-->
+<!--									</div>-->
+									<div class="count_time">
+										<span>HOURS</span>
+										<span>MINS</span>
+										<span>SECS</span>
 									</div>
 								</div>
 							</div>
-							<script>
-								/* 핫딜 countDown */
-								// var target_date = new Date().getTime() + (1000*3600*8); // set the countdown date
-								var target_date = '';
-								if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){
-									target_date = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
-								}
-								if(target_date != null && target_date != ''){
-									var days, hours, minutes, seconds; // variables for time units
+<!--							<script>-->
+<!--								/* 핫딜 countDown */-->
+<!--								// var target_date = new Date().getTime() + (1000*3600*8); // set the countdown date-->
+<!--							  -->
+<!--								var target_date = '';-->
+<!--								if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){-->
+<!--									target_date = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");-->
+<!--								}-->
+<!--								if(target_date != null && target_date != ''){-->
+<!--									var days, hours, minutes, seconds; // variables for time units-->
 
-									var countdown = document.getElementById("tiles"); // get tag element
+<!--									var countdown = document.getElementById("tiles"); // get tag element-->
 
-									getCountdown();
+<!--									getCountdown();-->
 
-									var timerStop = setInterval(function () { getCountdown(); }, 1000);
+<!--									var timerStop = setInterval(function () { getCountdown(); }, 1000);-->
 
-									var fixDate = new Date().getTime();
-									var fixTarget = (target_date - fixDate) / 1000;
-									var width = (86400-fixTarget)*100/86400;
+<!--									var fixDate = new Date().getTime();-->
+<!--									var fixTarget = (target_date - fixDate) / 1000;-->
+<!--									var width = (86400-fixTarget)*100/86400;-->
 
-									function getCountdown(){
+<!--									function getCountdown(){-->
 
-										// find the amount of "seconds" between now and target
-										var current_date = new Date().getTime();
-										var seconds_left = (target_date - current_date) / 1000;
+<!--										// find the amount of "seconds" between now and target-->
+<!--										var current_date = new Date().getTime();-->
+<!--										var seconds_left = (target_date - current_date) / 1000;-->
 
-										seconds_left = seconds_left % 86400;
+<!--										seconds_left = seconds_left % 86400;-->
 
-										hours = pad( parseInt(seconds_left / 3600) );
-										seconds_left = seconds_left % 3600;
+<!--										hours = pad( parseInt(seconds_left / 3600) );-->
+<!--										seconds_left = seconds_left % 3600;-->
 
-										minutes = pad( parseInt(seconds_left / 60) );
-										seconds = pad( parseInt( seconds_left % 60 ) );
+<!--										minutes = pad( parseInt(seconds_left / 60) );-->
+<!--										seconds = pad( parseInt( seconds_left % 60 ) );-->
 
-										// format countdown string + set tag value
-										countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+<!--										// format countdown string + set tag value-->
+<!--										countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";-->
 
-										var elem = document.getElementById("barCurrent");
-										function progressMove(){
-											width += (100-width)/fixTarget;
-											elem.style.width = width + "%";
-										}
-										progressMove();
+<!--										var elem = document.getElementById("barCurrent");-->
+<!--										function progressMove(){-->
+<!--											width += (100-width)/fixTarget;-->
+<!--											elem.style.width = width + "%";-->
+<!--										}-->
+<!--										progressMove();-->
 
-										if(seconds_left < 1){
-											clearInterval(timerStop);
-											elem.style.width = "100%";
-										}
+<!--										if(seconds_left < 1){-->
+<!--											clearInterval(timerStop);-->
+<!--											elem.style.width = "100%";-->
+<!--										}-->
 
-									}
+<!--									}-->
 
-									function pad(n) {
-										return (n < 10 ? '0' : '') + n;
-									}
-								}
-								/* countDown */
-							</script>
+<!--									function pad(n) {-->
+<!--										return (n < 10 ? '0' : '') + n;-->
+<!--									}-->
+<!--								}-->
+<!--								/* countDown */-->
+<!--							</script>-->
 						</div>
 						<div class="cont_body">
 							<div class="swiper-container post-deal">
@@ -340,8 +346,8 @@
 																<img alt="" class="pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 															</div>
 															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
-															<div class="itemName" th:text="${goodsData.goodsNm}">여성 체인 프린트 큐롯 스커트 프린트 큐롯 스커트</div>
 															<div class="itemComment" th:text="${goodsData.goodsTnm}">#데일리웨어로 매일입고싶은</div>
+															<div class="itemName" th:text="${goodsData.goodsNm}">여성 체인 프린트 큐롯 스커트 프린트 큐롯 스커트</div>
 															<p class="itemPrice">
 																[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')}]]
 																<span class="itemPrice_original" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatInteger(goodsData.listPrice,0,'COMMA')} + '원'"></span>
@@ -423,8 +429,8 @@
 																	</th:block>
 																	<img alt="BLACK-a" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																</div>
-																<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<div class="itemComment" th:text="${goodsData.goodsTnm}">#데일리웨어로 매일입고싶은</div>
+																<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																<p class="itemPrice" th:text="${#numbers.formatInteger(goodsData.currPrice,1,'COMMA')}">80,100
 																	<span class="itemPrice_original" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
 																	<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
@@ -517,8 +523,8 @@
 																			<img alt="" class=" vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}" onerror="noneImg(this)">
 																		</div>
 																		<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
-																		<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																		<div class="itemComment" th:text="${goodsData.goodsTnm}">#주문 폭주 상품</div>
+																		<div class=" itemName" th:text="${goodsData.goodsFullNm}">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
 																		<p class="itemPrice">[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')}]]
 																			<span class="itemPrice_original" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${#numbers.formatInteger(goodsData.listPrice,1,'COMMA')}">89,000</span>
 																			<span class=" itemPercent" th:if="${goodsData.currPrice != goodsData.listPrice}" th:text="${(goodsData.listPrice == 0 ? 0 : #numbers.formatDecimal((goodsData.listPrice - goodsData.currPrice) / (goodsData.listPrice * 1.0) * 100, 1, 0)) + '%'}">10%</span>
@@ -859,6 +865,104 @@
 /*<![CDATA[*/
 
 var mainLayoutList = [[${mainLayoutList}]];
+// var targetTime = '';
+// if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){
+// 	targetTime = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
+// }
+// if(targetTime != null && targetTime != ''){
+// 	/* 핫딜 countDown */
+// 	var endTime = new Date(targetTime); // 남은시간 지정
+// 	endTime = (Date.parse(endTime) / 1000);
+//
+// 	var countdown = document.getElementById("tiles"); // get tag element
+//
+// 	getCountdown();
+//
+// 	setInterval(function () { getCountdown(); }, 1000);
+//
+// 	function getCountdown(){
+// 		// find the amount of "seconds" between now and target
+// 		var now = new Date();
+// 		now = (Date.parse(now) / 1000);
+//
+// 		var timeLeft = endTime - now;
+//
+// 		var days = Math.floor(timeLeft / 86400);
+// 		var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
+// 		var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
+// 		var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
+//
+// 		if (hours < '10') { hours = '0' + hours; }
+// 		if (minutes < '10') { minutes = '0' + minutes; }
+// 		if (seconds < '10') { seconds = '0' + seconds; }
+//
+// 		// format countdown string + set tag value
+// 		countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+// 	}
+//
+// 	function pad(n) {
+// 		return (n < 10 ? '0' : '') + n;
+// 	}
+// }
+
+/* 핫딜 countDown */
+/* 핫딜 countDown */
+var target_date = '';
+if(!gagajf.isNull($("#socailForm").find("input[name=targetTime]").val())){
+	target_date = $("#socailForm").find("input[name=targetTime]").val().toDate("YYYYMMDD");
+}
+if(target_date != null && target_date != ''){
+	// var target_date = new Date().getTime() + (1000*3600*7); // set the countdown date
+	var days, hours, minutes, seconds; // variables for time units
+
+	var countdown = document.getElementById("tiles"); // get tag element
+
+	getCountdown();
+
+	var timerStop = setInterval(function () { getCountdown(); }, 1000);
+
+	var fixDate = new Date().getTime();
+	var fixTarget = (target_date - fixDate) / 1000;
+	var width = (86400-fixTarget)*100/86400;
+
+	function getCountdown(){
+
+		// find the amount of "seconds" between now and target
+		var current_date = new Date().getTime();
+		var seconds_left = (target_date - current_date) / 1000;
+
+		seconds_left = seconds_left % 86400;
+
+		hours = pad( parseInt(seconds_left / 3600) );
+		seconds_left = seconds_left % 3600;
+
+		minutes = pad( parseInt(seconds_left / 60) );
+		seconds = pad( parseInt( seconds_left % 60 ) );
+
+		// format countdown string + set tag value
+		countdown.innerHTML = "<span>" + hours + "</span><span>" + minutes + "</span><span>" + seconds + "</span>";
+
+		var elem = document.getElementById("barCurrent");
+		function progressMove(){
+			width += (100-width)/fixTarget;
+			elem.style.width = width + "%";
+		}
+		progressMove();
+
+		if(seconds_left < 1){
+			clearInterval(timerStop);
+			elem.style.width = "100%";
+		}
+
+	}
+
+	function pad(n) {
+		return (n < 10 ? '0' : '') + n;
+	}
+}
+
+
+/* countDown */
 
 // var targetTime = $("#socailForm").find("input[name=targetTime]").val();
 // if(targetTime != null && targetTime != ''){
@@ -992,7 +1096,7 @@ var main_trendy_slide = new Swiper('.main_trendy .post-trendy', {
 	loopAdditionalSlides : 1,
 	speed : 1000,
 	autoplay: {
-		delay: 30000,
+		delay: 1500,
 		disableOnInteraction:false,
 	},
 	navigation: {
@@ -1127,61 +1231,37 @@ if (pickLength < 7) { //210614_ 수정 : 슬라이드 갯수 7개 미만일시 
 
 }
 
-/* 브랜드 PICK 갯수체크 210430_수정 */
+//210622_ 삭제 : 슬라이드 주석 삭제.
 var pickForCont = $('.post-pick-for .swiper-slide');
 var pickForLength = pickForCont.length;
 if (pickForLength < 2) {
 	var main_pick_post = new Swiper('.main_pick .post-pick-for', { //thumbs
 		initialSlide: 0,
 		slidesPerView: 1,
-		// slidesPerGroup: 6,
 		loop: false,
 		watchOverflow : true,
 		loopeSlides: 6,
 		spaceBetween: 10,
-		// loopFillGroupWithBlank : true,
 		loopAdditionalSlides: 1,
 		allowTouchMove: false,
-		// navigation: {
-		// nextEl: '.main_pick .swiper-button-next',
-		// prevEl: '.main_pick .swiper-button-prev',
-		// },
 		thumbs: {
 			swiper: main_pick_nav
 		},
-		// autoplay: {
-		// 	delay: 5000,
-		// 	disableOnInteraction: false,
-		// },
 	});
 }else{
 	var main_pick_post = new Swiper('.main_pick .post-pick-for', { //thumbs
 		initialSlide: 0,
 		slidesPerView: 1,
-		// slidesPerGroup: 6,
 		loop: true,
 		loopeSlides: 6,
-		//spaceBetween: 10,
-		// loopFillGroupWithBlank : true,
 		loopAdditionalSlides: 1,
 		allowTouchMove: false,
-		// navigation: {
-		// nextEl: '.main_pick .swiper-button-next',
-		// prevEl: '.main_pick .swiper-button-prev',
-		// },
 		thumbs: {
 			swiper: main_pick_nav
 		},
-		// autoplay: {
-		// 	delay: 5000,
-		// 	disableOnInteraction: false,
-		// },
 	});
 }
 
-// main_pick_nav.controller.control = main_pick_post;
-// main_pick_post.controller.control = main_pick_nav;
-
 var main_pick_lookbook = new Swiper ('.main_pick .post-lookbook', {
 	slidesPerView: 1,
 	speed : 1000,

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

@@ -68,7 +68,7 @@
 				<!-- 카테고리 바로가기 -->
 				<div class="content wide dp_category">
 					<div class="cont_head">
-						<h4>카테고리 바로가기</h4>
+						<h4 th:text="${contentsTitle!=null and contentsTitle!=''}?${contentsTitle}:'카테고리 바로가기'"></h4>
 					</div>
 					<div class="cont_body">
 						<div class="dp_cate_list">

+ 94 - 35
src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html

@@ -36,29 +36,29 @@
 								<input type="hidden" name="brandGroupNo" th:value="${params.brandGroupNo}">
 								<fieldset>
 									<legend>결과 내 재검색</legend>
-									<input type="text" id="search" name="search" th:value="${params.keyword}" placeholder="" class="search_input" title="검색어 입력" maxlength="100">
+									<input type="text" id="keyword" name="keyword" th:value="${params.keyword}" placeholder="" class="search_input" title="검색어 입력" maxlength="100" >
 									<button type="button" class="sch_btn" onclick="fnSearchData();"><span>검색</span></button>
 								</fieldset>
 							</form>
 							<div class="autokeyword">
 								<h3 class="sr-only">자동완성 검색어</h3>
-								<ul>
-									<li><a href=""><em>가</em>을컬리수</a></li>
-									<li><a href=""><em>가</em>드상하</a></li>
-									<li><a href=""><em>가</em>죽자켓</a></li>
-									<li><a href=""><em>가</em>죽밸트</a></li>
-									<li><a href=""><em>가</em>운</a></li>
-									<li><a href=""><em>가</em>을</a></li>
-									<li><a href=""><em>가</em>디건</a></li>
-									<li><a href=""><em>가</em>디건형니트</a></li>
-									<li><a href=""><em>가</em>드밴드레깅스</a></li>
-									<li><a href=""><em>가</em>을잠옷</a></li>
+								<ul class="autokeywordUl">
+<!--									<li><a href=""><em>가</em>을컬리수</a></li>-->
+<!--									<li><a href=""><em>가</em>드상하</a></li>-->
+<!--									<li><a href=""><em>가</em>죽자켓</a></li>-->
+<!--									<li><a href=""><em>가</em>죽밸트</a></li>-->
+<!--									<li><a href=""><em>가</em>운</a></li>-->
+<!--									<li><a href=""><em>가</em>을</a></li>-->
+<!--									<li><a href=""><em>가</em>디건</a></li>-->
+<!--									<li><a href=""><em>가</em>디건형니트</a></li>-->
+<!--									<li><a href=""><em>가</em>드밴드레깅스</a></li>-->
+<!--									<li><a href=""><em>가</em>을잠옷</a></li>-->
 								</ul>
 							</div>
 						</div>
 						<div class="related_keyword">
 							<span class="title">연관검색어</span>
-							<ul>
+							<ul class="relKeyword">
 								<li><a href="">연관검색어1</a></li>
 								<li><a href="">연관검색어2</a></li>
 								<li><a href="">연관검색어3</a></li>
@@ -104,10 +104,10 @@
 					<!-- 검색결과 : 상품 -->
 					<div class="sch_result_cont" style="display:block;">
 						<!-- 통합 상품 검색결과 없을 시 노출 -->
-						<div class="nodata" style="display:none;">
+						<div class="nodata" id="goodsNodata" style="display:none;">
 							<div class="txt_box">
 								<p>
-									<span>‘티비제이 제기장 스웨터’</span> 에 대한 상품 검색결과가 없습니다.
+									‘<span id="goodsKeyword"></span>’ 에 대한 상품 검색결과가 없습니다.
 								</p>
 							</div>
 						</div>
@@ -451,19 +451,6 @@
 									</div>
 								</div>
 								<div class="area_list">
-									<!-- 검색필터 결과 없을 시 노출 -->
-									<div class="nodata" id="noFilterData" style="display:none;">
-										<div class="txt_box">
-											<p>
-												선택하신 조건에 맞는 상품이 없습니다. <br>
-												필터를 다시 선택하신 후 다시 검색해 보세요!
-											</p>
-										</div>
-										<div class="btn_box">
-											<button type="button" class="btn btn_default" onclick="fnFilterReset();"><span>초기화</span></button>
-										</div>
-									</div>
-									<!-- //검색필터 결과 없을 시 노출 -->
 									<!-- 검색필터 결과 상품 노출 -->
 									<div class="count_wrap">
 										<div>
@@ -490,6 +477,19 @@
 										</div>
 									</div>
 									<!-- //검색필터 결과 상품 노출 -->
+									<!-- 검색필터 결과 없을 시 노출 -->
+									<div class="nodata" id="noFilterData" style="display:none;">
+										<div class="txt_box">
+											<p>
+												선택하신 조건에 맞는 상품이 없습니다. <br>
+												필터를 다시 선택하신 후 다시 검색해 보세요!
+											</p>
+										</div>
+										<div class="btn_box">
+											<button type="button" class="btn btn_default" onclick="fnFilterReset();"><span>초기화</span></button>
+										</div>
+									</div>
+									<!-- //검색필터 결과 없을 시 노출 -->
 								</div>
 								<div class="last_page" id="endPage" style="display:none;">
 									<span>마지막 페이지입니다.</span>
@@ -503,10 +503,10 @@
 					<!-- 검색결과 : 기획전 -->
 					<div class="sch_result_cont">
 						<!-- 기획전 검색결과 없을 시 노출 -->
-						<div class="nodata" style="display:none;">
+						<div class="nodata" id="planNodata" style="display:none;">
 							<div class="txt_box">
 								<p>
-									<span>‘티비제이 제기장 스웨터’</span> 에 대한 기획전 검색결과가 없습니다.
+									<span id="planKeyword"></span> 에 대한 기획전 검색결과가 없습니다.
 								</p>
 							</div>
 						</div>
@@ -530,10 +530,10 @@
 					<!-- 검색결과 : 이벤트 -->
 					<div class="sch_result_cont">
 						<!-- 이벤트 검색결과 없을 시 노출 -->
-						<div class="nodata" style="display:none;">
+						<div class="nodata" id="eventNodata" style="display:none;">
 							<div class="txt_box">
 								<p>
-									<span>‘티비제이 제기장 스웨터’</span> 에 대한 이벤트 검색결과가 없습니다.
+									‘<span id="eventKeyword"></span>’ 에 대한 이벤트 검색결과가 없습니다.
 								</p>
 							</div>
 						</div>
@@ -613,6 +613,10 @@
 			if(dataListLen > 0){
 				$('#noFilterData').hide();
 				$('#endPage').hide();
+				$('#goodsNodata').hide();
+				$('#goodsKeyword').text('');
+				$('.cont_body .lnb').show();
+				$('.cont_body .cont').show();
 				$('.cont .count_wrap').show();
 				var goodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
 				let lastPage = result.paging.pageNo;
@@ -621,6 +625,7 @@
 				gagaInfiniteScroll.draw(htm);
 				//fnImgOnoff();
 			}else{
+				console.log('11');
 				if(totalCnt > Number($("#searchGoodsForm").find("input[name=pageSize]").val())){
 					if($("#searchGoodsForm input[name=pageNo]").val()==1){
 						// 필터 값으로 조회 데이터 없을때
@@ -632,6 +637,18 @@
 						$('#endPage').show();
 						$('#noFilterData').hide();
 					}
+				}else{
+					if($("#searchGoodsForm input[name=pageNo]").val()==1){
+						$('#goodsNodata').show();
+						$('#goodsKeyword').text([[${params.keyword}]]);
+						$('.cont_body .lnb').hide();
+						$('.cont_body .cont').hide();
+					}else{
+						$('#goodsNodata').show();
+						$('#goodsKeyword').text([[${params.keyword}]]);
+						$('.cont_body .lnb').hide();
+						$('.cont_body .cont').hide();
+					}
 				}
 				gagaInfiniteScroll.draw('not');
 			}
@@ -784,6 +801,8 @@
 			}
 
 			if(result.eventList != null && result.eventList.length>0){
+				$("#eventNodata").hide();
+				$("#eventKeyword").text('');
 				$.each(result.eventList, function (idx,item){
 					let html = '';
 					html += '<li>\n';
@@ -804,6 +823,9 @@
 					html += '</li>\n';
 					$("#eventArea").append(html);
 				});
+			}else{
+				$("#eventNodata").show();
+				$("#eventKeyword").text([[${params.keyword}]]);
 			}
 		}
 
@@ -818,7 +840,8 @@
 			}else{
 				$("#planListCnt").text('('+result.planList.length.addComma()+')');
 			}
-
+			$("#planNodata").hide();
+			$("#planKeyword").text('');
 			if(result.planList != null && result.planList.length>0){
 				$.each(result.planList, function (idx,item){
 					let html = '';
@@ -858,6 +881,9 @@
 					html += '</div>\n';
 					$("#planArea").append(html);
 				});
+			}else{
+				$("#planNodata").show();
+				$("#planKeyword").text([[${params.keyword}]]);
 			}
 		}
 	
@@ -932,6 +958,7 @@
 				var reSearchValue = $(this).val();
 				if(reSearchValue.length > 0) {
 					$('.inner_search .autokeyword').show();
+					fnGetAutoSearch();
 				} else if (reSearchValue.length == 0) {
 					$('.inner_search .autokeyword').hide();
 				}
@@ -986,6 +1013,37 @@
 			//fnGetInfiniteScrollDataList(1);
 		});
 
+		// 검색어 찾기
+		var fnGetAutoSearch = function (){
+			gagajf.ajaxFormSubmit("/display/search/auto/complete", document.InnerSearchForm, fnAutoCompleteList);
+		}
+
+		// 검색어 찾기 결과
+		var fnAutoCompleteList = function (result){
+			if(result.autoKeywords.length==0 && result.brand == null && result.cateList == null && result.goodsList ==null) {
+				$('.inner_search .autokeyword').hide();
+			}else{
+				// 자동완성 키워드
+				if(result.autoKeywords != null && result.autoKeywords.length > 0){
+					$(".autokeywordUl").html('');
+					let tag = '';
+					// tag += '<ul>\n';
+					$.each(result.autoKeywords, function (idx, item){
+						//<a href="javascript:void(0);"><em>가</em>을컬리수</a>
+						tag += '<li><a href="javascript:void(0);" onclick="fnSearchKeyword(\''+result.autoKeywords[idx]+'\');">'+result.autoKeywords[idx]+'</a></li>\n';
+					});
+					// tag += '</ul>\n';
+					$(".autokeywordUl").append(tag);
+				}
+			}
+		}
+
+		// 선택 단어 검색
+		var fnSearchKeyword = function (obj){
+			$("#InnerSearchForm").find("input[name=keyword]").val(obj);
+			fnSearchData();
+		}
+
 		// 좌측 카테고리 생성
 		var fnCreateSearchCategoryList = function (){
 			let allCateList = [[${allCateList}]];
@@ -1109,9 +1167,9 @@
 
 		// 검색
 		var fnSearchData = function (){
-			let keyword = $("#InnerSearchForm").find("input[name=search]").val();
+			let keyword = $("#InnerSearchForm").find("input[name=keyword]").val();
 			let brandGroupNo = $("#InnerSearchForm").find("input[name=brandGroupNo]").val();
-			$("#searchGoodsForm").find('input[name=keyword]').val($("#InnerSearchForm").find("input[name=search]").val());
+			$("#searchGoodsForm").find('input[name=keyword]').val($("#InnerSearchForm").find("input[name=keyword]").val());
 			cfnGoToSearchGoodsListForm(keyword,brandGroupNo);
 		}
 
@@ -1192,6 +1250,7 @@
 			fnSearchGoodsListSearch();
 		}
 
+
 	</script>
 
 	<!-- //2021.06.18 검색화면 로그스크립트 삽입 -->

+ 16 - 3
src/main/webapp/WEB-INF/views/web/display/SearchLayerWeb.html

@@ -36,8 +36,8 @@
 				<div class="list_recent_keword" th:if="${not #lists.isEmpty(recentlyKeywordList)}">
 					<ul>
 						<li th:if="${recentlyKeywordList}" th:each="oneData, status : ${recentlyKeywordList}">
-							<a href="javascript:void(0);" th:text="${oneData}" onclick="fnSearchKeyword([[@{oneData}]]);">슬랙스</a>
-							<button type="button" class="btn_delete" onclick="gagajf.setCookie('st24ck_today_keyword', \'[[${oneData}]]\', -1);"><span>삭제</span></button>
+							<a href="javascript:void(0);" th:text="${oneData}" th:onclick="fnSearchKeyword([[${oneData}]])">슬랙스</a>
+							<button type="button" class="btn_delete" th:onclick="fnDeleteCookie(this,[[${oneData}]]);" ><span>삭제</span></button>
 						</li>
 					</ul>
 				</div>
@@ -373,7 +373,7 @@
 				var tag = '';
 				if (idx < 10) {
 					tag += '<li>';
-					tag += '	<a href="">'+ item.keyword +'</a>';
+					tag += '	<a href="javascript:void(0);" onclick="fnSearchKeyword(\''+item.keyword+'\');">'+ item.keyword +'</a>';
 					tag += '</li>';
 				}
 				$("#popularKeyArea").append(tag);
@@ -506,6 +506,19 @@
 			$('.common_search .area_result .empty_box').hide();
 		}
 	}
+
+	// 선택 단어 검색
+	var fnSearchKeyword = function (obj){
+		$("#searchMainForm").find("input[name=keyword]").val(obj);
+		$('#btnSearchKeyword').trigger('click');
+	}
+
+	// 선택 단어 삭제
+	var fnDeleteCookie = function (obj, keyword){
+		$(obj).closest('li').remove();
+		gagajf.setCookie('st24ck_today_keyword',keyword, -1);
+	}
+
 	/*]]>*/
 </script>
 </html>

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

@@ -820,6 +820,106 @@
 				<!-- //라벨 노출 -->
 				</th:block>
 					
+				<!-- 세트상품일 경우구상상품의 정보도 노출  -START -->
+				<th:block th:if="${goodsInfo.goodsType == 'G056_S' and goodsComposeList != null and !goodsComposeList.empty}">
+				<th:block  th:each="goodsCompose, status : ${goodsComposeList}">
+					<th:block th:if="${ goodsCompose.tobeFormYn == 'N' and goodsCompose.goodsDesc != null  and !goodsCompose.goodsDesc.empty}" >
+						<div style="height:100px"></div>
+						<div th:id="${'goodsDescHtml_' + goodsCompose.compsGoodsCd}"></div>
+					</th:block>
+
+					<th:block th:if="${goodsInfo.tobeFormYn == 'Y'}">
+						<!-- 착용컷 노출 -->
+						<div class="view_outfit_box" th:if="${#strings.contains(goodsImgList,'_C1') 
+															or #strings.contains(goodsImgList,'_C2')
+															or #strings.contains(goodsImgList,'_C3')
+															or #strings.contains(goodsImgList,'_C4')
+															or #strings.contains(goodsImgList,'_C5')}">
+							<span class="tit_view">OUTFIT VIEW</span>
+							<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${status.first}">
+							<span class="model_info" th:text="${goodsImg.modelInfo}">(모델정보 : 185cm / 78kg / XL 착용)</span>
+							</th:block>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_C1') 
+																							or #strings.contains(goodsImg.sysImgNm,'_C2')
+																							or #strings.contains(goodsImg.sysImgNm,'_C3')
+																							or #strings.contains(goodsImg.sysImgNm,'_C4')
+																							or #strings.contains(goodsImg.sysImgNm,'_C5')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+						
+						<!-- //착용컷 노출 -->
+						<!-- 상품컷 노출 -->
+						<div class="view_detail_box" th:if="${#strings.contains(goodsImgList,'_01') or #strings.contains(goodsImgList,'_02')
+															or #strings.contains(goodsImgList,'_D1') or #strings.contains(goodsImgList,'_D2')
+															or #strings.contains(goodsImgList,'_D3') or #strings.contains(goodsImgList,'_D4')
+															or #strings.contains(goodsImgList,'_D5') or #strings.contains(goodsImgList,'_D6')
+															or #strings.contains(goodsImgList,'_D7') or #strings.contains(goodsImgList,'_D8')
+															or #strings.contains(goodsImgList,'_D9') or #strings.contains(goodsImgList,'_D10')
+															or #strings.contains(goodsImgList,'_D11') or #strings.contains(goodsImgList,'_D12')
+															or #strings.contains(goodsImgList,'_D13') or #strings.contains(goodsImgList,'_D14')
+															or #strings.contains(goodsImgList,'_D15') or #strings.contains(goodsImgList,'_D16')
+															or #strings.contains(goodsImgList,'_D17') or #strings.contains(goodsImgList,'_D18')
+															or #strings.contains(goodsImgList,'_D19') or #strings.contains(goodsImgList,'_D20')}">
+							<span class="tit_view">PRODUCT VIEW</span>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_01') or #strings.contains(goodsImg.sysImgNm,'_02')
+																							or #strings.contains(goodsImg.sysImgNm,'_D1') or #strings.contains(goodsImg.sysImgNm,'_D2')
+																							or #strings.contains(goodsImg.sysImgNm,'_D3') or #strings.contains(goodsImg.sysImgNm,'_D4')
+																							or #strings.contains(goodsImg.sysImgNm,'_D5') or #strings.contains(goodsImg.sysImgNm,'_D6')
+																							or #strings.contains(goodsImg.sysImgNm,'_D7') or #strings.contains(goodsImg.sysImgNm,'_D8')
+																							or #strings.contains(goodsImg.sysImgNm,'_D9') or #strings.contains(goodsImg.sysImgNm,'_D10')
+																							or #strings.contains(goodsImg.sysImgNm,'_D11') or #strings.contains(goodsImg.sysImgNm,'_D12')
+																							or #strings.contains(goodsImg.sysImgNm,'_D13') or #strings.contains(goodsImg.sysImgNm,'_D14')
+																							or #strings.contains(goodsImg.sysImgNm,'_D15') or #strings.contains(goodsImg.sysImgNm,'_D16')
+																							or #strings.contains(goodsImg.sysImgNm,'_D17') or #strings.contains(goodsImg.sysImgNm,'_D18')
+																							or #strings.contains(goodsImg.sysImgNm,'_D19') or #strings.contains(goodsImg.sysImgNm,'_D20')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+						<!-- //상품컷 노출 -->
+						<!-- 원단 노출 -->
+						<div class="view_fabric_box" th:if="${#strings.contains(goodsImgList,'_F1')}">
+							<span class="tit_view">FABRIC</span>
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_F1')}">
+								<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+								</th:block>
+							</div>
+						</div>
+						<!-- //원단 노출 -->
+						<!-- 라벨 노출 -->
+						<div class="view_label_box" th:if="${#strings.contains(goodsImgList,'_L1') 
+															or #strings.contains(goodsImgList,'_L2')}">
+							<span class="tit_view">LABEL INFO</span>
+							<div class="view">
+								<span>
+									<th:block th:each="goodsImg, status : ${goodsImgList}" th:if="${#strings.contains(goodsImg.sysImgNm,'_L1') 
+																							or #strings.contains(goodsImg.sysImgNm,'_L2')}">
+									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=250'}" alt=""  th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</th:block>
+								</span>
+							</div>
+						</div>
+						
+						<!-- //네이밍룰 안맞는 이미지 노출 -->
+						<div class="view_detail_box" th:if="${not #strings.contains(goodsImgList,'_01')}">
+							<div class="view">
+								<th:block th:each="goodsImg, status : ${goodsImgList}" >
+									<img th:src="${imgGoodsUrl+'/'+goodsImg.sysImgNm+'?RS=720'}" alt="" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/images/pc/thumb/bg_item_none.png'}+'\';'">
+									</th:block>
+							</div>
+						</div>
+						
+						<!-- //라벨 노출 -->
+					</th:block>
+				</th:block>
+				</th:block>	
+				<!-- 세트상품일 경우구상상품의 정보도 노출  -END -->
+					
 				<!-- 관리자 에디터입력 내용 노출  하다단 html -->
 				<div class="mdhtml_box" th:if="${goodsInfo.goodsDownDesc != null  and !goodsInfo.goodsDownDesc.empty }" th:utext="${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDownDesc))}"></div>
 					
@@ -1289,9 +1389,21 @@
 	
 	//상품상세 적용
 	// 입점 html 에 태그가 정상적이지 않아 스크립트로 처리
-	let goodsDesc = [[${goodsInfo.goodsDesc}]];
-	if ("N" == [[${goodsInfo.tobeFormYn}]] && !gagajf.isNull(goodsDesc)){
-		$('#goodsDescHtml').html([[${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}]]);
+	if ("G056_S" == [[${goodsInfo.goodsType}]] ){
+		let goodsComposeList = ([[${goodsComposeList}]]);
+		if (goodsComposeList.length > 0){
+			$.each(goodsComposeList, function(idx, item) {
+				if ("N" == item.tobeFormYn && !gagajf.isNull(item.goodsDesc)){
+					$('#goodsDescHtml_'+ item.compsGoodsCd).html(item.goodsDesc);
+				}	
+			});
+		}
+		
+	}else{
+		let goodsDesc = [[${goodsInfo.goodsDesc}]];
+		if ("N" == [[${goodsInfo.tobeFormYn}]] && !gagajf.isNull(goodsDesc)){
+			$('#goodsDescHtml').html([[${#strings.unescapeJava(#strings.escapeJava(goodsInfo.goodsDesc))}]]);
+		}
 	}
 	
 	let socialSq = [[${goodsInfo.socialSq}]];	

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

@@ -138,7 +138,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

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

@@ -207,7 +207,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

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

@@ -140,7 +140,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

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

@@ -205,7 +205,7 @@
 											</div>
 											<div class="include_item">
 												<dt>배송비</dt>
-												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfDeliveryFee + oneData.rfDelvCpnAmt), 1, 'COMMA')}"></em>원</dd>
 											</div>
 											<div class="include_item">
 												<dt>할인 금액 차감</dt>

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

@@ -260,7 +260,7 @@ $(function(){
            //var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
 
                endTime = (Date.parse(endTime) / 1000);
-
+console.log(endTime);
                var now = new Date();
                now = (Date.parse(now) / 1000);
 

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

@@ -256,7 +256,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 				}
 			}
 			// tag += '		<img class=" vLHTC pd_img" src="' + item.sysImgNm + '" data-img="' + item.sysImgNm2 + '" onerror="noneImg(this)">';
-			tag += '		<img class=" vLHTC pd_img" src="' + goodsUrl + '/' + item.sysImgNm + '" data-img="' + goodsUrl + '/' + item.sysImgNm2 + '" onerror="noneImg(this)">';
+			tag += '		<img class=" vLHTC pd_img" src="' + goodsUrl + '/' + item.sysImgNm.replaceAll('//image.istyle24.com/Upload/ProductImage/','') + '" data-img="' + goodsUrl + '/' + item.sysImgNm2.replaceAll('//image.istyle24.com/Upload/ProductImage/','') + '" onerror="noneImg(this)">';
 			if (!gagajf.isNull(item.sizes) && item.selfGoodsYn == 'Y') {
 				var sizeArr = item.sizes.split(",");
 				var minSize;
@@ -299,10 +299,10 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			tag += '			</div>';
 
 			tag += '			<p class="itemBrand">' + item.brandGroupNm + '</p>';
-			tag += '			<div class="itemName">' + item.goodsFullNm + '</div>';
 			if (item.goodsTnm != null) {
 				tag += '			<div class="itemComment">' + item.goodsTnm + '</div>';
 			}
+			tag += '			<div class="itemName">' + item.goodsFullNm + '</div>';
 			if (appGb != 'Mob') {
 				tag += '			<p class="itemPrice">' + item.currPrice.addComma()
 				if (item.currPrice != item.listPrice) {
@@ -372,19 +372,19 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		}
 	});
 
-	if (cnt == 1) {
-		// <!-- Criteo 카테고리/리스팅 태그 -->
-		window.criteo_q = window.criteo_q || [];
-		var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
-		window.criteo_q.push(
-			{event: "setAccount", account: 26073}, // 이 라인은 업데이트하면 안됩니다
-			{event: "setEmail", email: email}, // 유저가 로그인이 안되 있는 경우 빈 문자열을 전달
-			{event: "setSiteType", type: deviceType},
-			{event: "viewList", item: categoryGoodsList} // 가장 위에있는 3개의 상품 ID를 전달
-		);
-		// <!-- END 카테고리/리스팅 태그 -->
-		cnt++;
-	}
+	// if (cnt == 1) {
+	// 	// <!-- Criteo 카테고리/리스팅 태그 -->
+	// 	window.criteo_q = window.criteo_q || [];
+	// 	var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
+	// 	window.criteo_q.push(
+	// 		{event: "setAccount", account: 26073}, // 이 라인은 업데이트하면 안됩니다
+	// 		{event: "setEmail", email: email}, // 유저가 로그인이 안되 있는 경우 빈 문자열을 전달
+	// 		{event: "setSiteType", type: deviceType},
+	// 		{event: "viewList", item: categoryGoodsList} // 가장 위에있는 3개의 상품 ID를 전달
+	// 	);
+	// 	// <!-- END 카테고리/리스팅 태그 -->
+	// 	cnt++;
+	// }
 
 	return tag;
 }

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

@@ -32,6 +32,9 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 					tag += ' soldout';
 				}
 			}
+			if(item.adFlag == 'Y'){
+				tag += ' AD';
+			}
 			tag += '">';
 			tag += '		<button type="button" class="itemLike';
 			if(item.likeIt == 'likeit'){
@@ -104,10 +107,10 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 			tag += '			</div>';
 
 			tag += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
-			tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
 			if(item.goodsTnm != null){
 				tag += '			<div class="itemComment">'+item.goodsTnm+'</div>';
 			}
+			tag += '			<div class="itemName">'+item.goodsFullNm+'</div>';
 			if(appGb != 'Mob'){
 				tag += '			<p class="itemPrice">'+item.currPrice.addComma()
 				tag += '				<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';

BIN=BIN
src/main/webapp/images/mo/goApp.png


BIN=BIN
src/main/webapp/images/mo/ico_btn_expand.png


BIN=BIN
src/main/webapp/images/mo/logo_STYLE24_b.png


BIN=BIN
src/main/webapp/images/mo/mo_btn_back.png


BIN=BIN
src/main/webapp/images/mo/thumb/brand16.png


BIN=BIN
src/main/webapp/images/pc/br_logo_style24.png


BIN=BIN
src/main/webapp/images/pc/br_logo_style24_bk.png


BIN=BIN
src/main/webapp/images/pc/logo_STYLE24_footer.png


BIN=BIN
src/main/webapp/images/pc/logo_STYLE24_sub.png


BIN=BIN
src/main/webapp/images/pc/thumb/bg_item_none.png


BIN=BIN
src/main/webapp/images/pc/thumb/tmp_gift_empty.jpg


+ 15 - 2
src/main/webapp/ux/mo/css/common_m.css

@@ -931,7 +931,20 @@ section.main.scr, section.ev_list.scr, section.dp_exhibition.scr, section.dp_loo
 .fullBody .quick_cate_txt a:after {content:''; position: absolute; top: 0.2rem; right: -1.2rem; width: 0.1rem; height: 0.8rem; background: #ddd;}
 .fullBody .quick_cate_txt a:last-child:after {display: none;}
 
-
+/* Full메뉴_최근본상품 */
+#hstrFull{width: 100%;height: 0;z-index: 999;visibility: hidden;background: rgba(255, 255, 255, 1);transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);top: 100%;position: fixed;left: 0;}
+#hstrFull.on{ height: 100%; visibility: visible; top: 0;}
+.hstr_cls {position: absolute;top: 1.4rem;right: 2.0rem;display: block;width: 2.0rem;height: 2.0rem;text-indent: -999.9rem;background-size: contain;background-repeat: no-repeat;background-position: center center;z-index: 98;background-image: url(/images/mo/ico_pop_cls.png);}
+#hstrFull .fullHead h1 {display: inline-block;position: relative;max-width: calc(100% - 14.5rem);width: auto;height: 100%;line-height: 5.2rem;vertical-align: middle;padding: 0 1.5rem 0 0rem;margin: 0 0 0 2.0rem;font-size: 1.8rem;color: #222;}
+#hstrFull .fullBody {}
+#hstrFull .fullBody {}
+#hstrFull .fullBody .count_wrap {padding: 2rem 0;}
+#hstrFull .fullBody .count_wrap p{font-size: 1.2rem;color: #888;}
+#hstrFull .fullBody .count_wrap p span {color: #fd4802;font-weight: 600;}
+#hstrFull .fullBody .inner {padding: 0 2.0rem 1.3rem 2.0rem;position: relative;}
+#hstrFull .fullBody .itemsGrp .item_prod {width: 48.75%;float: left;margin-right: 2.5%;margin-bottom: 0rem;}
+#hstrFull .fullBody .itemsGrp .item_prod:nth-child(2n){margin-right: 0;}
+#hstrFull .fullBody .itemsGrp:after {display: block;content: '';clear: both;}
 
 /* footer */
 footer{background-color: #f1f1f1;}
@@ -1945,7 +1958,7 @@ 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: 8.8rem; 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: 8.8rem;}}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);}.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{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,.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex,.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;}
+@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: 8.8rem; 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: 8.8rem;}}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);}.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{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,.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex,.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 */

+ 17 - 10
src/main/webapp/ux/mo/css/layout_m.css

@@ -127,7 +127,7 @@
 .modal#thumb_pic .swiper-container.cs_pop .swiper-pagination-bullet.swiper-pagination-bullet-active{background-color:#ff4701;}
 
 /* cs_contactUs_my */
-.cs_contactUs_my {}
+.cs_contactUs_my {padding-bottom: 7rem;}
 .cs_contactUs_my .header { height: 2rem; padding: 0 2rem; display: flex; justify-content: space-between; align-items: center; font-size: 2rem; font-weight: 600; margin: 1.6rem 0;}
 .cs_contactUs_my .header .close{position: relative; height:5.2rem;}
 .cs_contactUs_my .header .close span{position:absolute; left:50%; margin-left:-0.05rem; display:inline-block; width:0.1rem; height:1.8rem; background-color:#000; transform:rotate(45deg);}
@@ -135,9 +135,8 @@
 .cs_contactUs_my .header .close a{position:absolute; top:50%; right:0; margin-top:-0.8rem; width:1.8rem; height:1.8rem; font-size:0; background-color:#fff;}
 .cs_contactUs_my .inner { padding-bottom: 0;}
 .cs_contactUs_my .select_dress span { width: 0.7rem; height: 0.7rem; background: url(/images/mo/ico_star02.png) no-repeat center; background-size: 0.7rem auto; display: inline-block; margin: 0 0 0 0.5rem; }
-.cs_contactUs_my input[type="text"] { width: 100%; height: 4.5rem; box-sizing: border-box; font-size: 1.4rem;}
-.cs_contactUs_my textarea { width: 100%; height: 15rem; box-sizing: border-box; padding: 1.5rem; font-size: 1.4rem;}
-.cs_contactUs_my textarea {height:20rem; padding:1.5rem;}
+.cs_contactUs_my input[type="text"] { width: 100%; height: 4.5rem; line-height: 4.5rem; box-sizing: border-box; font-size: 1.4rem;}
+.cs_contactUs_my textarea { width: 100%; box-sizing: border-box; padding: 1.5rem 0.5rem; font-size: 1.4rem; height:20rem;}
 .cs_contactUs_my textarea::placeholder {color:#888; font-weight:200;}
 .cs_contactUs_my .form_field { margin: 0 0 1.2rem; }
 .cs_contactUs_my .form_field {margin-top:1rem}
@@ -184,7 +183,6 @@
 .cs_contactUs_my .form_wrap .form_field:nth-of-type(3) .input_wrap textarea{border:0 none; outline:none;}
 .cs_contactUs_my .form_wrap .form_field:nth-of-type(3) .input_wrap .txt_cnt{bottom:0.1rem}
 .cs_contactUs_1 .ui_foot .btn{width:100%; height: 4rem;}
-.modal#myQuestion .modal-body {padding:0 2rem 5.7rem;}
 
 /* cs_product_1 */
 .cs .cs_product_1{background-color:#f5f5f5}
@@ -404,11 +402,11 @@
 .item_prod .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 2.0rem; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 12; z-index: 20; text-align: center;}
 .item_prod .item_state.AD .itemPic:before {content:'AD'; position: absolute; bottom: 0.666rem; right: 0.666rem; font-size: 1rem; font-weight: 300; letter-spacing: -0.025em; color:#888888; width: auto; height: auto; line-height: 1rem; z-index: 21; text-align: right;}
 
-.item_prod .itemLike {position: absolute;top:0rem;right:0rem;font-size: 0;z-index: 19;width: 2.0rem;height: 2.0rem; background: url('/images/mo/ico_like.png');background-size: 3.65rem;background-position:1.18rem 1rem;background-repeat: no-repeat;margin: 0;margin-right: 1rem;padding: 2rem 0.0rem 2rem 3rem;}
+.item_prod .itemLike {position: absolute;top:0rem;right:0rem;font-size: 0;z-index: 99;width: 2.0rem;height: 2.0rem; background: url('/images/mo/ico_like.png');background-size: 3.65rem;background-position:1.18rem 1rem;background-repeat: no-repeat;margin: 0;margin-right: 1rem;padding: 2rem 0.0rem 2rem 3rem;}
 .item_prod .itemLike::before, 
 .item_prod .itemLike::after {content: "";position: absolute;top: 0;right: 0;width: 100%;height: 100%; background-repeat: no-repeat;background-position: right top;background-size: contain;opacity: 0;transition: opacity 200ms ease 0s;}
 .item_prod .itemLike::before {background: url('/images/mo/ico_like.png');background-size: 3.82rem;background-position:-1.86rem 1rem;background-repeat: no-repeat;margin: 0rem -1rem 2rem 0rem;}
-.item_prod .itemLike::after {background: url('/imagnes/mo/ico_like.png');background-size: 3.82rem;background-position: -1.86rem 1rem;background-repeat: no-repeat;margin: 0rem -1rem 2rem 0rem;}
+.item_prod .itemLike::after {background: url('/images/mo/ico_like.png');background-size: 3.82rem;background-position: -1.86rem 1rem;background-repeat: no-repeat;margin: 0rem -1rem 2rem 0rem;}
 /* .item_prod .itemLike:hover::before,  */
 /* .item_prod .itemLike:active::before {opacity: 1;} */
 /* .item_prod .itemLike.active::before {opacity: 1;} */
@@ -1236,6 +1234,12 @@
 .modal.pd_pop.pd_review_pop .riview_box .area_slider{margin-bottom:0;}
 .modal.pd_pop.pd_review_pop .btn_group_flex > div > .btn{height:5.3rem;}
 .modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:10;}
+.modal.pd_pop.pd_review_pop .pd_review .area_rv_empty .btn_group_flex{
+  padding-bottom: env(safe-area-inset-bottom);
+  -webkit-backface-visibility:hidden;
+  -webkit-transform:translateZ(0); 
+  -webkit-transform:translate3d(0, 0, 0);
+}
 .pd_review{background:#f5f5f5;overflow-x: hidden;}
 .pd_review.best,
 .pd_review.photo{background:#fff; position:relative; bottom:0; z-index:999; max-height:35rem;}
@@ -1715,10 +1719,11 @@
 .dp .itemsGrp:after{display:block; content:''; clear:both;}
 
 /* 아울렛 서브메인 - dp_outlets */
+.dp .dp_outlets .outlets_visual a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .dp .dp_outlets .outlets_visual img {width: 100%;}
 .dp .dp_outlets .outlets_visual .swiper-pagination-fraction {bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
 .dp .dp_outlets .outlets_visual .swiper-pagination-current {font-weight: 600;}
-.dp .dp_outlets .outlets_visual .txtWrap {position: absolute; left: 2rem; right:2rem; bottom: 9rem; color: #222;}
+.dp .dp_outlets .outlets_visual .txtWrap {position: absolute; left: 2rem; right:2rem; bottom: 9rem; color: #222; z-index:1;}
 .dp .dp_outlets .outlets_visual .txtWrap.w {color: #fff;}
 .dp .dp_outlets .outlets_visual .txtWrap p {font-size: 3rem; font-weight: 500; line-height: 1.2; display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical; overflow:hidden;}
 .dp .dp_outlets .outlets_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300; -webkit-line-clamp: 1;}
@@ -2322,7 +2327,8 @@
 .br .br_main .submain_visual img {width: 100%;}
 .br .br_main .submain_visual .swiper-pagination-fraction {position:absolute; bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}.br .br_main .br_top_info > p:nth-of-type(1)
 .br .br_main .submain_visual .swiper-pagination-current {font-weight: 600;}
-.br .br_main .submain_visual .txtWrap {position: absolute; left: 2rem; right: 2rem; bottom: 9rem; color: #222;}
+.br .br_main .submain_visual a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
+.br .br_main .submain_visual .txtWrap {position: absolute; left: 2rem; right: 2rem; bottom: 9rem; color: #222; z-index:1;}
 .br .br_main .submain_visual .txtWrap.w {color: #fff;}
 .br .br_main .submain_visual .txtWrap p {font-size: 3rem; font-weight: 500; line-height: 1.2; display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical; overflow:hidden;}
 .br .br_main .submain_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300; -webkit-line-clamp: 1;}
@@ -2347,8 +2353,9 @@
 .br .br_main .special_shop .swiper-slide .sp_item{}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_img{position:relative; margin-bottom:1.9rem;}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_img a{display: block;}
+.br .br_main .special_shop .swiper-slide .sp_item .sp_img a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_img img{width:100%;}
-.br .br_main .special_shop .swiper-slide .sp_item .sp_img .s-text{position:absolute; bottom:4rem; padding:0 2rem; left:0; width:100%; box-sizing:border-box;}
+.br .br_main .special_shop .swiper-slide .sp_item .sp_img .s-text{position:absolute; bottom:4rem; padding:0 2rem; left:0; width:100%; box-sizing:border-box; z-index:1;}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_img .s-text p{font-size:2.3rem; font-weight:500;; color:#fff; font-weight:300;}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_img .s-text p:nth-of-type(2){font-size:1.2rem; font-weight:100; margin-top:0.8rem}
 .br .br_main .special_shop .swiper-slide .sp_item .sp_item .itemsGrp.rowtype .item_prod {margin-right:0; width:100%;}

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

@@ -399,8 +399,9 @@
 .main_pick .inner_head .pick-head ul > li.on a::after{content: ''; display: block; width: 100%; height: 0.3rem; background-color: #fd4802; color: #fd4802; position: absolute; bottom: 1.5rem; left: 50%; right: 50%; transform: translate(-50%);}
 
 .main_pick .inner_body {padding: 0;position: relative;}
+.main_pick .inner_body .pick-cont .swiper-container a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .main_pick .inner_body .pick-cont a {position: relative;display: block;}
-.main_pick .inner_body .pick-cont a .txtWrap{position: absolute;bottom: 4rem;margin-left: 1.9rem;}
+.main_pick .inner_body .pick-cont a .txtWrap{position: absolute;bottom: 4rem;margin-left: 1.9rem; z-index: 1;}
 .main_pick .inner_body .pick-cont a .txtWrap p{font-size: 2.3rem;font-weight: 500;color: #fff;font-weight: 300;}
 .main_pick .inner_body .pick-cont a .txtWrap span{font-size: 1.2rem;font-weight: 100;color: #fff;margin-top: 0.5rem;display: block;}
 .main_pick .inner_body .pick-cont a img{width: 100%;height: auto;}
@@ -650,9 +651,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .survey_wrap .survey_con .survey_row.q3 .answer {position: relative;}
 .ev .survey_wrap .survey_con .survey_row.q3 .answer .txt_cnt {position: absolute; right: 1.6rem; bottom: 1.6rem; margin-top: 0; color: #888;}
 
-.ev .survey_wrap .survey_con .survey_row.q4 {padding-bottom: 0;}
 .ev .survey_wrap .survey_con .survey_row.q4 .q4_ans {width: 100%; height: 4.5rem; padding: 1rem; font-size: 1.3rem; line-height: 1.6; color: #222; font-weight: 300; resize:none;}
-.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff; margin-top: -2rem;}
+.ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff; margin-top: -4rem;}
 .ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto; } 
 
 /* ev_comment_1 */
@@ -1706,10 +1706,11 @@ main.my .my_wishlist .inner:last-child {padding-bottom: 0;}
 
 /* dp_submain */
 main.dp .inner:last-child {padding-bottom: 0;}
+.dp .submain_visual a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
 .dp .submain_visual img {width: 100%;}
 .dp .submain_visual .swiper-pagination-fraction {bottom: 4rem ; width:auto; left: 2rem; background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
 .dp .submain_visual .swiper-pagination-current {font-weight: 600;}
-.dp .submain_visual .txtWrap {position: absolute; left: 2rem; right:2rem; bottom: 9rem; color: #fff;}
+.dp .submain_visual .txtWrap {position: absolute; left: 2rem; right:2rem; bottom: 9rem; color: #fff; z-index: 1;}
 .dp .submain_visual .txtWrap p {color: #fff; font-size: 3rem; font-weight: 500; line-height: 1.2; display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical; overflow:hidden;}
 .dp .submain_visual .txtWrap p.txt_xs {font-size: 1.4rem; margin-top: 1.6rem; font-weight: 300; -webkit-line-clamp: 1;}
 .dp .sub_category {padding:2.4rem 0; position: relative;}

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

@@ -3237,6 +3237,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.pd_pop.info_size_pop .tbl.scroll_tbl{position: relative;}
 	.modal.pd_pop.info_size_pop .tbl.scroll_tbl .head_t{float: left;width: 25% !important;display: block; color:#222}
 	.modal.pd_pop.info_size_pop .tbl.scroll_tbl .body_t{float: left;width: 75% !important;display: block;white-space: nowrap;overflow-x: auto;padding-bottom: 4px;}
+	.modal.pd_pop.info_size_pop .tbl.scroll_tbl .body_t::after {content: '';width: 100%;height: auto; display: block; background: #333;}
 	.pd_pop.info_size_pop .pop_cont {max-height:none;}
 	.pd_pop.info_size_pop .size_head {text-align:center; margin-bottom:20px}
 	.pd_pop.info_size_pop .size_head .tit_sub {display:block; margin-bottom:20px; font-size:14px; font-weight:200;}
@@ -3899,7 +3900,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.br_lookbook_view.cont_visual .swiper-slide img {width: auto; height:100%;} /* .0506.높이기준으로 변경 */
 	/* 05.07 다양한 이미지를 리사이징하기 위해 가로 기준이 생성됨 */
 	.br_lookbook_view.cont_visual .bt_lb_item {overflow: hidden;width: 100%;height: 660px;}
-	.br_lookbook_view.cont_visual .swiper-slide img {max-width: 990px;height: auto;display: block;}
+	.br_lookbook_view.cont_visual .swiper-slide img {max-width: 990px;height: 100%;display: block;}
 	.br_lookbook_view.cont_visual .swiper-slide .item_picker {display: none;}
 	.br_lookbook_view.cont_visual .swiper-slide-active .item_picker {display: block;}
 	.br_lookbook_view.cont_visual .swiper-slide-prev img,
@@ -4926,7 +4927,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.lookbook_item_pop .itemsGrp .item_prod .item_state {display: table; padding-left: 310px; padding-right: 55px; padding-bottom: 0; width: 100%; min-height:390px;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemLink {display: table-cell; position: static; vertical-align: middle;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f9f9f9;}
-	.modal.lookbook_item_pop .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
+	.modal.lookbook_item_pop .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; text-align: center;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemBrand {margin:0px 0px 15px; font-size: 14px; font-weight: 300;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemName {margin:0px 0px 25px; font-size: 18px; font-weight: 300; line-height: 28px; height:56px;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPrice {font-size: 26px; line-height: 1; font-weight: 500; margin:0;}

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

@@ -438,7 +438,8 @@
 .main_pick .post-pick-for .pick_look {float:left; width:38.2022%; background:#888888;}
 .main_pick .post-pick-for .pick_look .swiper-slide{position:relative; width:100%}
 .main_pick .post-pick-for .pick_look .swiper-slide a{display: inline-block; width: 100%; height: 100%;}
-.main_pick .post-pick-for .pick_look .swiper-slide .text_box {position:absolute; left:0; right:0; bottom:130px; color:#fff; text-align:center;}
+.main_pick .post-pick-for .pick_look .swiper-slide a:after {content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 60%; background: linear-gradient(0deg, rgba(0,0,0,0.5) 0%, transparent 100%);}
+.main_pick .post-pick-for .pick_look .swiper-slide .text_box {position:absolute; left:0; right:0; bottom:130px; color:#fff; text-align:center; z-index: 1;}
 .main_pick .post-pick-for .pick_look .swiper-slide .text_box .title {position:relative; display:block; display:-webkit-box; width:100%; max-height:112px; overflow:hidden; white-space:normal; overflow-wrap:break-word; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; font-size:46px; font-weight:500; line-height:56px;}
 .main_pick .post-pick-for .pick_look .swiper-slide .text_box .sub_text {margin-top:25px; font-size:18px; font-weight:300; line-height:1.2;max-width: 600px;margin: 25px auto;text-align: center;overflow: hidden;white-space: normal;overflow-wrap: break-word;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 1;-webkit-box-orient: vertical;}
 .main_pick .post-pick-for .pick_look .swiper-controls {position:absolute; left:0; right:0; width:100%; bottom:40px;}

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

@@ -709,23 +709,6 @@ $(document).ready( function() {
 		}
 	});
 
-	// 상품상세 > 사이즈 테이블 - 드래그스크롤 제어
-	var scrTbl,scrTblLeft,scrTblDown;
-	$(".tbl.scroll_tbl .body_t").mousedown(function(e){
-	  e.preventDefault();
-	  scrTblDown = true;
-	  scrTbl = e.pageX;
-	  scrTblLeft = $(this).scrollLeft();
-	});	
-	$("body").mousemove(function(e){
-	  if(scrTblDown){
-		var newX = e.pageX;
-		$(".tbl.scroll_tbl .body_t").scrollLeft(scrTblLeft - newX + scrTbl);
-	  }
-	});	
-	$("body").mouseup(function(e){scrTblDown = false;});
-
-
 });
 
 ///////////////////////////////////////////////////////