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

이벤트출석체크,[mo]출석,쿠폰,쿠폰팝업

sowon4187 5 лет назад
Родитель
Сommit
fcca2f139f
27 измененных файлов с 834 добавлено и 71 удалено
  1. 11 0
      src/main/java/com/style24/front/biz/dao/TsfCouponDao.java
  2. 9 0
      src/main/java/com/style24/front/biz/dao/TsfReviewDao.java
  3. 13 0
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  4. 1 0
      src/main/java/com/style24/front/biz/service/TsfPlanningService.java
  5. 11 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  6. 18 2
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  7. 75 5
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  8. 4 0
      src/main/java/com/style24/persistence/domain/Plan.java
  9. 2 1
      src/main/java/com/style24/persistence/domain/Review.java
  10. 20 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  11. 29 7
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  12. 12 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  13. 54 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponDetailFormMob.html
  14. 152 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponFormMob.html
  15. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageGiftcardFormMob.html
  16. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  17. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageWishListFormMob.html
  18. 334 0
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  19. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCouponDetailFormWeb.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCouponFormWeb.html
  21. 13 4
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  22. 2 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  23. BIN
      src/main/webapp/images/mo/ico_check_coupon.png
  24. BIN
      src/main/webapp/images/mo/ico_check_point.png
  25. 4 3
      src/main/webapp/ux/mo/css/common_m.css
  26. 21 12
      src/main/webapp/ux/mo/css/layout_m.css
  27. 43 27
      src/main/webapp/ux/mo/css/style24_m.css

+ 11 - 0
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.Goods;
 
 /**
@@ -136,6 +137,16 @@ public interface TsfCouponDao {
 	 */
 	Coupon getPlanCouponDetailInfo(Coupon coupon);
 	
+	/**
+	 * 출석체크 쿠폰  정보
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author sowon
+	 * @since 2021. 04. 15
+	 */
+	CustCoupon getAttendCouponInfo(CustCoupon coupon);
+	
+	
 	
 	
 }

+ 9 - 0
src/main/java/com/style24/front/biz/dao/TsfReviewDao.java

@@ -169,6 +169,15 @@ public interface TsfReviewDao {
 	 */
 	Review reviewDeleteConfirm(Review review);
 	
+	/**
+	 * 마이페이지 어드민댓글 확인
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 4. 15
+	 */
+	void reviewCustomerConfirm(Review review);
+	
 	
 	
 	

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

@@ -606,5 +606,18 @@ public class TsfCouponService {
 		return couponDao.getPlanCouponDetailInfo(coupon);
 	}
 	
+	/**
+	 * 출석체크 쿠폰  정보
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author sowon
+	 * @since 2021. 04. 15
+	 */
+	public CustCoupon getAttendCouponInfo(CustCoupon coupon) {
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		coupon.setFrontGb(TsfSession.getFrontGb());
+		return couponDao.getAttendCouponInfo(coupon);
+	}
+	
 
 }

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

@@ -526,6 +526,7 @@ public class TsfPlanningService {
 	 * @date 2021. 4. 14
 	 */
 	public Collection<Plan> getAttendBenefitList(Plan plan){
+		plan.setFrontGb(TsfSession.getFrontGb());
 		return planningDao.getAttendBenefitList(plan);
 	}
 

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

@@ -239,6 +239,17 @@ public class TsfReviewService {
 		return reviewDao.reviewDeleteConfirm(review);
 	}
 	
+	/**
+	 * 마이페이지 어드민댓글 확인
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 4. 15
+	 */
+	public void reviewCustomerConfirm(Review review) {
+		review.setCustNo(TsfSession.getInfo().getCustNo());
+		reviewDao.reviewCustomerConfirm(review);
+	}
 	
 	
 	

+ 18 - 2
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1511,9 +1511,25 @@ public class TsfMypageController extends TsfBaseController {
 	public GagaMap mypageReviewDelete(@RequestBody Review review) throws Exception {
 		GagaMap result = new GagaMap();
 		reviewService.reviewDelete(review);
-
 		result.set("status", "200");
-
+		return result;
+	}
+	
+	/**
+	 * 마이페이지 어드민 댓글 확인
+	 *
+	 * @param review
+	 * @return 
+	 * @throws Exception
+	 * @author sowon
+	 * @since 2021. 04. 15
+	 */
+	@PostMapping("/review/customer/confirm")
+	@ResponseBody
+	public GagaMap mypageReviewCustomerConfirm(@RequestBody Review review) throws Exception {
+		GagaMap result = new GagaMap();
+		reviewService.reviewCustomerConfirm(review);
+		result.set("status", "200");
 		return result;
 	}
 

+ 75 - 5
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -1,7 +1,12 @@
 package com.style24.front.biz.web;
 
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Collection;
+import java.util.Date;
 import java.util.Map;
 
 import com.style24.front.biz.service.TsfCustomerService;
@@ -29,14 +34,13 @@ import com.style24.front.support.controller.TsfBaseController;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.CustCoupon;
 import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
-import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Plan;
 import com.style24.persistence.domain.Point;
 import com.style24.persistence.domain.Poll;
 import com.style24.persistence.domain.Review;
-import com.style24.persistence.domain.WishList;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -229,6 +233,8 @@ public class TsfPlanningController extends TsfBaseController {
 			mav.addObject("planList", planningService.getPlanEventList(plan));
 			mav.addObject("listSize", planningService.getPlanEventList(plan).size());
 			mav.addObject("month", planningService.getAttendMonth(planInfo));
+			mav.addObject("benefitList", planningService.getAttendBenefitList(plan));
+			
 			if (TsfSession.isLogin()) {
 				mav.addObject("custAttendList",planningService.getCustAttendEntryList(plan));
 			}
@@ -603,7 +609,6 @@ public class TsfPlanningController extends TsfBaseController {
 			count = planningService.getAttendEntryCount(plan);
 			for (Plan tPlan : benefitList) {
 				if (tPlan.getBasDays() == count) {
-					System.out.println("여기들어오니?1");
 					// 지급 방식이 포인트일 경우
 					if (tPlan.getBenefitGb().equals("P")) {
 						Point point = new Point();
@@ -614,13 +619,72 @@ public class TsfPlanningController extends TsfBaseController {
 						point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
 						point.setGvPntAmt(pointAmt);
 						point.setRmPntAmt(pointAmt);
+						point.setPntAmt(pointAmt);
+						point.setOccurDtlDesc("출석체크이벤트");
 						point.setOccurGb("G069_37"); //출석체크 이벤트
+						Calendar cal = Calendar.getInstance();
+				        cal.setTime(new Date());
+				        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+				        int usableDay = tPlan.getPntUsableDay();
+				       cal.add(Calendar.DATE, +usableDay);
+				        point.setExpBeDt(df.format(cal.getTime()));
 						corePointService.saveCustomerPoint(point);
-						System.out.println("여기들어오니?2");
-						String msg =  "축하합니다." + pointAmt + "포인트가 지급 되었습니다!";
+						String msg =  "축하합니다. " + toNumFormat(pointAmt) + " 포인트가 지급 되었습니다!";
 						result.set("msg", msg);
 						break;
 					}
+					else if(tPlan.getBenefitGb().equals("C")) {
+						CustCoupon coupon = new CustCoupon();
+						coupon.setCpnId(tPlan.getCpnId());
+						coupon = couponService.getAttendCouponInfo(coupon);
+						coupon.setCustNo(TsfSession.getInfo().getCustNo());
+						coupon.setRegNo(TsfSession.getInfo().getCustNo());
+						coupon.setUpdNo(TsfSession.getInfo().getCustNo());
+						// 이거 공통코드 변경예정.. 밑에
+						coupon.setPubReason("G068_60");
+						coupon.setPubReasonDtl("이벤트출석체크");
+						coupon.setEndAlimSendYn("N");
+						coreCouponService.saveCouponIssue(coupon);
+						String msg =  "축하합니다. " + toNumFormat(coupon.getDcVal()) +coupon.getDcWay() + " 할인쿠폰이 지급 되었습니다!";
+						result.set("msg", msg);
+						break;
+					}
+					else if(tPlan.getBenefitGb().equals("A")) {
+						Point point = new Point();
+						int pointAmt = tPlan.getPntAmt();
+						point.setRegNo(TsfSession.getInfo().getCustNo());
+						point.setUpdNo(TsfSession.getInfo().getCustNo());
+						point.setCustNo(TsfSession.getInfo().getCustNo());
+						point.setPntUploadStat(TscConstants.PntUploadStat.APPLY_COMPLETE.value());
+						point.setGvPntAmt(pointAmt);
+						point.setRmPntAmt(pointAmt);
+						point.setPntAmt(pointAmt);
+						point.setOccurDtlDesc("출석체크이벤트");
+						point.setOccurGb("G069_37"); //출석체크 이벤트
+						Calendar cal = Calendar.getInstance();
+				        cal.setTime(new Date());
+				        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+				        int usableDay = tPlan.getPntUsableDay();
+				       cal.add(Calendar.DATE, +usableDay);
+				        point.setExpBeDt(df.format(cal.getTime()));
+						corePointService.saveCustomerPoint(point);
+						
+						CustCoupon coupon = new CustCoupon();
+						coupon.setCpnId(tPlan.getCpnId());
+						coupon = couponService.getAttendCouponInfo(coupon);
+						coupon.setCustNo(TsfSession.getInfo().getCustNo());
+						coupon.setRegNo(TsfSession.getInfo().getCustNo());
+						coupon.setUpdNo(TsfSession.getInfo().getCustNo());
+						// 이거 공통코드 변경예정.. 밑에
+						coupon.setPubReason("G068_60");
+						coupon.setPubReasonDtl("이벤트출석체크");
+						coupon.setEndAlimSendYn("N");
+						coreCouponService.saveCouponIssue(coupon);
+						String msg =  "축하합니다. " + toNumFormat(pointAmt) + " 포인트와 " + toNumFormat(coupon.getDcVal()) +coupon.getDcWay() + " 할인쿠폰이 지급 되었습니다!";
+						result.set("msg", msg);
+						
+						
+					}
 
 				}else {
 					result.set("msg", "출석체크 되었습니다.");
@@ -632,4 +696,10 @@ public class TsfPlanningController extends TsfBaseController {
 		result.set("custAttendList",planningService.getCustAttendEntryList(plan));
 		return result;
 	}
+	
+	// 컴마
+	 public static String toNumFormat(int num) {
+		  DecimalFormat df = new DecimalFormat("#,###");
+		  return df.format(num);
+	 }
 }

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

@@ -275,6 +275,10 @@ public class Plan extends TscBaseDomain {
 	private String benefitGb;
 	private int pntAmt;
 	private Integer cpnId;
+	private String cpnNm;
+	private String dcWay;
+	private int dcVal;
+	private int pntUsableDay;		//포인트사용가능일
 	
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiReplyOrgFile;			//댓글 이미지

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

@@ -90,7 +90,8 @@ public class Review extends TscBaseDomain {
 	private int count;				// 작성한 리뷰 카운트
 	private String siteCd;
 	private String reviewStat;		// 리뷰상태(수정or등록)
-	
+	private String rplCfmYn;		//관리자댓글확인여부(고객)
+	private String rplCfmDt;		//관리자댓글확인일시(고객)
 	private String payDt;
 	private String brandEnm;
 	private String optCd1;

+ 20 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -823,5 +823,25 @@
 		                  AND    CC.REG_DT <![CDATA[<=]]> DATE_FORMAT(CONCAT(LAST_DAY(NOW()), ' 23:59:59'), '%Y%m%d%H%i%S')
 		                  )
 	</select>
+	
+	<select id="getAttendCouponInfo" parameterType="CustCoupon" resultType="CustCoupon">
+		/*TsfCoupon.getAttendCouponInfo*/
+		SELECT CP.CPN_ID
+		     , CP.END_ALIM_YN
+		     , CASE WHEN CP.DC_WAY = 'G240_10' THEN '원'
+            		ELSE '%'
+                                                         END             AS DC_WAY    /*할인방법*/
+		     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
+		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+		            WHEN #{frontGb} = 'A' THEN CP.DC_AVAL
+		            ELSE CP.DC_AVAL                                              END AS DC_VAL
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S')
+		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%m%d%H%i%S')              END AS AVAIL_STDT
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%m%d%H%i%S')
+		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%m%d%H%i%S')             END AS AVAIL_EDDT
+		FROM  TB_COUPON CP
+		WHERE CP.CPN_ID = #{cpnId}
+		AND   CP.SITE_CD = #{siteCd}	
+	</select>
 
 </mapper>

+ 29 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -1206,13 +1206,35 @@
 	
 	<select id="getAttendBenefitList" resultType="Plan" parameterType="Plan">
 		/* TsfPlanning.getAttendBenefitList */	
-		SELECT PLAN_SQ 
-		      ,BAS_DAYS 
-		      ,BENEFIT_GB 
-		      ,PNT_AMT 
-		      ,CPN_ID 
-		FROM TB_PLAN_ATTEND 
-		WHERE PLAN_SQ = #{planSq}	
+		SELECT  PA.PLAN_SQ 
+		      , PA.BENEFIT_GB
+		      , PA.BAS_DAYS 
+		      , PA.PNT_AMT 
+		      , PA.PNT_USABLE_DAY
+		      , C.CPN_ID                    /*쿠폰ID*/
+		      , C.CPN_NM                     /*쿠폰명*/
+		      , C.BUY_LIMIT_AMT              /*구매제한금액*/
+		      , C.MAX_DC_AMT                 /*최대할인금액*/
+		      , CASE WHEN #{frontGb} = 'P' THEN C.DC_PVAL
+		             WHEN #{frontGb} = 'M' THEN C.DC_MVAL
+		             WHEN #{frontGb} = 'A' THEN C.DC_AVAL
+		        END             AS DC_VAL    /*할인값*/
+		      , CASE WHEN C.DC_WAY = 'G240_10' THEN '원'                                                                                             
+		             ELSE '%'
+		        END             AS DC_WAY    /*할인방법*/
+		      , CONCAT(CASE WHEN C.BUY_LIMIT_AMT = 0 THEN ''
+		                    ELSE CONCAT(FORMAT(C.BUY_LIMIT_AMT , 0),'원 이상 구매 시 ')
+		               END
+		              ,CASE WHEN C.MAX_DC_AMT = 0 THEN ''
+		                    ELSE CONCAT('최대 ',FORMAT(C.MAX_DC_AMT , 0),'원 할인')
+		               END)     AS USE_CONDITION  /*사용조건*/
+		      , CASE WHEN C.CUST_PUB_LIMIT_QTY = 0 THEN ''
+		             ELSE CONCAT('1인당 최대',C.CUST_PUB_LIMIT_QTY,'매')
+		        END             AS ISSUE_CONDITION /*발급수량*/
+		FROM TB_PLAN_ATTEND PA LEFT JOIN TB_COUPON C ON PA.CPN_ID = C.CPN_ID 
+		WHERE 1=1
+		-- AND C.CPN_STAT = 'G232_11' /*진행중인쿠폰*/
+		AND PA.PLAN_SQ = #{planSq}	
 	</select>
 	
 	<!-- 댓글 리스트  (수정필)-->

+ 12 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -989,12 +989,14 @@
 	<select id="getAdminConfirmCount" parameterType="Review" resultType="Review">
 		/* TsfReivew.getAlreadyReviewCount */
 		SELECT COUNT(*) AS COUNT
-		     , R.REVIEW_SQ 
+		     , R.REVIEW_SQ
+		     , MAX(ADM_RPL_DT) 
 		FROM TB_REVIEW R
 		WHERE 1=1
 		 AND CUST_NO = #{custNo}
 		 AND DEL_YN = 'N'
-		 AND DISP_YN = 'Y' 
+		 AND DISP_YN = 'Y'
+		 AND RPL_CFM_YN ='N'
 		 AND ADM_RPL IS NOT NULL
 		ORDER BY  R.ADM_RPL_DT DESC, R.REVIEW_SQ LIMIT 1
 	</select>
@@ -1028,4 +1030,12 @@
 		  AND R.GOODS_CD = #{goodsCd}
 		  AND R.CUST_NO = #{custNo}
 	</select>
+	
+	<update id="reviewCustomerConfirm" parameterType="Review">
+		/* TsfReivew.reviewCustomerConfirm */	
+		UPDATE TB_REVIEW
+		SET RPL_CFM_YN = 'Y'
+		   ,RPL_CFM_DT = NOW()
+		WHERE CUST_NO = #{custNo}
+	</update>
 </mapper>

+ 54 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponDetailFormMob.html

@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	style="overflow-x: hidden !important;"
+>
+<!--
+ *******************************************************************************
+ * @source  : CouponDetailPopMob.html
+ * @desc    : 쿠폰정보 팝업 Page
+ *============================================================================
+ * PastelMall
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.15   sowon     최초 작성
+ *******************************************************************************
+ -->
+<!-- 쿠폰 상세보기 팝업 -->
+<div class="modal-header">
+    <h5 class="modal-title" id="couponInfoLabel">
+        사용안내
+    </h5>
+</div>
+<div class="modal-body">
+    <div class="pop_head" >
+        <h6 th:text="${couponDetailInfo.cpnNm}"></h6>
+    </div>
+    <div class="pop_cont">
+        <dl>
+            <div th:if="${couponDetailInfo.useCondition!=null && couponDetailInfo.useCondition!=''}">
+                <dt>사용조건</dt>
+                <dd th:text="${couponDetailInfo.useCondition}">
+                    <!-- <span>9,999,999</span>원 이상 구매 시 최대 <span>9,999,999</span>원 할인 -->
+                </dd>
+            </div>
+            <div>
+                <dt>발급수량</dt>
+                <dd th:if="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}"th:text="${couponDetailInfo.issueCondition}"></dd>
+                <dd th:unless="${couponDetailInfo.issueCondition!=null && couponDetailInfo.issueCondition!=''}">제한없음</dd>
+            </div>
+            <div>
+                <dt>유효기간</dt>
+                <dd>
+                    <span th:text="${couponDetailInfo.availStdt}"></span>&nbsp;~&nbsp;<span th:text="${couponDetailInfo.availEddt}"></span>
+                </dd>
+            </div>
+             <div th:if="${couponDetailInfo.tgtCondition!=null}">
+                <dt>대상조건</dt>
+               <dd th:text="${couponDetailInfo.tgtCondition}"> </dd>
+            </div>
+        </dl>
+    </div>
+</div>

+ 152 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCouponFormMob.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageCouponFormMob.html
+ * @desc    : 마이페이지 > 쿠폰 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.15   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+	<th:block layout:fragment="content">
+			<main role="" id="" class="container my">
+			<section class="content my_coupon">
+				<div class="inner">
+					<div class="highlight_area">
+						<div class="have_amount">
+							<div class="total_amount">
+								보유 쿠폰&nbsp;<span><em th:text="${#numbers.formatInteger(couponInfo.allCouponCnt,0,'COMMA')}"></em>장</span>
+							</div>
+						</div>
+					</div>
+					<div class="have_amount">
+						<dl>
+							<div>
+								<dt>7일 이내 소멸 예정<span class="tag primary_line">D-<em>7</em></span></dt>
+								<dd><em th:text="${#numbers.formatInteger(couponInfo.expireCouponCnt,0,'COMMA')}"></em>장</dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+
+				<div class="inner">
+					<div class="content_area">
+						<!-- 데이터 있을 시 -->
+						<div class="list_box">
+							<div class="coupon_list">
+								<ul>
+								<th:block th:if="${couponList != null and !couponList.empty}" th:each="CouponData, CouponStat : ${couponList}">
+									<li>
+										<!-- 쿠폰사용 완료 -->
+										<div th:class="${CouponData.expireYn == 'N' ? 'coupon' : 'coupon disable'}">
+											<div>
+												<p class="cp_name" th:text="${CouponData.cpnNm}">					
+												</p>
+												<p class="cp_cont">
+												<th:block th:if="${CouponData.dcWay == '%'}">
+													<span><em th:text="${CouponData.dcVal}"></em>%</span>
+												</th:block>
+												<th:block th:unless="${CouponData.dcWay == '%'}">
+													<span><em th:text="${CouponData.dcVal}"></em>원</span>
+												</th:block>
+												</p>
+												<p class="cp_condition">
+													[[${CouponData.useCondition}]]
+													<span><em class="tag primary_line" th:text="${CouponData.cpnCnt}+' 장 보유'"></em></span>
+												</p>
+											</div>
+											<th:block th:if="${CouponData.expireYn == 'Y'}">
+													<p class="cp_date">
+														<span th:text="${CouponData.availStdt}"></span>&nbsp;~&nbsp;<span th:text="${CouponData.availEddt}"></span>
+													</p>
+												</th:block>
+												<th:block th:unless="${CouponData.expireYn == 'Y'}">
+													<p class="cp_date">사용완료</p>
+											</th:block>
+										</div>
+										<!-- 쿠폰사용 완료 -->
+										<button type="button" class="btn_underline" id="btn_cpinfo_pop" th:onclick="useInfoCoupon([[${CouponData.cpnId}]])">
+											<span>사용안내</span>
+										</button>
+									</li>																																							
+								</ul>
+							</div>
+						</div>
+						<!-- //데이터 있을 시 -->
+						<!-- 데이터 없을 시 -->
+						<div class="nodata" style="display: none;">
+							<div class="txt_box">
+								<p>
+									보유한 쿠폰이 없습니다.<br>
+								</p>
+							</div>
+						</div>
+						<!-- 데이터 없을 시 -->	
+					</div>
+				</div>
+
+			</section>
+		</main>
+		<!-- 쿠폰사용안내 팝업 -->
+	<div class="modal fade couponInfo_pop" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+                <!-- 쿠폰사용안내 팝업 내용 -->      
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //쿠폰사용안내 팝업 -->
+	
+	<script th:inline="javascript">
+	
+	let couponList = ([[${couponList}]]);	
+
+	// 사용안내 모달
+	var useInfoCoupon = function (id) {
+		var data = {cpnId : id};
+		var jsonData = JSON.stringify(data);
+		
+		 $.ajax( {
+			type		: "POST",
+			url 		: '/mypage/coupon/detailPop',
+			data		: jsonData,
+			contentType: 'application/json',
+			dataType 	: 'html',
+			success 	: function(result) {
+				if (result != null) {
+					$("#couponInfoPop").html(result);
+					$("#couponInfoPop").modal("show");
+				}
+			}
+		});
+		
+		return false; 
+	}
+
+	if(couponList.length>0){
+		$(".nodata").hide();
+	}else{
+		$(".nodata").show();
+	}
+
+    $(document).ready(function() {
+		if(couponList.length>0){
+			$(".nodata").hide();
+		}else{
+			$(".nodata").show();
+		}		
+	});
+	
+	</script>
+	</th:block>
+</body>
+</html>

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="mob/common/layout/DefaultLayoutMob">
+	layout:decorator="mob/common/layout/MypageLayoutMob">
 <!--
  *******************************************************************************
  * @source  : MypageGiftcardFormMob.html

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="mob/common/layout/DefaultLayoutMob">
+	layout:decorator="mob/common/layout/MypageLayoutMob">
 <!--
  *******************************************************************************
  * @source  : MypageWishListFormMob.html

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

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="mob/common/layout/DefaultLayoutMob">
+	layout:decorator="mob/common/layout/MypageLayoutMob">
 <!--
  *******************************************************************************
  * @source  : MypageWishListFormMob.html

+ 334 - 0
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html

@@ -0,0 +1,334 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/DefaultLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : PlanningEventAttendFormMob.html
+ * @desc    : 출석체크 이벤트 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.08   sowon     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
+		<main role="" id="" class="container ev">
+			<section class="content check">
+				<div class="inner">
+					<div class="renew_check_tit">
+						<h3 th:text="${planInfo.planNm}"></h3>
+						<div class="period">
+							<span th:text="${planInfo.dispStdt}"></span> - <span th:text="${planInfo.dispEddt}"></span>
+						</div>
+						<button type="button" class="share_btn"><img src="/images/mo/ico_share_btn.png" alt="공유" /></button>
+					</div>
+				</div>
+				<div class="inner wide">
+					<div class="event_calander ">
+						<div class="check_title">
+							<p>출석할수록 늘어나는 혜택!</p>
+							<h3><strong>4월</strong> 출석체크</h3>
+						</div>
+						<div class="check_info">
+							<span class="today">오늘</span>
+							<span class="complete">출석완료</span>
+						</div>
+						<div class="tbl_wrap">
+							<div class="my_attend_day">
+								<p>나의 출석 일수는?</p>
+								<span class="day">
+									<span></span>일
+								</span>
+							</div>
+							<table>
+								<colgroup>
+									<col width="14.28%">
+									<col width="14.28%">
+									<col width="14.28%">
+									<col width="14.28%">
+									<col width="14.28%">
+									<col width="14.28%">
+									<col width="14.28%">
+								</colgroup>
+								<thead>
+									<tr>
+										<th class="sun">SUN</th>
+										<th>MON</th>
+										<th>TUE</th>
+										<th>WED</th>
+										<th>THU</th>
+										<th>FRI</th>
+										<th class="sat">SAT</th>
+									</tr>
+								</thead>
+								<tbody id="monthTbody">
+									
+								</tbody>
+							</table>
+						</div>
+						<div class="btn_wrap">
+							<button type="button" class="btn btn_dark" onclick="fnAttendEntry()">출석 체크</button>
+						</div>
+					</div>
+				</div>
+				<div class="inner">
+					<div class="benefit_list">
+						<h4>출석 일수에 따라 달라지는 혜택</h4>
+						<div class="benefit_con">
+							<ul>
+								 <th:block th:each="a, benefitStat : ${benefitList}">
+								<li th:if="${a.benefitGb == 'P'}">
+									<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'}">
+									<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>
+										</th:block>
+										<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>
+										</th:block>
+									</div>
+								</li>
+								<li th:if="${a.benefitGb == 'A'}">
+									<div class="benfit_coupon">
+									<th:block th:if="${a.dcWay == '%'}">
+										<span th:text="${a.basDays}"></span> 출석 시 <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>
+									</th:block>
+									<th:block th:if="${a.dcWay == '원'}">
+										<span th:text="${a.basDays}"></span> 출석 시 <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>
+									</th:block>
+									</div>
+								</li>
+								</th:block>
+							</ul>
+						</div>
+					</div>
+				</div>
+				<div class="inner">
+					<div class="announce_txt "> 
+						<div class="note_txt">
+							<img src="/images/mo/ico_content_find03.png" alt="유의사항">
+							<p>유의사항</p>
+						</div>
+						<div class="announce_list" th:if="${fsrcInfoTop != null}" th:utext="${#strings.replace(#strings.replace(fsrcInfoTop.fsrcMob,'&amplt;','<'),'&ampgt;','>')}">
+							<!-- <ul>
+								<li>본 이벤트는 ID당 1회만 참여 가능합니다.</li>
+								<li>설문조사 참여 시 포인트를 지급해드립니다. (이벤트 종료 후, 일괄 지급)</li>
+								<li>지급된 포인트는 [ 마이페이지 > 나의 지갑 ] 메뉴에서 확인할 수 있습니다.</li>
+							</ul> -->
+						</div>
+					</div>
+				</div>
+				<div class="inner">
+					<div class="other_ev_slide">
+						<div class="tit">
+							<h4>다른 이벤트 보기</h4>
+						</div>
+						<div class="swiper-container">
+							<div class="swiper-wrapper">
+							  <th:block th:each="PlanData, PlanStat : ${planList}">
+								<div class="swiper-slide">
+									 <a href="javascript:void(0);" th:onclick="cfnGoToPlanDetail([[${PlanData.planSq}]])">
+										<div class="img">
+											<img th:src="${@environment.getProperty('upload.image.view')+PlanData.mainImg}" alt="${PlanData.planNm}">
+										</div>
+										<div class="txt">
+											<p class="subject" th:text="${PlanData.planNm}"></p>
+										</div> 
+									</a>
+								</div>
+								</th:block>
+							</div>
+						</div>
+					</div>
+				</div>
+			</section>
+		</main>
+	
+	<script th:inline="javascript">
+	/*<![CDATA[*/
+	let today = new Date();   
+let year = today.getFullYear();
+let date = today.getDate();
+let month =today.getMonth()+1;
+let calendar = [[${month}]];
+let planInfo = [[${planInfo}]];
+var custAttendList = [[${custAttendList}]];
+var appendHtml = function () {
+	
+	
+	$("#monthTbody").html('');
+	$.each(calendar, function(idx, item)  { 
+
+				
+		html = '<tr>\n';
+		
+		if (item.sun!=null && item.sun!='') {
+			html += '	<td id="td_'+item.sun+'">\n';
+			html += '		<div class="date" id="'+item.sun+'">'+item.sun+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		
+		if (item.mon!=null && item.mon!='') {
+			html += '	<td id="td_'+item.mon+'">\n';
+			html += '		<div class="date" id="'+item.mon+'">'+item.mon+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		if (item.tue!=null && item.tue!='') {
+			html += '	<td id="td_'+item.tue+'">\n';
+			html += '		<div class="date" id="'+item.tue+'">'+item.tue+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		if (item.wed!=null && item.wed!='') {
+			html += '	<td id="td_'+item.wed+'">\n';
+			html += '		<div class="date" id="'+item.wed+'">'+item.wed+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		if (item.thu!=null && item.thu!='') {
+			html += '	<td id="td_'+item.thu+'">\n';
+			html += '		<div class="date" id="'+item.thu+'">'+item.thu+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		if (item.fri!=null && item.fri!='') {
+			html += '	<td id="td_'+item.fri+'">\n';
+			html += '		<div class="date" id="'+item.fri+'">'+item.fri+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date" ></div>\n';
+			html += '	</td>\n	';
+		}
+		if (item.sat!=null && item.sat!='') {
+			html += '	<td id="td_'+item.sat+'">\n';
+			html += '		<div class="date" id="'+item.sat+'">'+item.sat+'</div>\n';
+			html += '	</td>\n	';
+		}else{
+			html += '	<td>\n';
+			html += '		<div class="date"></div>\n';
+			html += '	</td>\n	';
+		}
+		
+		html += '</tr>\n';
+
+		$("#monthTbody").append(html);
+		if (cfCheckLogin()) {
+			$.each(custAttendList, function(idx1, item1) {
+				$('.day').html('<span>' + custAttendList.length + '</span>일');
+				if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
+						|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
+					$("#td_"+item1.entryDt).attr("class","complete");
+				}
+			})
+		}
+	})    
+} 
+
+
+var fnAttendEntry = function () {
+	if (!cfCheckLogin()) {
+		mcxDialog.alert("로그인 후 참여 가능합니다.");
+		return false;
+	}
+	
+	let data = {planSq : planInfo.planSq};
+	let jsonData = JSON.stringify(data);
+	gagajf.ajaxJsonSubmit('/planning/event/attend/entry', jsonData, fnInfoConfirmCallBack);
+	
+}
+
+var fnInfoConfirmCallBack = function(result) {
+	mcxDialog.alert(result.msg);
+	appendHtml();
+	$("#td_"+date).attr("class","complete");
+	
+};
+
+$(document).ready(function() {
+	appendHtml();
+	
+	if (!cfCheckLogin()) {
+		$(".day").html("<span>0</span>일");
+	}else{
+		$.each(custAttendList, function(idx, item) {
+			$('.day').html('<span>' + custAttendList.length + '</span>일');
+			if(item.entryDt == date){
+				$("#td_"+date).attr("class","complete");
+			}else{
+				$("#td_"+date).attr("class","today"); 
+			}
+		})
+	}
+	
+	
+	
+	
+	
+	
+	
+	$(".title").html("<strong>"+month+"월</strong> 출석체크");
+	
+	//공유 버튼 토글 
+	$("button[data-name=openShare]").on("click", function(){
+		$(this).toggleClass("on").next(".shareWrap").toggleClass("on");
+		return false;
+	});
+	//영역밖 클릭으로 공유토글 닫기
+	$("body").on('click', function(e) { 
+		if(!$(".shareWrap.on").parent().has(e.target).length) {
+			$("button[data-name=openShare]").removeClass("on");
+			$(".shareWrap").removeClass("on");
+		};
+	});
+	
+	$('.btn_copy').bind('click', function() {
+		copyToClipboard();
+	});
+	
+	/* SLIDE - 다른 기획전,이벤트 보기 */
+	var ev_ohter_slide = new Swiper('.other_ev_slide .swiper-container', {
+		slidesPerView: 'auto',
+		spaceBetween: 8,
+		centerMode:true,
+		//navigation: {
+		//	nextEl: '.other_ev_slide .swiper-button-next',
+		//	prevEl: '.other_ev_slide .swiper-button-prev',
+		//},
+	});
+	
+})
+	/*]]>*/
+	</script>
+</th:block>
+
+</body>
+</html>

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageCouponDetailFormWeb.html

@@ -6,7 +6,7 @@
 <!--
  *******************************************************************************
  * @source  : CouponDetailPopWeb.html
- * @desc    : 쿠폰적용대상 리스트 Page
+ * @desc    : 쿠폰정보 팝업 Page
  *============================================================================
  * PastelMall
  * Copyright(C) 2020 TSIT, All rights reserved.
@@ -23,7 +23,7 @@
 <div class="modal-body">
     <div class="pop_cont">
         <dl>
-            <div>
+            <div th:if="${couponDetailInfo.useCondition!=null && couponDetailInfo.useCondition!=''}">
                 <dt>사용조건</dt>
                 <dd  th:text="${couponDetailInfo.useCondition}"></dd>
             </div>

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

@@ -110,7 +110,7 @@
 							<div class="nodata" style="display: none;">
 								<div class="txt_box">
 									<p>
-										현재 노출 할 수 있는 쿠폰이 없습니다.<br>
+										보유한 쿠폰이 없습니다.<br>
 									</p>
 								</div>
 								<!-- 버튼 필요시 -->

+ 13 - 4
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -341,7 +341,7 @@
 					}
 					
 				}
-				html+='						<div class="txt_review_box" id="admin_'+item.reviewSq+'">';
+				html+='						<div class="txt_review_box"  id="admin_'+item.reviewSq+'">';
 				html+='							<p>'+item.reviewContent+'</p>';
 				html+='						</div>';
 				
@@ -380,9 +380,18 @@
 	
 	// 스크롤 이동
 	var fnMove = function(obj) {
-	  	 var offset = $("#admin_" + obj).offset();
-	  	 console.log(offset);
-        $('html, body').animate({scrollTop : offset.top}, 400);
+        var data = {};
+        var jsonData = JSON.stringify(data);
+        // 고객 확인 여부 업데이트
+    	gagajf.ajaxJsonSubmit('/mypage/review/customer/confirm', jsonData,function() {
+    		$(".check_notice").html('');
+    		$(".check_notice").css("background-color","#ffffff");
+    		
+		});
+        
+    	 var offset = $("#admin_" + obj).offset();
+         $('html, body').animate({scrollTop : offset.top}, 300); 
+         
 	}
 	
 	// 리뷰삭제

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

@@ -92,13 +92,13 @@
 										</colgroup>
 										<thead>
 											<tr>
-												<th>SUN</th>
+												<th class="sun">SUN</th>
 												<th>MON</th>
 												<th>TUE</th>
 												<th>WED</th>
 												<th>THU</th>
 												<th>FRI</th>
-												<th>SAT</th>
+												<th class="sat">SAT</th>
 											</tr>
 										</thead>
 										<tbody id="monthTbody">

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


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


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

@@ -319,12 +319,13 @@ input[type="file"] {
   transform: translate(-50%, -50%);cursor: pointer;
 }
 .removes {
-  display: block;width:20px;height:20px;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
+  display: block;width:2rem;height:2rem;font-size: 0;text-align: center;cursor: pointer;background-color: #666666;
   position: absolute;top: 0;bottom: auto;left: auto;right: 0;
 }
 .removes::after {
-  content: '';display: inline-block;width: 20px;height: 20px;
+  content: '';display: inline-block;width: 2rem;height: 2rem;
   background: url('/images/mo/ico_btn_cls1.png') no-repeat;background-position: 50% 50%;
+  background-size:2rem;
 }
 
 
@@ -1186,7 +1187,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .fold_head .fold_tit::after {content: ''; display: block; clear: both;}
 
 .foldGroup {width: 100%; margin-bottom: 20px;}
-.foldGroup > ul > li {position: relative; width: 100%; margin: 0px; border: 0px; border-top: 1px solid #E5E5E5; border-bottom: 1px solid #E5E5E5; box-sizing: border-box;}
+.foldGroup > ul > li {position: relative; width: 100%; margin: 0px; border: 0px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; box-sizing: border-box;}
 .foldGroup > ul > li:first-child {border-top: 1px solid #fff;}
 .foldGroup > ul > li+li {margin:0; border-top:0px solid; box-sizing:border-box;}
 .foldGroup .fold_head,

+ 21 - 12
src/main/webapp/ux/mo/css/layout_m.css

@@ -754,10 +754,10 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd .item_prod{display:block;}
 .pd .itemBrand{width:calc(100% - 10%);}
 .pd .select_custom .combo .list{max-height:100%;}
-.opt_name {margin-bottom:-2rem;}
+.opt_name {margin-bottom:0.4rem;}
 .form_field.mb20{margin-bottom:2rem !important}
 /* 210412 */
-.pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field .select{color:#777777}
+.pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field .select{color:#777777; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;overflow:hidden; padding-right:4rem;}
 .pd_pop.Purchase_pop div[class$="Option"] .form_wrap .form_field .select:before{color:#333333}
 .pd_dealitem .item_prod .itemName{max-height: 3.3rem;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;white-space: normal;overflow-wrap: break-word;width: calc(100% - 10%);}
 .pd_together .item_prod .itemName{max-height: 3.3rem;display: -webkit-box;text-overflow: ellipsis;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;white-space: normal;overflow-wrap: break-word;width: calc(100% - 10%);}
@@ -765,16 +765,24 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .push_restock_pop .select::-ms-expand{display:none;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label.on{border:1px solid #fd4802}
 .pd_line_box{padding:0.7rem; background:#f5f5f5; width:100%; margin:0 -2rem; display:block; position: absolute; bottom:0;}
-/*.pd_detail .inner{margin:0 !important;}*/
 /* 210413 */
-/*.cs_contactUs_my .form_field .select_dress::before{content:"*"; position:absolute; left:14.6rem; font-size:1.8rem; top:0.5rem; color:red}*/
-/*.cs_contactUs_my .form_field input{content:"*"; position:absolute; left:14.6rem; font-size:1.7rem; top:0.4rem; color:red}*/
 .cs .cs_contactUs_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
 .cs .cs_notice_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
 .cs .cs_product_1 .foldGroup .fold_head a{padding:1.8rem 2rem 1.4rem;}
 .pd .Purchase_pop .btPop_foot{position: absolute;width: 100%;bottom: 0; background: #fff;}
 .cs .pnb ul{padding-left:1rem}
 .push_restock_pop .item_prod .itemPercent{left:4.5rem;}
+/* 210414 */
+.pd .Purchase_pop{transition:none;}
+.cs_contactUs_my .imgUpload{margin-left:0.6rem;}
+.cs_contactUs_my .imgUpload:first-child{margin: 0;}
+.cs .fold_head {font-family:'Noto Sans kr', sans-serif;}
+.cs .fold_head .fold_tit .lap1 span{font-weight:200; font-size:1rem;}
+.cs .fold_head .fold_tit .lap2 span{font-weight:500;}
+.cs .fold_head .fold_state{padding:0.2rem 0.3rem;}
+.cs .fold_head .data{font-family: 'LATO', 'Noto Sans kr', sans-serif;}
+.Purchase_pop .select_custom .combo .list>li{padding:1.2rem; line-height:2rem; word-wrap: break-word;}
+
 
 
 /* 플롯팅 메뉴 > 구매하기 */
@@ -800,7 +808,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_pop.Purchase_pop .btPop_body{max-height:calc(100% - 14%);}
 .btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:84%;}
 .btPop_open .btPop.Purchase_pop .btPop_close{width:1.6rem; height:1.6rem; background-image: url(/images/mo/ico_pop_cls_w.png);}
-.pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0;}
+.pd_pop.Purchase_pop .select_custom .combo .list{position:relative; top:0; margin-top:-0.6rem}
 .pd_pop.Purchase_pop{}
 .pd_pop.Purchase_pop .header{padding:0; font-size:0;}
 .pd_pop.Purchase_pop .option_box .opt_color{padding-top:0}
@@ -884,6 +892,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.salecoupon_pop .coupon_list {line-height:1;}
 .modal.pd_pop.salecoupon_pop .coupon_list li {margin-top:1rem}
 .modal.pd_pop.salecoupon_pop .coupon_list li:first-child {margin-top:0}
+.modal.pd_pop.salecoupon_pop .coupon_list li:last-child{margin-bottom:3rem;}
 .modal.pd_pop.salecoupon_pop .coupon_list li .coupon {position:relative; border:1px solid #ddd; box-sizing:border-box; background:#fff;}
 .modal.pd_pop.salecoupon_pop .coupon_list li .coupon > div {position:relative; padding:3rem 0;}
 .modal.pd_pop.salecoupon_pop .coupon_list li .coupon > div::after {content:''; position:absolute; top:50%; right:-1px; transform:translateY(-50%); width:1.5rem; height:3.0rem; background:#fff; z-index:2; border:1px solid #ddd; border-right:none; border-top-left-radius:1.5rem; border-bottom-left-radius:1.5rem; overflow:hidden;}
@@ -903,7 +912,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.salecoupon_pop button:disabled span:nth-child(1){display:none;}
 .modal.pd_pop.salecoupon_pop button:disabled span:nth-child(2){display:block;}
 .modal.pd_pop.salecoupon_pop button:disabled{background:#aaa!important; border-color:#aaa!important; opacity:1;}
-.modal.pd_pop.salecoupon_pop .modal-footer button{color: #ffffff; background-color: #fd4802; border-color: #fd4802;}
+.modal.pd_pop.salecoupon_pop .modal-footer button{color: #ffffff; background-color: #fd4802; border-color: #fd4802; position:absolute; bottom:0; z-index:999;}
 .modal.pd_pop.salecoupon_pop .modal-footer button > span{padding:0;}
 .modal.pd_pop.salecoupon_pop .modal-footer button > span::after{background:none;}
 
@@ -1130,7 +1139,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review_pop .pd_review .area_rv_empty .btn_group_flex{position:fixed; width: 100%; bottom: 0; left:0; margin-top: 0; z-index:10;}
 .pd_review{background:#f5f5f5;}
 .pd_review.best,
-.pd_review.photo{background:#fff; position:absolute; bottom:0; z-index:999;}
+.pd_review.photo{background:#fff; position:relative; bottom:0; z-index:999; max-height:35rem;}
 .pd_review [class^="area_rv"]{padding:4rem 1.33rem; margin-bottom:1.2rem; background:#fff; line-height: 1.4;}
 .pd_review .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; background:#f5f5f5; overflow:hidden;}
 .pd_review .pic .thumb {padding-top:100%; background-repeat:no-repeat; background-position:50% 50%; background-size:cover;}
@@ -1312,7 +1321,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .response_box2{display:none;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list .reply_box{display:none;}
 /*.modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active{position:absolute; bottom:0; z-index:999;}*/
-.modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active {bottom:0; z-index:999;}
+.modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active {bottom:0; z-index:999; transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .txt_review_box{height:auto; overflow:hidden;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .response_box2{display:block;}
 .modal.pd_pop[class*="reviewdetail_pop"] .pd_review .area_rv_all .review_list.active .reply_box{display:block;}
@@ -2066,7 +2075,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .br .pnb_mo > ul{display:flex; padding:0 0.8rem; height:5rem; line-height:5rem; background-color:#222222;}
 .br .pnb_mo > ul > li > a{font-size:1.6rem; color:#686868; font-weight:500; padding:0 1.2rem;}
 .br .pnb_mo > ul > li > a.on{color:#fff}
-.br .pnb_mo > button{background:url(/images/mo/br_plus.png) no-repeat; width:3.8rem; height:1.9rem; background-color:red; text-indent:-9999px; position:absolute; z-index:9; top:1.6rem; right:0; background-color:#222222;}
+.br .pnb_mo > button{background:url(/images/mo/ico_btn_expand.png) center top/1.8rem 2.0rem no-repeat; width:3.8rem; height:1.9rem; background-color:red; text-indent:-9999px; position:absolute; z-index:9; top:1.6rem; right:0; background-color:#222222;}
 .br_main{background-color:#fff;}
 /* br_main *
 /* br_main - 메인배너&info */
@@ -2187,9 +2196,9 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .br_search_wrap .hmenu .brand_si .swiper-pagination-bullet{margin-right:0.8rem;}
 .br_search_wrap .hmenu .brand_si .swiper-pagination-bullet:last-child{margin-right:0;}
 .br_search_wrap .brand_title { width: 100%; height: 4.3rem; margin: 2.4rem 0 0; border-bottom: 0.2rem solid black; }
-.br_search_wrap .brand_title input { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 100; color: #888; border-bottom:2px solid #000; margin-bottom:1.6rem;}
+.br_search_wrap .brand_title input { width: 100%; height: 4.3rem; float: left; border: none;  padding: 0; font-size: 1.6rem; font-weight: 100; color: #000; border-bottom:2px solid #000; margin-bottom:1.6rem;}
 .br_search_wrap .brand_title .btn_x { width: 2rem; height: 2rem; background: #aaa; border-radius: 1rem; color: #fff; font-size: 1rem; position: absolute; top: 1.2rem; right: 5rem; }
-.br_search_wrap .brand_title button img { width: 2rem; height: 2rem; position: absolute; top: 1.2rem; right: 2rem;}
+.br_search_wrap .brand_title button img { width: 2rem; height: 2rem; position: absolute; top: 1.2rem; right: 2.2rem;}
 .br_search_wrap .inner .result {padding-bottom:3rem; margin: 1.5rem 0 1rem; border-bottom:0.1rem solid #dddddd;}
 .br_search_wrap .inner:last-child .result {border:0px none;}
 .br_search_wrap .inner .result .title_abbr { font-size: 1.6rem; font-weight: 700; margin-bottom:0.6rem;}

+ 43 - 27
src/main/webapp/ux/mo/css/style24_m.css

@@ -532,6 +532,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .renew_check_tit h3 {font-size: 1.4rem; margin-bottom: 1.5rem; font-weight: 500;}
 .ev .renew_check_tit .period {font-size: 1.1rem; color: #888;}
 .ev .renew_check_tit .share_btn {position: absolute; top: 14px; right: 20px; width: 1.4rem;}
+.ev textarea, .ev input {color: #222;}
 
 /* ev_안내사항_공통 */
 .announce_txt {position: relative; padding-top: 2.5rem;}
@@ -571,8 +572,8 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .event_list .list li {margin-bottom: 0;}
 .ev .event_list .list .nodata {display: block; padding:7.6rem 0 14rem; width: 100%; text-align: center; margin-right: 0;}
 .ev .event_list .list .nodata img {width: 4rem;}
-.ev .event_list .list .nodata .txt_box::before {content:''; display:block; width:4rem; height:5.5rem; margin:0 auto 24px; background:url('/images/mo/ico_content_find02.png') no-repeat; background-size:100%;}
-.ev .event_list .list .nodata .txt_box p {display: block; margin: 1.5rem 0 2.3rem; font-size: 1.3rem; color: #666; font-weight: 300;}
+.ev .event_list .list .nodata .txt_box::before {content:''; display:none; width:4rem; height:5.5rem; margin:0 auto 24px; background:url('/images/mo/ico_content_find02.png') no-repeat; background-size:100%;}
+.ev .event_list .list .nodata .txt_box p {display: block; margin: 1.5rem 0 2.3rem; font-size: 1.3rem; color: #888; font-weight: 300;}
 .ev .event_list .list .nodata .txt_box a {display: inline-block; padding: 1rem 1.2rem; border:1px solid #a7a7a7; font-size: 1.1rem; color: #222; font-weight: 300;}
 
 /* ev_renew_1 */
@@ -591,6 +592,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .other_ev_slide .tit {position: relative; margin-bottom: 2rem; text-align: center;}
 .ev .other_ev_slide .tit h4 {font-size: 1.6rem; font-weight: 500;}
 .ev .other_ev_slide .tit a {position: absolute; top: 50%; right: 0; transform:translateY(-50%); padding-right: 20px; background: url(/images/pc/ico_more_lg.png) no-repeat right top 1px; font-size: 18px; color:#888;}
+/* .ev .other_ev_slide .swiper-container {overflow:visible;} */
 .ev .other_ev_slide .swiper-slide {width: 42%;}
 .ev .other_ev_slide .swiper-slide img {width: 100%; height:auto;}
 .ev .other_ev_slide .swiper-slide .txt {}
@@ -623,12 +625,12 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 
 .ev .survey_wrap .survey_con .survey_row .form_field input[type="checkbox"] + label:before {width: 2rem; height: 2rem;}
 
-.ev .survey_wrap .survey_con .survey_row.q3 .doc_ans {width: 100%; height: 15rem; padding: 1.5rem; font-size: 1.3rem; line-height: 1.6; color: #888; font-weight: 300; resize:none;}
+.ev .survey_wrap .survey_con .survey_row.q3 .doc_ans {width: 100%; height: 15rem; padding: 1.5rem; font-size: 1.3rem; line-height: 1.6; color: #222; font-weight: 300; resize:none;}
 .ev .survey_wrap .survey_con .survey_row.q3 .answer {position: relative;}
 .ev .survey_wrap .survey_con .survey_row.q3 .answer .txt_cnt {position: absolute; right: 1.6rem; bottom: 1.6rem; margin-top: 0; color: #888;}
 
 .ev .survey_wrap .survey_con .survey_row.q4 {padding-bottom: 0;}
-.ev .survey_wrap .survey_con .survey_row.q4 .q4_ans {width: 100%; height: 4.5rem; padding: 1rem; font-size: 1.3rem; line-height: 1.6; color: #888; font-weight: 300; resize:none;}
+.ev .survey_wrap .survey_con .survey_row.q4 .q4_ans {width: 100%; height: 4.5rem; padding: 1rem; font-size: 1.3rem; line-height: 1.6; color: #222; font-weight: 300; resize:none;}
 .ev .survey_wrap .survey_con .btn_wrap {padding: 3rem 2rem 6rem; text-align: center; background: #fff;}
 .ev .survey_wrap .survey_con .btn_wrap button.btn {width: 100%; padding:1.6rem 0; font-size: 1.4rem; font-weight: 500; height:auto;} 
 
@@ -638,18 +640,20 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .comment .inner:last-child {padding-bottom: 0;}
 .ev .comment .input_wrap {width: 100%;}
 .ev .comment .comment_textarea {padding:0 2rem;}
-.ev .comment .comment_img {padding:0 2rem;}
+.ev .comment .cmt_thumb {padding:0 2rem;}
+.ev .comment .cmt_thumb .imgUpload {margin:0 -1%;}
 .ev .comment .doc_contactus {width: 100%; height: 15rem; padding: 1.5rem; margin:3rem 0 1rem;}
 .ev .comment .doc_ans {width: 100%; height: 15rem; padding: 20px; font-size: 1.3rem; line-height: 1.6; color: #888; font-weight: 300; resize:none;}
 .ev .comment .txt_cnt {position: absolute; right: 1.6rem; bottom: 1.6rem; margin-top: 0;}
 .ev .comment .txt_cnt {position: absolute; right: 1.6rem; bottom: 1.6rem; margin-top: 0; color: #888;}
-.ev .comment .form_field {display: block;}
+.ev .comment .form_field {display: block; margin:0 -1% 0;}
 .ev .comment .form_field .img_file {margin:0 -0.4rem 0;}
-.ev .comment .pics {display: inline-block !important; width: calc((100% - 3.2rem) /4); height:0; margin:0 0.4rem 0.8rem; padding-top: 23.5%; border:1px solid transparent}
-.ev .comment .picsThumbs {max-width:100%; max-height:100%;}
-.ev .comment .imgUpload {width: calc((100% - 3.2rem) /4); height:100%; margin:0 0.4rem 1rem; float:left;}
-.ev .comment .fileAdd {display: inline-block; float:none; vertical-align: middle; width: 100%; height:auto; padding-top: 100%;}
-.ev .comment .btn_wrap {padding:0 2rem 3rem;}
+.ev .comment .form_field .img_file .imgUpload:after {content:''; clear:both; display: block;}
+.ev .comment .pics {overflow:hidden; /*width: calc((100% - 3.2rem) /4);*/ width: 23%; margin:1%; height:auto; padding-top: 23%; border:none; background: #f5f5f5;}
+.ev .comment .picsThumbs {max-width:100%; max-height:none; width: 100%; height:auto;}
+/* .ev .comment .imgUpload {width: 100%; height:100%;} */
+.ev .comment .fileAdd {width: 23%; height:auto; padding-top: 23%; margin:1%;}
+.ev .comment .btn_wrap {padding:2rem 2rem 3rem;}
 .ev .comment .btn_wrap button.btn {width: 100%; padding:1.1rem 0; font-size: 1.4rem; font-weight: 500; height:auto;}
 .ev .comment .nodata {padding:14rem 0; font-size: 1.3rem; color: #888; text-align: center;}
 
@@ -661,8 +665,9 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .cmt_group .cmt_list li .cmt_top {margin-bottom: 1.8rem; position: relative; font-size: 0;}
 .ev .cmt_group .cmt_list li .cmt_top .writer {margin-right: 1.2rem; padding-right: 1.2rem; border-right:1px solid #ddd; font-size: 1.1rem; color: #666;}
 .ev .cmt_group .cmt_list li .cmt_top .date {color: #888; font-size: 1.1rem;}
-.ev .cmt_group .cmt_list li .cmt_cont .img_wrap {margin:0 -0.4rem 0; white-space: nowrap; font-size: 0; overflow-x: auto;}
-.ev .cmt_group .cmt_list li .cmt_cont .img_wrap .pics {float:none;}
+.ev .cmt_group .cmt_list li .cmt_cont .img_wrap {margin:0 -0.4rem 0.8rem; white-space: nowrap; font-size: 0; overflow-x: auto; -ms-overflow-style:none;}
+.ev .cmt_group .cmt_list li .cmt_cont .img_wrap::-webkit-scrollbar { display:none; }
+.ev .cmt_group .cmt_list li .cmt_cont .img_wrap .pics {float:none; display: inline-block !important; margin:0 0.1.11%; width: 20.55%; padding-top: 20%;}
 .ev .cmt_group .cmt_list li .cmt_cont .img_wrap .pics .picsThumbs {}
 .ev .cmt_group .cmt_list li .cmt_cont .img_wrap img {max-width:100%; max-height:100%;}
 .ev .cmt_group .cmt_list li .cmt_cont p {color: #666; line-height: 1.7; font-size: 1.3rem; font-weight: 300;}
@@ -675,26 +680,25 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .modal.photo_comment_popup {background: #f5f5f5; overflow:hidden;}
 .modal.photo_comment_popup .modal-dialog, .modal.photo_comment_popup .modal-content {height: 100%;}
 .modal.photo_comment_popup .modal-body {padding: 5.2rem 0 0; margin:0; height: 100%;}
-.modal.photo_comment_popup .modal-body .pop_cont {height: 100%; overflow:hidden; position: relative;}
-.modal.photo_comment_popup .modal-body .pop_cont .pop_slide {position: relative; height: 46.6rem;}
+.modal.photo_comment_popup .modal-body .pop_cont {height: 100%; overflow:hidden; position: relative; padding-bottom: 13rem;}
+.modal.photo_comment_popup .modal-body .pop_cont .pop_slide {position: relative; height: 100%;}
 .modal.photo_comment_popup .modal-body .pop_cont .pop_slide .swiper-container {height: 100%;}
-.modal.photo_comment_popup .modal-body .pop_cont .pop_slide .swiper-pagination-fraction {bottom: 3.3rem; width:auto; left: 50%; transform:translateX(-50%); background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
+.modal.photo_comment_popup .modal-body .pop_cont .pop_slide .swiper-pagination-fraction {bottom:2.5rem; width:auto; left: 50%; transform:translateX(-50%); background: rgba(34,34,34,.5); color: #fff; font-weight: 300;padding:0.5rem 0.7rem; line-height: 1; font-size: 1.2rem; border-radius:2rem;}
 .swiper-pagination-current {font-weight: 600;}
 /* .swiper-pagination-current:before {content:'0';} */
-.modal.photo_comment_popup .pop_detail {position: absolute; left: 0; bottom:-24rem; z-index: 99; background: #fff; padding:0 2rem 2rem; box-shadow: 0px -14px 17.8px 2.2px rgba(0, 0, 0, 0.04); font-size: 1.3rem; max-height: 37rem; overflow-y:auto; transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);}
+.modal.photo_comment_popup .pop_detail {position: fixed; left: 0; bottom: 0; width: 100%; z-index: 99; background: #fff;  box-shadow: 0px -14px 17.8px 2.2px rgba(0, 0, 0, 0.04); font-size: 1.3rem;  transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);}
 .pop_slide .swiper-slide .img {}
 .pop_slide .swiper-slide img {width: auto; height: auto; max-height: 100%; max-width: 100%; margin: auto 0; position: absolute; top: 50%; bottom: auto; left: 50%; right: 0; transform: translate(-50%, -50%); cursor: pointer;}
-.modal.photo_comment_popup .pop_detail .pop_open_btn {background: url('/images/mo/ico_pop_arrow.png') no-repeat center; display: block; width: 100%; height: 3rem; background-position:center; background-size:3rem;}
-.modal.photo_comment_popup .pop_detail.active .pop_open_btn {background: url('/images/mo/ico_pop_arrow_on.png') no-repeat center; display: block; width: 100%; height: 3rem; background-position:center; background-size:3rem;}
-.modal.photo_comment_popup .pop_detail.active {bottom: 0;}
+.modal.photo_comment_popup .pop_detail .pop_open_btn {position: absolute; left: 0; top: 0; width: 100%; background: url('/images/mo/ico_pop_arrow.png') no-repeat center; display: block; width: 100%; height: 3rem; background-position:center; background-size:3rem;}
+.modal.photo_comment_popup .pop_detail .comment_wrap {max-height: 10rem; padding:0 2rem 2rem; margin-top: 3rem; transition: all 600ms cubic-bezier(0.86, 0, 0.07, 1);}
 .modal.photo_comment_popup .pop_detail .comment_writer {margin-top: 1.4rem;}
 .modal.photo_comment_popup .pop_detail .comment_writer .writer {margin-right: 1.2rem; padding-right: 1.2rem; border-right:1px solid #ddd; font-size: 1.1rem; color: #666;}
 .modal.photo_comment_popup .pop_detail .comment_writer .date {color: #888; font-size: 1.1rem;}
-.modal.photo_comment_popup .modal-footer {margin-top: 0;}
 
-@media screen and (max-width:320px){
-  .modal.photo_comment_popup .modal-body .pop_cont .pop_slide {height: 38.5rem;}
-}
+.modal.photo_comment_popup .pop_detail.active {}
+.modal.photo_comment_popup .pop_detail.active .pop_open_btn {background: url('/images/mo/ico_pop_arrow_on.png') no-repeat center; display: block; width: 100%; height: 3rem; background-position:center; background-size:3rem;}
+.modal.photo_comment_popup .pop_detail.active .comment_wrap {overflow-y:auto; max-height: 34rem;}
+.modal.photo_comment_popup .modal-footer {margin-top: 0;}
 
 .paging_wrap {text-align: center; margin-top: 3.6rem;}
 .paging_wrap .pageNav {display: inline-block;}
@@ -739,6 +743,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .event_calander table th.sat {color: #3158ea;} */
 .ev .event_calander table td {height: 4rem; box-sizing: border-box; text-align: center;}
 .ev .event_calander table td .date {font-size: 1rem; font-weight: 300; width: 2.7rem; height: 2.7rem; line-height: 2.7rem; border-radius:50%; margin:0 auto;}
+.ev .event_calander table td .date.unused {color: #ddd;}
 .ev .event_calander table td.today .date {border:1px solid #fd4802;}
 .ev .event_calander table td.complete .date {border:1px solid #fa8d64; background: #fa8d64;}
 .ev .event_calander table tbody {background: #fff; }
@@ -747,6 +752,14 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev .benefit_list {padding-top: 3rem;}
 .ev .benefit_list h4 {font-size: 1.6rem; padding-bottom: 2rem;}
 .ev .benefit_list .benefit_con img {width: 100%;}
+.ev .benefit_list .benefit_con ul li:first-child {margin-top: 0;}
+.ev .benefit_list .benefit_con ul li {background: #f5f5f5; margin-top: 0.1rem; font-size: 1.4rem;}
+.ev .benefit_list .benefit_con ul li > div {padding:2.6rem 0 2.6rem 6.5rem;}
+.ev .benefit_list .benefit_con ul li .benfit_point {background: url(/images/mo/ico_check_point.png) no-repeat left 2rem center; background-size:3.5rem;}
+.ev .benefit_list .benefit_con ul li .benfit_coupon {background: url(/images/mo/ico_check_coupon.png) no-repeat left 2rem center; background-size:3.5rem;}
+.ev .benefit_list .benefit_con ul li > div strong {font-weight: 500;}
+.ev .benefit_list .benefit_con ul li > div span.c_primary {font-weight: 600;}
+
 
 /* ev_rank */
 .ev_rank {background: #f5f5f5;}
@@ -827,14 +840,15 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev_rank .member_level_area .level_head .desc p {color: #444; font-size: 1.2rem; font-weight: 500;}
 .ev_rank .member_level_area .level_content {padding:2rem;}
 .ev_rank .member_level_area .level_content:after {content:''; clear:both; display: block;}
-.ev_rank .member_level_area .level_content > div.coupon {margin-bottom: 2.4rem;}
+.ev_rank .member_level_area .level_content > div.coupon {margin-bottom: 2.4rem; border:none;}
+.ev_rank .member_level_area .level_content > div.coupon > div:after {position: static; border:none; transform:none; width:auto; height:auto; border-radius: none;}
 .ev_rank .member_level_area .level_content > div.birth {}
 .ev_rank .member_level_area .level_content > div > p {position: relative; margin-bottom: 1.3rem; font-size: 1.1rem; font-weight: 500; padding-left: 0.7rem;}
 .ev_rank .member_level_area .level_content > div > p:before {content:''; position: absolute; top: 0.6rem; left: 0; width: 0.2rem; height: 0.2rem; background: #222;}
 .ev_rank .member_level_area .level_content .coupon_box, .ev_rank .member_level_area .level_content .birth_box {padding:0 0.7rem;}
 .ev_rank .member_level_area .level_content .coupon_info {float:left; width: 46%;}
 .ev_rank .member_level_area .level_content .coupon_info:last-child {float:right;}
-.ev_rank .member_level_area .level_content .coupon_info p, .ev_rank .member_level_area .level_content .birth_info p {font-size: 1.1rem; text-align: center; margin-top: 1rem;}
+.ev_rank .member_level_area .level_content .coupon_info p, .ev_rank .member_level_area .level_content .birth_info p {font-size: 1.1rem; text-align: center; margin-top: 1rem; padding: 0;}
 .ev_rank .member_level_area .level_content .coupon_info img, .ev_rank .member_level_area .level_content .birth_info img {width: 100%;}
 .ev_rank .member_level_area .level_content .birth_info {width: 46%;}
 
@@ -1363,6 +1377,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .optionChangePop .product_list {border-top: 1px solid #ddd;}
 .optionChangePop .product_list li {border-bottom: 1px solid #ddd; padding: 1.5rem;}
 
+.modal.optionChangePop .modal-body {padding-bottom: 4.5rem;}
 .modal.optionChangePop .modal-body .pop_cont {color: #222;}
 .optionChangePop .option_list li {border-bottom: 1px dashed #ddd; padding:2rem 0 0;}
 .optionChangePop .option_list li:first-child {padding-top: 0;}
@@ -1377,6 +1392,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .optionChangePop .option_list li .option_box button:disabled span {text-decoration: line-through; color: #bbb;}
 .optionChangePop .option_list li .option_name {font-size: 1.4rem; font-weight: 500;}
 .optionChangePop .option_list li .option_field {margin-top: 1.5rem;}
+.optionChangePop .modal-footer {position: fixed; left: 0; bottom: 0; width: 100%; margin-top: 0;}
 .optionChangePop .modal-footer .btn_group_flex {margin-top: 0;}
 
 /* my_return_3_accountPop_환불계좌등록 팝업 */
@@ -2517,4 +2533,4 @@ main.container .od_extra .inner:last-child {padding-bottom: 0;}
 .popup_main_notice.half .popup_content .popup_header {position: relative; background:transparent; height: 6rem; padding: 2.2rem;}
 .popup_main_notice.half .popup_content .popup_header::after {content:''; clear:both; display:block;}
 .popup_main_notice.half .popup_content .popup_header a.btn_underline {display:inline-block; float:left; color:#fff; font-size:1.3rem; font-weight:200; border-color:#fff; opacity: 0.4; padding-top: 0.2rem;}
-.popup_main_notice.half .popup_content .popup_header 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;}
+.popup_main_notice.half .popup_content .popup_header 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; text-indent:-999em;}