Browse Source

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

eskim 5 years ago
parent
commit
a883dd2f50
42 changed files with 1363 additions and 827 deletions
  1. 12 2
      src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java
  2. 2 0
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  3. 21 8
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  4. 1 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  5. 3 2
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  6. 2 1
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  7. 5 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  8. 3 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  9. 38 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  10. 269 157
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  11. 2 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfWishlist.xml
  12. 14 25
      src/main/resources/config/application-style.yml
  13. 11 3
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  14. 26 15
      src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html
  15. 3 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html
  16. 2 0
      src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailFormMob.html
  17. 149 0
      src/main/webapp/WEB-INF/views/mob/mypage/ChangeOptionPopupFormMob.html
  18. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html
  19. 286 187
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  20. 3 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html
  21. 21 89
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  22. 7 3
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  23. 20 28
      src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html
  24. 8 6
      src/main/webapp/WEB-INF/views/mob/order/OrderPaymentInfoMob.html
  25. 7 7
      src/main/webapp/WEB-INF/views/mob/planning/PlanningMainFormMob.html
  26. 11 3
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  27. 68 89
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  28. 102 7
      src/main/webapp/WEB-INF/views/web/display/LookbookDetailFormWeb.html
  29. 3 5
      src/main/webapp/WEB-INF/views/web/display/LookbookMainFormWeb.html
  30. 1 1
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  31. 5 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html
  32. 8 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html
  33. 63 60
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  34. 4 4
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  35. 69 63
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  36. 20 15
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  37. 66 10
      src/main/webapp/biz/goods.js
  38. 4 0
      src/main/webapp/ux/mo/css/layout_m.css
  39. 12 3
      src/main/webapp/ux/mo/css/style24_m.css
  40. 5 4
      src/main/webapp/ux/pc/css/common.css
  41. 5 5
      src/main/webapp/ux/pc/css/layout.css
  42. 1 1
      src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

+ 12 - 2
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -223,14 +223,24 @@ public interface TsfPlanningDao {
 	Collection<Plan> getPlanEventList(Plan plan);
 
 	/**
-	 * 총알배송 html 소스 
+	 * 총알배송 상단 html 소스 
 	 *
 	 * @param plan
 	 * @return plan
 	 * @author sowon
 	 * @date 2021. 3. 30
 	 */
-	Plan getShotDeliveryHtml(Plan plan);
+	Plan getShotDeliveryHtmlTop(Plan plan);
+	
+	/**
+	 * 총알배송 하단 html 소스 
+	 *
+	 * @param plan
+	 * @return plan
+	 * @author sowon
+	 * @date 2021. 3. 30
+	 */
+	Plan getShotDeliveryHtmlBtm(Plan plan);
 	
 	/**
 	 * 설문조사 정보

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

@@ -460,6 +460,8 @@ public class TsfCartService {
 			if ("N".equals(goods.getSoldoutYn()) && "Y".equals(goods.getOrdCanYn()) && goods.getGoodsQty() >= goods.getMinOrdQty() && goods.getGoodsQty() <= goods.getMaxOrdQty()) {
 				cartSqs.add(goods.getCartSq());
 			}
+
+			goods.setOrgSavePntAmt((int) (goods.getCurrPrice() * goods.getPntRate() / 100.0));
 		}
 
 		order.setCartSqArr(cartSqs.stream().mapToInt(Integer::intValue).toArray());

+ 21 - 8
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -137,9 +137,9 @@ public class TsfPlanningService {
 			}
 		}
 
-		
 		if (!TsfSession.isLogin()) {
-			if (planningDao.getNonmemberGradeAccessible(plan) > 0) {
+			plan.setCustGrade("G110_60");
+			if ("N".equals(planningDao.getCustomerGradeAccessibleYn(plan))) {
 				msg = "로그인 후 이용 가능합니다.";
 			}
 		}
@@ -319,17 +319,30 @@ public class TsfPlanningService {
 	}
 	
 	/**
-	 * 총알배송 html 소스 
+	 * 총알배송 상단 html 소스 
 	 *
 	 * @param plan
-	 * @return plan
+	 * @return Collection<Plan>
 	 * @author sowon
 	 * @date 2021. 3. 30
 	 */
-	public Plan getShotDeliveryHtml(Plan plan) {
-		return planningDao.getShotDeliveryHtml(plan);
+	public Plan getShotDeliveryHtmlTop(Plan plan) {
+		return planningDao.getShotDeliveryHtmlTop(plan);
 	}
 	
+	/**
+	 * 총알배송 하단 html 소스 
+	 *
+	 * @param plan
+	 * @return Collection<Plan>
+	 * @author sowon
+	 * @date 2021. 3. 30
+	 */
+	public Plan getShotDeliveryHtmlBtm(Plan plan) {
+		return planningDao.getShotDeliveryHtmlBtm(plan);
+	}
+	
+	
 	/**
 	 * 설문조사 정보
 	 *
@@ -573,11 +586,11 @@ public class TsfPlanningService {
 		
 		//이미지등록
 		Plan filePlan = new Plan();
-		if(!StringUtils.isAllEmpty(plan.getMultiReplyOrgFile())) {
+		if(!StringUtils.isAllEmpty(plan.getMultiReplySysFile())) {
 			filePlan.setRegNo(custNo);
 			filePlan.setPlanEntrySq(plan.getPlanEntrySq());
 			//파일아이템 등록
-			String[] fileItemVal1 = plan.getMultiReplyOrgFile();
+			String[] fileItemVal1 = plan.getMultiReplySysFile();
 			int ind = 1;
 			for (int j = 0; j < fileItemVal1.length; j++) {
 				String imgInd = String.valueOf(ind);

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

@@ -464,6 +464,7 @@ public class TsfDisplayController extends TsfBaseController {
 	@ResponseBody
 	public Collection<Lookbook> lookbooklist(Lookbook lookbook) {
 		lookbook.setFrontGb(TsfSession.getFrontGb());
+		lookbook.setFrontYn("Y");
 		return coreLookbookService.getLookbookList(lookbook);
 	}
 

+ 3 - 2
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -166,13 +166,14 @@ public class TsfOrderController extends TsfBaseController {
 				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
 				return mav;
 			}
+			
 			// 선물받기여부
 			giftPackYn = "Y";
 			
 			// 선물하기일때 PC 로 접근하면 
 			if ("P".equals(TsfSession.getFrontGb())) {
-				//mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
-				//return mav;
+				mav.setViewName("redirect:/cart/list/form");					// 장바구니화면이동
+				return mav;
 			}
 		}
 

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

@@ -528,7 +528,8 @@ public class TsfPlanningController extends TsfBaseController {
 		
 		
 		mav.addObject("custAddr", planningService.getCustAddrInfo(addr));
-		mav.addObject("shotHtml", planningService.getShotDeliveryHtml(plan));
+		mav.addObject("shotHtmlTop", planningService.getShotDeliveryHtmlTop(plan));
+		mav.addObject("shotHtmlBtm", planningService.getShotDeliveryHtmlBtm(plan));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningShotGuideForm"));
 		return mav;
 	}

+ 5 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -548,12 +548,15 @@
 		             , CASE WHEN GQDS.GOODS_CD IS NULL AND G.SELF_GOODS_YN = 'Y' THEN 'SHOT'
 		                    WHEN G.SELF_GOODS_YN = 'Y' THEN 'WMS'
 		                    ELSE DFP.DELV_FEE_CD END AS CART_DELV_FEE_CD
-		             , CASE WHEN STOCK.ORD_CAN_YN = 'Y' AND (SELECT  CASE WHEN Z.CNT1 = 0 THEN 'Y' ELSE CASE WHEN CNT2 > 0 THEN 'Y'
-		                                                                                                     ELSE 'N' END END
+		             , CASE WHEN STOCK.ORD_CAN_YN = 'Y' AND (SELECT  CASE WHEN MAX(Z.CNT1) IS NULL THEN 'Y' ELSE CASE WHEN CNT2 > 0 THEN 'Y'
+		                                                                                                              ELSE 'N' END END
 		                                                     FROM    (SELECT COUNT(1) AS CNT1
 		                                                                   , CASE WHEN GOG.CUST_GRADE = CT.CUST_GRADE THEN 1
 		                                                                          ELSE 0 END AS CNT2
 		                                                              FROM   TB_GOODS_ORDER_GRADE GOG
+		                                                              GROUP  BY GOODS_CD, CUST_GRADE
+		                                                              UNION  ALL
+		                                                              SELECT NULL, NULL
 		                                                              WHERE  GOG.GOODS_CD = C.GOODS_CD) Z ) = 'Y' AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT THEN 'Y'
 		                    ELSE 'N' END AS ORD_CAN_YN
 		             , CASE WHEN C.CUST_NO > 0 AND (SELECT IFNULL(SUM(OD.ORD_QTY), 0)

+ 3 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -1215,12 +1215,11 @@
 		                                     FROM TB_CUST_COUPON
 		                                    GROUP BY CPN_ID) CC2
 		                    ON C.CPN_ID = CC2.CPN_ID
-		               WHERE C.DOWN_ABL_YN = 'N'
-		                  AND C.CPN_ID IN (
+		               WHERE C.CPN_ID IN (
 		                                    SELECT PCI.ITEM_VAL 
 		                                    FROM TB_PLAN_CONTENTS_ITEM PCI 
 		                                    WHERE PCI.ITEM_VAL = #{cpnId}
-		                                  )
+		                                  ) 
 		                 AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
 		                 AND C.CPN_STAT = 'G232_11'  -- 진행
 		                 AND CASE WHEN C.TOT_PUB_LIMIT_QTY = 0 THEN 1
@@ -1318,7 +1317,7 @@
 		</if>
 		AND C.SITE_CD = #{siteCd}
 		AND C.CPN_TYPE IN ('G230_20','G230_30')
-		AND C.DOWN_ABL_YN = 'N'
+		AND C.DOWN_ABL_YN = 'Y'
 		AND NOW() BETWEEN C.DOWN_STDT AND C.DOWN_EDDT
 		AND NOW()  <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
 		AND (CASE WHEN 'P' = 'P' THEN C.DC_PVAL

+ 38 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -396,6 +396,7 @@
 		                       WHEN 'G110_30' THEN 'SILVER'
 		                       WHEN 'G110_40' THEN 'BRONZE'
 		                       WHEN 'G110_50' THEN 'WELCOME'
+		                       WHEN 'G110_60' THEN '비회원'
 		                       END AS CUST_GRADE
 		FROM TB_PLAN_CUST_GRADE 
 		WHERE PLAN_SQ = #{planSq}
@@ -1049,7 +1050,8 @@
 		                         , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
 		                                WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
 		                                WHEN GB.BENEFIT_GB = '30' THEN '사은품'
-		                                ELSE '신상'
+		                                WHEN GB.BENEFIT_GB = '40' THEN '신상'
+		                                ELSE '총알배송'
 		                           END                               AS BENEFIT_NM
 		                         , RANK() OVER(PARTITION BY PG.GOODS_CD
 		                                       ORDER BY GB.BENEFIT_GB
@@ -1097,13 +1099,14 @@
 		       ) Z
 	</select>
 	
-	<!-- 총알배송 html 소스  -->
-	<select id="getShotDeliveryHtml" parameterType="Plan" resultType="Plan">
+	<!-- 총알배송 상단 html 소스  -->
+	<select id="getShotDeliveryHtmlTop" parameterType="Plan" resultType="Plan">
 		/* TsfPlanning.getShotDeliveryHtml */
 		SELECT P.PLAN_SQ 
 		      ,P.PLAN_NM 
 		      ,PC.PLAN_CONT_SQ 
 		      ,PF.DISP_YN
+		      ,PF.FRONT_GB 
 		      ,PF.FSRC_PC 
 		      ,PF.FSRC_MOB 
 		FROM TB_PLAN P INNER JOIN TB_PLAN_CONTENTS PC ON P.PLAN_SQ = PC.PLAN_SQ 
@@ -1122,6 +1125,38 @@
 		            </if>
 		        </if>
 		  AND P.OPEN_YN ='Y'
+		  AND PF.FRONT_GB = 'T'
+		  AND PF.DISP_YN ='Y'
+		  AND P.SITE_CD = #{siteCd}
+	</select>
+	
+	<!-- 총알배송 하단 html 소스  -->
+	<select id="getShotDeliveryHtmlBtm" parameterType="Plan" resultType="Plan">
+		/* TsfPlanning.getShotDeliveryHtml */
+		SELECT P.PLAN_SQ 
+		      ,P.PLAN_NM 
+		      ,PC.PLAN_CONT_SQ 
+		      ,PF.DISP_YN
+		      ,PF.FRONT_GB 
+		      ,PF.FSRC_PC 
+		      ,PF.FSRC_MOB 
+		FROM TB_PLAN P INNER JOIN TB_PLAN_CONTENTS PC ON P.PLAN_SQ = PC.PLAN_SQ 
+		                                              AND P.PLAN_SQ = PC.PLAN_SQ
+		               INNER JOIN TB_PLAN_FSRC PF ON P.PLAN_SQ = PF.PLAN_SQ 
+		                                              AND P.PLAN_SQ = PF.PLAN_SQ
+		WHERE 1=1
+		  AND P.PLAN_GB = 'S'
+		  AND P.DEL_YN = 'N'
+		        <if test="frontGb != null and frontGb != ''">
+		            <if test='frontGb == "P"'> <!-- PC웹 -->
+		        AND    P.FRONT_GB IN ('A','P')
+		            </if>
+		            <if test='frontGb == "A" or frontGb == "M"'> <!-- 모바일 -->
+		        AND    P.FRONT_GB IN ('A','M')
+		            </if>
+		        </if>
+		  AND P.OPEN_YN ='Y'
+		  AND PF.FRONT_GB = 'B'
 		  AND PF.DISP_YN ='Y'
 		  AND P.SITE_CD = #{siteCd}
 	</select>

+ 269 - 157
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -47,173 +47,285 @@
 	<!-- 적립내역 조회-->
 	<select id="getAccumulatePointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getAccumulatePointList */
-		SELECT  CASE CPH.OCCUR_GB
-					WHEN 'G069_11' THEN '구매 취소'
-		            WHEN 'G069_12' THEN '상품 구매'
-		            WHEN 'G069_20' THEN '리뷰'
-		            WHEN 'G069_30' THEN '이벤트'
-		            WHEN 'G069_31' THEN '회원가입'
-		            WHEN 'G069_32' THEN '생일'
-		            WHEN 'G069_35' THEN 'APP'
-		            WHEN 'G069_37' THEN '이벤트'
-		            WHEN 'G069_41' THEN '구매 취소'
-		            WHEN 'G069_43' THEN '구매 취소'
-		            WHEN 'G069_44' THEN '관리자'
-		            WHEN 'G069_90' THEN '관리자'
-		       END                                          AS OCCUR_GB
-		    , CASE CPH.OCCUR_GB
-					WHEN 'G069_11' THEN G.GOODS_NM
-		            WHEN 'G069_12' THEN G.GOODS_NM
-		            WHEN 'G069_20' THEN G.GOODS_NM
-		            WHEN 'G069_30' THEN '이벤트'
-		            WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_37' THEN '출석체크'
-		            WHEN 'G069_41' THEN G.GOODS_NM
-		            WHEN 'G069_43' THEN FR.GOODS_NM
-		            WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
-		       END                                          AS  OCCUR_DTL_DESC
-		     , CPH.PNT_AMT
-		     , CPH.REG_DT AS PNT_UPLOAD_DT
-		FROM TB_CUST_POINT_HST CPH
-		LEFT JOIN TB_ORDER_DETAIL OD
-		ON  CPH.ORD_NO = OD.ORD_NO
-		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
-		LEFT JOIN TB_GOODS G
-		ON  OD.GOODS_CD = G.GOODS_CD
-		LEFT JOIN (SELECT FG.GOODS_NM
-		                 ,OFV.ORD_NO 
-		           FROM TB_ORD_FREEGIFT_VAL OFV
-		           INNER JOIN TB_FREE_GOODS FG
-		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
-		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
-		           )FR ON CPH.ORD_NO = FR.ORD_NO
-
-		WHERE CPH.CUST_NO = #{custNo}
-		AND CPH.PNT_AMT > 0
-		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY CPH.REG_DT
-		ORDER BY CPH.REG_DT DESC
+		SELECT Z.*
+		FROM (
+		       SELECT  CASE CPH.OCCUR_GB
+		                    WHEN 'G069_20' THEN '리뷰'
+		                    WHEN 'G069_30' THEN '이벤트'
+		                    WHEN 'G069_31' THEN '회원가입'
+		                    WHEN 'G069_32' THEN '생일'
+		                    WHEN 'G069_35' THEN 'APP'
+		                    WHEN 'G069_36' THEN '상품 구매'
+		                    WHEN 'G069_37' THEN '이벤트'
+		                    WHEN 'G069_40' THEN '상품 구매'
+		                    WHEN 'G069_41' THEN '구매 취소'
+		                    WHEN 'G069_42' THEN '사은품'
+		                    WHEN 'G069_43' THEN '사은품'
+		                    WHEN 'G069_44' THEN '관리자'
+		                    WHEN 'G069_45' THEN '관리자'
+		                    WHEN 'G069_46' THEN '적립취소'
+		                    WHEN 'G069_90' THEN '기타'
+		                    WHEN 'G069_99' THEN '소멸'
+		                    END                                          AS OCCUR_GB
+		               ,CASE CPH.OCCUR_GB
+		                   WHEN 'G069_20' THEN G.GOODS_NM
+		                   WHEN 'G069_30' THEN '이벤트'
+		                   WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_36' THEN G.GOODS_NM
+		                   WHEN 'G069_37' THEN '출석체크'
+		                   WHEN 'G069_40' THEN G.GOODS_NM
+		                   WHEN 'G069_41' THEN G.GOODS_NM
+		                   WHEN 'G069_42' THEN FR.GOODS_NM
+		                   WHEN 'G069_43' THEN FR.GOODS_NM
+		                   WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_45' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_99' THEN '유효기간 경과 소멸'
+		                   END                                          AS  OCCUR_DTL_DESC
+		            , CPH.PNT_AMT
+		            , CPH.UPD_DT AS PNT_UPLOAD_DT
+		       FROM TB_CUST_POINT_HST CPH
+		       LEFT JOIN TB_ORDER_DETAIL OD
+		       ON  CPH.ORD_NO = OD.ORD_NO
+		       AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		       LEFT JOIN TB_GOODS G
+		       ON  OD.GOODS_CD = G.GOODS_CD
+		       LEFT JOIN (SELECT FG.GOODS_NM
+		                        ,OFV.ORD_NO
+		                  FROM TB_ORD_FREEGIFT_VAL OFV
+		                  INNER JOIN TB_FREE_GOODS FG
+		                  ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                  AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                  )FR ON CPH.ORD_NO = FR.ORD_NO
+		       WHERE CPH.CUST_NO = #{custNo}
+		       AND CPH.OCCUR_GB NOT IN ('G069_12','G069_13')
+		       AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		       AND CPH.PNT_AMT <![CDATA[>]]> 0
+		UNION ALL
+		      SELECT  CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN '상품 구매'
+		                  WHEN 'G069_13' THEN '구매 취소'
+		                 END                                          AS OCCUR_GB
+		            , CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN G.GOODS_NM
+		                  WHEN 'G069_13' THEN G.GOODS_NM
+		                 END                                          AS  OCCUR_DTL_DESC
+		           , SUM(CPH.PNT_AMT)
+		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		      FROM TB_CUST_POINT_HST CPH
+		      LEFT JOIN TB_ORDER_DETAIL OD
+		      ON  CPH.ORD_NO = OD.ORD_NO
+		      AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		      LEFT JOIN TB_GOODS G
+		      ON  OD.GOODS_CD = G.GOODS_CD
+		      LEFT JOIN (SELECT FG.GOODS_NM
+		                       ,OFV.ORD_NO
+		                 FROM TB_ORD_FREEGIFT_VAL OFV
+		                 INNER JOIN TB_FREE_GOODS FG
+		                 ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                 AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                 )FR ON CPH.ORD_NO = FR.ORD_NO
+		      WHERE CPH.CUST_NO = #{custNo}
+		        AND CPH.SWITCH_DUE_DT IS NOT NULL
+		        AND CPH.OCCUR_GB IN ('G069_12','G069_13')
+		        AND CPH.PNT_UPLOAD_STAT = 'G070_30'
+		        AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		        AND CPH.PNT_AMT <![CDATA[>]]> 0
+		) Z
+		WHERE Z.PNT_UPLOAD_DT IS NOT NULL
+		ORDER BY Z.PNT_UPLOAD_DT DESC	
 	</select>
 	
 	<!-- 사용내역 조회-->
 	<select id="getUsePointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getUsePointList */
-		SELECT  CASE CPH.OCCUR_GB
-		            WHEN 'G069_10' THEN '상품 구매'
-		            WHEN 'G069_13' THEN '구매 취소'
-		            WHEN 'G069_21' THEN '리뷰'
-		            WHEN 'G069_36' THEN '상품 구매'
-		            WHEN 'G069_40' THEN '상품 구매'
-		            WHEN 'G069_42' THEN '사은품'
-		            WHEN 'G069_46' THEN '적립취소'
-		            WHEN 'G069_90' THEN '관리자'
-		            WHEN 'G069_99' THEN '소멸'
-		       END                                          AS OCCUR_GB
-		     , CASE CPH.OCCUR_GB
-		            WHEN 'G069_10' THEN G.GOODS_NM
-		            WHEN 'G069_13' THEN G.GOODS_NM
-		            WHEN 'G069_21' THEN G.GOODS_NM
-		            WHEN 'G069_36' THEN G.GOODS_NM
-		            WHEN 'G069_40' THEN G.GOODS_NM
-		            WHEN 'G069_42' THEN FR.GOODS_NM
-		            WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_99' THEN '유효기간 경과 소멸'
-		       END                                          AS  OCCUR_DTL_DESC
-		     , CPH.PNT_AMT
-		     , CPH.REG_DT AS PNT_UPLOAD_DT
-		FROM TB_CUST_POINT_HST CPH
-		LEFT JOIN TB_ORDER_DETAIL OD
-		ON  CPH.ORD_NO = OD.ORD_NO
-		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
-		LEFT JOIN TB_GOODS G
-		ON  OD.GOODS_CD = G.GOODS_CD
-		LEFT JOIN (SELECT FG.GOODS_NM
-		                 ,OFV.ORD_NO 
-		           FROM TB_ORD_FREEGIFT_VAL OFV
-		           INNER JOIN TB_FREE_GOODS FG
-		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
-		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
-		           )FR ON CPH.ORD_NO = FR.ORD_NO
-		WHERE CPH.CUST_NO = #{custNo}
-		AND CPH.PNT_AMT <![CDATA[<]]> 0
-		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY CPH.ORD_NO, CPH.REG_DT
-		ORDER BY CPH.REG_DT DESC
+		SELECT Z.*
+		FROM (
+		       SELECT  CASE CPH.OCCUR_GB
+		                    WHEN 'G069_20' THEN '리뷰'
+		                    WHEN 'G069_30' THEN '이벤트'
+		                    WHEN 'G069_31' THEN '회원가입'
+		                    WHEN 'G069_32' THEN '생일'
+		                    WHEN 'G069_35' THEN 'APP'
+		                    WHEN 'G069_36' THEN '상품 구매'
+		                    WHEN 'G069_37' THEN '이벤트'
+		                    WHEN 'G069_40' THEN '상품 구매'
+		                    WHEN 'G069_41' THEN '구매 취소'
+		                    WHEN 'G069_42' THEN '사은품'
+		                    WHEN 'G069_43' THEN '사은품'
+		                    WHEN 'G069_44' THEN '관리자'
+		                    WHEN 'G069_45' THEN '관리자'
+		                    WHEN 'G069_46' THEN '적립취소'
+		                    WHEN 'G069_90' THEN '기타'
+		                    WHEN 'G069_99' THEN '소멸'
+		                    END                                          AS OCCUR_GB
+		               ,CASE CPH.OCCUR_GB
+		                   WHEN 'G069_20' THEN G.GOODS_NM
+		                   WHEN 'G069_30' THEN '이벤트'
+		                   WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_36' THEN G.GOODS_NM
+		                   WHEN 'G069_37' THEN '출석체크'
+		                   WHEN 'G069_40' THEN G.GOODS_NM
+		                   WHEN 'G069_41' THEN G.GOODS_NM
+		                   WHEN 'G069_42' THEN FR.GOODS_NM
+		                   WHEN 'G069_43' THEN FR.GOODS_NM
+		                   WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_45' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_99' THEN '유효기간 경과 소멸'
+		                   END                                          AS  OCCUR_DTL_DESC
+		            , CPH.PNT_AMT
+		            , CPH.UPD_DT AS PNT_UPLOAD_DT
+		       FROM TB_CUST_POINT_HST CPH
+		       LEFT JOIN TB_ORDER_DETAIL OD
+		       ON  CPH.ORD_NO = OD.ORD_NO
+		       AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		       LEFT JOIN TB_GOODS G
+		       ON  OD.GOODS_CD = G.GOODS_CD
+		       LEFT JOIN (SELECT FG.GOODS_NM
+		                        ,OFV.ORD_NO
+		                  FROM TB_ORD_FREEGIFT_VAL OFV
+		                  INNER JOIN TB_FREE_GOODS FG
+		                  ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                  AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                  )FR ON CPH.ORD_NO = FR.ORD_NO
+		       WHERE CPH.CUST_NO = #{custNo}
+		       AND CPH.OCCUR_GB NOT IN ('G069_12','G069_13')
+		       AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		       AND CPH.PNT_AMT <![CDATA[<]]> 0
+		UNION ALL
+		      SELECT  CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN '상품 구매'
+		                  WHEN 'G069_13' THEN '구매 취소'
+		                 END                                          AS OCCUR_GB
+		            , CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN G.GOODS_NM
+		                  WHEN 'G069_13' THEN G.GOODS_NM
+		                 END                                          AS  OCCUR_DTL_DESC
+		           , SUM(CPH.PNT_AMT)
+		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		      FROM TB_CUST_POINT_HST CPH
+		      LEFT JOIN TB_ORDER_DETAIL OD
+		      ON  CPH.ORD_NO = OD.ORD_NO
+		      AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		      LEFT JOIN TB_GOODS G
+		      ON  OD.GOODS_CD = G.GOODS_CD
+		      LEFT JOIN (SELECT FG.GOODS_NM
+		                       ,OFV.ORD_NO
+		                 FROM TB_ORD_FREEGIFT_VAL OFV
+		                 INNER JOIN TB_FREE_GOODS FG
+		                 ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                 AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                 )FR ON CPH.ORD_NO = FR.ORD_NO
+		      WHERE CPH.CUST_NO = #{custNo}
+		        AND CPH.SWITCH_DUE_DT IS NOT NULL
+		        AND CPH.OCCUR_GB IN ('G069_12','G069_13')
+		        AND CPH.PNT_UPLOAD_STAT = 'G070_30'
+		        AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		        AND CPH.PNT_AMT <![CDATA[<]]> 0
+		) Z
+		WHERE Z.PNT_UPLOAD_DT IS NOT NULL
+		ORDER BY Z.PNT_UPLOAD_DT DESC	
 	</select>
 	
 	<!-- 전체내역 조회-->
 	<select id="getAllPointList" parameterType="Point" resultType="Point">
 	/* TsfPoint.getAllPointList */
-		SELECT  CASE CPH.OCCUR_GB
-		            WHEN 'G069_10' THEN '상품 구매'
-		            WHEN 'G069_11' THEN '구매 취소'
-		            WHEN 'G069_12' THEN '상품 구매'
-		            WHEN 'G069_13' THEN '구매 취소'
-		            WHEN 'G069_20' THEN '리뷰'
-		            WHEN 'G069_21' THEN '리뷰'
-		            WHEN 'G069_30' THEN '이벤트'
-		            WHEN 'G069_31' THEN '회원가입'
-		            WHEN 'G069_32' THEN '생일'
-		            WHEN 'G069_35' THEN 'APP'
-		            WHEN 'G069_36' THEN '상품 구매'
-		            WHEN 'G069_37' THEN '이벤트'
-		            WHEN 'G069_40' THEN '상품 구매'
-		            WHEN 'G069_41' THEN '구매 취소'
-		            WHEN 'G069_42' THEN '사은품'
-		            WHEN 'G069_43' THEN '사은품'
-		            WHEN 'G069_44' THEN '관리자'
-		            WHEN 'G069_45' THEN '관리자'
-		            WHEN 'G069_46' THEN '적립취소'
-		            WHEN 'G069_90' THEN '관리자'
-		            WHEN 'G069_99' THEN '소멸'
-		       END                                          AS OCCUR_GB
-     , CASE CPH.OCCUR_GB
-                    WHEN 'G069_10' THEN G.GOODS_NM
-		            WHEN 'G069_11' THEN G.GOODS_NM
-		            WHEN 'G069_12' THEN G.GOODS_NM
-		            WHEN 'G069_13' THEN G.GOODS_NM
-		            WHEN 'G069_20' THEN G.GOODS_NM
-		            WHEN 'G069_21' THEN G.GOODS_NM
-		            WHEN 'G069_30' THEN '이벤트'
-		            WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_36' THEN G.GOODS_NM
-		            WHEN 'G069_37' THEN '출석체크'
-		            WHEN 'G069_40' THEN G.GOODS_NM
-		            WHEN 'G069_41' THEN G.GOODS_NM
-		            WHEN 'G069_42' THEN FR.GOODS_NM
-		            WHEN 'G069_43' THEN FR.GOODS_NM
-		            WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_45' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
-		            WHEN 'G069_99' THEN '유효기간 경과 소멸'
-		       END                                          AS  OCCUR_DTL_DESC
-		     , CPH.PNT_AMT
-		     , CPH.REG_DT AS PNT_UPLOAD_DT
-		FROM TB_CUST_POINT_HST CPH
-		LEFT JOIN TB_ORDER_DETAIL OD
-		ON  CPH.ORD_NO = OD.ORD_NO
-		AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
-		LEFT JOIN TB_GOODS G
-		ON  OD.GOODS_CD = G.GOODS_CD
-		LEFT JOIN (SELECT FG.GOODS_NM
-		                 ,OFV.ORD_NO 
-		           FROM TB_ORD_FREEGIFT_VAL OFV
-		           INNER JOIN TB_FREE_GOODS FG
-		           ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
-		           AND OFV.PRODUCT_NO = FG.PRODUCT_NO
-		           )FR ON CPH.ORD_NO = FR.ORD_NO
-		WHERE CPH.CUST_NO = #{custNo}
-		AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
-		GROUP BY CPH.REG_DT
-		ORDER BY CPH.REG_DT DESC
-	</select>
+		SELECT Z.*
+		FROM (
+		       SELECT  CASE CPH.OCCUR_GB
+		                    WHEN 'G069_20' THEN '리뷰'
+		                    WHEN 'G069_30' THEN '이벤트'
+		                    WHEN 'G069_31' THEN '회원가입'
+		                    WHEN 'G069_32' THEN '생일'
+		                    WHEN 'G069_35' THEN 'APP'
+		                    WHEN 'G069_36' THEN '상품 구매'
+		                    WHEN 'G069_37' THEN '이벤트'
+		                    WHEN 'G069_40' THEN '상품 구매'
+		                    WHEN 'G069_41' THEN '구매 취소'
+		                    WHEN 'G069_42' THEN '사은품'
+		                    WHEN 'G069_43' THEN '사은품'
+		                    WHEN 'G069_44' THEN '관리자'
+		                    WHEN 'G069_45' THEN '관리자'
+		                    WHEN 'G069_46' THEN '적립취소'
+		                    WHEN 'G069_90' THEN '기타'
+		                    WHEN 'G069_99' THEN '소멸'
+		                    END                                          AS OCCUR_GB
+		               ,CASE CPH.OCCUR_GB
+		                   WHEN 'G069_20' THEN G.GOODS_NM
+		                   WHEN 'G069_30' THEN '이벤트'
+		                   WHEN 'G069_31' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_32' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_35' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_36' THEN G.GOODS_NM
+		                   WHEN 'G069_37' THEN '출석체크'
+		                   WHEN 'G069_40' THEN G.GOODS_NM
+		                   WHEN 'G069_41' THEN G.GOODS_NM
+		                   WHEN 'G069_42' THEN FR.GOODS_NM
+		                   WHEN 'G069_43' THEN FR.GOODS_NM
+		                   WHEN 'G069_44' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_45' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_46' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_90' THEN CPH.OCCUR_DTL_DESC
+		                   WHEN 'G069_99' THEN '유효기간 경과 소멸'
+		                   END                                          AS  OCCUR_DTL_DESC
+		            , CPH.PNT_AMT
+		            , CPH.UPD_DT AS PNT_UPLOAD_DT
+		       FROM TB_CUST_POINT_HST CPH
+		       LEFT JOIN TB_ORDER_DETAIL OD
+		       ON  CPH.ORD_NO = OD.ORD_NO
+		       AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		       LEFT JOIN TB_GOODS G
+		       ON  OD.GOODS_CD = G.GOODS_CD
+		       LEFT JOIN (SELECT FG.GOODS_NM
+		                        ,OFV.ORD_NO
+		                  FROM TB_ORD_FREEGIFT_VAL OFV
+		                  INNER JOIN TB_FREE_GOODS FG
+		                  ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                  AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                  )FR ON CPH.ORD_NO = FR.ORD_NO
+		       WHERE CPH.CUST_NO = #{custNo}
+		       AND CPH.OCCUR_GB NOT IN ('G069_12','G069_13')
+		       AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		UNION ALL
+		      SELECT  CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN '상품 구매'
+		                  WHEN 'G069_13' THEN '구매 취소'
+		                 END                                          AS OCCUR_GB
+		            , CASE CPH.OCCUR_GB
+		                  WHEN 'G069_12' THEN G.GOODS_NM
+		                  WHEN 'G069_13' THEN G.GOODS_NM
+		                 END                                          AS  OCCUR_DTL_DESC
+		           , SUM(CPH.PNT_AMT)
+		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		      FROM TB_CUST_POINT_HST CPH
+		      LEFT JOIN TB_ORDER_DETAIL OD
+		      ON  CPH.ORD_NO = OD.ORD_NO
+		      AND CPH.ORD_DTL_NO = OD.ORD_DTL_NO
+		      LEFT JOIN TB_GOODS G
+		      ON  OD.GOODS_CD = G.GOODS_CD
+		      LEFT JOIN (SELECT FG.GOODS_NM
+		                       ,OFV.ORD_NO
+		                 FROM TB_ORD_FREEGIFT_VAL OFV
+		                 INNER JOIN TB_FREE_GOODS FG
+		                 ON OFV.PRODUCT_CODE = FG.PRODUCT_CODE
+		                 AND OFV.PRODUCT_NO = FG.PRODUCT_NO
+		                 )FR ON CPH.ORD_NO = FR.ORD_NO
+		      WHERE CPH.CUST_NO = #{custNo}
+		        AND CPH.SWITCH_DUE_DT IS NOT NULL
+		        AND CPH.OCCUR_GB IN ('G069_12','G069_13')
+		        AND CPH.PNT_UPLOAD_STAT = 'G070_30'
+		        AND DATE_FORMAT(CPH.UPD_DT,'%Y%m') = #{searchDt}
+		) Z
+		WHERE Z.PNT_UPLOAD_DT IS NOT NULL
+		ORDER BY Z.PNT_UPLOAD_DT DESC	
+		</select>
 
 	<!-- 고객 포인트 내역 -->
 	<select id="getCustomerPoint" parameterType="Integer" resultType="Point">

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

@@ -127,7 +127,8 @@
 		                         , CASE WHEN GB.BENEFIT_GB = '10' THEN '쿠폰할인'
 		                                WHEN GB.BENEFIT_GB = '20' THEN '무료배송'
 		                                WHEN GB.BENEFIT_GB = '30' THEN '사은품'
-		                                ELSE '신상'
+		                                WHEN GB.BENEFIT_GB = '40' THEN '신상'
+		                                ELSE '총알배송'
 		                           END                               AS BENEFIT_NM
 		                         , RANK() OVER(PARTITION BY PG.GOODS_CD
 		                                       ORDER BY GB.BENEFIT_GB

+ 14 - 25
src/main/resources/config/application-style.yml

@@ -8,20 +8,9 @@ spring:
                 max-active: 10
                 max-idle: 10
                 min-idle: 2
-        host: 172.30.90.111
+        host: 172.30.87.5
         port: 6379
-        password:
-        cluster:
-            nodes:
-                172.30.90.111:6379
-                172.30.90.112:6379
-                172.30.90.113:6379
-                172.30.90.111:6380
-                172.30.90.112:6380
-                172.30.90.113:6380
-                172.30.90.111:6381
-                172.30.90.112:6381
-                172.30.90.113:6381
+        password: MdxpyGtipZSci6VhTpFdklXxb4Qv7zxEq3Jqg3ULekg=
 
 # SSL Server
 has-ssl: false
@@ -30,40 +19,40 @@ logging:
     config: classpath:log/logback-run.xml
 
 domain:
-    admin: //admin.style24.com
+    admin: //bos.style24.com
     front: //www.style24.com
-    image: //www.style24.com
+    image: //image.istyle24.com
     uximage: //www.style24.com
 
 
 upload:
     default:
-        target.path: /files/data/style24
+        target.path: /usr/local/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
-        view: //image.style24.com
+        view: //image.istyle24.com
     goods:
-        target.path: /files/data/style24/Upload/ProductImage
+        target.path: /usr/local/data/style24/productimage
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //image.istyle24.com/Upload/ProductImage
     image:
-        target.path: /files/data/style24
+        target.path: /usr/local/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //image.style24.com
+        view: //image.istyle24.com
     excel:
-        target.path: /files/data/style24/excel
+        target.path: /usr/local/data/style24/excel
         max.size: 10
         allow.extension: xls|xlsx
-        view: //image.style24.com/excel
+        view: //image.istyle24.com/excel
     sample:
-        target.path: /files/data/style24/sample
+        target.path: /usr/local/data/style24/sample
         max.size: 10
         allow.extension: txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //image.style24.com/sample
 
-download.path: /files/data
+download.path: /usr/local/data
 
 # USAFE 보증보험 정보
 usafe.guarantee:
@@ -74,7 +63,7 @@ usafe.guarantee:
 # PG
 pg:
     kcp:
-        log.dir: /files/data/style24/logs/kcpLogs/front
+        log.dir: /logs/style24/kcpLogs/front
         gw:
             url: testpaygw.kcp.co.kr
             port: 8090

+ 11 - 3
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -106,6 +106,7 @@
 						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
 						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
 						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
+						<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -142,7 +143,7 @@
 									</th:block>
 								</div>
 								<div class="od_point">
-									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+									<p class="point"><span th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
 									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
@@ -208,6 +209,7 @@
 						<input type="hidden" name="ordCanYn"  th:value="${cart.ordCanYn}" />
 						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
 						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
+						<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -244,7 +246,7 @@
 									</th:block>
 								</div>
 								<div class="od_point">
-									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+									<p class="point"><span th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
 									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
@@ -330,6 +332,7 @@
 						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 						<input type="hidden" name="goodsCd"   th:value="${cart.goodsCd}" />
 						<input type="hidden" name="cartSq"    th:value="${cart.cartSq}" />
+						<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
 						<div class="goods_detail">
@@ -366,7 +369,7 @@
 									</th:block>
 								</div>
 								<div class="od_point">
-									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+									<p class="point"><span th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 								</div>
 								<div class="od_exinfo">
 									<span th:style="${(cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y') or (cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y') ? 'display:inline-block' : 'display:none'}" class="applyTmtb btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
@@ -877,6 +880,8 @@
 						$(this).parent().find(".od_calc .selling_price>em").text($(this).parent().find(".od_calc .sale_price>del>em").text());
 						$(this).parent().find(".od_calc .sale_price").hide();
 					}
+
+					$(this).parent().find(".info_box .point" + $(this).val()).text(Number($(this).parent().find("input[name=orgSavePntAmt]").val()).toLocaleString());
 				});
 
 				for(let i = 0 ; i < shotList.length ; i++) {
@@ -886,6 +891,7 @@
 							let shot = shotList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
 							$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
+							$(this).parent().find(".info_box .point>span").text(Number(shot.savePntAmt).toLocaleString());
 
 							// 다다익선 적용 정보 생성성
 							if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || (shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y")) {
@@ -915,6 +921,7 @@
 							let wms = wmsList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
 							$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
+							$(this).parent().find(".info_box .point>span").text(Number(wms.savePntAmt).toLocaleString());
 
 							// 다다익선 적용 정보 생성성
 							if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
@@ -954,6 +961,7 @@
 							let delv = delvList[i];
 							$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
 							$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
+							$(this).parent().find(".info_box .point>span").text(Number(delv.savePntAmt).toLocaleString());
 
 							// 다다익선 적용 정보 생성성
 							if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {

+ 26 - 15
src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html

@@ -7,23 +7,34 @@
 
 <body>
 
-	<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
-	
-	<div class="app">
-		<!-- GNB -->
-		<th:block th:replace="~{mob/common/fragments/GnbSubMob :: gnb}"></th:block>
-		<!--// GNB -->
+<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
 
-		<!-- CONTENT AREA -->
-		<th:block layout:fragment="content"></th:block>
-		<!-- // CONTENT AREA -->
+<div class="app">
+	<!-- GNB -->
+	<th:block th:replace="~{mob/common/fragments/GnbSubMob :: gnb}"></th:block>
+	<!--// GNB -->
 
-		<!-- Footer -->
-		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+	<!-- CONTENT AREA -->
+	<th:block layout:fragment="content"></th:block>
+	<!-- // CONTENT AREA -->
 
-		<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
-		
-		<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
+	<!-- Footer -->
+	<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
+	
+	<!--교환상품 옵션변경 팝업 -->
+	<div class="modal pop_full optionChangePop" id="exchangePop" tabindex="-1" role="dialog" aria-labelledby="optionChangeLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+				<!--교환상품 옵션변경 팝업 내용 -->
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="exchangePop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //교환상품 옵션변경 팝업 -->
+
+	<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+	
+	<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -44,7 +55,7 @@
 /*]]>*/
 </script>
 
-	</div>
+</div>
 	
 </body>
 </html>

+ 3 - 0
src/main/webapp/WEB-INF/views/mob/goods/GoodsDealDetailFormMob.html

@@ -449,6 +449,9 @@
 	<!-- //바닥메뉴 -->
 </main>
 
+<!-- 바로구매 및 선물하기 장바구니 등록 정보 저장을 위한 form -->
+<form id="directOrderForm" method="POST" action="/order/noMember"></form>
+
 <script th:inline="javascript">
 /*<![CDATA[*/
 	

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

@@ -967,6 +967,8 @@
 		
 </main>
 
+<!-- 바로구매 및 선물하기 장바구니 등록 정보 저장을 위한 form -->
+<form id="directOrderForm" method="POST" action="/order/noMember"></form>
 <script th:src="@{'/biz/goods.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/goods.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/

+ 149 - 0
src/main/webapp/WEB-INF/views/mob/mypage/ChangeOptionPopupFormMob.html

@@ -0,0 +1,149 @@
+<div class="modal-header htop">
+	<h5 class="modal-title" id="optionChangeLabel">교환 옵션 변경</h5>
+</div>
+<div class="modal-body">
+	<div class="pop_cont">
+		<th:block th:if="${exchangeOptionInfo}" th:each="oneData, status : ${exchangeOptionInfo}">
+			<div class="option_list">
+				<ul>
+					<input type="hidden" name="chgOptCd2" th:attr="ordDtlItemSq=${oneData.ordDtlItemSq}, itemNm=${oneData.itemNm}, colorNm=${oneData.colorNm}, orgOptCd2=${oneData.optCd2}, goodsType=${oneData.goodsType}" th:value="${oneData.optCd2}">
+					<!-- 자사일때 opt2 교환 -->
+					<th:block th:if="${oneData.selfGoodsYn == 'Y'}">
+						<li>
+							<div class="option_name">
+								<span>
+									<em th:text="${oneData.itemNm}"></em> / <em th:text="${oneData.colorNm}"></em> / <em th:text="${oneData.optCd2}"></em>
+								</span>
+							</div>
+							<div class="option_box">
+								<th:block th:if="${oneData.optCd2Arr.length > 0}" th:each="option, idx : ${oneData.optCd2Arr}">
+									<button type="button" class="btn btn_default" th:name="${oneData.ordDtlItemSq}" th:id="|${oneData.ordDtlItemSq}_${option}|" th:value="${option}" th:disabled="${#numbers.formatInteger(oneData.currStockQtyArr[idx.index], 0)} <= 0 or ${oneData.soldoutYnArr[idx.index] == 'Y'}" th:checked="${option == oneData.optCd2}" onclick="fnRadioOption(this);">
+										<span th:text="${option}"></span>
+									</button>
+								</th:block>
+							</div>
+						</li>
+					</th:block>
+					<!-- //자사일때 opt2 교환 -->
+					<!-- 입점일때 opt2 교환 -->
+					<th:block th:unless="${oneData.selfGoodsYn == 'Y'}">
+						<li>
+							<div class="option_name">
+								<span>
+									<em th:text="${oneData.itemNm}"></em> / <em th:text="${oneData.colorNm}"></em> / <em th:text="${oneData.optCd2}"></em>
+								</span>
+							</div>
+							<div class="option_select">
+								<div class="select_custom select_option">
+									<div class="combo">
+										<div class="select">선택</div>
+									</div>
+								</div>
+							</div>
+						</li>
+					</th:block>
+					<!-- //입점일때 opt2 교환 -->
+				</ul>
+				
+			</div>
+		</th:block>
+	</div>
+</div>
+<div class="modal-footer">
+	<div class="btn_group_flex">
+		<div><button type="button" class="btn btn_dark" onclick="fnSaveOption();"><span>옵션 저장</span></button></div>
+	</div>
+</div>
+
+<!-- 210408_ 추가 : 교환 옵션 선택 팝업 -->
+<div id="exchangeOptionPop" class="popup_box exchangeOptionPop">
+	<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">
+				<th:block th:each="option, idx : ${oneData.optCd2Arr}">
+					<button type="button" th:disabled="${oneData.optCd2Arr.length} > 0 and (${#numbers.formatInteger(oneData.currStockQtyArr[idx.index],0)} <= 0 or ${oneData.soldoutYnArr[idx.index]} == 'Y')" th:attr="optCd2=${option}" onclick="fnSelectOption(this);">
+						<span th:text="${option}"></span>
+					</button>
+					</th:block>
+				</th:block>
+			</div> 
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 교환 옵션 선택 팝업 -->
+
+<script th:inline="javascript">
+var oneData1 	= [[${oneData}]];
+var chgQty1 	= [[${chgQty}]];
+
+$(document).ready( function() {
+	
+});
+
+// 라디오 클릭 이벤트
+var fnRadioOption = function(param) {
+	$(param).parent().parent().parent().find('input[name=chgOptCd2]').val($(param).val());
+}
+
+// 셀렉트박스 클릭 이벤트
+var fnSelectOption = function(param) {
+	$("#exchangePop .option_list .option_select .select_custom.select_option .select").text($(param).attr('optCd2'));
+	$(param).parent().parent().find('input[name=chgOptCd2]').val($(param).attr('optCd2'));
+}
+
+// 옵션 저장 버튼 클릭 이벤트
+var fnSaveOption = function() {
+	// 변경 옵션 처리
+	let dataArr = [];
+
+	$.each($('#exchangePop input[name=chgOptCd2]'), function(idx, item) {
+		let ordDtlItemSq 	= $(item).attr('ordDtlItemSq');
+		let colorNm 		= $(item).attr('colorNm');
+		let itemNm 			= $(item).attr('itemNm');
+		let goodsType 		= $(item).attr('goodsType');
+		let chgOptCd2 		= $(item).val();
+
+		let data 			= {};
+		data.ordDtlNo 		= oneData1.ordDtlNo;
+		data.ordDtlItemSq 	= ordDtlItemSq;
+		data.chgQty 		= chgQty1;
+		data.colorNm 		= colorNm;
+		data.itemNm 		= itemNm;
+		data.goodsType 		= goodsType;
+		data.chgOptCd2 		= chgOptCd2;
+		dataArr.push(data);
+	});
+	
+	fnChangeOptionCallback(dataArr);
+
+	$('.close-modal').trigger('click');
+}
+
+// 버튼 색
+$(document).on('click','.optionChangePop .option_box button',function(){
+	$('.optionChangePop .option_box button').removeClass('on');
+	$(this).addClass('on');
+});
+
+// 버튼 색
+$(document).on('click','.popup_box .button_list button',function(){
+	$('.popup_box .button_list button').removeClass('on');
+	$(this).addClass('on');
+});
+
+// 반품 사유 선택 팝업
+$(document).on("click",".select_custom.select_option",function(e){
+	$('#exchangeOptionPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
+
+//팝업_닫기 
+$('.exchangeOptionPop .popup_close').on("click",function(){
+	$('.exchangeOptionPop').hide().removeClass('active');
+});
+</script>
+

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

@@ -70,7 +70,7 @@
 									<th:block th:if="${cre.chgGb} == 'G680_40'">
 										<div class="od_exchange_opt">
 											<span>교환옵션</span>
-											<th:block th:each="exchange , index, ${creList.exchangeOptionList}">
+											<th:block th:each="exchange , index : ${creList.exchangeOptionList}">
 												<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo}">
 													<!-- 세트상품일때 -->
 													<th:block th:if="${cre.goodsType} == 'G056_S'">

+ 286 - 187
src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html

@@ -17,11 +17,10 @@
 
 <th:block layout:fragment="content">
 
-<main role="" id="" class="container my">
-	<section class="content my_exchange">
+<main class="container my">
+	<section class="content my_exchange my_return">
 		<form id="exchangeForm" class="form_wrap">
 			<input type="hidden" name="chgReason"/>
-			
 			<div class="inner wide bg_beige">
 				<div class="order_number">
 					<dl class="clear">
@@ -57,26 +56,48 @@
 											<div class="name" th:text="${exchange.goodsNm}"></div>
 										</div>
 										<div class="od_opt">
-											<div class="option">
-												<th:block th:if="${return.goodsType == 'G056_S'}" th:each="option, status : ${return.colorNmArr}">
-													<em th:text="${return.itemNmArr[status.index]}"></em>
-													<em th:text="${return.optCd2Arr[status.index]}"></em>
-												</th:block>
-												<th:block th:unless="${return.goodsType == 'G056_S'}">
-													<em th:text="${return.colorNm}"></em>
-													<em th:text="${return.optCd2}"></em>
-												</th:block>
-											</div>
+											<!-- 세트상풍일때 -->
+											<th:block th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}">
+												<div class="option">
+													<em th:text="${exchange.itemNmArr[status.index]}"></em>
+													<em th:text="${exchange.optCd2Arr[status.index]}"></em>
+												</div>
+											</th:block>
+											<!-- //세트상풍일때 -->
+											<!-- 일반상풍일때 -->
+											<th:block th:unless="${exchange.goodsType == 'G056_S'}">
+												<div class="option">
+													<em th:text="${exchange.colorNm}"></em>
+													<em th:text="${exchange.optCd2}"></em>
+												</div>
+											</th:block>
+											<!-- //일반상풍일때 -->
+										</div>
+										<div class="od_exchange_opt exchangeOption" style="display:none" th:attr="ordDtlNo=${exchange.ordDtlNo}">
+											<th:block th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}">
+												<span>교환옵션</span>
+												<div class="option">
+													<em th:text="${exchange.itemNmArr[status.index]}"></em>
+													<em th:text="${exchange.optCd2Arr[status.index]}"></em>
+												</div>
+											</th:block>
+											<th:block th:unless="${exchange.goodsType == 'G056_S'}">
+												<span>교환옵션</span>
+												<div class="option">
+													<em th:text="${exchange.colorNm}"></em>
+													<em th:text="${exchange.optCd2}"></em>
+												</div>
+											</th:block>
 										</div>
 										<div class="od_calc">
-											<th:block th:if="${(return.ordAmt - return.cnclRtnAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}">
+											<th:block th:if="${(exchange.ordAmt - exchange.cnclRtnAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}">
 												<p class="sale_price">
-													<del><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
+													<del><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
 												</p>
 											</th:block>
 											<p class="price">
 												<span class="selling_price">
-													<em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원
+													<em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원
 												</span>
 											</p>
 										</div>
@@ -86,14 +107,15 @@
 							<div class="goods_select">
 								<div class="select_custom select_count">
 									<div class="combo">
-										<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
+										<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${exchange.ordDtlNo}, ordCanChgQty=${exchange.ordCanChgQty}"/>
+										<input type="hidden" name="chgOptionList" th:attr="ordDtlNo=${exchange.ordDtlNo}"/>
 										<div class="select">수량 0개</div>
 									</div>
 								</div>
 							</div>
 							<div class="goods_btn_wrap btn_group_flex">
 								<div>
-									<button type="button" class="btn btn_dark btn_opion_change">
+									<button type="button" class="btn btn_dark btn_opion_change" th:attr="ordNo=${exchange.ordNo}, ordDtlNo=${exchange.ordDtlNo}" onclick="fnChangeOption(this)">
 										<span>교환 옵션 변경</span>
 									</button>
 								</div>
@@ -107,6 +129,8 @@
 					</th:block>
 				</div>
 			</div>
+			
+			<!-- 교환사유 -->
 			<div class="inner">
 				<div class="tbl_wrap">
 					<div class="tbl_tit"> 
@@ -140,6 +164,9 @@
 					</div>
 				</div>
 			</div>
+			<!-- //교환사유 -->
+			
+			<!-- 반품방식 -->
 			<div class="inner wdGb">
 				<div class="tbl_wrap">
 					<div class="tbl_tit"> 
@@ -177,12 +204,14 @@
 					</div>
 				</div>
 			</div>
+			<!-- //반품방식 -->
+			
 			<div class="inner">
 				<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
 					<div class="tbl_wrap">
 						<div class="tbl_tit"> 
 							<h3>반품 회수지 주소</h3>
-							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
+							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
 						</div>
 						<div class="tbl">
 							<div class="ship_info">
@@ -237,22 +266,22 @@
 				<div class="tbl_wrap">
 					<div class="tbl_tit"> 
 						<h3>교환 상품 배송지</h3>
-						<button type="button" class="btn_popup"><span>배송지 변경</span></button>
+						<button type="button" class="btn_popup" onclick="fnChangeAddr('recip')"><span>배송지 변경</span></button>
 					</div>
 					<div class="tbl">
 						<div class="ship_info">
 							<dl>
 								<div class="name">
 									<dt><span class="sr-only">배송지명</span></dt>
-									<dd th:text="${deliveryAddrInfo.recipNm}"></dd>
+									<dd id="recipNm" th:text="${deliveryAddrInfo.recipNm}"></dd>
 								</div>
 								<div class="addr">
 									<dt><span class="sr-only">배송주소</span></dt>
-									<dd id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
+									<dd id="recipAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
 								</div>
 								<div class="phone">
 									<dt><span class="sr-only">휴대폰 번호</span></dt>
-									<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
+									<dd id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></dd>
 								</div>
 							</dl>
 							<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
@@ -265,12 +294,12 @@
 					</div>
 				</div>
 				<!-- 교환 배송비결제 필요할 경우 -->
-				<div class="required_group">
-					<p>배송비 <span class="c_primary">5,000원</span> 추가 결제가 필요합니다.</p>
+				<div class="required_group" id="addDeliveryFee" style="display:none">
+					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
 				</div>
 				<!-- //교환 배송비결제 필요할 경우 -->
 				<div class="btn_group btn_group_flex">
-					<div><button type="button" class="btn btn_default"><span>취소</span></button></div>
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button></div>
 					<div><button type="button" id="btn_exchange_confirm" class="btn btn_dark" onclick="fnExchange()"><span>교환 신청</span></button></div>
 				</div>
 			</div>
@@ -280,7 +309,7 @@
 
 <!-- 210408_ 추가 : 교환 수량 선택 팝업 -->
 <th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}">
-	<div id="exchangeCountPop" class="popup_box exchangeCountPop">
+	<div class="popup_box exchangeCountPop">
 		<div class="lap">
 			<div class="popup_close">카테고리닫기</div>
 			<div class="popup_head sr-only">
@@ -288,11 +317,15 @@
 			</div>
 			<div class="popup_con">
 				<div class="button_list clear">
-					<button type="button" qty=0 onclick="fnChangeExchangeQty(this);"><span>수량 0개</span></button>
+					<button type="button" qty=0 onclick="fnChangeExchangeQty(this);">
+						<span>수량 0개</span>
+					</button>
 					<th:block th:each="num : ${#numbers.sequence(1, exchange.ordCanChgQty)}">
-						<button type="button" th:qty="${num}" onclick="fnChangeExchangeQty(this);"><span th:text="|수량 ${num}개|"></span></button>
+						<button type="button" th:qty="${num}" onclick="fnChangeExchangeQty(this);">
+							<span th:text="|수량 ${num}개|"></span>
+						</button>
 					</th:block>
-					<input type="hidden" name="ordDtlNo" th:value="${return.ordDtlNo}">
+					<input type="hidden" name="ordDtlNo" th:value="${exchange.ordDtlNo}">
 				</div> 
 			</div>
 		</div>
@@ -327,15 +360,145 @@ let oneData 		= [[${oneData}]];
 let isCustomer 		= false;
 let addrGb 			= '';
 let jsonObj 		= {};
+let ordNo 			= [[${oneData.ordNo}]];
 
-$(document).ready(function() {
-	// 입점업체의 경우 회수방식 방문회수 처리
+$(document).ready(function() {	
+	// 입점업체의 경우 회수방식 직접배송 처리
 	if (oneData.selfGoodsYn != 'Y') {
 		$('#withdraw').click();
 		$('.wdGb').css('display','none');
 	}
 });
 
+// 교환수량버튼기능
+$(".select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".exchangeCountPop").hide();
+		
+		// 수량팝업활성화
+		$(".exchangeCountPop").eq(idx).show().addClass("active");
+		
+		$("body").css({"overflow":"hidden"});
+	});
+});
+
+// 반품 방식 변경 이벤트
+$('#exchangeForm input[name=wdGb]').on('change', function() {
+	let wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
+
+	if (wdGb == 'W') {
+		$('#chgerLocation').css('display', '');
+		$('#returnLocation').css('display', 'none');
+	} else {
+		$('#chgerLocation').css('display', 'none');
+		$('#returnLocation').css('display', '');
+	}
+
+	// 추가 배송비 계산
+	fnAddCost();
+});
+
+// 교환 처리
+var fnExchange = function() {
+	let url 			= '/mypage/exchange';
+	let delvFeeCd 		= oneData.delvFeeCd;
+	let ordDtlNo 		= oneData.ordDtlNo;
+	let supplyCompCd 	= oneData.supplyCompCd;
+	let excDelvFee 		= oneData.excDelvFee;
+	let rtnDelvFee 		= oneData.rtnDelvFee;
+	let chgReason 		= $('#exchangeForm input[name=chgReason]').val();
+	let addPayCost 		= $('#exchangeForm input[name=addPayCost]').val();
+	
+	// 교환 사유 체크
+	if (gagajf.isNull(chgReason)) {
+		mcxDialog.alert('교환 사유를 선택해주세요.');
+		return false;
+	}
+
+	// 교환 상품 설정
+	let chgOrdDtlNoArr = [];
+	$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
+		if (Number($(item).val()) > 0) {
+			chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
+		}
+	});
+
+	// 교환옵션 설정
+	let cancelReqList = [];
+	$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
+		if (chgOrdDtlNoArr.includes($(item).attr('ordDtlNo')) && !gagajf.isNull($(item).val())) {
+			let json 		= $(item).val();
+			let jsonData 	= JSON.parse(json);
+			let cancelReq 	= {};
+			$.each(jsonData, function (index, chgOpt) {
+				cancelReq.ordDtlNo 			= chgOpt.ordDtlNo;
+				cancelReq.ordDtlItemSq 		= chgOpt.ordDtlItemSq;
+				cancelReq.delvFeeCd 		= delvFeeCd;
+				cancelReq.supplyCompCd 		= supplyCompCd;
+				cancelReq.excDelvFee 		= excDelvFee;
+				cancelReq.rtnDelvFee 		= rtnDelvFee;
+				cancelReq.ordChgOpt 		= chgOpt.chgOptCd2;
+				cancelReq.chgQty 			= chgOpt.chgQty;
+				cancelReqList.push(cancelReq);
+			});
+		}
+	});
+
+	// 교환 수량 및 변경 옵션 체크
+	if (chgOrdDtlNoArr.length > cancelReqList.length) {
+		mcxDialog.alert('교환하실 상품의 변경 옵션을 선택해주세요.');
+		return false;
+	} else if (chgOrdDtlNoArr.length < cancelReqList.length || chgOrdDtlNoArr.length == 0) {
+		mcxDialog.alert('교환하실 상품의 수량을 선택해주세요.');
+		return false;
+	}
+
+	// 교환 필요 데이터 설정
+	let data 			= {};
+	data.ordNo 			= oneData.ordNo;
+	data.isCustomer 	= isCustomer;
+	data.wdGb 			= $('#exchangeForm input[name=wdGb]:radio:checked').val();
+	data.wdInvoiceNo 	= $('#exchangeForm input[name=wdInvoiceNo]').val();
+	data.recipNm 		= $('#exchangeForm input[name=recipNm]').val();
+	data.recipPhnno 	= $('#exchangeForm input[name=recipPhnno]').val();
+	data.recipTelno 	= $('#exchangeForm input[name=recipTelno]').val();
+	data.recipZipcode 	= $('#exchangeForm input[name=recipZipcode]').val();
+	data.recipBaseAddr 	= $('#exchangeForm input[name=recipBaseAddr]').val();
+	data.recipDtlAddr 	= $('#exchangeForm input[name=recipDtlAddr]').val();
+	data.delvMemo 		= $('#exchangeForm input[name=delvMemo]').val();
+	data.chgReason 		= $('#exchangeForm input[name=chgReason]').val();
+	data.chgMemo 		= $('#exchangeForm textarea[name=chgMemo]').val();
+	data.chgerNm 		= $('#exchangeForm input[name=chgerNm]').val();
+	data.chgerPhnno 	= $('#exchangeForm input[name=chgerPhnno]').val();
+	data.chgerTelno 	= $('#exchangeForm input[name=chgerTelno]').val();
+	data.chgerEmail 	= $('#exchangeForm input[name=chgerEmail]').val();
+	data.chgerZipcode 	= $('#exchangeForm input[name=chgerZipcode]').val();
+	data.chgerBaseAddr 	= $('#exchangeForm input[name=chgerBaseAddr]').val();
+	data.chgerDtlAddr 	= $('#exchangeForm input[name=chgerDtlAddr]').val();
+	data.chgerRtnMemo 	= $('#exchangeForm input[name=chgerRtnMemo]').val();
+	data.addPayCost 	= addPayCost;
+	data.addPayAmt 		= 0;
+	data.cancelReqList 	= cancelReqList;
+
+	let jsonData = JSON.stringify(data);
+
+	// 교환 처리
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		if (addPayCost > 0) {
+			let ordChgSq = result.ordChgSq;
+			let ordNo = result.ordNo;
+
+			$('#addPaymentForm input[name=ordChgSq]').val(ordChgSq);
+			$('#addPaymentForm input[name=ordNo]').val(ordNo);
+
+			document.addPaymentForm.submit();
+		} else {
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
+		}
+	}, true);
+}
+
 // 교환 옵션 변경 팝업
 var fnChangeOption = function(param) {
 	let ordNo 		= $(param).attr('ordNo');
@@ -380,28 +543,36 @@ var fnChangeOption = function(param) {
 // 교환 옵션 변경 팝업 콜백 처리
 var fnChangeOptionCallback = function(param) {
 	let ordDtlNo;
+	let html = '';
+	
+	html += '<span>교환옵션</span>';
 
 	// 교환옵션 HTML 처리
-	let html = '												<span class="title">교환 옵션</span>\n';
 	$.each(param, function(idx, item) {
-		ordDtlNo = item.ordDtlNo;
-		let colorNm = item.colorNm;
-		let itemNm = item.itemNm;
-		let goodsType = item.goodsType;
-		let optCd2 = item.chgOptCd2;
-		let qty = item.chgQty;
+		ordDtlNo 		= item.ordDtlNo;
+		let colorNm 	= item.colorNm;
+		let itemNm 		= item.itemNm;
+		let goodsType 	= item.goodsType;
+		let optCd2 		= item.chgOptCd2;
+		let qty 		= item.chgQty;
 
 		if (goodsType == 'G056_S') {
-			html += '												<span class="option">' + itemNm + ' / ' + colorNm + ' / ' + optCd2 + '</span>\n';
+			html += '<div class="option">';
+			html += '	<em>'+itemNm+'</em>';
+			html += '	<em>'+optCd2+'</em>';
+			html += '</div>';
 		} else {
-			html += '												<span class="option">' + colorNm + ' / ' + optCd2 + '</span>\n';
+			html += '<div class="option">';
+			html += '	<em>'+colorNm+'</em>';
+			html += '	<em>'+optCd2+'</em>';
+			html += '</div>';
 		}
 	});
 
-	$.each($('.exchangeOption'), function(idx, item) {
+	$.each($('#exchangeForm .exchangeOption'), function(idx, item) {
 		if (ordDtlNo == $(item).attr('ordDtlNo')) {
 			$(item).css('display', '');
-			$(item).find('.option_wrap').html(html);
+			$(item).html(html);
 		}
 	});
 
@@ -413,135 +584,26 @@ var fnChangeOptionCallback = function(param) {
 	});
 }
 
-// 교환 처리
-var fnExchange = function() {
-	let url = '/mypage/exchange';
-	let delvFeeCd = oneData.delvFeeCd;
-	let ordDtlNo = oneData.ordDtlNo;
-	let supplyCompCd = oneData.supplyCompCd;
-	let excDelvFee = oneData.excDelvFee;
-	let rtnDelvFee = oneData.rtnDelvFee;
-	let chgReason = $('#exchangeForm input[name=chgReason]').val();
-	let addPayCost = $('#exchangeForm input[name=addPayCost]').val();
-	
-	// 교환 사유 체크
-	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert('교환 사유를 선택해주세요.');
-		return false;
-	}
-
-	// 교환 상품 설정
-	let chgOrdDtlNoArr = [];
-	$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
-		if (Number($(item).val()) > 0) {
-			chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
-		}
-	});
-
-	// 교환옵션 설정
-	let cancelReqList = [];
-	$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
-		if (chgOrdDtlNoArr.includes($(item).attr('ordDtlNo')) && !gagajf.isNull($(item).val())) {
-			let json = $(item).val();
-			let jsonData = JSON.parse(json);
-			let cancelReq = {};
-			$.each(jsonData, function (index, chgOpt) {
-				cancelReq.ordDtlNo = chgOpt.ordDtlNo;
-				cancelReq.ordDtlItemSq = chgOpt.ordDtlItemSq;
-				cancelReq.delvFeeCd = delvFeeCd;
-				cancelReq.supplyCompCd = supplyCompCd;
-				cancelReq.excDelvFee = excDelvFee;
-				cancelReq.rtnDelvFee = rtnDelvFee;
-				cancelReq.ordChgOpt = chgOpt.chgOptCd2;
-				cancelReq.chgQty = chgOpt.chgQty;
-				cancelReqList.push(cancelReq);
-			});
-		}
-	});
-
-	// 교환 수량 및 변경 옵션 체크
-	if (chgOrdDtlNoArr.length > cancelReqList.length) {
-		mcxDialog.alert('교환하실 상품의 변경 옵션을 선택해주세요.');
-		return false;
-	} else if (chgOrdDtlNoArr.length < cancelReqList.length || chgOrdDtlNoArr.length == 0) {
-		mcxDialog.alert('교환하실 상품의 수량을 선택해주세요.');
-		return false;
-	}
-
-	// 교환 필요 데이터 설정
-	let data = {};
-	data.ordNo = oneData.ordNo;
-	data.isCustomer = isCustomer;
-	data.wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
-	data.wdInvoiceNo = $('#exchangeForm input[name=wdInvoiceNo]').val();
-	data.recipNm = $('#exchangeForm input[name=recipNm]').val();
-	data.recipPhnno = $('#exchangeForm input[name=recipPhnno]').val();
-	data.recipTelno = $('#exchangeForm input[name=recipTelno]').val();
-	data.recipZipcode = $('#exchangeForm input[name=recipZipcode]').val();
-	data.recipBaseAddr = $('#exchangeForm input[name=recipBaseAddr]').val();
-	data.recipDtlAddr = $('#exchangeForm input[name=recipDtlAddr]').val();
-	data.delvMemo = $('#exchangeForm input[name=delvMemo]').val();
-	data.chgReason = $('#exchangeForm input[name=chgReason]').val();
-	data.chgMemo = $('#exchangeForm textarea[name=chgMemo]').val();
-	data.chgerNm = $('#exchangeForm input[name=chgerNm]').val();
-	data.chgerPhnno = $('#exchangeForm input[name=chgerPhnno]').val();
-	data.chgerTelno = $('#exchangeForm input[name=chgerTelno]').val();
-	data.chgerEmail = $('#exchangeForm input[name=chgerEmail]').val();
-	data.chgerZipcode = $('#exchangeForm input[name=chgerZipcode]').val();
-	data.chgerBaseAddr = $('#exchangeForm input[name=chgerBaseAddr]').val();
-	data.chgerDtlAddr = $('#exchangeForm input[name=chgerDtlAddr]').val();
-	data.chgerRtnMemo = $('#exchangeForm input[name=chgerRtnMemo]').val();
-	data.addPayCost = addPayCost;
-	data.addPayAmt = 0;
-	data.cancelReqList = cancelReqList;
-
-	let jsonData = JSON.stringify(data);
-
-	// 교환 처리
-	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-		if (addPayCost > 0) {
-			let ordChgSq = result.ordChgSq;
-			let ordNo = result.ordNo;
-
-			$('#addPaymentForm input[name=ordChgSq]').val(ordChgSq);
-			$('#addPaymentForm input[name=ordNo]').val(ordNo);
-
-			document.addPaymentForm.submit();
-		} else {
-			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
-		}
-	}, true);
-}
-
-// 반품 방식 변경 이벤트
-$('#exchangeForm input[name=wdGb]').on('change', function() {
-	let wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
-
-	if (wdGb == 'W') {
-		$('#chgerLocation').css('display', '');
-		$('#returnLocation').css('display', 'none');
-	} else {
-		$('#chgerLocation').css('display', 'none');
-		$('#returnLocation').css('display', '');
-	}
-
-	// 추가 배송비 계산
-	fnAddCost();
-});
-
 // 교환 수량 변경 이벤트
 var fnChangeExchangeQty = function(param) {
-	let ordDtlNo = $(param).attr('ordDtlNo');
-
+	var ordDtlNo = "";
+	
+	// 교환수량설정
 	if (param != null) {
-		$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
+		$("#exchangeForm input[name=chgQty]").each(function(idx){
+			ordDtlNo = $(this).attr("ordDtlNo");
+			if (ordDtlNo == $(param).parent().find("input[name=ordDtlNo]").val()) {
+				$(this).val($(param).attr("qty"));
+				$(this).parent().find(".select").text($(param).find("span").text());
+			}
+		});
 	}
-
+	
 	// 교환옵션 표기 초기화
-	$.each($('.exchangeOption'), function(idx, item) {
+	$.each($('#exchangeForm .exchangeOption'), function(idx, item) {
 		if (ordDtlNo == $(item).attr('ordDtlNo')) {
 			$(item).css('display', 'none');
-			$(item).find('.option_wrap').html('');
+			$(item).html('');
 		}
 	});
 
@@ -558,14 +620,15 @@ var fnChangeExchangeQty = function(param) {
 
 // 교환 사유 변경 이벤트
 var fnChangeExchangeReason = function(param) {
-	var customerReasonArr = ['G689_10', 'G689_30'];
-	let chgReason = $(param).attr('chgReason');
+	var customerReasonArr 	= ['G689_10', 'G689_30'];
+	let chgReason 			= $(param).attr('chgReason');
 
 	// 귀책사유체크(취소,반품,교환)
 	isCustomer = customerReasonArr.includes(chgReason);
-
-	// 교환 사유 설정
-	$(param).parent().parent().find('input[name=chgReason]').val(chgReason);
+	
+	// 반품 사유 설정
+	$('#exchangeForm input[name=chgReason]').val(chgReason);
+	$("#exchangeForm .select_custom.select_exchange .select").text($(param).find("span").text());
 
 	// 추가 배송비 계산
 	fnAddCost();
@@ -573,9 +636,9 @@ var fnChangeExchangeReason = function(param) {
 
 // 추가 배송비 계산
 var fnAddCost = function() {
-	let addPayCost = 0;
-	let delvFee = oneData.delvFee;
-	let rtnDelvFee = oneData.rtnDelvFee;
+	let addPayCost 		= 0;
+	let delvFee 		= oneData.delvFee;
+	let rtnDelvFee 		= oneData.rtnDelvFee;
 
 	// 교환 수량 체크
 	let qty = 0;
@@ -604,29 +667,27 @@ var fnAddCost = function() {
 
 // 배송지 정보 설정
 var delvAddrSet = function(delvObj) {
-	let recipNm = delvObj.recipNm;
-	let recipPhnno = delvObj.recipPhnno;
-	let recipZipcode = delvObj.recipZipcode;
-	let recipBaseAddr = delvObj.recipBaseAddr;
-	let recipDtlAddr = delvObj.recipDtlAddr;
-	let delvMemo = delvObj.delvMemo;
+	let recipNm 		= delvObj.recipNm;
+	let recipPhnno 		= delvObj.recipPhnno;
+	let recipZipcode 	= delvObj.recipZipcode;
+	let recipBaseAddr 	= delvObj.recipBaseAddr;
+	let recipDtlAddr 	= delvObj.recipDtlAddr;
+	let delvMemo 		= delvObj.delvMemo;
 
 	if (addrGb == 'recip') {
-		$('#recipNm').text(recipNm);
-		$('#recipPhnno').text(recipPhnno);
-		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
-		$('#delvMemo').text(delvMemo);
-
 		$('#exchangeForm input[name=recipNm]').val(recipNm);
 		$('#exchangeForm input[name=recipPhnno]').val(recipPhnno);
 		$('#exchangeForm input[name=recipZipcode]').val(recipZipcode);
 		$('#exchangeForm input[name=recipBaseAddr]').val(recipBaseAddr);
 		$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
 		$('#exchangeForm input[name=delvMemo]').val(delvMemo);
+		
+		$('#recipNm').text(recipNm);
+		$('#recipPhnno').text(recipPhnno);
+		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+		$('#delvMemo').text(delvMemo);
 	} else if (addrGb == 'chger') {
-		let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
-		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
-
+		let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr;
 		$('#exchangeForm input[name=chgerNm]').val(recipNm);
 		$('#exchangeForm input[name=chgerPhnno]').val(recipPhnno);
 		$('#exchangeForm input[name=chgerZipcode]').val(recipZipcode);
@@ -654,6 +715,44 @@ var fnChangeAddr = function(param) {
 }
 </script>
 
+<script>
+// 세부 사유 글자 수 제한
+$('.doc_return').keyup(function(e){
+	var content = $(this).val();
+	$('#return_cnt').html(content.length);
+	if (content.length > 200){
+		mcxDialog.alert("최대 200자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+		$(this).val(content.substring(0, 200));
+		$('#return_cnt').html("200");
+	}
+});
+
+// 반품 사유 선택 팝업
+$(document).on("click", ".select_custom.select_exchange",function(e){
+	$('#exchangeReasonPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
+
+// 팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
+
+// 버튼 색
+$(document).on('click', '.popup_box .button_list button',function(){
+	$('.popup_box .button_list button').removeClass('on');
+	$(this).addClass('on');
+});
+
+function handleOnInput(el, maxlength) {
+	if(el.value.length > maxlength)  {
+		el.value = el.value.substr(0, maxlength);
+	}
+}
+</script>
+
+
 </th:block>
 
 </body>

+ 3 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html

@@ -358,8 +358,8 @@ function giftcardSave() {
 			gagajf.ajaxJsonSubmit(
 					'/mypage/gift/use/confirm', jsonData,
 					function() {
-						$("#gift_input").val('');
-						//cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
+						//$("#gift_input").val('');
+						cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
 					});
 		}
 	});
@@ -370,6 +370,7 @@ function giftcardSave() {
 
 /*<![CDATA[*/
 $(document).ready(function() {
+	$('#htopTitle').text('상품권');
 	// 전체내역 표시
 	$("#SearchUseGiftcard").trigger('click');
 	// 셀렉트박스 활성화

+ 21 - 89
src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html

@@ -318,7 +318,7 @@
 						 -->
 					</div>
 				</div>
-				<div class="required_group">
+				<div class="required_group" id="addDeliveryFee" style="display:none">
 					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
 				</div>
 				<div class="btn_group btn_group_flex">
@@ -362,7 +362,9 @@
 		<div class="popup_con">
 			<div class="button_list">
 				<th:block th:if="${returnReason}" th:each="oneData, status : ${returnReason}">
-					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeReturnReason(this);"><span th:text="${oneData.cdNm}">단순 변심</span></button>
+					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeReturnReason(this);">
+						<span th:text="${oneData.cdNm}">단순 변심</span>
+					</button>
 				</th:block>
 			</div>
 		</div>
@@ -483,6 +485,22 @@ $(".select_custom.select_count").each(function(idx){
 	});
 });
 
+// 반품 방식 변경 이벤트
+$('#returnForm input[name=wdGb]').on('change', function() {
+	let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+
+	if (wdGb == 'W') {
+		$('#chgerLocation').css('display', '');
+		$('#returnLocation').css('display', 'none');
+	} else {
+		$('#chgerLocation').css('display', 'none');
+		$('#returnLocation').css('display', '');
+	}
+
+	// 환불금액 계산
+	fnChangeReturnQty();
+});
+
 // 은행목록 버튼 기능
 $("#refundBankPop .button_list button").each(function(){
 	$(this).on("click", function(){
@@ -655,7 +673,7 @@ var fnChangeReturnQty = function(param) {
 				spanTotDeliveryFee 	= 0;
 			}
 			
-			let goodsCancelAmt 	= spanCnclRtnAmt;										// 상품취소금액
+			let goodsCancelAmt 	= spanCnclRtnAmt;											// 상품취소금액
 			let addDelvFee 		= spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
 			let deductDcAmt 	= spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
 			let refundPayAmt 	= spanRefundAmt - addDelvFee;								// 결제금액 환불
@@ -689,22 +707,6 @@ var fnChangeReturnQty = function(param) {
 	}
 }
 
-// 반품 방식 변경 이벤트
-$('#returnForm input[name=wdGb]').on('change', function() {
-	let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
-
-	if (wdGb == 'W') {
-		$('#chgerLocation').css('display', '');
-		$('#returnLocation').css('display', 'none');
-	} else {
-		$('#chgerLocation').css('display', 'none');
-		$('#returnLocation').css('display', '');
-	}
-
-	// 환불금액 계산
-	fnChangeReturnQty();
-});
-
 // 반품 사유 변경 이벤트
 var fnChangeReturnReason = function(param) {
 	var customerReasonArr 	= ['G688_10'];
@@ -873,76 +875,6 @@ $('.refundAccountPop .popup_close').on("click",function(){
 $('.refundBankPop .popup_close').on("click",function(){
 	$('.refundBankPop').hide().removeClass('active');
 });
-
-/* 210409_추가 : alert 모음 
-$(document).on("click", "#btn_bank_certi", function(){
-	mcxDialog.alert("계좌인증에 성공했습니다.", {
-			//alert("계좌정보를 다시 확인해주세요.") : 계좌인증 실패/유효하지 않은 경우
-			//alert("은행을 선택해주세요.") : 은행을 선택하지 않은 경우
-			//alert("계좌번호를 입력해주세요.") : 계좌번호를 입력하지 않은 경우
-		sureBtnText: "확인",  // Confirmation button text
-	});
-});
-*/
-/*
-$(document).ready(function(){
-
-	//210408_추가 : 스크립트 추가.
-	//반품회수방법 선택 스크립트 추가
-	$(document).on('change','.my_return .retrieve_method #rdi_retrieve_visit',function(e){
-		$('.my_return .retrieve_box.direct').hide();
-		$('.my_return .retrieve_box.visit').show();
-		return false;
-	}).on('change','.my_return .retrieve_method #rdi_retrieve_direct',function(e){
-		$('.my_return .retrieve_box.visit').hide();
-		$('.my_return .retrieve_box.direct').show();
-		return false;
-	});
-
-	// 반품 수량 선택 팝업
-	//$(document).on("click",".select_custom.select_count",function(e){
-		//$('#returnCountPop').show().addClass("active");
-		//$("body").css({"overflow":"hidden"});
-	//});
-
-	//배송지추가_팝업
-	$(document).on('click','#btn_adrsAdd_pop',function(e){
-		$("#adrsAddPop").modal("show");
-		return false;
-	});      
-	$("#adrsAddPop_close").click(function() {
-		$("#adrsAddPop").modal("hide");
-	});
-
-	//배송지정보_팝업
-	$(document).on('click','#btn_adrsChange_pop',function(e){
-		$("#adrsChangePop").modal("show");
-		return false;
-	});
-	$("#adrsChangePop_close").click(function() {
-		$("#adrsChangePop").modal("hide");
-	});
-
-	//배송지수정_팝업
-	$(document).on('click','#btn_addrModify_pop',function(e){
-		$("#adrsModifyPop").modal("show");
-		return false;
-	});
-	$("#adrsModifyPop_close").click(function() {
-		$("#adrsModifyPop").modal("hide");
-	});
-
-	// //210408_추가 : 스크립트
-
-	$(document).on("click", "#btn_order_return", function(){
-		mcxDialog.alert("반품 신청이 접수되었습니다.", {
-				//alert("반품하실 상품의 수량을 선택해주세요.") : 클릭 시 반품 수량을 모두 0개로 선택한 경우
-				//alert("반품 사유를 선택해주세요.") : 반품 사유를 선택하지 않는 경우
-			sureBtnText: "확인",  // Confirmation button text
-		});
-	});
-});
-*/
 </script>
 
 </th:block>

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

@@ -753,7 +753,12 @@ var fnGetDailyDeliveryCheck = function (temp) {
 				}
 
 				// json 값 설정
-				var orderListObj 		= {"cartSqArr":cartSqArr, "shotDelvYn":tempShotDelvYn};
+				var orderListObj 		= {
+					"cartSqArr"		: cartSqArr
+					, "shotDelvYn"	: tempShotDelvYn
+					, "giftPackYn"	: giftPackYn
+				};
+				
 				var orderListJsonData 	= JSON.stringify(orderListObj);
 				
 				if (temp) {
@@ -786,8 +791,6 @@ var orderListInfoSet = function(orderListJsonData, temp) {
 			if (result != null) {
 				$("#orderListInfo").css("display", "block");
 				$("#orderListInfo").html(result);
-				
-				alert(result);
 
 				$("#delvFeeCdCnt").text($("#orderForm input[name=delvFeeCdCnt]").val());
 				
@@ -1115,6 +1118,7 @@ var paymentInfoSet = function() {
 					var paynormalArr		= paynormal.split("|");
 					var pgGb				= paynormalArr[0];
 					var payMeans			= paynormalArr[1];
+					var custPayMeans		= "N";
 					
 					// 자주쓰는결제타입
 					if ($("#orderForm #chk-agree_paymethod").is(":checked") == true) {

+ 20 - 28
src/main/webapp/WEB-INF/views/mob/order/OrderListInfoMob.html

@@ -1,38 +1,26 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderCustemerInfoWeb.html
- * @desc    : 고객정보 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.02.01   jsh77b     최초 작성
- *******************************************************************************
- -->
-<input type="hidden" name="delvFeeCdCnt" th:value="${delvFeeCdCnt}"/>
-<input type="hidden" name="shotCnt" th:value="${shotCnt}"/>
-<input type="hidden" name="wmsCnt" 	th:value="${wmsCnt}"/>
-
 <div class="foldGroup">
 	<ul>
-		<li class="fold_mbinfo">
+		<li class="fold_gift">
+			<!-- 선물하기주문내역 --> 
 			<div class="fold_head">
 				<a href="javascript:void(0)">
 					<div>
-						<th:block th:if="${order.giftPackYn} == 'N'">
-							<div class="fold_tit"><span>주문내역</span></div>
-						</th:block>
-						<th:block th:if="${order.giftPackYn} == 'Y'">
-							<div class="fold_tit"><span>선물하기 주문내역</span></div>
-						</th:block>
-						<div class="data"><em class="c_primary" th:text="${goodsTotCnt}"></em>개의 상품</div>
+						<div class="fold_tit">
+							<th:block th:unless="${order.giftPackYn} == 'N'" >
+								<span pan="">선물하기 주문내역</span>
+							</th:block>
+							<th:block th:if="${order.giftPackYn} == 'N'" >
+								<span>주문내역</span>
+							</th:block>
+						</div>
+						<div class="data">
+							<em class="c_primary" th:text="${goodsTotCnt}"></em>개의 상품
+						</div>
 					</div>
 				</a>
 			</div>
+			<!-- //선물하기주문내역 -->
+			 
 			<div class="fold_cont" style="display: none;">
 				<div class="od_item_box">	
 					<th:block th:each="delvAllCart, i : ${delvAllCartList}">
@@ -132,7 +120,7 @@
 							<th:block th:if="${goodsDcSumAmt} > 0">
 								<dd><span class="disc_amount" th:text="|-${#numbers.formatInteger(goodsDcSumAmt, 1, 'COMMA')}원|"></span></dd>
 							</th:block>
-							<th:block th:if="${cpn1DcSumAmt} < 1">
+							<th:block th:if="${goodsDcSumAmt} < 1">
 								<dd><span class="disc_amount" th:text="|${#numbers.formatInteger(goodsDcSumAmt, 1, 'COMMA')}원|"></span></dd>
 							</th:block>
 						</div>
@@ -207,3 +195,7 @@
 		</li>
 	</ul>
 </div>
+<input type="hidden" name="delvFeeCdCnt" th:value="${delvFeeCdCnt}"/>
+<input type="hidden" name="shotCnt" th:value="${shotCnt}"/>
+<input type="hidden" name="wmsCnt" 	th:value="${wmsCnt}"/>
+

+ 8 - 6
src/main/webapp/WEB-INF/views/mob/order/OrderPaymentInfoMob.html

@@ -62,12 +62,14 @@
 										</span>
 									</label>
 								</li>
-								<li>
-									<input type="radio" name="rdi-paynormal" id="payVirtualBank" class="KCP" value="KCP|G014_20"> 
-									<label for="payVirtualBank">
-										<span class="payType">무통장입금</span>
-									</label>
-								</li>
+								<th:block th:if="${order.giftPackYn} == 'N'">
+									<li>
+										<input type="radio" name="rdi-paynormal" id="payVirtualBank" class="KCP" value="KCP|G014_20"> 
+										<label for="payVirtualBank">
+											<span class="payType">무통장입금</span>
+										</label>
+									</li>
+								</th:block>
 								<li>
 									<input type="radio" name="rdi-paynormal" id="payPayco" class="PAYCO" value="PAYCO|G014_30"> 
 									<label for="payPayco">

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

@@ -34,15 +34,15 @@
 				<div class="list_content"> <!-- 데이터 없을시 클래스 nodata 추가 -->
 					<div class="count_wrap">
 						<div>
-							<p id="planningTotCnt"></p>
+							<p id="planningTotCnt">></p>
 						</div>
 					</div>
-					<div class="list_defult nodata" style="display: none;" id="divPlanningNoData">
-						<div>
-							<p>등록된 기획전이 없습니다.</p>
-						</div>
-						<button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>
-					</div>
+					 <div class="list_defult" style="display: none;" id="divPlanningNoData">
+                          <div>
+                              <p>등록된 기획전이 없습니다.</p>
+                          </div>
+                         <button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>
+                     </div>
 					<div class="list_item" style="display: none;" id="divPlanningList">
 					</div>
 				</div>

+ 11 - 3
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -95,6 +95,7 @@
 										<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
 										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
+										<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -160,7 +161,7 @@
 												</th:block>
 												<p>
 													<span class="point">
-														<em th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
+														<em th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
 													</span>
 												</p>
 											</div>
@@ -211,6 +212,7 @@
 										<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
 										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
+										<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -270,7 +272,7 @@
 												</th:block>
 												<p>
 													<span class="point">
-														<em th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
+														<em th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
 													</span>
 												</p>
 											</div>
@@ -331,6 +333,7 @@
 										<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
 										<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
 										<input type="hidden" name="goodsCd" th:value="${cart.goodsCd}" />
+										<input type="hidden" name="orgSavePntAmt" th:value="${cart.orgSavePntAmt}" />
 
 										<div class="order_desc">
 											<div class="form_box">
@@ -388,7 +391,7 @@
 												</th:block>
 												<p>
 													<span class="point">
-														<em th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
+														<em th:class="|point${cart.cartSq}|" th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></em><stong>P</stong>&nbsp;적립예정
 													</span>
 												</p>
 											</div>
@@ -868,6 +871,8 @@
 					$(this).parent().find(".calc_box .price_sale").text($(this).parent().find(".calc_box .price_org").text());
 					$(this).parent().find(".calc_box .price_org").remove();
 				}
+
+				$(this).parent().find(".calc_box .point" + $(this).val()).text(Number($(this).parent().find("input[name=orgSavePntAmt]").val()).toLocaleString());
 			});
 
 			// $("#cartListForm").find(".delvFeeArea").html("<div class='info_dlvr'><span class='dlvr_fee'>배송비 무료</span></div>");
@@ -877,6 +882,7 @@
 						let shot = shotList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(shot.applyQtySectionYn);
 						$(this).parent().find("input[name=applyAmtSectionYn]").val(shot.applyQtySectionYn);
+						$(this).parent().find(".calc_box .point>em").text(Number(shot.savePntAmt).toLocaleString());
 
 						// 다다익선 적용 정보 생성성
 						if((shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") || shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y") {
@@ -912,6 +918,7 @@
 						let wms = wmsList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(wms.applyQtySectionYn);
 						$(this).parent().find("input[name=applyAmtSectionYn]").val(wms.applyQtySectionYn);
+						$(this).parent().find(".calc_box .point>em").text(Number(wms.savePntAmt).toLocaleString());
 
 						// 다다익선 적용 정보 생성성
 						if((wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") || (wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y")) {
@@ -937,6 +944,7 @@
 						let delv = delvList[i];
 						$(this).parent().find("input[name=applyQtySectionYn]").val(delv.applyQtySectionYn);
 						$(this).parent().find("input[name=applyAmtSectionYn]").val(delv.applyQtySectionYn);
+						$(this).parent().find(".calc_box .point>em").text(Number(delv.savePntAmt).toLocaleString());
 
 						// 다다익선 적용 정보 생성성
 						if((delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") || (delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y")) {

+ 68 - 89
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -244,13 +244,13 @@
 									<div>
 										<ul id="sortArea">
 											<li>
-												<a href="javascript:void(0);" class="on" onclick="fnSortList(this,'NEW');">최신상품순</a>
+												<a href="javascript:void(0);" id="sortingNEW" class="on" onclick="fnSortingChange(this,'NEW');">최신상품순</a>
 											</li>
 											<li>
-												<a href="javascript:void(0);" onclick="fnSortList(this,'BEST');">인기상품순</a>
+												<a href="javascript:void(0);" id="sortingBEST" onclick="fnSortingChange(this,'BEST');">인기상품순</a>
 											</li>
 											<li>
-												<a href="javascript:void(0);" onclick="fnSortList(this,'REVIEW');">리뷰 많은순</a>
+												<a href="javascript:void(0);" id="sortingREVIEW" onclick="fnSortingChange(this,'REVIEW');">리뷰 많은순</a>
 											</li>
 										</ul>
 									</div>
@@ -316,15 +316,13 @@
 			//가격 슬라이드
 			//var custom_values = ['9,000원', '230,000원', '487,000원', '700,000원', '1,360,000원', '1,799,000원'];
 			if(!gagajf.isNull(filterPriceList)){
-				console.log('111');
 				$.each(filterPriceList, function (priceIdx, priceItem){
 					custom_values[priceIdx] = priceItem.filterNm;
 				});
 
 				let my_from = custom_values.indexOf(custom_values[0]);
 				let my_to = custom_values.indexOf(custom_values[5]);
-				console.log('1>>priceFrom>>'+$("#filterData").find("input:hidden[name=priceFrom]").val());
-				console.log('1>>priceTo>>'+$("#filterData").find("input:hidden[name=priceTo]").val());
+				
 				if(gagajf.isNull($("#filterForm input:hidden[name=priceFrom]").val())){
 					my_from = $("#filterForm input:hidden[name=priceFrom]").val();
 				}
@@ -424,8 +422,6 @@
 			$("#searchGoodsForm input:hidden[name=priceTo]").remove();
 			let min = data.from;
 			let max = data.to;
-			console.log('Price from>>'+custom_values[min]);
-			console.log('Price to>>'+custom_values[max]);
 			$("#price_input_from").val(custom_values[0]);
 			$("#price_input_to").val(custom_values[5]);
 
@@ -879,7 +875,7 @@
 			var overSrc;
 			var srcName = nowImg.attr('src');
 			overSrc = srcName.substring(0, srcName.lastIndexOf('.'));
-			
+
 			var srcImg;
 			var srcdat;
 
@@ -924,14 +920,15 @@
 				// $(this).attr('src', overSrc + '.' + /[^.]+$/.exec(srcName));
 				//$(this).attr('src', img1);
 				// return false;
+				$(this).parents('.itemPic').removeClass();
 				$(this).children('.pd_img').siblings(".itemOpt").removeClass('on');
 				$(this).children('.pd_img').attr('src', srcImg);
+				$(this).children('.pd_img').css("opacity","1");
 			});
 		}
 
 		// 사파리 - event.persisted || 크롬 - window.performance.navigation.type 이 1이면 새로고침, 2면 페이지 이동을 통한 캐쉬페이징
 		$(window).on("pageshow", function(event) {
-			console.log('test1');
 			$('#filterForm input[name=brandGroup]:checked').each(function(){
 				let filterGb = 'brandGroup';
 				$(this).attr('onclick','filterSel(this,\''+filterGb+'\',\'on\');');
@@ -943,32 +940,6 @@
 				$(this).attr('onclick','filterSel(this,\''+filterGb+'\',\'on\',\''+rowNum+'\');');
 				$(this).parent().addClass("active");
 			});
-			// $('#filterForm input[name=price]').each(function(){
-			// 	console.log('priceFrom>>'+ $("#searchGoodsForm input:hidden[name=priceFrom]").val() );
-			// 	console.log('priceTo>>'+ $("#searchGoodsForm input:hidden[name=priceTo]").val() );
-			// 	// $(this).parent().addClass("active");
-			// 	$("#priceSpan").remove();
-			// 	$("#searchGoodsForm input:hidden[name=priceFrom]").remove();
-			// 	$("#searchGoodsForm input:hidden[name=priceTo]").remove();
-			// 	let min = $("#searchGoodsForm input:hidden[name=priceFrom]").val();
-			// 	let max = $("#searchGoodsForm input:hidden[name=priceTo]").val();
-			// 	$("#price_input_from").val(custom_values[0]);
-			// 	$("#price_input_to").val(custom_values[5]);
-			//
-			// 	fnFilterSlider('price' , custom_values[min].addComma(), custom_values[max].addComma());
-			// });
-			// $('#filterForm input[name=range]:checked').each(function(){
-			// 	console.log('eeeeeeeeeeeeeee');
-			// 	$("#dcrateSpan").remove();
-			// 	//$("#searchGoodsForm input:hidden[name=dcRateFrom]").remove();
-			// 	//$("#searchGoodsForm input:hidden[name=dcRateTo]").remove();
-			// 	let min = $("#searchGoodsForm input:hidden[name=dcRateFrom]").val();
-			// 	let max =  $("#searchGoodsForm input:hidden[name=dcRateTo]").val();
-			// 	$("#price_input_from").val(0);
-			// 	$("#price_input_to").val(100);
-			//
-			// 	fnFilterSlider('dcrate' , custom_values02[min].replace('%',''), custom_values02[max].replace('%',''));
-			// });
 			$('#filterForm input[name=season]:checked').each(function(){
 				let filterGb = 'season';
 				$(this).attr('onclick','filterSel(this,\''+filterGb+'\',\'on\');');
@@ -1015,13 +986,11 @@
 			if ( (event.originalEvent && event.originalEvent.persisted) || (window.performance && window.performance.navigation.type == 2)) {
 				var historyData = sessionStorage.getItem(document.location.href);
 				if(historyData!=null){
-					console.log('historyData1111>>'+historyData);
+					//console.log('historyData>>'+historyData);
 					historyData = JSON.parse(historyData);
 				}else{
-					console.log('nnnnnnooooo');
 					historyData = {};
 				}
-
 				if(typeof historyData.sortingTypeNm!='undefined' && historyData.sortingTypeNm!=''){
 					$(".arrayWrap .btn").text(historyData.sortingTypeNm);
 				}
@@ -1037,82 +1006,91 @@
 					$("#totCntId").text(historyData.totalCount);
 				}
 				if(!gagajf.isNull(filterPriceList)){
-					console.log('111');
-					$.each(filterPriceList, function (priceIdx, priceItem){
-						custom_values[priceIdx] = priceItem.filterNm;
-					});
-
-					let my_from = custom_values.indexOf(custom_values[0]);
-					let my_to = custom_values.indexOf(custom_values[5]);
-					console.log('1>>priceFrom>>'+$("#filterData").find("input:hidden[name=priceFrom]").val());
-					console.log('1>>priceTo>>'+$("#filterData").find("input:hidden[name=priceTo]").val());
-					if(gagajf.isNull($("#filterData").find("input:hidden[name=priceFrom]").val())){
-						my_from = $("#filterData").find("input:hidden[name=priceFrom]").val().addComma();
+					let min = 0;
+					let max = 5;
+					let priceFrom = '';
+					let priceTo = '';
+					if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceFrom]").val())){
+						priceFrom = $("#searchGoodsForm").find("input:hidden[name=priceFrom]").val();
 					}
-					if(gagajf.isNull($("#filterData").find("input:hidden[name=priceTo]").val())){
-						my_to = $("#filterData").find("input:hidden[name=priceTo]").val().addComma();
+					if(!gagajf.isNull($("#searchGoodsForm").find("input:hidden[name=priceTo]").val())){
+						priceTo = $("#searchGoodsForm").find("input:hidden[name=priceTo]").val();
 					}
-					let minValue = custom_values[0];
-					let maxValue = custom_values[5];
-
-					$(".dp .js-range-slider01, .sch_result .js-range-slider01").ionRangeSlider({
-						type: "double",
-						min: minValue,
-						max: maxValue,
-						from: my_from,
-						to: my_to,
-						grid: true,
-						skin: "round",
-						postfix: "원",
-						prettify_separator: ",",
-						values: custom_values,
-						min_interval: 1,
-						// onChange : fnCheckPrice,
-						onFinish : function(data){
-							fnCheckPrice(data);
+					$.each(filterPriceList, function (priceIdx, priceItem){
+						custom_values[priceIdx] = priceItem.filterNm;
+						if(custom_values[priceIdx] == priceFrom){
+							min = priceIdx;
+						}
+						if(custom_values[priceIdx] == priceTo){
+							max = priceIdx;
 						}
 					});
+				
+					fnFilterSliderMove(min,max);
 				}
 				if(typeof historyData.sortingType!='undefined' && historyData.sortingType!=''){
-					$("#sortSelect").val(historyData.sortingType);
 					$("#searchGoodsForm input:hidden[name=sortingType]").val(historyData.sortingType);
-					fnSortList(this,historyData.sortingType);
+					fnSortingChange(this,historyData.sortingType,'back');
+					$(".fillter").show();
 				}else{
 					$(".fillter").show();
+					fnCategoryGoodsInfiniteScrollInit();
 					fnGoodsListSearch();
+					fnImgOnoff();
 				}
 			}else{
 				fnCategoryGoodsInfiniteScrollInit();
-				var sortingType = [[${sortingType}]];
+				var sortingType = $("#searchGoodsForm input:hidden[name=sortingType]").val();
 				if(sortingType=='BEST' || sortingType=='REVIEW'){
 					$("#sortArea").find('li').each(function (){
 						$(this).find('a').attr('class','off');
 					});
 
 					$(this).addClass("on");
-					fnSortList(this, sortingType);
+					fnSortingChange(this, sortingType);
 				}else{
 					fnGoodsListSearch();
 				}
 			}
 		});
-
-		var fnSortList = function (obj, sortingType){
-			if($("#searchGoodsForm input[name=sortingType]").val()==sortingType){
-				return;
+		
+		/*]]>*/
+		
+		// 동영상 플레이어
+		var iframe= document.createElement('iframe');
+		iframe.setAttribute('allowFullScreen', '');
+		iframe.setAttribute('allow', 'fullscreen');
+		var controller;
+		var player = document.getElementById('player');
+		
+		player.onload = function() {
+			try {
+				var controller = new VgControllerClient({
+					target_window: document.getElementById('pdThumbVideo').contentWindow
+					// target_window: document.getElementsByClassName('pd_mov').contentWindow
+				});
+				var playMov;
+				
+				controller.on('ready', function(){
+					//플레이어 준비 완료
+					controller.set_ratio('fill');
+					//  contain : 비율에 맞게 채웁니다.
+					//fill : 화면에 꽉 차게 채웁니다.
+					//enlargement : 세로 높이를 꽉 차게 맞춥니다. 좌우로 스크롤이 가능합니다
+					controller.play();
+				});
+				controller.on('done', function(){
+					//플레이어 재생 완료
+					controller.play();
+				});
+				
+			} catch(e) {
+				// Videogateweay Controller Library는 window.postMessage API를 이용하기 때문에
+				// 해당 기능을 지원하지 않는 웹브라우져에서는 동작하지 않습니다.
+				// 이 부분에 적절한 fail-over 코드를 추가하여 주십시요.
 			}
-
-			$("#sortArea").find('li').each(function (){
-				$(this).find('a').attr('class','off');
-			});
-
-			$(obj).addClass("on");
-			$("#searchGoodsForm").find("[name=sortingType]").val(sortingType);
-			fnCategoryGoodsInfiniteScrollInit();
-			fnGoodsListSearch();
+			
 		}
-
-		/*]]>*/
 	</script>
 
 	<script>
@@ -1128,6 +1106,7 @@
 			//$(noneSrc).attr("src", no_src);
 		}
 	</script>
+	
 
 </th:block>
 

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

@@ -66,16 +66,18 @@
 			</div>
 
 			<div class="content br_lookbook_view cont_items" th:if="${lookbookDetailList != null}">
-				<div class="cont_head">
-					<h3>룩북 속 상품<span class="number">()</span></h3> <!--<th:block th:text="${#lists.size(lookbookDetailList.lookbookGoodsList)}"></th:block>-->
-					<button class="btn btn_primary"><span>모두 쇼핑백 담기</span></button>
+				<th:block th:each="item, stat : ${lookbookDetailList}">
+				<div class="cont_head ioTit">
+					<h3>룩북 속 상품<span class="number">(<th:block th:text="${#lists.size(item.lookbookGoodsList)}"></th:block>)</span></h3>
+					<button class="btn btn_primary" th:onclick="fnAddCartLookBookGoods1(this,[[${stat.count}]]);"><span>모두 쇼핑백 담기</span></button>
 				</div>
+				</th:block>
 				<div class="cont_body">
 					<div class="area_slider">
 						<!-- 겉 상품 -->
 						<div class="items_outside">
 							<th:block th:each="item, stat : ${lookbookDetailList}">
-							<div class="itemsOut">
+							<div class="itemsOut" th:id="${'itemsList'+stat.count}">
 								<div class="swiper-container items_inside">
 									<div class="swiper-wrapper">
 										<th:block th:if="${item.lookbookGoodsList != null and !item.lookbookGoodsList.empty}" th:each="goodsItem, goodsStatus : ${item.lookbookGoodsList}">
@@ -83,6 +85,15 @@
 												<div class="item_prod" th:classappend="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}? 'unable' : ''"
 													 th:attr="goodsCd=${goodsItem.goodsCd}, optCdInfo=${goodsItem.optCdInfo}, minOrdQty=${goodsItem.minOrdQty},  goodsType=${goodsItem.goodsType}">
 													<div class="item_state">
+														<th:block th:each="optCd : ${#strings.arraySplit(goodsItem.optCdInfo,',')}">
+															<input type="hidden" name="lookbookGoodsOptCd" th:value="${optCd}"/>
+														</th:block>
+														<th:block th:if="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+															<a href="javascript:void(0);" class="itemLink" >
+														</th:block>
+														<th:block th:unless="${(goodsItem.stockQty <= 0 or goodsItem.soldoutYn == 'Y')}">
+															<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]])">
+														</th:block>
 														<a href="javascript:void(0);" class="itemLink" th:onclick="cfnGoToGoodsDetail([[${goodsItem.goodsCd}]]);">
 															<div class="itemPic">
 																<img alt="" class="vLHTC pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsItem.sysImgNm}">
@@ -228,6 +239,87 @@
 		$("#lookbookItemPop").append(tag);
 		$('#lookbookItemPop').modal("show");
 	}
+	
+	var fnAddCartLookBookGoods1 = function (obj, idx){
+		let $obj = $(obj);
+		let $target = $('.cont_items #itemsList'+idx).find('.item_prod');
+		let goodsSize = $target.length;
+		let btnType = "C";
+		let params = [];
+		let goodsIdx = 0;
+		
+		$target.each(function(){
+			goodsIdx ++;
+			if ($(this).hasClass('unable')) {
+				
+			}else{
+				// 옵션확인
+				let goodsCnt = $(this).find('input[name=lookbookGoodsOptCd]').length;
+				if(goodsCnt == 1){
+					let arrOpt = $(this).find('input[name=lookbookGoodsOptCd]').val();
+					let arrOptInfo = arrOpt.split(':');
+					
+					let obj = new Object();
+					obj.goodsCd = $(this).attr("goodsCd");
+					obj.optCd = arrOptInfo[1];
+					obj.goodsQty = $(this).attr("minOrdQty");
+					obj.goodsType = $(this).attr("goodsType");
+					obj.cartGb = btnType;
+					obj.afLinkCd = '';
+					obj.ithrCd = $(this).attr("ithrCd");
+					obj.contentsLoc = $(this).attr("contentsLoc");
+					obj.planDtlSq = '';
+					obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					if (goodsIdx == goodsSize){
+						obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+					}
+					params.push(obj);
+					
+					// 장바구니담기
+					cfnAddCart(params);
+				}else{
+					let $goods = $(this);
+					let cartGoodsList = [];
+					let compsList = [];
+					let goodsList = {
+						cartCompsList : new Array()
+					}
+					
+					let arrInfo = $(this).find('input[name=lookbookGoodsOptCd]').val().split(',');	// 상품코드단위
+					
+					
+					$.each(arrInfo, function(idx, item) {
+						let arrOptInfo = item.split(':');
+						
+						let obj = new Object();
+						obj.cartGb = btnType;
+						obj.goodsType = $goods.attr("goodsType");
+						obj.goodsCd = $goods.attr("goodsCd");
+						obj.itemCd =arrOptInfo[0];
+						obj.optCd = arrOptInfo[1];
+						obj.goodsQty = $goods.attr("minOrdQty");
+						obj.afLinkCd = '';
+						obj.ithrCd =  $goods.attr("ithrCd");
+						obj.contentsLoc = $goods.attr("contentsLoc");
+						obj.planDtlSq = ''
+						obj.multiGoodsGb = 'O'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						if (goodsIdx == goodsSize){
+							obj.multiGoodsGb = 'E'  // 단품, 세트 혼합쇼핑백처리일경우, 마지막이 아닌경우는 'O'아니고 NULL 아닌값
+						}
+						compsList.push(obj);
+						
+					});
+					
+					goodsList.cartCompsList = compsList;
+					cartGoodsList.push(goodsList);
+					
+					// 장바구니담기
+					cfnAddCart(cartGoodsList);
+				}
+			}
+		});
+	}
+	
 	// 컨텐츠 호출
 	$(document).ready( function() {
 		/* 슬라이드 - 상단_LOOKBOOK */
@@ -253,9 +345,12 @@
 			},
 			on: {
 				slideChange:function(){
+					// 05.06_ 추가 : .ioTit
 					$('.text_cont').removeClass('active');
+					$('.ioTit').removeClass('active');
 					$('.itemsOut').removeClass('active');
 					$('.text_cont').eq(this.realIndex).addClass('active');
+					$('.ioTit').eq(this.realIndex).addClass('active');
 					$('.itemsOut').eq(this.realIndex).addClass('active');
 				}
 			},
@@ -263,7 +358,7 @@
 			watchSlidesVisibility: true,
 			watchSlidesProgress: true,
 		});
-
+		
 		/* 슬라이드 - 룩북 상품 inSide */
 		var togetherIteminner = new Swiper('.br_lookbook_view.cont_items .items_inside', {
 			observer: true,
@@ -276,7 +371,7 @@
 			},
 			// nested: true,
 		});
-
+		
 		/* 슬라이드 - 다른 룩북 보기 */
 		var br_ohter_slide = new Swiper('.br_lookbook_view.cont_others .swiper-container', {
 			slidesPerView: 5,
@@ -286,7 +381,7 @@
 				prevEl: '.br_lookbook_view.cont_others .swiper-button-prev',
 			},
 		});
-
+		
 		// 슬라이드 - 상단_LOOKBOOK > picker - 룩북_피커_상품정보 팝업
 		$(document).on('click','#btn_picker_item01',function(e){
 			$("#lookbookItemPop").modal("show");

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

@@ -23,7 +23,7 @@
 		<div class="breadcrumb">
 			<ul>
 				<li class="bread_home"><a href="javascript:void(0);" id="navHome">홈</a></li>
-				<li class="bread_home" id="brandLi" th:if="${lbInfo.lookbookGb=='BL'}"></li>
+				<li class="bread_home" id="brandLi" th:if="${lbInfo.lookbookGb=='BL'}" th:text="${brandGroupInfo.brandGroupNm}"></li>
 				<li class="bread_2depth">룩북</li>
 			</ul>
 		</div>
@@ -67,7 +67,8 @@
 									<li>
 										<p><img src="/images/pc/ico_content_none.png" alt="등록된 이벤트가 없습니다."></p>
 										<span>등록된 룩북이 없습니다.</span>
-										<a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">메인으로 가기</a>
+										<a href="javascript:void(0);" th:unless="${lbInfo.lookbookGb=='BL'}" onclick="cfnGoToPage(_PAGE_MAIN);">메인으로 가기</a>
+										<a href="javascript:void(0);" th:if="${lbInfo.lookbookGb=='BL'}" th:onclick="cfnGoToBrandMain([[${lbInfo.brandCd}]]);" th:text="${brandGroupInfo.brandGroupNm+' 홈으로 가기'}"></a>
 									</li>
 								</ul>
 							</div>
@@ -84,7 +85,6 @@
 		lookbookGb = 'L';
 	}
 	var brandCd = [[${lbInfo.brandCd}]];
-	var navBrandNm = "";
 
 	let fnGetLookbookList = function (lookbookGb, brandGroupNo){
 		let actionUrl = '/display/lookbook/main/list?lookbookGb='+lookbookGb;
@@ -132,8 +132,6 @@
 							tag2 += '		</div>';
 							tag2 += '	</a>';
 							tag2 += '</li>';
-							navBrandNm = item.brandNm;
-							$("#brandLi").text(navBrandNm);
 						});
 						tag2 += '</ul>';
 

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

@@ -273,7 +273,7 @@
 															<div class="itemPic">
 																<img alt="" class="pd_img" th:src="${@environment.getProperty('upload.goods.view') + '/' + goodsData.sysImgNm}">
 															</div>
-															<p class="itemBrand" th:text="${goodsData.brandEnm}">BRAND NAME</p>
+															<p class="itemBrand" th:text="${goodsData.brandGroupNm}">BRAND NAME</p>
 															<div class="itemName" th:text="${goodsData.goodsNm}">여성 체인 프린트 큐롯 스커트 프린트 큐롯 스커트</div>
 															<p class="itemPrice">
 																[[${#numbers.formatInteger(goodsData.currPrice,0,'COMMA')} + 원]]

+ 5 - 5
src/main/webapp/WEB-INF/views/web/mypage/MypageGiftcardFormWeb.html

@@ -208,7 +208,7 @@
 					tmtbHtml += '		<td><span class="tag deepgray">차감</span></td>';
 				}
 				tmtbHtml += '<td>';
-				tmtbHtml += '<div class="txt_content">'	+ useGiftcard.goodsNm + '</div>';
+				tmtbHtml += '<div class="txt_content" style="padding-left:40px; text-align:left;">'	+ useGiftcard.goodsNm + '</div>';
 				tmtbHtml += '</td>';
 				if(useGiftcard.gfcdAmt<0){
 					tmtbHtml += '<td><span class="amount_minus"> <em>'
@@ -216,8 +216,8 @@
 						+ useGiftcard.gfcdAmt.addComma()
 						+ '</em>원';
 				}else{
-					tmtbHtml += '<td><span class="amount_plus"> <em>'
-						+ ' '
+					tmtbHtml += '<td><span class="amount_plus" style="color:#fd4802"> <em>'
+						+ '+'
 						+ useGiftcard.gfcdAmt.addComma()
 						+ '</em>원';
 				}
@@ -355,8 +355,8 @@
 				gagajf.ajaxJsonSubmit(
 						'/mypage/gift/use/confirm', jsonData,
 						function() {
-							$("#gift_input").val('');
-							//cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
+							//$("#gift_input").val('');
+							cfnGoToPage(_PAGE_MYPAGE_GIFTCARD);
 						});
 			}
 		});

+ 8 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html

@@ -95,21 +95,23 @@
 				tag +='			<div class="response_box">\n';
 				tag +='				<div class="full">\n';
 				tag +='					<dl>\n';
-				if (review.goodsOptionList != null && review.goodsOptionList.length > 0){
-					$.each(review.goodsOptionList, function(aIdx, reviewGoods){
 				tag +='						<div>\n';
 				tag +='							<dt>구매옵션</dt>\n';
-				tag +='							<dd>'+ reviewGoods.optCd1Nm +' / '+ reviewGoods.optCd2+'</dd>\n';
-				tag +='						</div>\n';
-					});		
+				if (review.goodsOptionList != null && review.goodsOptionList.length > 0){
+					tag +='							<dd>\n';	
+						$.each(review.goodsOptionList, function(aIdx, reviewGoods){
+					tag +='							<p><span>'+ reviewGoods.optCd1Nm +'</span> / <span>'+ reviewGoods.optCd2+'</span></p>\n';
+						});		
+					tag +='							<dd>\n';	
 				}
+				tag +='						</div>\n';
 				tag +='					</dl>\n';
 				tag +='				</div>\n';
 				tag +='				<div class="full">\n';
 				tag +='					<dl>\n';
 				tag +='						<div>\n';
 				tag +='							<dt>키/몸무게</dt>\n';
-				tag +='							<dd>'+review.height+' / '+review.weight +' \n';
+				tag +='							<dd>'+review.height+'cm / '+review.weight +'kg \n';
 				tag +='							</dd>\n';
 				tag +='						</div>\n';
 				tag +='					</dl>\n';

+ 63 - 60
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -157,6 +157,7 @@
                     <div>
                         <h4 th:if="${planInfo.planGb == 'P'}">다른 기획전 보기</h4>
                         <h4 th:if="${planInfo.planGb == 'E'}">다른 이벤트 보기</h4>
+                        <h4 th:if="${planInfo.planGb == 'C'}">다른 이벤트 보기</h4>
                         <a href="javascript:void(0);" th:if="${planInfo.planGb == 'P'}" onclick="cfnGoToPage(_PAGE_PLANNING_MAIN);">전체보기</a>
                         <a href="javascript:void(0);" th:if="${planInfo.planGb == 'E'}" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">전체보기</a>
                     </div>
@@ -227,7 +228,6 @@
 	<!-- //댓글 이미지 팝업 -->	    
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
-
 let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
 let plan = [[${planInfo}]];
@@ -266,69 +266,71 @@ if(planCornerList.length>0){
 		html += '             </div>';
 		html += '             <div class="itemsGrp">';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
-			html += '                 <div class="item_prod">';
-			html += '                     <div class="item_state">';
-			html += '		<button type="button" class="itemLike';
-			if(item2.likeIt == 'likeit'){
-				html += ' likeit';
-			}
-			html += ' "';
-			html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
-			
-			html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
-			html += '                             <div class="itemPic">';
-			html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
-			html += '                             </div>';
-			html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
-			html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
-			html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
-			if (item2.currPrice != item2.listPrice) {
-				html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
-			}
-			if (item2.dcRate != 0) {
-				html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
-			}
-			
-			
-			html += '                             </p>';
-			html += '                             <div class="itemcolorchip">';
-			if(!gagajf.isNull(item2.colorChips)){
-				var colorArr = item2.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'){
-						html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
-					}else{
-						html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+			if (item2.cornerNm == item.cornerNm) {
+				html += '                 <div class="item_prod">';
+				html += '                     <div class="item_state">';
+				html += '		<button type="button" class="itemLike';
+				if(item2.likeIt == 'likeit'){
+					html += ' likeit';
+				}
+				html += ' "';
+				html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+				
+				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
+				html += '                             <div class="itemPic">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                             </div>';
+				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
+				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
+				html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
+				if (item2.currPrice != item2.listPrice) {
+					html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+				}
+				if (item2.dcRate != 0) {
+					html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
+				}
+				
+				
+				html += '                             </p>';
+				html += '                             <div class="itemcolorchip">';
+				if(!gagajf.isNull(item2.colorChips)){
+					var colorArr = item2.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'){
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+						}else{
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+						}
 					}
 				}
-			}
-			html += '                             </div>';
-			if(!gagajf.isNull(item2.icon)){
-				var iconArr = item2.icon.split(",");
-				var iconGb = '';
-				var iconNm = '';
-				html += '	<p class="itemBadge">';
-				for(let i=0; i<iconArr.length; i++){
-					var iconInfo = iconArr[i].split(":");
-					iconGb = iconInfo[0];
-					iconNm = iconInfo[1];
-					html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+				html += '                             </div>';
+				if(!gagajf.isNull(item2.icon)){
+					var iconArr = item2.icon.split(",");
+					var iconGb = '';
+					var iconNm = '';
+					html += '	<p class="itemBadge">';
+					for(let i=0; i<iconArr.length; i++){
+						var iconInfo = iconArr[i].split(":");
+						iconGb = iconInfo[0];
+						iconNm = iconInfo[1];
+						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+					}
+					html += '	</p>';
 				}
-				html += '	</p>';
-			}
-			if(item2.goodsTnm != null){
-				html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+				if(item2.goodsTnm != null){
+					html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+				}
+				html += '                         </a>';
+				html += '                     </div>';
+				html += '                 </div>';
 			}
-			html += '                         </a>';
-			html += '                     </div>';
-			html += '                 </div>';
+			
 		})
-
 		html += '             </div>';
 		html += '         </div>';
 	})
@@ -948,6 +950,7 @@ var fnReplySave = function() {
 			ajaxReplyList();	
 			$('#replyText').val('');
 			$('.pics').remove();
+			$('.fileAdd').show();
 			//댓글 작성시 글자 카운트
 			$('#cmt_cnt').text(0);
 			});
@@ -1112,7 +1115,7 @@ $(document).ready( function() {
 			$("#replyText").val('');
 			return false;
 		}
-		
+		var imgFiles=$('.imgUpload .pics');
 		var maxFileLength = 10; /* 최대 파일 갯수를 입력해 주세요 */
 		if (imgFiles.length >= maxFileLength) {
 			mcxDialog.alert('이미지는 최대' + maxFileLength +'장 까지 첨부 가능합니다.');

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

@@ -139,12 +139,12 @@
 							<div class="benefit_con">
 							<ul>
 								 <th:block th:each="a, benefitStat : ${benefitList}">
-								<li th:if="${a.benefitGb == 'P'}">
+								<li th:if="${a.benefitGb == 'P' or ( a.basDays > 0 and a.dcVal > 0)}">
 									<div class="benfit_point">
 										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span>
 									</div>
 								</li>
-								<li th:if="${a.benefitGb == 'C'}">
+								<li th:if="${a.benefitGb == 'C'  or ( a.basDays > 0 and a.dcVal > 0)}">
 									<div class="benfit_coupon">
 										<th:block th:if="${a.dcWay == '%'}">
 										<span th:text="${a.basDays}"></span>일 출석 시 <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span><strong> 할인 쿠폰</strong>
@@ -154,7 +154,7 @@
 										</th:block>
 									</div>
 								</li>
-								<li th:if="${a.benefitGb == 'A'}">
+								<li th:if="${a.benefitGb == 'A'  or ( a.basDays > 0 and a.dcVal > 0)}">
 									<div class="benfit_coupon">
 									<th:block th:if="${a.dcWay == '%'}">
 										<span th:text="${a.basDays}"></span>일 출석 시<br><span class="c_primary"><em th:text="${a.pntAmt}"></em>P</span> + <span class="c_primary"><em th:text="${a.dcVal}"></em>%</span> <strong>할인 쿠폰</strong>
@@ -199,7 +199,7 @@
                 <div class="cont_head">
                     <div>
                         <h4>다른 이벤트 보기</h4>
-                        <a href="javascript:void(0);" th:if="${planInfo.planGb == 'E'}" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">전체보기</a>
+                        <a href="javascript:void(0);" th:if="${planInfo.planGb == 'C'}" onclick="cfnGoToPage(_PAGE_EVENT_MAIN);">전체보기</a>
                     </div>
                 </div>
                 <div class="cont_body">

+ 69 - 63
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -35,7 +35,7 @@
 				</div>
 				<div class="cont_body">
 				    <div class="bulletship">
-						<div class="bulletship_head">
+						<div class="bulletship_head" th:utext="${#strings.replace(#strings.replace(shotHtmlTop.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
                             <img src="/images/pc/thumb/bullet_bg1.png" alt="10시까지 주문하면 당일도착">
                         </div>
                         <div class="bulletship_body" id="shotHtml">
@@ -50,8 +50,13 @@
                             </div> -->
                             		<!-- 비로그인 상태 or 로그인을 했지만 주소정보를 못 가져오는 경우 -->                      
                         </div>
-                        <div class="bulletship_foot"><div class="bulletship_foot"><br></div></div><div class="bulletship_foot"><br></div><div class="bulletship_foot">
-                            <img src="/images/pc/thumb/bullet_bg2.png" alt="주문/도착, 배송일, 대상상품">
+                        <div class="bulletship_foot">
+                        	<div class="bulletship_foot"><br></div>
+                        </div>
+                        <div class="bulletship_foot"><br>
+                        </div>
+                        <div class="bulletship_foot" th:utext="${#strings.replace(#strings.replace(shotHtmlBtm.fsrcPc,'&amplt;','<'),'&ampgt;','>')}">
+                           <!--  <img src="/images/pc/thumb/bullet_bg2.png" alt="주문/도착, 배송일, 대상상품"> -->
                         </div>
                     </div> 
                 </div>
@@ -166,69 +171,70 @@ if(planCornerList.length>0){
 		html += '             </div>';
 		html += '             <div class="itemsGrp">';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
-			html += '                 <div class="item_prod">';
-			html += '                     <div class="item_state">';
-			if(item2.likeIt === 'likeit'){
-			html += '		<button type="button" class="itemLike likeit active"';
-			}else{
-				html += '		<button type="button" class="itemLike"';
-			}
-			html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
-			
-			html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
-			html += '                             <div class="itemPic">';
-			html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
-			html += '                             </div>';
-			html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
-			html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
-			html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
-			if (item2.currPrice != item2.listPrice) {
-				html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
-			}
-			if (item2.dcRate != 0) {
-				html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
-			}
-			
-			
-			html += '                             </p>';
-			html += '                             <div class="itemcolorchip">';
-			if(!gagajf.isNull(item2.colorChips)){
-				var colorArr = item2.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'){
-						html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
-					}else{
-						html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+			if (item2.cornerNm == item.cornerNm) {
+				html += '                 <div class="item_prod">';
+				html += '                     <div class="item_state">';
+				if(item2.likeIt === 'likeit'){
+				html += '		<button type="button" class="itemLike likeit active"';
+				}else{
+					html += '		<button type="button" class="itemLike"';
+				}
+				html += ' onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
+				
+				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
+				html += '                             <div class="itemPic">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                             </div>';
+				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
+				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
+				html += '                             <p class="itemPrice">'+item2.currPrice.addComma();
+				if (item2.currPrice != item2.listPrice) {
+					html += '                                 <span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+				}
+				if (item2.dcRate != 0) {
+					html += '                                 <span class=" itemPercent">'+item2.dcRate.addComma()+'%</span>';
+				}
+				
+				
+				html += '                             </p>';
+				html += '                             <div class="itemcolorchip">';
+				if(!gagajf.isNull(item2.colorChips)){
+					var colorArr = item2.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'){
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+						}else{
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+						}
 					}
 				}
-			}
-			html += '                             </div>';
-			if(!gagajf.isNull(item2.icon)){
-				var iconArr = item2.icon.split(",");
-				var iconGb = '';
-				var iconNm = '';
-				html += '	<p class="itemBadge">';
-				for(let i=0; i<iconArr.length; i++){
-					var iconInfo = iconArr[i].split(":");
-					iconGb = iconInfo[0];
-					iconNm = iconInfo[1];
-					html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+				html += '                             </div>';
+				if(!gagajf.isNull(item2.icon)){
+					var iconArr = item2.icon.split(",");
+					var iconGb = '';
+					var iconNm = '';
+					html += '	<p class="itemBadge">';
+					for(let i=0; i<iconArr.length; i++){
+						var iconInfo = iconArr[i].split(":");
+						iconGb = iconInfo[0];
+						iconNm = iconInfo[1];
+						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+					}
+					html += '	</p>';
 				}
-				html += '	</p>';
-			}
-			if(item2.goodsTnm != null){
-				html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+				if(item2.goodsTnm != null){
+					html += '			<div class="itemComment">'+item2.goodsTnm+'</div>';
+				}
+				html += '                         </a>';
+				html += '                     </div>';
+				html += '                 </div>';
 			}
-			html += '                         </a>';
-			html += '                     </div>';
-			html += '                 </div>';
 		})
-
 		html += '             </div>';
 		html += '         </div>';
 	})
@@ -242,7 +248,7 @@ if(planCornerList.length>0){
 }
 
 var shotBody = function () {
-	if (!cfCheckLogin() || (custAddr == null && custAddr == '')) {
+	if (!cfCheckLogin() || (custAddr == null || custAddr == '')) {
 		html = '';
 		html += '<div class="txt_result">                                                                              ';
 		html += '     <p>오전10시 이전 주문 당일도착</p>                                                                         ';
@@ -288,7 +294,7 @@ var fnOpenDaumAddr = function() {
 						success 	: function(result) {
 							if (result != null) {
 								$('#addr').text(cfnGetDaumRoadAddr(data));
-								if(result.shotDelvUseYn == "Y"){
+								if(result.shotYn.shotDelvUseYn == "Y"){
 									$('#shotAdr').text("총알배송");
 									$("#infoTxt").text("오늘 오전 10시까지 주문하시면 오늘 도착합니다. (토, 일, 공휴일 휴무)")
 									

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

@@ -27,7 +27,17 @@
 			</ul> 
 		</div>
 		<div class="wrap">
-		<th:block th:if="${socialInfo != null}">
+				<div class="nodata" style="display: none;">
+					<div class="txt_box">
+						<p>진행하는 핫딜이 없습니다.</p>
+					</div>
+					<div class="btn_box">
+						<button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);">
+							<span>홈으로 가기</span>
+						</button>
+					</div>
+				</div>
+				<th:block th:if="${socialInfo != null}">
 			<div class="content wide dp_hotdeal"> <!-- 페이지특정 클래스 = dp_hotdeal -->
 				<div class="cont_body">
                     <div class="hotdeal">
@@ -166,6 +176,7 @@ var fnDrawInfiniteScrollData = function (result){
 	gagaInfiniteScroll.pageStatus.totalCount = result.totalCnt;
 
 	if (result.dataList != null && result.dataList.length > 0) {
+		$(".nodata").hide();		
 		let lastPage = result.paging.pageable.pageNo;
 		let endRow = result.endRow - result.paging.pageable.pageSize;
 		
@@ -173,22 +184,11 @@ var fnDrawInfiniteScrollData = function (result){
 		gagaInfiniteScroll.draw(htm);
 	}else{
 		if($("#socialForm input[name=pageNo]").val()==1){
-			var html = '';
-			html += '<div class="nodata" >';
-			html += '	<div class="txt_box">';
-			html += '		<p>';
-			html += '			진행하는 핫딜이 없습니다.';
-			html += '		</p>';
-			html += '	</div>';
-			html += '	<div class="btn_box">';
-			html += '		<button class="btn btn_default" onclick="cfnGoToPage(_PAGE_MAIN);"><span>홈으로 가기</span></button>';
-			html += '	</div>';
-			html += '</div>';	
-			
-			$('#listBox').html(html);
+			$(".nodata").show();		
 		}
 		$("#divLastPage").show();
 		gagaInfiniteScroll.draw('not');
+		
 	}
 }
 
@@ -196,6 +196,7 @@ var fnDrawInfiniteScrollData = function (result){
 $(function(){
 	fnSocialListSearch();
        /* 핫딜 countDown */
+    
        function hotdealTimer() {
            var endTime = new Date(socialInfo.socialEddt); // 남은시간 지정
 
@@ -220,7 +221,11 @@ $(function(){
                $('#h-minutes').html(minutes);
                $('#h-seconds').html(seconds);		
        }
-       setInterval(function() { hotdealTimer(); }, 1000);
+       
+     if (socialInfo != null) {
+    	setInterval(function() { hotdealTimer(); }, 1000);
+  	 }
+       
        /* countDown */
 });
 

+ 66 - 10
src/main/webapp/biz/goods.js

@@ -175,7 +175,23 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		}
 
 		tag += '<div class="item_prod">';
-		tag += '	<div class="item_state">';
+		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';
@@ -184,8 +200,8 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 		tag += ' onClick="cfnPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		tag += '<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\');">';
 		tag += '			<div class="itemPic">';
-		if(!gagajf.isNull(item.videoVal)){
-			var videoArr = item.videoVal.split(",");
+		if(!gagajf.isNull(item.videos)){
+			var videoArr = item.videos.split(",");
 			var videoGb = '';
 			var videoUrl = '';
 			for(let i=0; i<videoArr.length; i++){
@@ -194,10 +210,10 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 				videoUrl = videoInfo[1];
 			}
 			if(videoGb=='Y'){
-				tag += '<iframe id="child" class="pd_mov" src="https://www.youtube.com/embed/'+videoUrl+'"></iframe>';
+				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="child" class="pd_mov" src="http://v.kr.kollus.com/'+videoUrl+'?enable_initialize_focus=false&autoplay&mute&controls_activation=none" allow="fullscreen" allowFullScreen></iframe>';
+				tag += '<iframe id="pdThumbVideo" class="pd_mov" src="http://v.kr.kollus.com/'+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)">';
@@ -233,7 +249,7 @@ var fnCreateGoodsList = function(result, ithrCd, contentLoc, goodsUrl, lastPage,
 					if(soldOutYn=='N'){
 						tag +='		<li>'+sizeVal+'</li>';
 					}else{
-						tag +='		<li className="none">'+sizeVal+'</li>';
+						tag +='		<li class="none">'+sizeVal+'</li>';
 					}
 				}
 				tag += '</ul>';
@@ -376,7 +392,6 @@ var filterSel = function (obj, gubun, staus, sizeGb){
 		$("#filterData").append(tag);
 		filterStatHtml += tag;
 	}
-
 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
 	fnFilterSet(gubun, sizeGb);
 }
@@ -429,6 +444,24 @@ var fnDeleteFilter = function (obj, gubun, staus, sizeGb){
 	$(obj).closest("span").remove();
 }
 
+var fnFilterSliderMove = function (min, max){
+	var $range = $(".dp .js-range-slider01, .sch_result .js-range-slider01");
+	var $inputFrom = $("#price_input_from");
+	var $inputTo = $("#price_input_to");
+	var instance;
+	
+	instance = $range.data("ionRangeSlider");
+	instance.update({
+		from: min
+	});
+	$inputFrom.val(min);
+	
+	instance.update({
+		to: max
+	});
+	$inputTo.prop("value",max);
+}
+
 var fnFilterSlider = function (gubun, min, max){
 	let tag = '';
 	let oriMin = '';
@@ -465,16 +498,17 @@ var fnFilterSlider = function (gubun, min, max){
 		tag2 += '<input type="hidden" name="priceFrom" value="'+min.replace(",", "")+'"/>\n';
 		tag2 += '<input type="hidden" name="priceTo" value="'+max.replace(",", "")+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
-		filterStatHtml += tag2;
+		filterHtml += tag2;
 		fnCategoryGoodsInfiniteScrollInit();
 	}else{
 		tag2 += '<input type="hidden" name="dcRateFrom" value="'+min+'"/>\n';
 		tag2 += '<input type="hidden" name="dcRateTo" value="'+max+'"/>\n';
 		$("#searchGoodsForm").append(tag2);
 		fnCategoryGoodsInfiniteScrollInit();
-		filterStatHtml += tag2;
+		filterHtml += tag2;
 	}
-
+	
+	gagaInfiniteScroll.pageStatus.filterHtml = filterHtml;
 	gagaInfiniteScroll.pageStatus.filterStatHtml = filterStatHtml;
 	fnGoodsListSearch();
 }
@@ -522,4 +556,26 @@ var fnDeleteFilterSlider = function (obj, gubun, minVal, maxVal){
 	fnGoodsListSearch();
 }
 
+// 정렬 순서
+var fnSortingChange = function (obj, sortingType, stat){
+	if(stat != 'back'){
+		if($("#searchGoodsForm input[name=sortingType]").val()==sortingType){
+			return;
+		}
+	}
+	
+	$("#sortArea").find('li').each(function (){
+		$(this).find('a').attr('class','off');
+	});
+	
+	$(obj).addClass("on");
+	if(stat=='back'){
+		$("#sorting"+sortingType).addClass("on");
+	}
+	$("#searchGoodsForm").find("[name=sortingType]").val(sortingType);
+	gagaInfiniteScroll.pageStatus.sortingType = sortingType;
+	fnCategoryGoodsInfiniteScrollInit();
+	fnGoodsListSearch();
+}
+
 //****************상품리스트  end **********************************

+ 4 - 0
src/main/webapp/ux/mo/css/layout_m.css

@@ -913,6 +913,10 @@ header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-tra
 /* 210503 */
 .br .br_lookbook .inner .lb_text .text_cont{display:none; height: 3.4rem; overflow: hidden; margin: 0 0 2.4rem; font-size: 1.2rem; font-weight: 300; line-height: 1.8rem;}
 .br .br_lookbook .inner .lb_text .text_cont.active{display:block;}
+.br .br_inlookbook .ioTit{display:none}
+.br .br_inlookbook .ioTit.active{display:block}
+.br .br_inlookbook .ioBtn{display:none}
+.br .br_inlookbook .ioBtn.active{display:block}
 .br .br_inlookbook .itemsOut{display:none}
 .br .br_inlookbook .itemsOut.active{display:block}
 

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

@@ -2543,7 +2543,7 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 .popup_main_notice .popup_content .popup_body .swiper-container {height: 100%;}
 .popup_main_notice .popup_content .popup_body .swiper-slide {position: relative;}
 .popup_main_notice .popup_content .popup_body .swiper-slide img {width: 100%; position: absolute; top: 50%; left: 50%; transform:translate(-50%, -50%); height: auto;}
-.popup_main_notice .popup_content .popup_footer {position: relative; background:#222; height: 6rem; padding: 2.2rem;}
+.popup_main_notice .popup_content .popup_footer {position: fixed; left:0; bottom:0; width: 100%; background:#222; height: 6rem; padding: 2.2rem;}
 .popup_main_notice .popup_content .popup_footer::after {content:''; clear:both; display:block;}
 .popup_main_notice .popup_content .popup_footer a.btn_underline {display:inline-block; float:left; color:#888; font-size:1.3rem; font-weight:200; border-color:#888}
 .popup_main_notice .popup_content .popup_footer a.btn_popup_close {position: absolute; top: 0; right: 0; width: 6rem; height: 6rem; background: url(/images/mo/btn_main_pop_arrow.png) no-repeat center; background-size:1.6rem;}
@@ -2574,5 +2574,14 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 /* popup_마이페이지 회수조회 팝업 */
 .modal.reclaim_pop {}
 .modal.reclaim_pop .modal-body {margin-top: 8rem;}
-.modal.reclaim_pop .modal-body .pop_cont {color:#222;}
-.modal.reclaim_pop .modal-body .pop_cont .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding-bottom: 1.5rem;}
+.modal.reclaim_pop .modal-body .pop_cont {color:#222; font-weight: 300;}
+.modal.reclaim_pop .modal-body .pop_cont .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding-bottom: 1.5rem;}
+.modal.reclaim_pop .modal-body .pop_cont .tbl_wrap .tbl {border-bottom: 1px solid #ddd; padding:2rem 0;}
+.modal.reclaim_pop .modal-body .pop_cont .inner {margin-bottom: 1.2rem;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tbltitWrap {margin-top: 0;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap {margin: 0;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl th {background: #f5f5f5;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table {table-layout: fixed;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr th {font-size: 1.3rem;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr td {font-size: 1.2rem;}
+.modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr th, .modal.reclaim_pop .modal-body .pop_cont .goods_tbl .tblWrap table tr td {border-left: 0; word-break: break-all;}

+ 5 - 4
src/main/webapp/ux/pc/css/common.css

@@ -762,7 +762,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemsGrp.rowtype .item_prod .itemLike {left:240px; z-index:99;}
 .itemsGrp.rowtype .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; padding-top: 0; width: 280px; height: 420px;}
 .itemsGrp.rowtype .item_prod .itemPic .shape {z-index: 89;}
-.itemsGrp.rowtype .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
+.itemsGrp.rowtype .item_prod .itemPic::after {background: #f9f9f9; opacity:1; z-index: 87;}
 .itemsGrp.rowtype .item_prod .itemPic .pd_img {z-index: 88;}
 .itemsGrp.rowtype .item_state.soldout .itemPic:before {content:'SOLD OUT'; position:absolute; top:50%; left:50%; color:#fff; font-size:28px; font-weight:500; background:rgba(0,0,0,.7); width:100%; height:100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 89; text-align:center;}
 .itemsGrp.rowtype .item_prod .itemBrand {margin:0px; font-size: 16px; font-weight: 300;}
@@ -779,7 +779,8 @@ content: "〉";font-size: 12px;padding-left: 8px;
 
 .item_prod {width: 20%;display: inline-block;font-size: 0px;vertical-align: top;color: rgb(31, 31, 31);position: relative;letter-spacing: -0.2px;}
 .item_state {position: relative; padding: 0px 10px 60px; box-sizing: border-box;}
-.itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
+.itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 28px; font-weight: 500; color:#fff; background: rgba(0,0,0,.7); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 20; text-align: center;}
+.itemsGrp .item_state.AD .itemPic:before {content:'AD'; position: absolute; bottom: 20px; right: 20px; font-size: 14px; font-weight: 300; letter-spacing: -0.025em; color:#888888; width: auto; height: auto; line-height: 14px; z-index: 21; text-align: right;}
 @media (max-width: 1919px) and (min-width: 1401px){/* .item_state {padding-left: 6px;padding-right: 6px;} */}
 .hgbgCa {width: 100%;height: 100%;}
 .fgRDJH {padding: 0px 40px;font-size: 0px;box-sizing: border-box;}
@@ -797,7 +798,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemLike.likeit::before {opacity: 1;}
 
 .itemLink {z-index:20;position: relative;text-decoration: none;color: rgb(102, 102, 102);cursor: pointer;display: block;}
-.itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;background-color: #ffffff;}
+.itemPic {position: relative;width: 100%;margin-bottom:20px;padding-top: 150%;font-size: 0px;overflow: hidden;background-color: #f9f9f9;}
 .itemPic::after {content: "";display: block;position: absolute;top: 0px;left: 0px;width: 100%;height: 100%;opacity: 0;background-color: rgb(0, 0, 0);z-index: 999;}
 .itemPic .pd_img,
 .itemPic .pd_mov {position: absolute;width: 100%;height: auto;top: 50%;left: 0px;transform: translateY(-50%);}
@@ -805,7 +806,7 @@ content: "〉";font-size: 12px;padding-left: 8px;
 .itemPic .pd_img {z-index: 1;transition: 0.5s;}
 .itemPic .pd_img::after {content: '';display: block; height: 100%;width: 100%;background: #333;}
 /* .itemPic .pd_img {position: absolute;width: 100%;width: auto; height: auto;max-height: 500px;top: 50%;left: 50%;transform: translate(-50%,-50%);} */
-.itemOpt{z-index:3; pointer-events:none;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:111px;padding: 32px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); transition-duration:0.45s;}
+.itemOpt{z-index:3; pointer-events:none;position: absolute;bottom: -120px; left: 0; right: 0; width: 100%; height:62px;padding: 25px 0; text-align:center; color: #fff; background: rgb(0 0 0 / 0.8); transition-duration:0.45s;}
 .itemOpt.on{transition-duration:0.45s;bottom:0;}
 .itemOpt p{font-size: 12px;line-height: 1.2;padding-bottom: 15px;}
 .itemOpt ul{display: block;margin: 0 auto;width: auto;}

+ 5 - 5
src/main/webapp/ux/pc/css/layout.css

@@ -391,7 +391,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 #quick_menu .shopingbag .itemsGrp .item_prod .itemLike {z-index: 99;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 120px; padding-top: 180px;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic .shape {z-index: 89;}
-#quick_menu .shopingbag .itemsGrp .item_prod .itemPic::after {background: #f5f5f5; opacity:1; z-index: 87;}
+#quick_menu .shopingbag .itemsGrp .item_prod .itemPic::after {background: #f9f9f9; opacity:1; z-index: 87;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemPic .pd_img {z-index: 88;}
 #quick_menu .shopingbag .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
 #quick_menu .shopingbag .itemsGrp .item_prod .itemBrand {margin:0px 0 15px; font-size: 12px; line-height:14px; font-weight: 300;}
@@ -1800,7 +1800,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.dp_Exhibition .exhi_list .exhi_item_pr li {height: 150px; margin-bottom: 16px;}
 	.dp_Exhibition .exhi_list .exhi_item_pr li:last-child {margin-bottom: 0;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .item_prod {width: 100%; margin-right: 0; margin-bottom: 0; height: 150px;}
-	.dp_Exhibition .exhi_list .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0; background:#f5f5f5;}
+	.dp_Exhibition .exhi_list .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0; background:#f9f9f9;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemLink {position: static; display: table-cell; vertical-align:middle;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemName {font-size: 14px; line-height: 1.4; max-height: none; margin: 0px 0px 15px; height:auto;}
 	.dp_Exhibition .exhi_list .exhi_item_pr .itemPrice {margin-left: 0; margin-right: 0;}
@@ -3280,7 +3280,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod {width: 100%; overflow: hidden;}
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .item_state {display: table; padding-left: 310px; padding-right: 55px; padding-bottom: 0; width: 100%; min-height:390px;}
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .itemLink {display: table-cell; position: static; vertical-align: middle;}
-	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f5f5f5;}
+	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f9f9f9;}
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .itemBrand {margin:0px 0px 15px; font-size: 14px; font-weight: 300;}
 	.pd_pop.pd_lookbook_pop .itemsGrp .item_prod .itemName {margin:0px 0px 25px; font-size: 18px; font-weight: 300; line-height: 28px; height:56px;}
@@ -3775,7 +3775,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr li:last-child {margin-bottom: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .item_prod {width: 100%; margin-right: 0; margin-bottom: 0; height: 150px;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr {background: #fff; padding: 20px; position: relative; z-index: 9; width: 88.4%; margin:-70px auto 0;}
-	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; background:#f5f5f5; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0;}
+	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPic {position: absolute; left: 0; top: 0; background:#f9f9f9; width: 100px; height: 150px; padding-top: 0; margin-bottom: 0;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemLink {position: static; display: table-cell; vertical-align:middle;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemName {font-size: 14px; line-height: 1.4; max-height: none; margin: 0px 0px 15px; height:auto;}
 	.sch_result .cont_body .sch_result_cont .exhi_list .itemsGrp .exhi_item_pr .itemPrice {margin-left: 0; margin-right: 0; font-size: 16px;}
@@ -4823,7 +4823,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.lookbook_item_pop .itemsGrp .item_prod {width: 100%; overflow: hidden;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .item_state {display: table; padding-left: 310px; padding-right: 55px; padding-bottom: 0; width: 100%; min-height:390px;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemLink {display: table-cell; position: static; vertical-align: middle;}
-	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f5f5f5;}
+	.modal.lookbook_item_pop .itemsGrp .item_prod .itemPic {position: absolute; top: 0; left: 0; margin-bottom: 0; width: 260px; height:390px; padding:0; background: #f9f9f9;}
 	.modal.lookbook_item_pop .itemsGrp .item_state.soldout .itemPic:before {content:'SOLD OUT'; position: absolute; top: 50%; left: 50%; font-size: 20px; color:#fff; background: rgba(0,0,0,.5); width: 100%; height: 100%; transform:translate(-50%, -50%); line-height: 420px; z-index: 1; text-align: center;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemBrand {margin:0px 0px 15px; font-size: 14px; font-weight: 300;}
 	.modal.lookbook_item_pop .itemsGrp .item_prod .itemName {margin:0px 0px 25px; font-size: 18px; font-weight: 300; line-height: 28px; height:56px;}

+ 1 - 1
src/main/webapp/ux/plugins/gaga/gaga.infinite.scrollSession.js

@@ -184,7 +184,7 @@ var gagaInfiniteScroll = {
 				, dataIndex : sDataIndex
 				, htm : sHtml
 				, sortingType : gagaInfiniteScroll.pageStatus.sortingType
-				, ssortingTypeNm : gagaInfiniteScroll.pageStatus.sortingTypeNm
+				, sortingTypeNm : gagaInfiniteScroll.pageStatus.sortingTypeNm
 				, filterHtml : gagaInfiniteScroll.pageStatus.filterHtml
 				, filterStatHtml : gagaInfiniteScroll.pageStatus.filterStatHtml
 				, totalCount : gagaInfiniteScroll.pageStatus.totalCount