فهرست منبع

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

gagamel 5 سال پیش
والد
کامیت
7b27613630
61فایلهای تغییر یافته به همراه1798 افزوده شده و 807 حذف شده
  1. 79 8
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  2. 1 0
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  3. 5 0
      src/main/java/com/style24/front/biz/web/TsfGoodsController.java
  4. 17 1
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  5. 120 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  6. 722 469
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  7. 3 5
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  8. 2 2
      src/main/resources/config/application-locd.yml
  9. 2 2
      src/main/resources/config/application-style.yml
  10. 2 2
      src/main/resources/config/application-tsit.yml
  11. 4 2
      src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html
  12. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/NoticeFormMob.html
  13. 1 1
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html
  14. 5 1
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaRegisterFormMob.html
  15. 18 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  16. 17 7
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  17. 1 0
      src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html
  18. 5 7
      src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html
  19. 14 0
      src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html
  20. 15 0
      src/main/webapp/WEB-INF/views/mob/customer/PasswordChangeFormMob.html
  21. 41 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  22. 2 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealFormMob.html
  23. 15 2
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  24. 20 1
      src/main/webapp/WEB-INF/views/mob/goods/GoodsIncludeFormMob.html
  25. 4 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsQnaDetailFormMob.html
  26. 1 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustDeliveryAddrFormMob.html
  27. 24 20
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html
  28. 15 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html
  29. 6 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html
  30. 10 4
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html
  31. 15 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSnsJoinInitPwdFormMob.html
  32. 10 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  33. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  34. 14 6
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  35. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  36. 16 0
      src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html
  37. 23 21
      src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html
  38. 2 7
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  39. 12 32
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html
  40. 1 1
      src/main/webapp/WEB-INF/views/web/callcenter/NoticeFormWeb.html
  41. 2 2
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  42. 5 2
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaRegisterFormWeb.html
  43. 16 0
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  44. 12 0
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  45. 3 2
      src/main/webapp/WEB-INF/views/web/common/fragments/HeadWeb.html
  46. 4 1
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  47. 18 1
      src/main/webapp/WEB-INF/views/web/display/SearchGoodsListFormWeb.html
  48. 94 77
      src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html
  49. 95 80
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html
  50. 1 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsDetailQnaFormWeb.html
  51. 20 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsIncludeFormWeb.html
  52. 5 1
      src/main/webapp/WEB-INF/views/web/goods/GoodsQnaDetailFormWeb.html
  53. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html
  54. 16 4
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html
  55. 2 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  56. 13 3
      src/main/webapp/biz/goods.js
  57. 184 0
      src/main/webapp/biz/search.js
  58. 6 2
      src/main/webapp/ux/mo/css/layout_m.css
  59. 25 12
      src/main/webapp/ux/mo/css/style24_m.css
  60. 3 0
      src/main/webapp/ux/mo/js/common_m.js
  61. 6 1
      src/main/webapp/ux/pc/css/layout.css

+ 79 - 8
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -35,6 +35,8 @@ import com.style24.persistence.domain.searchengine.SearchEngine;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
+
 /**
  * 상품 Service
  *
@@ -425,13 +427,13 @@ public class TsfGoodsService {
 	public int getGoodsStockQty(GoodsStock goodsStock) {
 		int result = 0;
 		// 예약상품 여부 확인
-//		int goodsResSellCount = goodsDao.getGoodsResSellCount(goodsStock.getGoodsCd());
+		int goodsResSellCount = goodsDao.getGoodsResSellCount(goodsStock.getGoodsCd());
 
-//		if ("N".equals(goodsStock.getSelfGoodsYn()) || goodsResSellCount > 0) {
-		result = goodsDao.getGoodsStockQty(goodsStock);
-//		} else {
-//			result = goodsDao.getGoodsStoreStockQty(goodsStock);
-//		}
+		if ("N".equals(goodsStock.getSelfGoodsYn()) || goodsResSellCount > 0) {
+			result = goodsDao.getGoodsStockQty(goodsStock);
+		} else {
+			result = goodsDao.getGoodsStoreStockQty(goodsStock);
+		}
 
 		return result;
 	}
@@ -445,6 +447,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;
@@ -454,6 +464,9 @@ public class TsfGoodsService {
 
 		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}]
 
@@ -465,7 +478,14 @@ public class TsfGoodsService {
 				tmpStock.setGoodsCd(goodsSizeInfo[0]);
 				tmpStock.setOptCd(goodsSizeInfo[1]);
 				int qty = Integer.parseInt(goodsSizeInfo[2]);	// 한번에 주문해야하는 상품수량
-				int stockByGoodsSize = goodsDao.getGoodsStockQty(tmpStock);
+//				int stockByGoodsSize = goodsDao.getGoodsStockQty(tmpStock);
+				int stockByGoodsSize = 0;
+				if ("N".equals(goodsStock.getSelfGoodsYn()) || goodsResSellCount > 0) {
+					stockByGoodsSize = goodsDao.getGoodsStockQty(tmpStock);
+				} else {
+					stockByGoodsSize = goodsDao.getGoodsStoreStockQty(tmpStock);
+				}
+				
 				log.info("[getGoodsSetStockQty] stockByGoodsSize = {}", stockByGoodsSize);
 				if (stockByGoodsSize <= 0) {
 					returnFlag = true;
@@ -635,7 +655,58 @@ public class TsfGoodsService {
 	 * @date 2021. 3. 10
 	 */
 	public Collection<Measurement> getMeasurementList(Goods goods) {
-		return goodsDao.getMeasurementList(goods);
+		
+		 return goodsDao.getMeasurementList(goods);
+	}
+	
+	/**
+	 * 실측사이즈 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 3. 10
+	 */
+	public GagaMap getMeasurementListNew(Goods goods) {
+		GagaMap result = new GagaMap();
+		// 행, 열 변환
+		Collection<Measurement> getMeasurementList = goodsDao.getMeasurementList(goods);
+		
+		if (getMeasurementList == null || getMeasurementList.size() <=0) {
+			result.set("flag", "NOT");
+			return result;
+		}
+		
+		int colSize = getMeasurementList.size(); 	// 열 column
+		int rowSize = 5; // 상의하위포함 최대사이즈
+
+		
+		String[][] arrMeasurementList = new String[rowSize + 1][colSize + 1];
+
+		// 사이즈 설정
+		int yIndex = 0;
+		for (Measurement measurement : getMeasurementList) {
+			arrMeasurementList[0][0] = measurement.getTypecd();
+			yIndex++;
+			arrMeasurementList[0][yIndex] = measurement.getOptCd2();
+			
+			// 부위명 설정
+			arrMeasurementList[1][0] = measurement.getTypecd();
+			arrMeasurementList[2][0] = measurement.getTypecd();
+			arrMeasurementList[3][0] = measurement.getTypecd();
+			arrMeasurementList[4][0] = measurement.getTypecd();
+			arrMeasurementList[5][0] = measurement.getTypecd();
+			arrMeasurementList[1][yIndex] = String.valueOf(measurement.getValue1());
+			arrMeasurementList[2][yIndex] = String.valueOf(measurement.getValue2());
+			arrMeasurementList[3][yIndex] = String.valueOf(measurement.getValue3());
+			arrMeasurementList[4][yIndex] = String.valueOf(measurement.getValue4());
+			arrMeasurementList[5][yIndex] = String.valueOf(measurement.getValue5());
+		}
+		log.info("arrMeasurementList = {}", arrMeasurementList);
+		
+		result.set("flag", "OK");
+		result.set("dataList", arrMeasurementList);
+		return result;
 	}
 
 	/**

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

@@ -84,6 +84,7 @@ public class TsfCartController extends TsfBaseController {
 	@GetMapping("/list/form")
 	public ModelAndView cartListForm() {
 		ModelAndView mav = new ModelAndView();
+		mav.addObject("loginCustNo", TsfSession.getInfo().getCustNo());
 		mav.setViewName(super.getDeviceViewName("cart/CartListForm"));
 		return mav;
 	}

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

@@ -667,7 +667,12 @@ public class TsfGoodsController extends TsfBaseController {
 		Collection<Measurement> measurementList = new ArrayList<Measurement>();
 		if ("Y".equals(goods.getSelfGoodsYn())) {
 			paramsGoods.setOptCd1(colorCd);
+			
 			measurementList = goodsService.getMeasurementList(paramsGoods);
+
+			// 개발중 eskim
+			//GagaMap result = goodsService.getMeasurementList(paramsGoods);
+			
 			if (measurementList != null && !measurementList.isEmpty()) {
 				typeCd = measurementList.iterator().next().getTypecd();
 				if ("하의".equals(typeCd)) {

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

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.ModelAndView;
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscFreegiftService;
 import com.style24.core.biz.service.TscKakaoPayService;
+import com.style24.core.biz.service.TscKakaotalkService;
 import com.style24.core.biz.service.TscNaverPayService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
@@ -73,6 +74,9 @@ public class TsfOrderController extends TsfBaseController {
 	@Autowired
 	private TscNaverPayService coreNaverPayService;
 	
+	@Autowired
+	private TscKakaotalkService kakaotalkService;
+	
 	/**
 	 * 회원, 비회원 주문페이지
 	 *
@@ -1030,7 +1034,19 @@ public class TsfOrderController extends TsfBaseController {
 			return mav;
 		}
 		
-		// TODO 주문정보 알림톡전송
+		// TODO 2021.05.31 알림톡전송 주문완료정보
+		/*
+		if (StringUtils.isNotBlank(orderInfo.getCellPhnno())) {
+			Integer userNo = orderInfo.getCustNo();
+			try {
+				orderInfo.setGoodsNm((String) resultMap.get("goodsNm"));
+				kakaotalkService.sendOrderComplete(orderInfo, userNo);
+			} catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		*/
 		
 		// 2021.04.27 마일리지, 제휴할인정보
 		Order payOrder = orderService.getPaymentInfoForMypage(order);

+ 120 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -366,6 +366,36 @@
 		               AND    STOCK_QTY > 0 /*품절상품전시여부가 N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
+		<if test="keyword != null and keyword != ''"> <!-- 상품검색키워드 -->
+		AND    CATE2_NO IN (SELECT DISTINCT C4.CATE2_NO
+		                      FROM   TB_CATE_4SRCH C4
+		                           , TB_CATE_GOODS CG
+		                           , TB_GOODS G
+		                           , TB_GOODS_STOCK S
+		                           , TB_BRAND B
+		                      WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                      AND    CG.GOODS_CD = G.GOODS_CD
+		                      AND    CG.GOODS_CD = S.GOODS_CD
+		                      AND    G.BRAND_CD = B.BRAND_CD
+		                      AND    C4.SITE_CD = #{siteCd}
+		                      AND    C4.CATE_GB = #{cateGb}
+		                      AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                      AND    (
+		                              G.GOODS_NUM LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              G.GOODS_CD LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(B.BRAND_ENM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(B.BRAND_KNM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             )
+		                      AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                      AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		                      AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
+		                     )
+		</if>
 		ORDER  BY DISP_ORD
 	</select>
 	
@@ -401,6 +431,36 @@
 		               AND    STOCK_QTY > 0 /*품절상품전시여부가 N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
+		<if test="keyword != null and keyword != ''"> <!-- 상품검색키워드 -->
+		AND    CATE3_NO IN (SELECT DISTINCT C4.CATE3_NO
+		                      FROM   TB_CATE_4SRCH C4
+		                           , TB_CATE_GOODS CG
+		                           , TB_GOODS G
+		                           , TB_GOODS_STOCK S
+		                           , TB_BRAND B
+		                     WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                     AND    CG.GOODS_CD = G.GOODS_CD
+		                     AND    CG.GOODS_CD = S.GOODS_CD
+		                     AND    G.BRAND_CD = B.BRAND_CD
+		                     AND    C4.SITE_CD = #{siteCd}
+		                     AND    C4.CATE_GB = #{cateGb}
+		                     AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                     AND    (
+		                              G.GOODS_NUM LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              G.GOODS_CD LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(B.BRAND_ENM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                              OR
+		                              UPPER(B.BRAND_KNM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                            )
+		                     AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                     AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		                     AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
+		                    )
+		</if>
 		ORDER  BY DISP_ORD
 	</select>
 	
@@ -438,6 +498,36 @@
 		               AND    STOCK_QTY > 0 /*품절상품전시여부가 N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
+		<if test="keyword != null and keyword != ''"> <!-- 상품검색키워드 -->
+		AND    CATE4_NO IN (SELECT DISTINCT C4.CATE4_NO
+		                    FROM   TB_CATE_4SRCH C4
+		                         , TB_CATE_GOODS CG
+		                         , TB_GOODS G
+		                         , TB_GOODS_STOCK S
+		                         , TB_BRAND B
+		                    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                    AND    CG.GOODS_CD = G.GOODS_CD
+		                    AND    CG.GOODS_CD = S.GOODS_CD
+		                    AND    G.BRAND_CD = B.BRAND_CD
+		                    AND    C4.SITE_CD = #{siteCd}
+		                    AND    C4.CATE_GB = #{cateGb}
+		                    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                    AND    (
+		                             G.GOODS_NUM LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             G.GOODS_CD LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(B.BRAND_ENM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(B.BRAND_KNM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                            )
+		                    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                    AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		                    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
+		                  )
+		</if>
 		ORDER  BY DISP_ORD
 	</select>
 	
@@ -477,6 +567,36 @@
 		               AND    STOCK_QTY > 0 /*품절상품전시여부가 N일 때 재고가 있는 카테고리만*/
 		               </if>
 		              )
+		<if test="keyword != null and keyword != ''"> <!-- 상품검색키워드 -->
+		AND    CATE5_NO IN (SELECT DISTINCT C4.CATE5_NO
+		                    FROM   TB_CATE_4SRCH C4
+		                         , TB_CATE_GOODS CG
+		                         , TB_GOODS G
+		                         , TB_GOODS_STOCK S
+		                         , TB_BRAND B
+		                    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+		                    AND    CG.GOODS_CD = G.GOODS_CD
+		                    AND    CG.GOODS_CD = S.GOODS_CD
+		                    AND    G.BRAND_CD = B.BRAND_CD
+		                    AND    C4.SITE_CD = #{siteCd}
+		                    AND    C4.CATE_GB = #{cateGb}
+		                    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+		                    AND    (
+		                             G.GOODS_NUM LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             G.GOODS_CD LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(B.BRAND_ENM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                             OR
+		                             UPPER(B.BRAND_KNM) LIKE CONCAT('%',UPPER(#{keyword}),'%')
+		                           )
+		                    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+		                    AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+		                    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한 판매기간*/
+		                  )
+		</if>
 		ORDER  BY DISP_ORD
 	</select>
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 722 - 469
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml


+ 3 - 5
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -368,7 +368,7 @@
 		<include refid="selectForPagingHeader"/>
 		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		     -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
-		     , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,'/', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		     , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,' / ', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		     , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM
@@ -570,7 +570,6 @@
 			 , Z.CONFIRM_UNO      
 			 , Z.CONFIRM_DT       
 			 , Z.REG_NO           
-			 , Z.REG_DT           
 			 , Z.UPD_NO           
 			 , Z.UPD_DT           
 			 , Z.ADM_RPL          
@@ -647,7 +646,6 @@
 				     , R.CONFIRM_UNO      
 				     , R.CONFIRM_DT       
 				     , R.REG_NO           
-				     , R.REG_DT           
 				     , R.UPD_NO           
 				     , R.UPD_DT           
 				     , R.ADM_RPL          
@@ -715,7 +713,7 @@
 				 <if test="reviewStat == 'u'.toString()">
 				, Z.REVIEW_SQ , Z.REVIEW_SQ , Z.REVIEW_GB , Z.REVIEW_TITLE , Z.REVIEW_CONTENT , Z.SCORE , Z.HEIGHT           
 				, Z.WEIGHT  , Z.SCORE_SIZE , Z.SCORE_COLOR , Z.SCORE_FIT , Z.SCORE_THICK , Z.SCORE_WEIGHT , Z.SCORE_BALL , Z.GIVE_DUE_PNT , Z.PNT_GIVE_STAT    
-			    , Z.BEST_YN, Z.GIVE_DUE_BPNT , Z.BPNT_GIVE_YN , Z.DISP_YN , Z.DEL_YN, Z.CONFIRM_YN, Z.CONFIRM_UNO, Z.CONFIRM_DT, Z.REG_NO, Z.REG_DT      
+			    , Z.BEST_YN, Z.GIVE_DUE_BPNT , Z.BPNT_GIVE_YN , Z.DISP_YN , Z.DEL_YN, Z.CONFIRM_YN, Z.CONFIRM_UNO, Z.CONFIRM_DT, Z.REG_NO
 			    , Z.UPD_NO, Z.UPD_DT, Z.ADM_RPL, Z.ADM_RPL_REG_NO, Z.ADM_RPL_DT  
 			    </if>          
 		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
@@ -950,7 +948,7 @@
 		<include refid="selectForPagingHeader"/>
 		        SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
 		          -- , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
-		             , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,'/', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		             , GROUP_CONCAT(' ',CONCAT(OPT_CD1_NM,' / ', OPT_CD2) ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
 		             , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
 		             , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
 		             , GROUP_CONCAT(Z.OPT_CD1_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1_NM

+ 2 - 2
src/main/resources/config/application-locd.yml

@@ -89,8 +89,8 @@ naverPay:
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
     button.pc.js.url : https://test-pay.naver.com/customer/js/naverPayButton.js
     button.mobile.js.url : https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
-    common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
-    certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
+    common.certification.key : s_3799db3bf4af-
+    certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 2 - 2
src/main/resources/config/application-style.yml

@@ -101,8 +101,8 @@ naverPay:
     button.key: 3A1578F9-6824-4FCF-AC8D-262318C63227
     button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
     button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
-    common.certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
-    certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
+    common.certification.key: s_3799db3bf4af-
+    certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 2 - 2
src/main/resources/config/application-tsit.yml

@@ -94,8 +94,8 @@ naverPay:
     button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
     button.pc.js.url: https://test-pay.naver.com/customer/js/naverPayButton.js
     button.mobile.js.url: https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
-    common.certification.key : E3122594-C690-4542-B3A0-E74ABD4E8222
-    certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
+    common.certification.key : s_3799db3bf4af-
+    certification.key: 2BC5E173-2840-4B48-BC7D-FF770005DD76
     order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://test-order.pay.naver.com/customer/buy/
     order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 4 - 2
src/main/webapp/WEB-INF/views/mob/app/NoticeFormMob.html

@@ -20,7 +20,7 @@
 <th:block layout:fragment="content">
 <main class="container app-only">
 	<!-- ★ 컨텐츠 시작 -->
-	<section id="notice" class="notice">
+	<section id="notice" class="notice nodata">
 	</section>
 	<!-- ★ 컨텐츠 종료 -->
 </main>
@@ -35,13 +35,14 @@
 				} else if (_osType === 'I') {
 
 				}
+			} else {
+				$('#notice').addClass('nodata');
 			}
 	});
 
 	var pushListInfo = function (pushList) {
 		if (!gagajf.isNull(pushList)) {
 			let pushListJosn = JSON.parse(pushList);
-
 			let html = '';
 			$.each(pushListJosn.pushList, function(idx, item) {
 				html += '<div class="inner">\n';
@@ -67,6 +68,7 @@
 				html += '    </a>';
 				html += '</div>\n'
 			});
+			$('#notice').removeClass('nodata');
 			$('#notice').html(html);
 		} else {
 			$('#notice').addClass('nodata');

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

@@ -87,7 +87,7 @@
 				
 // 				tag += '						<span class="prod">공지</span>\n';
 				tag += '					</div>\n';
-				tag += '					<div class="lap2"><span>' + item.noticeTitle + '</span></div>\n';
+				tag += '					<div class="lap2"><span>' + item.noticeTitle.escapeHtml() + '</span></div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '			</div>\n';

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

@@ -348,7 +348,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '	<div class="fold_answer">\n';
 					tag += '		<div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
 					tag += '			<div class="answer_foot">\n';
 					tag += '				<span class="data">' + item.ansDt + '</span>\n';
 					

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

@@ -61,7 +61,7 @@
 									<div class="form_field">
 										<div class="ui_col_12 form_full">
 											<div class="input_wrap">
-												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (500자 이내)" required="required" data-valid-name="내용"></textarea>
+												<textarea class="doc_contactus" id="questContent" name="questContent" cols="30" rows="10" style="resize: none;" placeholder="내용을 입력해 주세요. (500자 이내)" required="required" data-valid-name="내용"></textarea>
 												<p class="txt_cnt">
 													<span id="contactus_cnt" class="contactus_cnt"><em class="c_primary">0</em>/500</span>
 												</p>
@@ -196,6 +196,10 @@
 		// 입력 값 체크
 		if (!gagajf.validation('#qnaForm'))
 			return false;
+		if($('#questContent').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 
 		mcxDialog.confirm("저장하시겠습니까?", {
 			cancelBtnText: "취소",

+ 18 - 1
src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html

@@ -18,6 +18,9 @@
  -->
 <body>
 <th:block layout:fragment="content">
+
+	<script type="text/javascript" src="//wcs.naver.net/wcslog.js"></script>
+
 	<main role="" id="" class="container od">
 		<section class="content shopping_bag" id="cartAjaxList">
 			<!-- 장바구니 내용 -->
@@ -288,7 +291,21 @@
 		});
 	}
 </script>
-
+<!--네이버페이 전환스크립트를 이용하여 전환값 설정-->
+<script th:inline="javascript">
+	var _nasa={};
+	if (window.wcs) _nasa["cnv"] = wcs.cnv("3","[[${loginCustNo}]]");
+</script>
+<!--위 스크립트를 통해 설정된 전환값과 본 페이지의 로그를 서버에 전송-->
+<script th:inline="javascript">
+	if (!wcs_add) var wcs_add = {};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa = {};
+	if (window.wcs) {
+		wcs.inflow("style24.com");
+		wcs_do(_nasa); //서버로 로그 전송
+	}
+</script>
 </th:block>
 
 </body>

+ 17 - 7
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -37,7 +37,7 @@
 						<li class="fn">대표이사 : 윤종선</li>
 						<li class="fn">주소 : 서울시 영등포구 은행로 11, 8층(여의도동, 일신빌딩)</li>
 						<li class="fn">사업자등록번호 : 116-81-32499 </li>
-						<li class="fn">개인정보관리책임자 : 이정득 </li>
+<!--						<li class="fn">개인정보관리책임자 : 이정득 </li>-->
 						<li class="fn">통신판매업신고번호 : 제 2020-서울영등포1432</li>
 						<li class="fn">개인정보보호책임자 : 김명인</li>
 						<li class="fn">호스팅 서비스 : 아이스타일이십사㈜</li>
@@ -45,17 +45,17 @@
 				</div>
 				
 				<ul class="link">
-					<li><a href="http://www.ftc.go.kr/bizCommPop.do?wrkr_no=2298137000">사업자정보확인</a></li>
+					<li><a href="http://www.ftc.go.kr/bizCommPop.do?wrkr_no=2298137000" target="_blank" title="새창 열림">사업자정보확인</a></li>
 					<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_VIEW_NORMAL);">PC버전</a></li>
 					<li><a href="#none">APP 다운로드</a></li>
-					<li><a href="http://zine.istyle24.com">SN&#64;PP</a></li>
+					<li><a href="http://zine.istyle24.com" target="_blank" title="새창 열림" class="t_req">SN&#64;PP</a></li>
 				</ul>
 				<ul class="copy">
-					<li>COPYRIGHTⓒ2020 STYLE24 ALL RIGHTS RESERVED.</li>
+					<li>COPYRIGHTⓒ2021 STYLE24 ALL RIGHTS RESERVED.</li>
 				</ul>
 				<ul class="sns">
-					<li><a href="https://instagram.com/istyle24.official?igshid=o3nzm9tydg9n" class="insta">Instagram</a></li>
-					<li><a href="https://www.facebook.com/istyle24" class="facebook">facebook</a></li>
+					<li><a href="https://instagram.com/istyle24.official?igshid=o3nzm9tydg9n" target="_blank" title="새창 열림" class="insta">Instagram</a></li>
+					<li><a href="https://www.facebook.com/istyle24" target="_blank" title="새창 열림" class="facebook">facebook</a></li>
 				</ul>
 			</div>
 		</section>
@@ -459,7 +459,17 @@ function noneImg(noneSrc){
 }
 /*]]>*/
 </script>
-
+<!-- 네이버페이 유입 공통 적용 스크립트 , 모든 페이지에 노출되도록 설치. 단 전환페이지 설정값보다 항상 하단에 위치해야함 -->
+<script type="text/javascript" src="//wcs.naver.net/wcslog.js"> </script>
+<script type="text/javascript">
+	if (!wcs_add) var wcs_add={};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa={};
+	if(window.wcs){
+		wcs.inflow("style24.com");
+		wcs_do(_nasa);
+	}
+</script>
 </th:block>
 
 </html>

+ 1 - 0
src/main/webapp/WEB-INF/views/mob/common/fragments/HeadMob.html

@@ -21,6 +21,7 @@
 	<meta property="og:site_name" th:content="${metaInfo.browserTitle}" content="한세공식몰 스타일24"/>
 	
 	<!-- 추천솔루션 meta -->
+	<meta property="eg:type" content="product" />
 	<meta property="eg:cuid" content="" />
 	<meta property="eg:itemId" content="" />
 	<meta property="eg:itemName" content="" />

+ 5 - 7
src/main/webapp/WEB-INF/views/mob/customer/JoinCompleteFormMob.html

@@ -96,13 +96,11 @@
 	$(document).ready(function(){
 		if (_isApp === 'true') {
 			if (gagajf.isNull(maskingCustId)) {
-				$.get("idsend://?id=" + [[${custNo}]] + "^link=", function () {
-					if (_osType === 'A') {
-						window.style24.pushEnable('ON');
-					} else if (_osType === 'I') {
-						window.webkit.messageHandlers.pushEnable.postMessage({"status":"ON"});
-					}
-				});
+				if (_osType === 'A') {
+					window.style24.setCustNo([[${custNo}]]);
+				} else if (_osType === 'I') {
+
+				}
 			}
 		}
 	});

+ 14 - 0
src/main/webapp/WEB-INF/views/mob/customer/JoinFormMob.html

@@ -244,6 +244,8 @@
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
 
 		let custId = $('#joinForm input[name=custId]').val();
 		let password = $('#joinForm input[name=passwd]').val();
@@ -255,20 +257,28 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 아이디 포함
@@ -276,10 +286,14 @@
 			if (fnValidationPwdSameId(password, custId)) {
 				pwdCheck = false;
 				$thirdFailed.removeClass(gray);
+				$thirdFailed.find('.ico').removeClass(icoGray);
 				$thirdFailed.addClass(red);
+				$thirdFailed.find('.ico').addClass(icoRed);
 			} else {
 				$thirdFailed.removeClass(red);
+				$thirdFailed.find('.ico').removeClass(icoRed);
 				$thirdFailed.addClass(gray);
+				$thirdFailed.find('.ico').addClass(icoGray);
 			}
 		}
 

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/customer/PasswordChangeFormMob.html

@@ -132,6 +132,9 @@
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
@@ -141,30 +144,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 
 		if (pwdCheck) {

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

@@ -19,6 +19,7 @@
 <body>
 <th:block layout:fragment="content">
 <script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+<script type="text/javascript" src="https://wcs.naver.net/wcslog.js"></script>
 <form id="nPayForm" name="nPayForm"></form>
 <form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
@@ -181,6 +182,14 @@
 						<div style="margin-top:10px;">
 							<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
 								<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+
+								<script th:inline="javascript">
+									if(!wcs_add) var wcs_add = {};
+									wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+									wcs.inflow("style24.com");
+									wcs_do();
+								</script>
+
 								<script type="text/javascript" >
 									/*버튼설정*/
 									naver.NaverPayButton.apply({
@@ -427,7 +436,25 @@
 	
 	// 함께본 상품
 	var fnGoodsTogetherSearch = function(params) {
-		gagajf.ajaxSubmit("/goods/detail/together/frame", "html", "goodsTogetherbArea", params);
+		//gagajf.ajaxSubmit("/goods/detail/together/frame", "html", "goodsTogetherbArea", params);
+		
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/together/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsTogetherbArea").css("display", "block");
+					$("#goodsTogetherbArea").html(result);
+				}
+			}
+		});
 	}
 	
 	//구성상품 조회
@@ -1048,7 +1075,10 @@
 					if (seconds < '10') { seconds = '0' + seconds; }
 	
 					if (Number(days) > 0 ){
-						hours = Number(hours) + (Number(days) * 24);
+					//	hours = Number(hours) + (Number(days) * 24);
+						$('#d-days').html(days);
+					}else{
+						$('#d-days').hide();
 					}
 					$('#d-hours').html(hours);
 					$('#d-minutes').html(minutes);
@@ -1499,6 +1529,15 @@
 /*]]>*/
 </script>
 <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
+
+<!-- 네이버페이 랜딩페이지 -->
+<script th:inline="javascript">
+	if(!wcs_add) var wcs_add = {};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	wcs.inflow("style24.com");
+	wcs_do();
+</script>
+
 <!-- 광고 스크립트 -->
 <th:block th:replace="~{mob/common/advertisements/GoodsDetailScriptsMob :: scripts}"></th:block>
 <!-- //광고 스크립트 -->

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

@@ -139,7 +139,7 @@
 <a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_goods_qna')" class="close-modal">Close</a>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	
+/* 	
 	// 구성 상품 상세 문의
 	var fnGoodsDetailQna = function(params) {
 		gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
@@ -153,7 +153,7 @@
 		params.goodsCd = goodsCd;
 		fnGoodsDetailQna(params);  // ajax html
 		
-	});	
+	});	 */
 /*]]>*/
 </script>
 

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

@@ -18,6 +18,7 @@
  -->
 <body>
 <th:block layout:fragment="content">
+	<script type="text/javascript" src="https://wcs.naver.net/wcslog.js"></script>
 	<form id="nPayForm" name="nPayForm"></form>
 	<form name="cartForm" id="cartForm" method="post">
 		<input type="hidden" name="mode">
@@ -129,6 +130,7 @@
 						<p>
 							<span class="tt">남은시간</span>
 							<span class="timer">
+								<em id="d-days">0</em>
 								<em id="d-hours">0</em>
 								<em id="d-minutes">0</em>
 								<em id="d-seconds">0</em>
@@ -960,6 +962,14 @@
 					<div style="margin-top:10px;">
 						<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
 							<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.mobile.js.url')}" src="" charset="UTF-8"></script>
+
+							<script th:inline="javascript">
+								if(!wcs_add) var wcs_add = {};
+								wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+								wcs.inflow("style24.com");
+								wcs_do();
+							</script>
+
 							<script type="text/javascript" >
 								/*버튼설정*/
 								naver.NaverPayButton.apply({
@@ -2383,8 +2393,11 @@
 					if (seconds < '10') { seconds = '0' + seconds; }
 	
 					if (Number(days) > 0 ){
-						hours = Number(hours) + (Number(days) * 24);
-					}
+						//	hours = Number(hours) + (Number(days) * 24);
+							$('#d-days').html(days);
+						}else{
+							$('#d-days').hide();
+						}
 					
 					$('#d-hours').html(hours);
 					$('#d-minutes').html(minutes);

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

@@ -344,7 +344,26 @@
 	
 	// 구성 상품 상세 문의
 	var fnGoodsDetailQna = function(params) {
-		gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+		//gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+		
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/qna/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealQna").css("display", "block");
+					$("#goodsDealQna").html(result);
+					fnGoodsQnaList();
+				}
+			}
+		});
 	}
 	
 	// 문의 상품선택시

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

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

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

@@ -175,9 +175,8 @@
 
 
 	$(document).ready(function() {
-
+		$('footer').hide();
 		$('#htopTitle').text('배송지 관리');
-
 		// 배송목록 조회
 		fnCustDeliveryAddList();
 

+ 24 - 20
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustModifyFormMob.html

@@ -187,29 +187,29 @@
 					</div>
 				</div>
 			</div>
-			<!-- 210408_ 추가 : 은행 선택 팝업 -->
-			<div id="refundBankPop" class="popup_box refundBankPop">
-				<div class="lap">
-					<div class="popup_close">카테고리닫기</div>
-					<div class="popup_head sr-only">
-						<h2 class="">은행 선택 팝업</h2>
-					</div>
-					<div class="popup_con">
-						<div class="button_list clear">
-							<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
-								<button type="button" th:id="|bankCd_${oneData.cd}|" th:with="cd = ${oneData.cd}">
-									<span th:text="${oneData.cdNm}"></span>
-									<input type="hidden" name="bankCd" th:value="${cd}"/>
-								</button>
-							</th:block>
-						</div>
-					</div>
-				</div>
-			</div>
-			<!-- //210408_ 추가 : 은행 선택 팝업 -->
 		</form>
 	</section>
 </main>
+<!-- 210408_ 추가 : 은행 선택 팝업 -->
+<div id="refundBankPop" class="popup_box refundBankPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">은행 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
+					<button type="button" th:id="|bankCd_${oneData.cd}|" th:with="cd = ${oneData.cd}">
+						<span th:text="${oneData.cdNm}"></span>
+						<input type="hidden" name="bankCd" th:value="${cd}"/>
+					</button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 은행 선택 팝업 -->
 <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
@@ -551,6 +551,10 @@
 			$("body").css({"overflow":"visible"});
 		});
 
+		$(document).on('click','.popup_box.refundBankPop .button_list button',function(){
+			$(this).parents('.popup_box.refundBankPop').hide().removeClass('active');
+			$("body").css({"overflow":"visible"});
+		})
 
 
 	})

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustPwdModifyFormMob.html

@@ -129,6 +129,9 @@
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#pwdModifyForm input[name=custId]').val();
 		let password = $('#pwdModifyForm input[name=passwd]').val();
 		let confirmPassword = $('#pwdModifyForm input[name=confirmPassword]').val();
@@ -138,30 +141,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 
 		if (pwdCheck) {

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeCompleteFormMob.html

@@ -55,6 +55,12 @@
 							</td>
 						</tr>
 					</tbody>
+				</table>
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
 					<thead>
 						<tr>
 							<th scope="col">상품권 잔여금액</th>

+ 10 - 4
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSecedeFormMob.html

@@ -66,6 +66,12 @@
 							</td>
 						</tr>
 					</tbody>
+				</table>
+				<table>
+					<colgroup>
+						<col width="25%">
+						<col width="25%">
+					</colgroup>
 					<thead>
 						<tr>
 							<th scope="col">상품권 잔여금액</th>
@@ -204,22 +210,22 @@
 		$('#secedeCustForm input[name=custId]').val(custIdText);
 
 		if (orderTotal > 0) {
-			$('#ordCnt').addClass('on');
+			$('#ordCnt').addClass('t_req');
 			isPossible = false
 		}
 
 		if (orderStatInfo.cancelCount > 0) {
-			$('#cnclCnt').addClass('on');
+			$('#cnclCnt').addClass('t_req');
 			isPossible = false
 		}
 
 		if (orderStatInfo.returnCount > 0) {
-			$('#rtnCnt').addClass('on');
+			$('#rtnCnt').addClass('t_req');
 			isPossible = false
 		}
 
 		if (orderStatInfo.exchangeCount > 0) {
-			$('#exCnt').addClass('on');
+			$('#exCnt').addClass('t_req');
 			isPossible = false
 		}
 

+ 15 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCustSnsJoinInitPwdFormMob.html

@@ -120,6 +120,9 @@
 		const $avlPwd = $('#avlPwd');
 		const red = 'c_red2';
 		const gray = 'c_gray';
+		const icoRed = 'red';
+		const icoGray = 'gray';
+
 		let custId = $('#resetPasswordForm input[name=custId]').val();
 		let password = $('#resetPasswordForm input[name=passwd]').val();
 		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
@@ -129,30 +132,42 @@
 		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
 			pwdCheck = false;
 			$firstFailed.removeClass(gray);
+			$firstFailed.find('.ico').removeClass(icoGray);
 			$firstFailed.addClass(red);
+			$firstFailed.find('.ico').addClass(icoRed);
 		} else {
 			$firstFailed.removeClass(red);
+			$firstFailed.find('.ico').removeClass(icoRed);
 			$firstFailed.addClass(gray);
+			$firstFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
 		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
 			pwdCheck = false;
 			$secondFailed.removeClass(gray);
+			$secondFailed.find('.ico').removeClass(icoGray);
 			$secondFailed.addClass(red);
+			$secondFailed.find('.ico').addClass(icoRed);
 		} else {
 			$secondFailed.removeClass(red);
+			$secondFailed.find('.ico').removeClass(icoRed);
 			$secondFailed.addClass(gray);
+			$secondFailed.find('.ico').addClass(icoGray);
 		}
 
 		// 아이디 포함
 		if (fnValidationPwdSameId(password, custId)) {
 			pwdCheck = false;
 			$thirdFailed.removeClass(gray);
+			$thirdFailed.find('.ico').removeClass(icoGray);
 			$thirdFailed.addClass(red);
+			$thirdFailed.find('.ico').addClass(icoRed);
 		} else {
 			$thirdFailed.removeClass(red);
+			$thirdFailed.find('.ico').removeClass(icoRed);
 			$thirdFailed.addClass(gray);
+			$thirdFailed.find('.ico').addClass(icoGray);
 		}
 
 		if (pwdCheck) {

+ 10 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -637,7 +637,15 @@ var fnChooseFile = function(obj) {
 							$(".pics").children().last().append("<input type='hidden' name='sysFileNmArr' id='sysFileNm"+(picLength+1)+"' value='"+result.newFileName+"'>");
 						}
 				); 
-		}else if((new RegExp("mp4", "i")).test(file.name) || (new RegExp("x-m4v", "i")).test(file.name)){
+		}
+		else{
+			setTimeout(function(){
+				$(".imgUpload").find('.pics').last().addClass("mov");
+				$(".pics").children().last().append("<input type='hidden' name='kufKeyArr' id='kufKey"+(picLength+1)+"'>");
+				$(".pics").children().last().append("<input type='hidden' name='kmcKeyArr' id='kmcKey"+(picLength+1)+"'>");
+				gagaKollus.upload('Review', file, $('#kufKey'+(picLength+1)));
+			}, 1000);
+		}/* else if((new RegExp("mp4", "i")).test(file.name) || (new RegExp("x-m4v", "i")).test(file.name)){
 			setTimeout(function(){
 				$(".imgUpload").find('.pics').last().addClass("mov");
 				$(".pics").children().last().append("<input type='hidden' name='kufKeyArr' id='kufKey"+(picLength+1)+"'>");
@@ -652,7 +660,7 @@ var fnChooseFile = function(obj) {
 				}
 			});
 			return false;
-		}
+		} */
 	}
 	// 이거 왜 안먹히지 
 

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

@@ -22,7 +22,7 @@
 			</th:block>
 			<th:block th:unless="${review.bestYn == 'Y'}">
 			<h5 class="modal-title" id="exampleFullLabel">
-				<button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${params.goodsCd}]])" ></button>
+				<!-- <button type="button" id="btn_more_photoreview" th:onclick="cfGoodsReviewPhoto([[${params.goodsCd}]])" ></button> -->
 				포토/영상리뷰
 			</h5>
 			</th:block>

+ 14 - 6
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -58,7 +58,7 @@
 									</div>
 								</div>
 								<!-- tab_cont Start -->
-								<div class="inner" id="reviewList">
+								<div id="reviewList">
 
 								</div>
 								<div class="ui_foot" style="display:none;">
@@ -105,6 +105,7 @@
 				}	
 				var html = '';
 				$.each(result.dataList2, function(idx, item) {
+					html += '<div class="inner">\n'
 					html += '	<div class="part_goods">\n';
 					html += '		<div class="goods_section">\n';
 					html += '			<div class="goods_detail">\n';
@@ -114,7 +115,7 @@
 					html += '					</div>\n';
 					html += '					<div class="info_box">\n';
 					html += '						<div class="od_name">\n';
-					html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>\n';
+					html += '							<div class="goods_date"><span class="date">'+item.ordDt+'</span> 구매</div>\n';
 					html += '							<div class="brand">\n';
 					html += '								<span>'+item.brandNm+'</span>\n';
 					html += '							</div>\n';
@@ -123,9 +124,11 @@
 					html += '						<div class="od_opt">\n';
 					html += '							<div class="option">\n';
 					if (item.goodsType =='G056_S') {
+						html += '<em>';
 						$.each(item.colorNmArr, function (index2, option) {
-							html += '							<em>' + item.itemNmArr[index2] + ' / ' + option +'</em>\n';
+							html +=  item.itemNmArr[index2] + ' / ' + option  + '<br>';
 						})
+						html += '</em>\n';
 					}else{
 						html += '							<em>'+item.colorNm+'</em>\n';
 					}
@@ -245,6 +248,7 @@
 					html += '			<div><button type="button" id="btn_review_delete" class="btn btn_default" onclick="fnDeleteReview('+item.reviewSq+')"><span>리뷰 삭제</span></button></div>\n';
 					html += '		</div>\n';
 					html += '	</div>\n';
+					html += '</div>\n'
 				});
 				
 				$('#reviewList').append(html);
@@ -278,7 +282,8 @@
 			if (result.paging1.pageable.pageNo == 1){
 				$('#reviewList').html('');
 			}	
-			var html = '	<div class="part_goods">\n';
+			var html =  '<div class="inner">\n';
+			html += '	<div class="part_goods">\n';
 			$.each(result.dataList1, function(idx, item) {
 				html += '		<div class="goods_section">\n';
 				html += '			<div class="goods_detail">\n';
@@ -288,7 +293,7 @@
 				html += '					</div>\n';
 				html += '					<div class="info_box">\n';
 				html += '						<div class="od_name">\n';
-				html += '							<div class="goods_date"><span class="date">'+item.payDt+'</span> 구매</div>\n';
+				html += '							<div class="goods_date"><span class="date">'+item.ordDt+'</span> 구매</div>\n';
 				html += '							<div class="brand">\n';
 				html += '								<span>'+item.brandNm+'</span>\n';
 				html += '							</div>\n';
@@ -297,9 +302,11 @@
 				html += '						<div class="od_opt">\n';
 				html += '							<div class="option">\n';
 				if (item.goodsType =='G056_S') {
+					html += '<em>';
 					$.each(item.colorNmArr, function (index2, option) {
-						html += '							<em>' + item.itemNmArr[index2] + ' / ' + option + '</em><br>\n';
+						html +=  item.itemNmArr[index2] + ' / ' + option + '<br>';
 					})
+					html += '</em>\n';
 				}else{
 					html += '							<em>'+item.colorNm+'</em>\n';
 				}
@@ -314,6 +321,7 @@
 				html += '		</div>\n';
 			});
 			html += '	</div>\n';
+			html += '</div>\n';
 			$('#reviewList').append(html);
 			if (result.paging1.pageable.totalPage > result.paging1.pageable.pageNo) {
 				$('#btnMore').parent().show();

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

@@ -67,7 +67,7 @@
 															<div class="info_box">
 																<div class="od_name">
 																	<div class="brand">
-																		<span th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></span>
+																		<span th:text="${goods.brandGroupNm"></span>
 																	</div>
 																	<div class="name" th:text="${goods.goodsNm}"></div>
 																</div>

+ 16 - 0
src/main/webapp/WEB-INF/views/mob/order/OrderCompleteMob.html

@@ -15,6 +15,7 @@
  -->
 <body>
 <th:block layout:fragment="content">
+<script type="text/javascript" src="//wcs.naver.net/wcslog.js"></script>
 <main role="" id="" class="container od">
 	<section class="content completed">
 		<div class="inner wide">
@@ -549,6 +550,21 @@ x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
 </script>
 <!-- //2021.05.27 주문완료 로그스크립트 삽입 -->
 
+<!--네이버페이 전환스크립트를 이용하여 전환값 설정-->
+<script th:inline="javascript">
+	var _nasa={};
+	if (window.wcs) _nasa["cnv"] = wcs.cnv("1","[[${realOrdSumAmt}]]");
+</script>
+<!--위 스크립트를 통해 설정된 전환값과 본 페이지의 로그를 서버에 전송-->
+<script th:inline="javascript">
+	if (!wcs_add) var wcs_add = {};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa = {};
+	if (window.wcs) {
+		wcs.inflow("style24.com");
+		wcs_do(_nasa); //서버로 로그 전송
+	}
+</script>
 </th:block>
 </body>
 </html>

+ 23 - 21
src/main/webapp/WEB-INF/views/mob/order/OrderGiftInfoMob.html

@@ -28,27 +28,18 @@
 					</a>
 				</div>
 				<div class="fold_cont" style="display: none;">
-					<div class="tabWrap">
-						<ul class="tabIndex">
-							<!-- <li><a href="javascript:void(0);"><span>연락처 불러오기</span></a></li> -->
-							<li class="active"><a href="javascript:void(0);"><span>직접입력</span></a></li>
-						</ul>
-						<div class="tabContents">
-							<div class="tab_cont active">
-								<div class="form_field">
-									<div class="input_wrap">
-										<input type="text" name="recipNm" class="form_control" value="" maxlength="10" placeholder="받는분">
-									</div>
-									<br>
-									<div class="input_wrap">
-										<input type="text" name="recipPhnno" class="form_control" value="" minlength="10" maxlength="14" placeholder="받으실분 휴대폰번호">
-										<p class="desc_txt">선물이 타인에게 전송될수 있으니 전화번호를 받으실분 연락처를 정확하게 입력해주세요.</p>
-									</div>
-									<div class="textarea_wrap">
-										<textarea class="doc_review" name="giftMsg" id="giftMsg" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
-										<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
-									</div>
-								</div>
+					<div class="inner"><!-- 210419_ : 모바일웹에서만 .inner 사용 -->
+						<div class="form_field">
+							<div class="input_wrap">
+								<input type="text" name="recipNm" class="form_control" value="" maxlength="10" placeholder="받는 분">
+							</div>
+							<div class="input_wrap">
+								<input type="text" name="recipPhnno" class="form_control" value="" minlength="10" maxlength="14" placeholder="받는 분 휴대폰번호">
+								<p class="desc_txt">선물이 타인에게 전송될수 있으니 받으실분 연락처를 정확하게 입력해주세요.</p> <!-- 210421_삭제 : 전화번호를 텍스트 삭제 -->
+							</div>
+							<div class="textarea_wrap">
+								<textarea class="doc_review" name="review" id="" placeholder="선물 메시지 입력&#13;&#10;(미 입력시 ‘감사합니다’로 발송됩니다.)"></textarea>
+								<p class="txt_cnt"><span id="review_cnt" class="c_primary">0</span>/200</p>
 							</div>
 						</div>
 					</div>
@@ -83,5 +74,16 @@ $(document).ready( function() {
 $(document).on("keyup", "#orderGiftInfo input[name=recipPhnno]", function() { 
 	$(this).val( $(this).val().replace(/[^0-9]/g, "").replace(/(^02|^0505|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})$/,"$1-$2-$3").replace("--", "-") ); 
 });
+
+//선물 받으실 분 직접입력 글자 제한
+$('.doc_review').keyup(function (e){
+	var content = $(this).val();
+	$('#review_cnt').html(content.length);
+	if (content.length > 200){
+		mcxDialog.alert("최대 200자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+		$(this).val(content.substring(0, 200));
+		$('#review_cnt').html("200");
+	}
+});
 </script>
 </html>

+ 2 - 7
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html

@@ -328,22 +328,17 @@ $(document).ready(function() {
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
 	}else{
+		$('.day').html('<span>' + (custAttendList.length +1) + '</span>일');
+		$("#td_"+date).attr("class","today"); 
 		$.each(custAttendList, function(idx, item) {
-			$('.day').html('<span>' + custAttendList.length + '</span>일');
 			if(item.entryDt == date){
 				$("#td_"+date).attr("class","complete");
-			}else{
-				$("#td_"+date).attr("class","today"); 
 			}
 		})
 	}
 	
 	
 	
-	
-	
-	
-	
 	$(".title").html("<strong>"+month+"월</strong> 출석체크");
 	
 	//공유 버튼 토글 

+ 12 - 32
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventMainFormMob.html

@@ -42,30 +42,7 @@
 							</div>
 						</div>
 						<div class="list" id="divEventList">
-							<!-- <ul class="event_con">
-								<li><a href="">
-										<div class="ev_img">
-											<div class="shape ranker">
-												<span>NEW</span>
-											</div>
-											<img src="/images/mo/thumb/ev_list_img01.jpg"
-												alt="ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ 컬렉션">
-										</div>
-										<div class="txt">
-											<p class="tit">ATTENTION! 20FW HOLIDAY TBJ 주목할 홀리데이 TBJ
-												컬렉션</p>
-											<div class="date">
-												<span>2020.12.17</span> - <span>2021.01.03</span>
-											</div>
-										</div>
-								</a></li>
-							</ul> -->
-							 <div class="nodata" id="divEventNoData" style="display:none;">
-								<p><img src="/images/mo/ico_content_find02.png" alt="등록된 이벤트가 없습니다."></p>
-								<span>등록된 이벤트가 없습니다.</span>
-								
-							</div> 
-
+							
 						</div>
 					</div>
 				</div>
@@ -81,10 +58,11 @@ let fnGetEventList = function() {
 	$.getJSON(actionUrl
 		, function(result, status) {
 			if (status == 'success') {
+				let tag = '';
 				if (result.length > 0) {
 					$('#eventTotCnt').html('<span>' + result.length.addComma() + '</span>개의 이벤트');
 					$('#divEventList').html('');
-					let tag = '';
+					
 					tag += '<ul class="event_con">\n';
 					$.each(result, function(idx, item) {
 						tag += '	<li>\n';
@@ -109,16 +87,18 @@ let fnGetEventList = function() {
 					
 					tag += '</ul>\n';
 					
-					
-					$('#divEventList').html(tag);
-					
-					$('#divEventNoData').hide();
-					$('#divEventList').show();
 				} else {
 					$('#eventTotCnt').html('<span>0</span>개의 이벤트');
-					$('#divEventNoData').show();
-					$('#divEventList').hide();
+					tag += '<div class="nodata">';
+					tag += '	<div class="txt_box">';
+					tag += '		<p>등록된 이벤트가 없습니다.</p>';
+					tag += '		<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈으로 가기</a>';
+					tag += '	</div>';
+					tag += '</div> ';
+					
 				}
+				
+				$('#divEventList').html(tag);
 			}
 		});
 }

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

@@ -112,7 +112,7 @@
 				
 // 				tag += '				<span class="fold_category">공지</span>\n';
 				tag += '				<div class="fold_tit">\n';
-				tag += '					<span>' + item.noticeTitle + '</span>\n';
+				tag += '					<span>' + item.noticeTitle.escapeHtml() + '</span>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.regDt.toDate("YYYYMMDD").format("YYYY.MM.DD") + '</span>\n';
 				tag += '			</div>\n';

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

@@ -183,7 +183,7 @@
 				tag += '				<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '				<div class="fold_tit">\n';
 				tag += '					<span class="prod">[' + item.counselClsfNm + ']</span>\n';
-				tag += '					<span>' + item.questTitle + '</span>\n';
+				tag += '					<span>' + item.questTitle.escapeHtml() + '</span>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '			</div>\n';
@@ -223,7 +223,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '		<div class="fold_answer">\n'; //문의 답변
 					tag += '			<div class="answer_head">답변이 등록되었습니다.</div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
 					tag += '			<span class="data">' + item.ansDt + '</span>\n';
 					tag += '		</div>\n';
 				}

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

@@ -67,7 +67,7 @@
 										<label class="ui_col_2 input_label">내용</label>
 										<div class="ui_col_10 form_full">
 											<div class="input_wrap">
-												<textarea class="doc_contactus" name="questContent" cols="30" rows="10" style="resize: none;" required="required" data-valid-name="내용"></textarea>
+												<textarea class="doc_contactus" name="questContent" id="questContent" cols="30" rows="10" style="resize: none;" required="required" data-valid-name="내용"></textarea>
 												<p class="txt_cnt">
 													<span id="contactus_cnt" class="contactus_cnt">(<em class="c_primary">0</em>/500자)</span>
 												</p>
@@ -196,7 +196,10 @@
 		// 입력 값 체크
 		if (!gagajf.validation('#qnaForm'))
 			return false;
-
+		if($('#questContent').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 		mcxDialog.confirm("저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",

+ 16 - 0
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -24,6 +24,7 @@
     <!-- payment.js -->
     <script type="text/javascript" th:src="${@environment.getProperty('pg.kcp.js.url')}" src=""></script>
     <script type="text/javascript" src="/biz/payment.js"></script>
+	<script type="text/javascript" src="//wcs.naver.net/wcslog.js"></script>
 
 	<!--  container -->
 	<div id="container" class="container od">
@@ -615,6 +616,21 @@
 		});
     });
 </script>
+<!--네이버페이 전환스크립트를 이용하여 전환값 설정-->
+<script th:inline="javascript">
+	var _nasa={};
+	if (window.wcs) _nasa["cnv"] = wcs.cnv("3","[[${loginCustNo}]]");
+</script>
+<!--위 스크립트를 통해 설정된 전환값과 본 페이지의 로그를 서버에 전송-->
+<script th:inline="javascript">
+	if (!wcs_add) var wcs_add = {};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa = {};
+	if (window.wcs) {
+		wcs.inflow("style24.com");
+		wcs_do(_nasa); //서버로 로그 전송
+	}
+</script>
 </th:block>
 </body>
 </html>

+ 12 - 0
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1910,6 +1910,18 @@ function noneImg(noneSrc){
 /*]]>*/
 </script>
 
+<!-- 네이버페이 유입 공통 적용 스크립트 , 모든 페이지에 노출되도록 설치. 단 전환페이지 설정값보다 항상 하단에 위치해야함 -->
+<script type="text/javascript" src="//wcs.naver.net/wcslog.js"> </script>
+<script type="text/javascript">
+	if (!wcs_add) var wcs_add={};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa={};
+	if(window.wcs){
+		wcs.inflow("style24.com");
+		wcs_do(_nasa);
+	}
+</script>
+
 </footer>
 
 </html>

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

@@ -20,6 +20,7 @@
 	<meta property="og:site_name" th:content="${metaInfo.browserTitle}" content="한세공식몰 스타일24"/>
 	
 	<!-- 추천솔루션 meta -->
+	<meta property="eg:type" content="product" />
 	<meta property="eg:cuid" content="" />
 	<meta property="eg:itemId" content="" />
 	<meta property="eg:itemName" content="" />
@@ -124,11 +125,11 @@
 		_eglqueue.push(['setVar', 'cuid', eglqueueCuid]);
 		_eglqueue.push(['setVar', 'userId', hCustId]);
 		_eglqueue.push(['track', 'visit']);
-		(function (s, x) {
+		/* (function (s, x) {
 			s = document.createElement('script'); s.type = 'text/javascript';
 			s.async = true; s.defer = true; s.src = (('https:' == document.location.protocol) ? 'https' : 'http') + '://logger.eigene.io/js/logger.min.js';
 			x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
-		})();
+		})(); */
 		/* \\Eiengine Script (Visit) */
 
 		// 로그인 성공 시 - 시작

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

@@ -567,8 +567,11 @@
 								$("#brandNm").show();
 								$("#brandNm").text(brandGroupNm);
 								$("#navNm").hide();
-								$('#ulAllCate').append('<li><a href="javascript:void(0);" onclick="cfnGoToGoodsList(\''+brandGroupNo+'\',\''+cateGb+'\');" class="on">전체</a></li>\n');
+								$('#ulAllCate').append('<li><a href="javascript:void(0);" id="cateAll" onclick="cfnGoToGoodsList(\''+brandGroupNo+'\',\''+cateGb+'\');" >전체</a></li>\n');
 								navNm += '<li class="bread_2depth" id="navNm1">전체</li>';
+								if(gagajf.isNull(cate1No)){
+									$("#cateAll").addClass("on");
+								}
 							}else{
 								if(formalGb=='G009_20'){
 									$("#navNm").hide();

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

@@ -1683,7 +1683,10 @@
 
 	<script th:inline="javascript">
 		$(document).ready( function() {
-//결과내 재 검색 - 검색어 입력 시
+			fnCreateSearchCategoryList();
+			// fnCreateSearchFilter();
+
+			//결과내 재 검색 - 검색어 입력 시
 			$(document).on('keyup','.sch_result .area_info .inner_search input',function(e){
 				var reSearchValue = $(this).val();
 				if(reSearchValue.length > 0) {
@@ -1746,6 +1749,20 @@
 				$(this).parent('li').children(".sub_cate").toggle();
 			});
 		});
+
+		// 좌측 카테고리 생성
+		var fnCreateSearchCategoryList = function (){
+			let cateList = [[${cateList}]];
+			let tag = '';
+
+			if(cateList.length > 0){
+				$.each(cateList, function (idx,item){
+					console.log('idx::'+idx);
+					console.log(item);
+					console.log(item.cate1No);
+				});
+			}
+		}
 	</script>
 
 </th:block>

+ 94 - 77
src/main/webapp/WEB-INF/views/web/goods/GoodsDealDetailFormWeb.html

@@ -21,6 +21,8 @@
 <script src="/ux/pc/js/ion.rangeSlider.min.js"></script>
 <script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
 <script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
+<script type="text/javascript" src="https://wcs.naver.net/wcslog.js"></script>
+
 <form id="nPayForm" name="nPayForm"></form>
 <div id="container" class="container pd deal" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="wrap">
@@ -85,6 +87,7 @@
 								<p>
 									<span class="tit">남은시간</span>
 									<span class="timer">
+										<em id="d-days">0</em>
 										<em id="d-hours">0</em>
 										<em id="d-minutes">0</em>
 										<em id="d-seconds">0</em>
@@ -255,6 +258,13 @@
 
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
+									<script th:inline="javascript">
+										if(!wcs_add) var wcs_add = {};
+										wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+										wcs.inflow("style24.com");
+										wcs_do();
+									</script>
+
 									<script type="text/javascript" >
 										//<![CDATA[
 										/*버튼설정*/
@@ -364,6 +374,8 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
+	
+	
 	let socialSq = [[${goodsInfo.socialSq}]];	
 	let socialEddt = [[${goodsInfo.socialEddt}]];
 	
@@ -386,12 +398,15 @@
 			if (seconds < '10') { seconds = '0' + seconds; }
 			
 			if (Number(days) > 0 ){
-				hours = Number(hours) + (Number(days) * 24);
+			//	hours = Number(hours) + (Number(days) * 24);
+				$('#d-days').html(days);
+			}else{
+				$('#d-days').hide();
 			}
 			
 			$('#d-hours').html(hours);
 			$('#d-minutes').html(minutes);
-			$('#d-seconds').html(seconds);		
+			$('#d-seconds').html(seconds);
 	}
 
 	if (!gagajf.isNull(socialSq)){
@@ -1052,7 +1067,6 @@
 	
 	$(document).ready( function() {
 		
-		
 		//상품 대표설명 > 우측 상품정보 
 		/* 딜 옵션선택 후 다음 옵션 활성화 */
 		var detail_deal_option01 = new sCombo('.pd_detail .opt_select .select_custom.deal_opt_item');
@@ -1090,79 +1104,6 @@
 			$(' .option_box .result_item .number_count .minus').addClass('min_val');
 		} 
 
-		// 광고 스크립트용
-		var goodsNavigation = [[${goodsNavigation}]];
-		var cate1Nm = "";
-		var cate2Nm = "";
-		var cate3Nm = "";
-		var cate4Nm = "";
-		var cate5Nm = "";
-		if (!gagajf.isNull(goodsNavigation)) {
-			cate1Nm = goodsNavigation.cate1Nm;
-			cate2Nm = goodsNavigation.cate2Nm;
-			cate3Nm = goodsNavigation.cate3Nm;
-			cate4Nm = goodsNavigation.cate4Nm;
-			cate5Nm = goodsNavigation.cate3Nm;
-			
-			if (!gagajf.isNull(cate1Nm)) {
-				cateNm += cate1Nm;
-			}
-			if (!gagajf.isNull(cate2Nm)) {
-				cateNm += ' > ' + cate2Nm;
-			}
-			if (!gagajf.isNull(cate3Nm)) {
-				cateNm += ' > ' + cate3Nm;
-			}
-			if (!gagajf.isNull(cate4Nm)) {
-				cateNm += ' > ' + cate4Nm;
-			}
-			if (!gagajf.isNull(cate5Nm)) {
-				cateNm += ' > ' + cate5Nm;
-			}
-		}
-		// 광고 스크립트용
-		
-		var snsGoodsImg = _uploadGoodsUrl + [[${goodsInfo.sysImgNm}]];
-		var snsUrl = location.protocol + _PAGE_GOODS_DETAIL + params.goodsCd +'&colorCd =' + params.colorCd  ;
-		var snsGoodsFullNm = [[${goodsInfo.goodsFullNm}]];
-		
-		<!-- 페이스북 카카오스토리 연동 관련 메타태그 -->
-		$("meta[property='og:url']").attr('content', snsUrl);
-		$("meta[property='og:title']").attr('content', snsGoodsFullNm);
-		$("meta[property='og:description']").attr('content', snsGoodsFullNm);
-		$("meta[property='og:image']").attr('content', snsGoodsImg);
-
-		<!-- 트위터 관련 메타태그 -->
-		$("meta[name='twitter:url']").attr('content', snsUrl);
-		$("meta[name='twitter:title']").attr('content', snsGoodsFullNm);
-		$("meta[name='twitter:description']").attr('content', snsGoodsFullNm);
-		$("meta[name='twitter:image']").attr('content', snsGoodsImg);
-
-		// 추천솔류션 meta 설정
-		$("meta[property='eg:type']").attr('content',"product");
-		$("meta[property='eg:cuid']").attr('content',eglqueueCuid);
-		$("meta[property='eg:itemId']").attr('content', [[${goodsInfo.goodsCd}]] );
-		$("meta[property='eg:itemName']").attr('content',[[${goodsInfo.goodsFullNm}]] );
-		$("meta[property='eg:itemImage']").attr('content', snsGoodsImg);
-		$("meta[property='eg:itemUrl']").attr('content',snsUrl);
-		$("meta[property='eg:originalPrice']").attr('content',[[${goodsInfo.listPrice}]]);
-		$("meta[property='eg:salePrice']").attr('content',[[${goodsInfo.currPrice}]]);
-		$("meta[property='eg:category1']").attr('content',cate1Nm);
-		$("meta[property='eg:category2']").attr('content',cate2Nm);
-		$("meta[property='eg:category3']").attr('content',cate3Nm);
-		$("meta[property='eg:category4']").attr('content',cate4Nm);
-		$("meta[property='eg:category5']").attr('content',cate5Nm);
-		$("meta[property='eg:brandId']").attr('content',[[${goodsInfo.brandGroupNo}]]);
-		$("meta[property='eg:brandName']").attr('content',[[${goodsInfo.brandGroupNm}]]);
-		$("meta[property='eg:regDate']").attr('content',[[${goodsInfo.regDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
-		$("meta[property='eg:updateDate']").attr('content',[[${goodsInfo.updDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
-		$("meta[property='eg:stock']").attr('content',"");
-		$("meta[property='eg:state']").attr('content',[[${goodsInfo.goodsStatNm}]]);
-		$("meta[property='eg:description']").attr('content',null);
-		$("meta[property='eg:extraImage']").attr('content',null);
-		$("meta[property='eg:locale']").attr('content',"KR");
-		$("meta[property='eg:isNew']").attr('content',([[${goodsInfo.formalGb}]] == 'G009_10')? 'True' :'False');
-		$("meta[property='eg:etc1']").attr('content', [[${goodsInfo.selfGoodsYn}]]);
 		
 		
 		// 탭별 선택시 기본 상품 설정
@@ -1210,12 +1151,88 @@ function buy_nc_req(cartSqArr) {
 			}
 		}
 	});
+	
 }
 	
+	// 광고 스크립트용
+	var goodsNavigation = [[${goodsNavigation}]];
+	var cate1Nm = "";
+	var cate2Nm = "";
+	var cate3Nm = "";
+	var cate4Nm = "";
+	var cate5Nm = "";
+	if (!gagajf.isNull(goodsNavigation)) {
+		cate1Nm = goodsNavigation.cate1Nm;
+		cate2Nm = goodsNavigation.cate2Nm;
+		cate3Nm = goodsNavigation.cate3Nm;
+		cate4Nm = goodsNavigation.cate4Nm;
+		cate5Nm = goodsNavigation.cate3Nm;
+		
+		if (!gagajf.isNull(cate1Nm)) {
+			cateNm += cate1Nm;
+		}
+		if (!gagajf.isNull(cate2Nm)) {
+			cateNm += ' > ' + cate2Nm;
+		}
+		if (!gagajf.isNull(cate3Nm)) {
+			cateNm += ' > ' + cate3Nm;
+		}
+		if (!gagajf.isNull(cate4Nm)) {
+			cateNm += ' > ' + cate4Nm;
+		}
+		if (!gagajf.isNull(cate5Nm)) {
+			cateNm += ' > ' + cate5Nm;
+		}
+	}
+	// 광고 스크립트용
+	
+	var snsGoodsImg = _uploadGoodsUrl + [[${goodsInfo.sysImgNm}]];
+	var snsUrl = location.protocol + _PAGE_GOODS_DETAIL + params.goodsCd;
+	if (typeof (params.colorCd) != 'undefined') snsUrl += "&colorCd=" + params.colorCd;
+	var snsGoodsFullNm = [[${goodsInfo.goodsFullNm}]];
+	
+	<!-- 페이스북 카카오스토리 연동 관련 메타태그 -->
+	$("meta[property='og:url']").attr('content', snsUrl);
+	$("meta[property='og:title']").attr('content', snsGoodsFullNm);
+	$("meta[property='og:description']").attr('content', snsGoodsFullNm);
+	$("meta[property='og:image']").attr('content', snsGoodsImg);
+	
+	<!-- 트위터 관련 메타태그 -->
+	$("meta[name='twitter:url']").attr('content', snsUrl);
+	$("meta[name='twitter:title']").attr('content', snsGoodsFullNm);
+	$("meta[name='twitter:description']").attr('content', snsGoodsFullNm);
+	$("meta[name='twitter:image']").attr('content', snsGoodsImg);
+	
+	// 추천솔류션 meta 설정
+	$("meta[property='eg:type']").attr('content',"product");
+	$("meta[property='eg:cuid']").attr('content',eglqueueCuid);
+	$("meta[property='eg:itemId']").attr('content', [[${goodsInfo.goodsCd}]] );
+	$("meta[property='eg:itemName']").attr('content',[[${goodsInfo.goodsFullNm}]] );
+	$("meta[property='eg:itemImage']").attr('content', snsGoodsImg);
+	$("meta[property='eg:itemUrl']").attr('content',snsUrl);
+	$("meta[property='eg:originalPrice']").attr('content',[[${goodsInfo.listPrice}]]);
+	$("meta[property='eg:salePrice']").attr('content',[[${goodsInfo.currPrice}]]);
+	$("meta[property='eg:category1']").attr('content',cate1Nm);
+	$("meta[property='eg:category2']").attr('content',cate2Nm);
+	$("meta[property='eg:category3']").attr('content',cate3Nm);
+	$("meta[property='eg:category4']").attr('content',cate4Nm);
+	$("meta[property='eg:category5']").attr('content',cate5Nm);
+	$("meta[property='eg:brandId']").attr('content',[[${goodsInfo.brandGroupNo}]]);
+	$("meta[property='eg:brandName']").attr('content',[[${goodsInfo.brandGroupNm}]]);
+	$("meta[property='eg:regDate']").attr('content',[[${goodsInfo.regDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+	$("meta[property='eg:updateDate']").attr('content',[[${goodsInfo.updDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+	$("meta[property='eg:stock']").attr('content',"");
+	$("meta[property='eg:state']").attr('content',[[${goodsInfo.goodsStatNm}]]);
+	$("meta[property='eg:description']").attr('content',null);
+	$("meta[property='eg:extraImage']").attr('content',null);
+	$("meta[property='eg:locale']").attr('content',"KR");
+	$("meta[property='eg:isNew']").attr('content',([[${goodsInfo.formalGb}]] == 'G009_10')? 'True' :'False');
+	$("meta[property='eg:etc1']").attr('content', [[${goodsInfo.selfGoodsYn}]]);
 /*]]>*/
 </script>
+
 <!-- 광고 스크립트 -->
-<!-- <th:block th:replace="~{web/common/advertisements/GoodsDetailScriptsWeb :: scripts}"></th:block> -->
+<th:block th:replace="~{web/common/advertisements/GoodsDetailScriptsWeb :: scripts}"></th:block>
 <!-- //광고 스크립트 -->
 </th:block>
 

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

@@ -21,6 +21,7 @@
 <form id="nPayForm" name="nPayForm"></form>
 <div id="container" class="container pd" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 <script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
+<script type="text/javascript" src="https://wcs.naver.net/wcslog.js"></script>
 	<!-- <th:block th:include="~{web/goods/GoodsIncludeFormWeb :: goodsNaviForm}"></th:block> -->
 	
 	<div class="wrap">
@@ -124,6 +125,7 @@
 								<p>
 									<span class="tit">남은시간</span>
 									<span class="timer">
+										<em id="d-days">0</em>
 										<em id="d-hours">0</em>
 										<em id="d-minutes">0</em>
 										<em id="d-seconds">0</em>
@@ -373,6 +375,14 @@
 							<div style="margin-top:10px;">
 								<th:block th:with="buttonKey=${@environment.getProperty('naverPay.button.key')}">
 									<script type="text/javascript" th:src="${@environment.getProperty('naverPay.button.pc.js.url')}" src="" charset="UTF-8"></script>
+
+									<script th:inline="javascript">
+										if(!wcs_add) var wcs_add = {};
+										wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+										wcs.inflow("style24.com");
+										wcs_do();
+									</script>
+
 									<script type="text/javascript" >
 										/*버튼설정*/
 										naver.NaverPayButton.apply({
@@ -1167,7 +1177,10 @@
 			if (seconds < '10') { seconds = '0' + seconds; }
 			
 			if (Number(days) > 0 ){
-				hours = Number(hours) + (Number(days) * 24);
+			//	hours = Number(hours) + (Number(days) * 24);
+				$('#d-days').html(days);
+			}else{
+				$('#d-days').hide();
 			}
 			
 			$('#d-hours').html(hours);
@@ -1894,6 +1907,7 @@
 	
 	var params = new Object();
 	params.goodsCd = [[${params.goodsCd}]];
+	params.colorCd = [[${params.colorCd}]];
 	params.viewDt = [[${params.viewDt}]];
 	params.preview = [[${params.preview}]];
 	params.adminYn = [[${params.adminYn}]];
@@ -1965,8 +1979,6 @@
 		var opt_selecter01_4 = new sCombo('.opt_set_select .select_custom.item_opt1.item_opt1_4');
 		var opt_selecter01_5 = new sCombo('.opt_set_select .select_custom.item_opt1.item_opt1_5');
 
-
-
 		//스타일링 추천 picker 상품팝업
 /*         $(document).on('click','.pd_recommend .area_slider .item_picker button',function(e){
             $("#pdLookbookPop").modal("show");
@@ -1979,83 +1991,6 @@
 		
 		fnOptionSoldout();
 		
-		// 광고 스크립트용
-		var goodsNavigation = [[${goodsNavigation}]];
-		var cate1Nm = "";
-		var cate2Nm = "";
-		var cate3Nm = "";
-		var cate4Nm = "";
-		var cate5Nm = "";
-		if (!gagajf.isNull(goodsNavigation)) {
-			cate1Nm = goodsNavigation.cate1Nm;
-			cate2Nm = goodsNavigation.cate2Nm;
-			cate3Nm = goodsNavigation.cate3Nm;
-			cate4Nm = goodsNavigation.cate4Nm;
-			cate5Nm = goodsNavigation.cate3Nm;
-			
-			if (!gagajf.isNull(cate1Nm)) {
-				cateNm += cate1Nm;
-			}
-			if (!gagajf.isNull(cate2Nm)) {
-				cateNm += ' > ' + cate2Nm;
-			}
-			if (!gagajf.isNull(cate3Nm)) {
-				cateNm += ' > ' + cate3Nm;
-			}
-			if (!gagajf.isNull(cate4Nm)) {
-				cateNm += ' > ' + cate4Nm;
-			}
-			if (!gagajf.isNull(cate5Nm)) {
-				cateNm += ' > ' + cate5Nm;
-			}
-		}
-		// 광고 스크립트용
-		
-		var snsGoodsImg = _uploadGoodsUrl + [[${goodsInfo.sysImgNm}]];
-		var snsUrl = location.protocol + _PAGE_GOODS_DETAIL + params.goodsCd +'&colorCd =' + params.colorCd  ;
-		var snsGoodsFullNm = [[${goodsInfo.goodsFullNm}]];
-		
-		<!-- 페이스북 카카오스토리 연동 관련 메타태그 -->
-		$("meta[property='og:url']").attr('content', snsUrl);
-		$("meta[property='og:title']").attr('content', snsGoodsFullNm);
-		$("meta[property='og:description']").attr('content', snsGoodsFullNm);
-		$("meta[property='og:image']").attr('content', snsGoodsImg);
-
-		<!-- 트위터 관련 메타태그 -->
-		$("meta[name='twitter:url']").attr('content', snsUrl);
-		$("meta[name='twitter:title']").attr('content', snsGoodsFullNm);
-		$("meta[name='twitter:description']").attr('content', snsGoodsFullNm);
-		$("meta[name='twitter:image']").attr('content', snsGoodsImg);
-
-		// 추천솔류션 meta 설정
-		$("meta[property='eg:type']").attr('content',"product");
-		$("meta[property='eg:cuid']").attr('content',eglqueueCuid);
-		$("meta[property='eg:itemId']").attr('content', [[${goodsInfo.goodsCd}]] );
-		$("meta[property='eg:itemName']").attr('content',[[${goodsInfo.goodsFullNm}]] );
-		$("meta[property='eg:itemImage']").attr('content', snsGoodsImg);
-		$("meta[property='eg:itemUrl']").attr('content',snsUrl);
-		$("meta[property='eg:originalPrice']").attr('content',[[${goodsInfo.listPrice}]]);
-		$("meta[property='eg:salePrice']").attr('content',[[${goodsInfo.currPrice}]]);
-		$("meta[property='eg:category1']").attr('content',cate1Nm);
-		$("meta[property='eg:category2']").attr('content',cate2Nm);
-		$("meta[property='eg:category3']").attr('content',cate3Nm);
-		$("meta[property='eg:category4']").attr('content',cate4Nm);
-		$("meta[property='eg:category5']").attr('content',cate5Nm);
-		$("meta[property='eg:brandId']").attr('content',[[${goodsInfo.brandGroupNo}]]);
-		$("meta[property='eg:brandName']").attr('content',[[${goodsInfo.brandGroupNm}]]);
-		$("meta[property='eg:regDate']").attr('content',[[${goodsInfo.regDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
-		$("meta[property='eg:updateDate']").attr('content',[[${goodsInfo.updDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
-		$("meta[property='eg:stock']").attr('content',"");
-		$("meta[property='eg:state']").attr('content',[[${goodsInfo.goodsStatNm}]]);
-		$("meta[property='eg:description']").attr('content',null);
-		$("meta[property='eg:extraImage']").attr('content',null);
-		$("meta[property='eg:locale']").attr('content',"KR");
-		$("meta[property='eg:isNew']").attr('content',([[${goodsInfo.formalGb}]] == 'G009_10')? 'True' :'False');
-		$("meta[property='eg:etc1']").attr('content', [[${goodsInfo.selfGoodsYn}]]);
-		
-		// ep 쿠폰확인
-		fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
-		
 		
 	});
 	
@@ -2160,6 +2095,86 @@
  		});
  	}
      
+
+	// 광고 스크립트용
+	var goodsNavigation = [[${goodsNavigation}]];
+	var cate1Nm = "";
+	var cate2Nm = "";
+	var cate3Nm = "";
+	var cate4Nm = "";
+	var cate5Nm = "";
+	if (!gagajf.isNull(goodsNavigation)) {
+		cate1Nm = goodsNavigation.cate1Nm;
+		cate2Nm = goodsNavigation.cate2Nm;
+		cate3Nm = goodsNavigation.cate3Nm;
+		cate4Nm = goodsNavigation.cate4Nm;
+		cate5Nm = goodsNavigation.cate3Nm;
+
+		if (!gagajf.isNull(cate1Nm)) {
+			cateNm += cate1Nm;
+		}
+		if (!gagajf.isNull(cate2Nm)) {
+			cateNm += ' > ' + cate2Nm;
+		}
+		if (!gagajf.isNull(cate3Nm)) {
+			cateNm += ' > ' + cate3Nm;
+		}
+		if (!gagajf.isNull(cate4Nm)) {
+			cateNm += ' > ' + cate4Nm;
+		}
+		if (!gagajf.isNull(cate5Nm)) {
+			cateNm += ' > ' + cate5Nm;
+		}
+	}
+	// 광고 스크립트용
+	
+     
+	var snsGoodsImg = _uploadGoodsUrl + [[${goodsInfo.sysImgNm}]];
+	var snsUrl = location.protocol + _PAGE_GOODS_DETAIL + params.goodsCd;
+	if (typeof (params.colorCd) != 'undefined') snsUrl += "&colorCd=" + params.colorCd;
+	var snsGoodsFullNm = [[${goodsInfo.goodsFullNm}]];
+	
+	<!-- 페이스북 카카오스토리 연동 관련 메타태그 -->
+	$("meta[property='og:url']").attr('content', snsUrl);
+	$("meta[property='og:title']").attr('content', snsGoodsFullNm);
+	$("meta[property='og:description']").attr('content', snsGoodsFullNm);
+	$("meta[property='og:image']").attr('content', snsGoodsImg);
+
+	<!-- 트위터 관련 메타태그 -->
+	$("meta[name='twitter:url']").attr('content', snsUrl);
+	$("meta[name='twitter:title']").attr('content', snsGoodsFullNm);
+	$("meta[name='twitter:description']").attr('content', snsGoodsFullNm);
+	$("meta[name='twitter:image']").attr('content', snsGoodsImg);
+
+	// 추천솔류션 meta 설정
+	$("meta[property='eg:type']").attr('content',"product");
+	$("meta[property='eg:cuid']").attr('content',eglqueueCuid);
+	$("meta[property='eg:itemId']").attr('content', [[${goodsInfo.goodsCd}]] );
+	$("meta[property='eg:itemName']").attr('content',[[${goodsInfo.goodsFullNm}]] );
+	$("meta[property='eg:itemImage']").attr('content', snsGoodsImg);
+	$("meta[property='eg:itemUrl']").attr('content',snsUrl);
+	$("meta[property='eg:originalPrice']").attr('content',[[${goodsInfo.listPrice}]]);
+	$("meta[property='eg:salePrice']").attr('content',[[${goodsInfo.currPrice}]]);
+	$("meta[property='eg:category1']").attr('content',cate1Nm);
+	$("meta[property='eg:category2']").attr('content',cate2Nm);
+	$("meta[property='eg:category3']").attr('content',cate3Nm);
+	$("meta[property='eg:category4']").attr('content',cate4Nm);
+	$("meta[property='eg:category5']").attr('content',cate5Nm);
+	$("meta[property='eg:brandId']").attr('content',[[${goodsInfo.brandGroupNo}]]);
+	$("meta[property='eg:brandName']").attr('content',[[${goodsInfo.brandGroupNm}]]);
+	$("meta[property='eg:regDate']").attr('content',[[${goodsInfo.regDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+	$("meta[property='eg:updateDate']").attr('content',[[${goodsInfo.updDt}]].toDate("YYYYMMDDHHmmss").format("YYYY-MM-DDTHH:mm:ssZ"));
+	$("meta[property='eg:stock']").attr('content',"");
+	$("meta[property='eg:state']").attr('content',[[${goodsInfo.goodsStatNm}]]);
+	$("meta[property='eg:description']").attr('content',null);
+	$("meta[property='eg:extraImage']").attr('content',null);
+	$("meta[property='eg:locale']").attr('content',"KR");
+	$("meta[property='eg:isNew']").attr('content',([[${goodsInfo.formalGb}]] == 'G009_10')? 'True' :'False');
+	$("meta[property='eg:etc1']").attr('content', [[${goodsInfo.selfGoodsYn}]]);
+	
+	// ep 쿠폰확인
+	fnEpCouponDown([[${afLinkCd}]], [[${params.goodsCd}]], 1);
+   
      
 /*]]>*/
 </script>

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

@@ -65,7 +65,7 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	
-	var fnGoodsQnaList = function() {debugger;
+	var fnGoodsQnaList = function() {
 		
 		// 상품문의창 닫기
 		//$("#layer_goods_qna_reg").modal("hide");

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

@@ -635,7 +635,26 @@
 	
 	// 구성 상품 상세 문의
 	var fnGoodsDetailQna = function(params) {
-		gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+		//gagajf.ajaxSubmit("/goods/detail/qna/frame", "html", "goodsDealQna", params);
+		
+		$.ajax( {
+			type		: "POST",
+			url 		: '/goods/detail/qna/frame',
+			data		: JSON.stringify(params),
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				if (result != null) {
+					$("#goodsDealQna").css("display", "block");
+					$("#goodsDealQna").html(result);
+					fnGoodsQnaList();
+				}
+			}
+		});
 	}
 	
 	// 문의 상품선택시

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

@@ -32,7 +32,7 @@
 				</div>
 				<div class="form_field">
 					<div class="input_box">
-						<textarea class="doc_itemqna" name="questContent" id="" cols="30" rows="10" maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
+						<textarea class="doc_itemqna" name="questContent" id="questContent" cols="30" rows="10" maxlength="500" placeholder="문의내용 입력(500자 이내)" style="resize: none;"></textarea>
 						<p class="txt_cnt">
 							<span id="itemqna_cnt" class="itemqna_cnt">(<em class="c_primary">0</em>/500자)</span>
 						</p>			  
@@ -101,6 +101,10 @@
 			mcxDialog.alert("문의내용을 입력해주세요.");
 			return false;
 		}
+		if($('#goodsQnaDetailForm textarea[name=questContent]').val().length<20){
+			mcxDialog.alert("문의내용을 20자 이상 입력해주세요.");
+			return;
+		}
 		
 		gagajf.ajaxFormSubmit($('#goodsQnaDetailForm').prop('action') , $('#goodsQnaDetailForm'), btnGoodsQnaSaveCallBack());
 		

+ 1 - 1
src/main/webapp/WEB-INF/views/web/order/OrderAddPaymentFormWeb.html

@@ -162,7 +162,7 @@
 													<img th:src="${imageUrl + '/' + goods.sysImgNm}" src="/" width="100%" alt="">
 												</span>
 												<figcaption>
-													<div class="brand" th:text="${goods.brandEnm} + ' ' + ${goods.brandKnm}"></div>
+													<div class="brand" th:text="${goods.brandGroupNm}"></div>
 													<div class="name goodsNm" th:text="${goods.goodsNm}"></div>
 													<div class="option" th:each="colorNm, index : ${goods.colorNmArr}">
 														<span th:text="${colorNm}+'/'+${goods.optCd2Arr[index.index]}"></span> 

+ 16 - 4
src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html

@@ -16,6 +16,7 @@
 <body>
 <th:block layout:fragment="content">
 <!--  container -->
+<script type="text/javascript" src="//wcs.naver.net/wcslog.js"></script>
 <div id="container" class="container od">
 	<div class="wrap">
 		<div class="content completed">
@@ -84,10 +85,6 @@
 													<ul>
 														<li>
 															<span id="recipNm" th:text="${orderInfo.recipNm}"></span>
-															<!-- 
-															<span class="tag">기본배송지</span>
-															<span class="tag primary_line">총알배송</span>
-															 -->
 														</li>
 														<li>
 															<span id="recipPhnno" th:text="${orderInfo.recipPhnno}"></span>
@@ -455,6 +452,21 @@ x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);
 <!-- //2021.05.27 주문완료 로그스크립트 삽입 -->
 
 
+<!--네이버페이 전환스크립트를 이용하여 전환값 설정-->
+<script th:inline="javascript">
+	var _nasa={};
+	if (window.wcs) _nasa["cnv"] = wcs.cnv("1","[[${realOrdSumAmt}]]");
+</script>
+<!--위 스크립트를 통해 설정된 전환값과 본 페이지의 로그를 서버에 전송-->
+<script th:inline="javascript">
+	if (!wcs_add) var wcs_add = {};
+	wcs_add["wa"] = "${@environment.getProperty('naverPay.common.certification.key')}";
+	if (!_nasa) var _nasa = {};
+	if (window.wcs) {
+		wcs.inflow("style24.com");
+		wcs_do(_nasa); //서버로 로그 전송
+	}
+</script>
 
 
 </th:block>

+ 2 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -359,12 +359,11 @@ $(document).ready(function() {
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
 	}else{
+		$('.day').html('<span>' + (custAttendList.length + 1) + '</span>일');
+		$("#td_"+date).attr("class","today");
 		$.each(custAttendList, function(idx, item) {
-			$('.day').html('<span>' + custAttendList.length + '</span>일');
 			if(item.entryDt == date){
 				$("#td_"+date).attr("class","complete");
-			}else{
-				$("#td_"+date).attr("class","today"); 
 			}
 		})
 	}

+ 13 - 3
src/main/webapp/biz/goods.js

@@ -301,16 +301,20 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		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>';
 			if(item.currPrice != item.listPrice){
 				if(item.listPrice != 0){
+					tag += '				<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
 					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
 				}
 			}
 			tag += '			</p>';
 		}else{
 			tag += '			<p class="itemPrice">';
-			tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+				}
+			}
 			tag += item.currPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
 			if(item.currPrice != item.listPrice){
 				if(item.listPrice != 0){
@@ -736,6 +740,7 @@ var fnDeleteFilterSlider = function (obj, gubun, minVal, maxVal){
 
 // 정렬 순서
 var fnSortingChange = function (obj, sortingType, stat, appGb){
+	fnCategoryGoodsInfiniteScrollInit();
 	if(stat != 'back'){
 		if($("#searchGoodsForm input[name=sortingType]").val()==sortingType){
 			return;
@@ -759,8 +764,13 @@ var fnSortingChange = function (obj, sortingType, stat, appGb){
 		$("#sorting"+sortingType).addClass("on");
 	}
 	$("#searchGoodsForm").find("[name=sortingType]").val(sortingType);
+	$("#searchGoodsForm").find("[name=pageNo]").val(1);
+	gagaInfiniteScroll.pageStatus.loadPage = 1;
+	gagaInfiniteScroll.pageStatus.pageNum = [];
 	gagaInfiniteScroll.pageStatus.sortingType = sortingType;
-	fnCategoryGoodsInfiniteScrollInit();
+
+	$('#endPage').hide();
+	$('#noFilterData').hide();
 	fnGoodsListSearch();
 }
 

+ 184 - 0
src/main/webapp/biz/search.js

@@ -0,0 +1,184 @@
+//**************** 검색 상품리스트  start **********************************
+var categoryGoodsList = [];
+var cnt = 1;
+var email = '';
+var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage, endRow, appGb) {
+	var tag = '';
+	var rank = 0;
+	if(lastPage!='1'){
+		rank = endRow;
+	}
+
+	$.each(result.dataList, function(idx, item) {
+		if (idx < 4) {
+			categoryGoodsList.push(item.goodsCd);
+		}
+
+		tag += '<div class="item_prod" id="'+item.goodsCd+item.mainColorCd+'">';
+		tag += '	<div class="item_state';
+		if(!gagajf.isNull(item.sizes)){
+			var sizeArr = item.sizes.split(",");
+			let soldOutCnt = 0;
+			for(let i=0; i<sizeArr.length; i++){
+				var sizeInfo = sizeArr[i].split(":");
+				var sizeVal = sizeInfo[0];
+				var soldOutYn = sizeInfo[1];
+				if(soldOutYn=='Y'){
+					soldOutCnt++;
+				}
+			}
+			if(sizeArr.length==soldOutCnt){
+				tag += ' soldout';
+			}
+		}
+		tag += '">';
+		tag += '		<button type="button" class="itemLike';
+		if(item.likeIt == 'likeit'){
+			tag += ' likeit';
+		}
+		tag += ' "';
+		if(appGb == 'Mob'){
+			tag += ' onClick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}else{
+			tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+		}
+		tag += '<a href="javascript:void(0);" class="itemLink" onclick="fnClickGoodsCd(\''+item.goodsCd+'\',\''+item.mainColorCd+'\');">';
+		tag += '			<div class="itemPic">';
+		if(!gagajf.isNull(item.videos)){
+			var videoArr = item.videos.split(",");
+			var videoGb = '';
+			var videoUrl = '';
+			for(let i=0; i<videoArr.length; i++){
+				var videoInfo = videoArr[i].split(":");
+				videoGb = videoInfo[0];
+				videoUrl = videoInfo[1];
+			}
+			if(videoGb=='Y'){
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="https://www.youtube.com/embed/'+videoUrl+'?autoplay=1&mute=1"></iframe>';
+				//tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/164MyIiv?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+			}else{
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="'+_kollusMediaUrl+'/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+			}
+		}
+		tag += '		<img class=" vLHTC pd_img" src="'+goodsUrl+'/'+item.sysImgNm+'" data-img="'+goodsUrl+'/'+item.sysImgNm2+'" onerror="noneImg(this)">';
+		if(!gagajf.isNull(item.sizes) && item.selfGoodsYn=='Y'){
+			var sizeArr = item.sizes.split(",");
+			var minSize;
+			var maxSize;
+			var sizeVal = '';
+			var soldOutYn = '';
+			tag +='<div class="itemOpt">';
+
+			if(sizeArr.length>5){
+				for(let i=0; i<sizeArr.length; i++){
+					var sizeInfo = sizeArr[i].split(":");
+					sizeVal = sizeInfo[0];
+					soldOutYn = sizeInfo[1];
+					if(i==0){
+						minSize = sizeVal;
+					}else if(i==sizeArr.length-1){
+						maxSize = sizeVal;
+					}
+				}
+				tag +='	<div class="exc">';
+				tag +='		<span>'+minSize+'</span> ~ <span>'+maxSize+'</span> 사이즈가 있습니다.';
+				tag +='	</div>';
+			}else{
+				tag += '<ul>';
+				for(let i=0; i<sizeArr.length; i++){
+					var sizeInfo = sizeArr[i].split(":");
+					sizeVal = sizeInfo[0];
+					soldOutYn = sizeInfo[1];
+					if(soldOutYn=='N'){
+						tag +='		<li>'+sizeVal+'</li>';
+					}else{
+						tag +='		<li class="none">'+sizeVal+'</li>';
+					}
+				}
+				tag += '</ul>';
+			}
+			tag += '			</div>';
+		}
+
+		tag += '			</div>';
+
+		tag += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
+		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>';
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
+				}
+			}
+			tag += '			</p>';
+		}else{
+			tag += '			<p class="itemPrice">';
+			tag += '				<span class="itemPrice_original">'+item.listPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")+'</span>';
+			tag += item.currPrice.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
+			if(item.currPrice != item.listPrice){
+				if(item.listPrice != 0){
+					tag += '				<span class="itemPercent">'+ Math.round((item.listPrice - item.currPrice) / (item.listPrice * 1.0) * 100) +'%</span>';
+				}
+			}
+			tag += '			</p>';
+		}
+
+		tag += '			<div class="itemcolorchip">';
+		if(!gagajf.isNull(item.colorChips)){
+			var colorArr = item.colorChips.split(",");
+			var colorCd = '';
+			var rgbColor = '';
+			for(let i=0; i<colorArr.length; i++){
+				var colorInfo = colorArr[i].split(":");
+				colorCd = colorInfo[0];
+				rgbColor = colorInfo[1];
+				if(rgbColor=='#FFFFFF'){
+					tag += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+				}else{
+					tag += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+				}
+			}
+		}
+		tag += '			</div>';
+
+		if(!gagajf.isNull(item.benefits)){
+			var iconArr = item.benefits.split(",");
+			var iconGb = '';
+			var iconNm = '';
+			tag += '	<p class="itemBadge">';
+			let arrCnt;
+			if(iconArr.length > 2){
+				arrCnt = 3;
+			}else{
+				arrCnt = iconArr.length;
+			}
+			for(let i=0; i<arrCnt; i++){
+				var iconInfo = iconArr[i].split(":");
+				iconGb = iconInfo[0];
+				iconNm = iconInfo[1];
+				tag += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+			}
+			tag += '	</p>';
+		}
+
+		if(item.goodsTnm != null){
+			tag += '			<div class="itemComment">'+item.goodsTnm+'</div>';
+		}
+		tag += '		</a>';
+		tag += '	</div>';
+		tag += '</div>';
+	});
+
+	return tag;
+}
+
+// 인피니트 스크롤 초기화
+var fnCategoryGoodsInfiniteScrollInit = function(){
+	sessionStorage.removeItem(document.location.href);
+	//History 초기화
+	$("#listBox").html("");
+}
+
+//****************상품리스트  end **********************************

+ 6 - 2
src/main/webapp/ux/mo/css/layout_m.css

@@ -540,6 +540,8 @@
 .pd_detail .timer_box p .timer em::before {content:':'; position:absolute; left:-1px; top:50%; transform:translateY(-50%);}
 .pd_detail .timer_box p .timer em:first-of-type {padding-left:0.8rem;}
 .pd_detail .timer_box p .timer em:first-of-type::before {display:none;}
+.pd_detail .timer_box p .timer em#d-days::after {content:'일'}
+.pd_detail .timer_box p .timer em#d-hours::before {display:none;}
 .pd_detail .descript_box {padding-top: 2.4rem;}
 .pd_detail .option_box .opt_color{padding:3rem 0;}
 .pd_detail .option_box .opt_color ul {margin:0 -2rem; padding-left:2rem; overflow-x:auto; font-size:0; white-space:nowrap;}
@@ -831,6 +833,8 @@
 .product_floormenu.soldout .prd_buy > .cantbuying{display:block; background-color:#ddd;}
 .product_floormenu.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0);}
 
+
+
 /* 토스트팝업 > 구매하기 */
 .container.btPop_full.pd_open::after, 
 .container.btPop_open.pd::after{position:fixed; z-index: 100;}
@@ -924,7 +928,7 @@
 .pd .pd_detail .pop_option_select .form_wrap .form_field:nth-child(2) .select:before {content: '옵션2';display: inline-block;width: 0;height: 0;position: absolute;left: 1rem;}
 
 .pd .pd_detail .pop_option_select .select_custom .deal_opt_item .select .item_prod {top:-0.1rem;}
-.pd .pd_detail .pop_option_select .select_custom .combo .select{color: #777777;text-overflow: ellipsis;white-space: nowrap;word-wrap: normal;overflow: hidden;padding-right: 4rem;padding-left: 5rem; min-height:4.5rem; padding-bottom:0}
+.pd .pd_detail .pop_option_select .select_custom .combo .select{color: #777777;text-overflow: ellipsis;white-space: nowrap;word-wrap: normal;overflow: hidden;padding-right: 4rem;padding-left: 5rem; min-height:4.5rem; padding-bottom:0; font-size:1.4rem;}
 .pd .pd_detail .pop_option_select .select_custom .combo .list{position:relative; top:0; margin-top:-0.6rem}
 .pd .pd_detail .pop_option_select .select_custom .combo .list>li{padding:1.2rem 4.2rem 1.2rem 1.2rem; line-height:2rem; word-wrap: break-word;}
 .pd .pd_detail .pop_option_select .select_custom .combo .list>li[data-soldout="true"]::after{top:1rem}
@@ -1643,7 +1647,7 @@
 .select_custom.deal_opt_item .combo .list > li[aria-disabled="true"] a img {opacity:0.3;}
 /* tab_detail_cont >  item_prod*/
 .tab_detail_cont .item_blk .item_prod .item_state .itemLink .itemBrand{padding-right:0; margin:0; margin-bottom:0.3rem;}
-.tab_detail_cont .item_blk .item_prod .item_state .itemLink .itemName{-webkit-line-clamp:1; padding-right:0; margin:0;}
+.tab_detail_cont .item_blk .item_prod .item_state .itemLink .itemName{/*-webkit-line-clamp:1;*/ padding-right:0; margin:0;}
 /* deal_list_select  >  item_prod*/
 .deal_list_select .item_prod .item_state .itemLink .itemBrand{padding-right:0; margin:0; margin-bottom:0.3rem;}
 .deal_list_select .item_prod .item_state .itemLink .itemName{-webkit-line-clamp:1; padding-right:0; margin:0;}

+ 25 - 12
src/main/webapp/ux/mo/css/style24_m.css

@@ -389,7 +389,8 @@
 .main_pick .inner_head {padding: 0 0 0.9rem 0;position: relative;}
 .main_pick .inner_head .pick-head{padding: 0; box-sizing: border-box;overflow: visible;}
 .main_pick .inner_head .pick-head .swiper-wrapper{transform: translate3d(0px, 0px, 0px);}
-.main_pick .inner_head .pick-head ul > li{width: auto; text-align: center;}
+.main_pick .inner_head .pick-head ul > li{width: auto; text-align: center; padding-right: 2rem;}
+.main_pick .inner_head .pick-head ul > li:last-child {padding-right: 0;}
 .main_pick .inner_head .pick-head ul > li button,
 .main_pick .inner_head .pick-head ul > li a{padding: 1.46rem 0rem 1.3rem 0rem; border:0; position: relative;}
 .main_pick .inner_head .pick-head ul > li.on button,
@@ -897,11 +898,11 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my table input[type="text"], table input[type="password"] {padding: 0 1.4rem; font-size: 1.3rem;}
 .my .btn_group {width: 100%; margin-top: 0;}
 .my .btn_popup {display:inline-block; position:absolute; left:auto; right: 0; top:-0.75rem; padding:0px 1rem; height:3rem; color:#222; font-size:1.1rem; font-weight:300; border:1px solid #a7a7a7; box-sizing:border-box;}
-.my .btn_group .btn {width: 100%;}
+.my .btn_group .btn {width: 100%; height: 5rem;}
 /* main.my .inner:last-child {padding-bottom: 0; margin-bottom: 0;} */
 .my .desc_txt {margin-top: 1.5rem; font-size: 1.1rem; color: #666; font-weight: 200; position: relative; padding-left: 0.6rem;}
 .my .desc_txt:before {content:''; position: absolute; left: 0; top: 0.6rem; width: 0.2rem; height: 0.2rem; background: #888;}
-.my .required_group {margin-bottom: 1.8rem; padding:1.5rem 0; position: relative; background: #fff6f2; border: 1px solid #ffe4d9; text-align: center;}
+.my .required_group {margin-bottom: 3rem; padding:1.5rem 0; position: relative; background: #fff6f2; border: 1px solid #ffe4d9; text-align: center;}
 .my .required_group:after, 
 .my .required_group:before {content: "";position: absolute;top: 100%;left: 50%;height: 0;width: 0;border: solid transparent;pointer-events: none; z-index: 8;}
 .my .required_group:after {margin-left: -0.7rem; margin-top: 0rem; border-width: 0.7rem;border-color: rgba(255, 246, 242, 0);border-top-color: #fff6f2;}
@@ -1005,7 +1006,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .part_goods {position:relative;}
 .my .part_goods:first-child {margin-top: -1.2rem; padding-top:3rem}
 .my .part_goods h3.subH2 span {color:#888; font-size:1.6rem; font-weight:200;}
-.my .part_goods .goods_section {padding-bottom: 2.4rem; margin-bottom: 2.4rem; border-bottom: 1px solid #eee;}
+.my .part_goods .goods_section {padding-bottom: 2.4rem; margin-bottom: 2.4rem; border-bottom: 0.1rem solid #eee;}
 .my .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
 .my .part_goods .btn_area {position:absolute; right:0; top:-8px; z-index:2;}
 .my .part_goods .btn_area button {padding:8px 14px; background:#f5f5f5; border:none; color:#222; font-size:14px; font-weight:200;}
@@ -1091,11 +1092,14 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .tip_wrap ul li::before{content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.2rem;height: 0.2rem;}
 .my .review .tab_cont .inner:first-child {margin-top: 0;}
 .my .review .tab_cont .inner {margin-top: 1.2rem;}
-.my .review .tab_cont .inner .reviewMy {padding: 2.4rem 0 6rem; font-weight: 200;}
-.my .review .tab_cont .inner .reviewMy::before {content: ''; width: 100%; height: 0.1rem; display: block; background: #eeeeee; position: relative; top: -2.45rem; left: 0; }
+.my .review .tab_cont .inner .reviewMy {padding: 0 0 2.4rem; font-weight: 200;}
+/* .my .review .tab_cont .inner .reviewMy::before {content: ''; width: 100%; height: 0.1rem; display: block; background: #eeeeee; position: relative; top: -2.45rem; left: 0; } */
 .my .review .part_goods {padding-top: 2.4rem;}
 .my .review .part_goods:first-child {margin-top: 0;}
-.my .review .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 0;}
+.my .review .part_goods .goods_section:last-child {padding-bottom: 2.4rem;margin-bottom: 2.4rem;border-bottom:0.1rem solid #eee;}
+/* .my .review .part_goods .goods_section:last-of-type {padding-bottom: 2.4rem;margin-bottom: 2.4rem;border-bottom:0.1rem solid #eee;} */
+.my .review  .btn_group {padding-bottom: 2.4rem;}
+.my .review  .btn_group .btn{height: 4.0rem;}
 .my .review .part_goods .goods_detail .info_box {padding-top: 1.6rem;}
 .my .review .part_goods .goods_detail .info_box .goods_date {font-size: 1.3rem;}
 .my .review .part_goods .goods_detail .info_box .od_name .brand {padding-top: 1.5rem; overflow:hidden; text-overflow: ellipsis; white-space: nowrap;}
@@ -1147,7 +1151,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .review .reviewMy .photo_box .photo_list > ul li {display: inline-block; /*width:calc((100% - 9.0rem)/10);*/ width: 7.2rem; margin-left:0.8rem}
 .my .review .reviewMy .photo_box .photo_list > ul li:nth-child(10n-9) {margin-left:0;}
 .my .review .reviewMy .photo_box .photo_list .pic {width: 7.2rem; height: 7.2rem;}
-.my .review .reviewMy .photo_box .photo_list .pic span {display: block; width: 100%; height: 100%; background-size:100%;}
+.my .review .reviewMy .photo_box .photo_list .pic span {position: relative; display: block; height:0; padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
+.my .review .reviewMy .photo_box .photo_list .pic span.thumb.mov::after {content:''; position:absolute; left:0; top:0; width:100%; height:100%; background:rgba(0,0,0,0.3) url('/images/pc/ico_play.png') no-repeat 50% 50%; z-index:2;}
 .my .review .reviewMy .txt_review_box {margin-top:1.9rem; font-size: 1.3rem; line-height:2.1rem;}
 .my .review .reviewMy .reply_box {margin-top:1.5rem; padding-top:1.5rem;}
 .my .review .reviewMy .reply_box .reply {position:relative; padding:2.0rem; background:#f5f5f5;}
@@ -1382,10 +1387,11 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 /* my_return_2 */
 .my .my_return .inner {margin-bottom: 1.2rem;}
 .my .my_return .ship_info dl > div.addr {width: 100%;}
-.my .my_return .desc_txt,.my .my_exchange .desc_txt {margin-top: -1.5rem; margin-bottom: 3rem;}
+.my .my_return .desc_txt,.my .my_exchange .desc_txt {margin-top: -1.5rem; margin-bottom: 4.2rem;}
 .my .my_return .tbl .desc_txt {margin-top: 1.3rem; margin-bottom: 0;}
 .my .my_return .tbl_radio label span b {display: inline-block; font-weight: 200; margin-left: 5px;}
 .my .my_return .pay_wrap .tbl .refund_deduct {margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px dashed #ddd;}
+.my .my_return .btn_group {margin-top: -1.2rem;}
 
 /* my_return_3 */
 .my .my_return .tbl_tarea td {font-weight: 300;}
@@ -1397,6 +1403,10 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%; margin-bottom: 0.5rem;}
 .my .my_return .retrieve_box.direct .ship_info dl > div:first-child dd {font-weight: 300;}
 
+/* my_exchange_1 */
+.my .my_exchange .txt_ref {margin-bottom: 1.2rem;}
+.my .my_exchange .btn_group {margin-top: -1.2rem;}
+
 /* my_exchange_optionPOP_옵션변경 팝업 */
 .container.my.btPop_open::after, .container.od.btPop_open::after {display: none;}
 .container.my.btPop_open .optionChangePop, .container.od.btPop_open .couponChangePop {top: 55px;}
@@ -1430,6 +1440,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .optionChangePop .option_list li .option_field {margin-top: 1.5rem;}
 .optionChangePop .modal-footer {position: fixed; left: 0; bottom: 0; width: 100%; margin-top: 0;}
 .optionChangePop .modal-footer .btn_group_flex {margin-top: 0;}
+.optionChangePop .modal-footer .btn_group_flex .btn {height: 5rem;}
 
 /* my_return_3_accountPop_환불계좌등록 팝업 */
 .refundAccountPop .btPop_head {display: none;}
@@ -1443,12 +1454,13 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .refundAccountPop .tbl_wrap .tbl table th {padding-bottom: 1rem; font-size: 1.4rem; font-weight: 500;}
 .refundAccountPop .tbl_wrap .tbl table td {font-size: 1.4rem; padding-bottom: 3rem;}
 .refundAccountPop .tbl_wrap .tbl td input {width: 100%; padding:0 1.4rem;}
+.refundAccountPop .tbl_wrap .tbl .select {font-size: 1.3rem;}
 .refundAccountPop .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 .refundAccountPop .tbl_wrap .tbl td .certi_wrap {width: 100%;}
 .refundAccountPop .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 .refundAccountPop .tbl_wrap .tbl table tr:last-child th, .refundAccountPop .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}
 .refundAccountPop .tbl_wrap .tbl table tr:last-child th {padding-bottom: 1.5rem;}
-.refundAccountPop .btn_group_flex {margin-top: 1rem;}
+.refundAccountPop .btn_group_flex {margin-top: 1rem; height: 5rem;}
 
 /* my_delivery_1 */
 .my_delivery .modal {display: inline-block; overflow-y: none;}
@@ -1494,7 +1506,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my .myMbLeave .inner:nth-last-child(2) {background: #fff;margin-bottom: 0;}
 .my .myMbLeave .mb_leave_complete {text-align: center;padding: 10rem 0 4rem 0;color: #222;font-size: 2.4rem;font-weight: 500;}
 .my .myMbLeave .mb_leave_complete::before {content: '';display: block;width: 8.5rem;height: 8.5rem;position: relative;left: 50%;top: 50%;background: url(/images/mo/ico_complete_check.png) no-repeat;background-size: 100%;background-position: 50% 50%;transform: translate(-50%, -50%);}
-.my .myMbLeave .hold_order .on, .my .myMbLeave .hold_voucher, .my .myMbLeave .hold_coupon {color: #fd4802;}
+.my .myMbLeave .hold_order .on, .my .myMbLeave .hold_voucher, .my .myMbLeave .hold_coupon {color: #222;}
 .my .myMbLeave .tblWrap table {padding: 0;border-top: 0px;}
 .my .myMbLeave .tblWrap table tr td {padding-top:0;}
 .my .myMbLeave .tblWrap table tr td:first-child {border-bottom: 0;}
@@ -2423,10 +2435,11 @@ main.container .shopping_bag .inner:last-child {padding-bottom: 0;}
 .optModifyPop .area_order > div:first-child {margin-top:0}
 .optModifyPop .area_order > div .color {}
 .optModifyPop .select_custom .combo .list {position: static;}
+.optModifyPop .area_order .sale_price {margin-left: 1rem;}
 .optModifyPop .opt_header:after {content:''; display: block; clear:both;}
 .optModifyPop .opt_header {margin-bottom: 1rem; position: relative;}
 .optModifyPop .opt_header > span {float:left;}
-.optModifyPop .opt_header .color {margin-left: 2rem; color: #666;}
+.optModifyPop .opt_header .info {margin-left: 2rem; color: #666;}
 .optModifyPop .opt_header .form_field {position: absolute; top: 0; right: 0; width:auto;}
 .optModifyPop .area_order .opt_color::before {content: ''; display: block; width:100%;border-top: 1px solid #dddddd;position: relative;top: -1.2rem;left: auto;right: auto;}
 .optModifyPop .area_order .opt_color ul {font-size: 0; width: 100%; white-space: nowrap; overflow-x: auto;}

+ 3 - 0
src/main/webapp/ux/mo/js/common_m.js

@@ -372,6 +372,9 @@ $(document).ready(function () {
                     $(".tabbar").addClass("fixed");
                     $(".product_floormenu").addClass("fixed");
                 }
+                if(commonSt < 10){
+                    $(".tabbar").addClass("fixed");
+                }
                 lastScrollTop = commonSt;
             }
         })

+ 6 - 1
src/main/webapp/ux/pc/css/layout.css

@@ -925,7 +925,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 .tbl.type2 {padding:0; border-top:1px solid #000;} 
 .tbl.type2 table {word-break:keep-all;}
 .tbl.type2 table th,
-.tbl.type2 table td {position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:200; font-size:16px; letter-spacing:-0.025em; text-align:center;}
+.tbl.type2 table td {position:relative; padding:20px 0; border-bottom:1px solid #ddd; font-weight:500; font-size:16px; letter-spacing:-0.025em; text-align:center;}
 .tbl.type2 table th {font-weight:500;}
 
 /* 테이블 type3 - 결제정보 (구 버전) */
@@ -2711,6 +2711,8 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_detail .area_desc .desc_wrap .timer_box p .timer em::before {content:':'; position:absolute; left:-1px; top:50%; transform:translateY(-50%);}
 	.pd_detail .area_desc .desc_wrap .timer_box p .timer em:first-of-type {padding-left:15px;}
 	.pd_detail .area_desc .desc_wrap .timer_box p .timer em:first-of-type::before {display:none;}
+	.pd_detail .area_desc .desc_wrap .timer_box p .timer em#d-days::after {content:'일'}
+	.pd_detail .area_desc .desc_wrap .timer_box p .timer em#d-hours::before {display:none;}
 
 	.pd_detail .area_desc .desc_wrap .descript_box {margin-top:15px;}
 	.pd_detail .area_desc .desc_wrap .descript_box .desc_top {position:relative; height:16px; vertical-align:top;}
@@ -3215,6 +3217,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	/* pd_popup > 사이즈정보 */
 	.modal.pd_pop.info_size_pop {max-width:none; width:840px; padding:60px;}
+	.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;}
 	.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;}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است