Parcourir la source

Merge branch 'develop' into eskim

eskim il y a 5 ans
Parent
commit
487dc538ac
41 fichiers modifiés avec 2479 ajouts et 685 suppressions
  1. 18 0
      src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java
  2. 30 0
      src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java
  3. 22 0
      src/main/java/com/style24/front/biz/service/TsfDisplayService.java
  4. 80 0
      src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java
  5. 40 0
      src/main/java/com/style24/front/biz/web/TsfDisplayController.java
  6. 80 8
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  7. 7 0
      src/main/java/com/style24/persistence/domain/GoodsSearch.java
  8. 45 11
      src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml
  9. 1 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  10. 144 8
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  11. 1 1
      src/main/resources/config/application-locp.yml
  12. 4 4
      src/main/resources/config/application-run.yml
  13. 5 5
      src/main/resources/config/application-tsit.yml
  14. 14 0
      src/main/resources/i18n/messages/message_ko_KR.properties
  15. 1171 0
      src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html
  16. 83 1
      src/main/webapp/WEB-INF/views/mob/cart/CartListFormMob.html
  17. 27 21
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  18. 1 1
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  19. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html
  20. 5 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html
  22. 1 1
      src/main/webapp/WEB-INF/views/web/display/BrandMainFormWeb.html
  23. 17 6
      src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html
  24. 16 18
      src/main/webapp/WEB-INF/views/web/display/MallMainFormWeb.html
  25. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  26. 77 55
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  27. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb_20210330.html
  28. 42 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  29. 14 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  30. 7 15
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  31. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb_20210329.html
  32. 26 19
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  33. 28 22
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  34. 4 57
      src/main/webapp/biz/mypage.js
  35. 4 4
      src/main/webapp/ux/mo/css/common_m.css
  36. 25 13
      src/main/webapp/ux/mo/css/layout_m.css
  37. 82 44
      src/main/webapp/ux/mo/css/style24_m.css
  38. 333 333
      src/main/webapp/ux/pc/css/common.css
  39. 10 6
      src/main/webapp/ux/pc/css/layout.css
  40. 5 4
      src/main/webapp/ux/pc/js/common-ui.js
  41. 1 1
      src/main/webapp/ux/style24_link.js

+ 18 - 0
src/main/java/com/style24/front/biz/dao/TsfDisplayDao.java

@@ -153,4 +153,22 @@ public interface TsfDisplayDao {
 	 * @date 2021. 4. 5
 	 */
 	Collection<GoodsSearch> getCategoryFilter(Cate4Srch cate4Srch);
+
+	/**
+	 * 상품카테고리 필터 혜택 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 7
+	 */
+	Collection<GoodsSearch> getCategoryFilterBenefit(Cate4Srch cate4Srch);
+
+	/**
+	 * 카테고리 별 상품 수
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 7
+	 */
+	int getCategoryGoodsCount(GoodsSearch goodsSearch);
 }

+ 30 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java

@@ -78,4 +78,34 @@ public interface TsfOrderChangeDao {
 	 */
 	Collection<OrderChange> getExchangeOptionInfo(OrderChange orderChange);
 
+	/**
+	 * 마이페이지 취반교 내역 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	Collection<OrderChange> getCreList(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 수 조회
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	int getPagingCreListCount(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	Collection<OrderChange> getPagingCreList(OrderChange orderChange);
+
 }

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

@@ -336,4 +336,26 @@ public class TsfDisplayService {
 		return displayDao.getCategoryFilter(cate4Srch);
 	}
 
+	/**
+	 * 상품카테고리 필터 혜택 목록
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 7
+	 */
+	public Collection<GoodsSearch> getCategoryFilterBenefit(Cate4Srch cate4Srch){
+		return displayDao.getCategoryFilterBenefit(cate4Srch);
+	}
+
+	/**
+	 * 카테고리 별 상품 수
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @date 2021. 4. 7
+	 */
+	public int getCategoryGoodsCount(GoodsSearch goodsSearch){
+	return displayDao.getCategoryGoodsCount(goodsSearch);
+	}
+
 }

+ 80 - 0
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -217,4 +217,84 @@ public class TsfOrderChangeService {
 		return exchangeOptionInfo;
 	}
 
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 수 조회
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public int getPagingCreListCount(OrderChange orderChange) { return orderChangeDao.getPagingCreListCount(orderChange); }
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public Collection<OrderChange> getPagingCreList(OrderChange orderChange) { return orderChangeDao.getPagingCreList(orderChange); }
+
+	/**
+	 * 마이페이지 취반교 목록 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public Collection<GagaMap> getCreList(OrderChange orderChange) {
+		Collection<GagaMap> creList = new ArrayList<>();
+		Collection<OrderChange> orderChangeList = new ArrayList<>();
+		int ordChgSq = 0;
+		int index = 0;
+
+		for (OrderChange tmpOrderChange : orderChangeDao.getCreList(orderChange)) {
+			// 세트상품 옵션별 배열로 담기
+			if (tmpOrderChange.getItemNm().contains("!@!")) {
+				tmpOrderChange.setItemNmArr(tmpOrderChange.getItemNm().split("!@!"));
+				tmpOrderChange.setColorNmArr(tmpOrderChange.getColorNm().split(","));
+				tmpOrderChange.setOptCd1Arr(tmpOrderChange.getOptCd1().split(","));
+				tmpOrderChange.setOptCd2Arr(tmpOrderChange.getOptCd2().split(","));
+			} else {
+				String[] arr = {tmpOrderChange.getItemNm()}, arr2 = {tmpOrderChange.getColorNm()}, arr3 = {tmpOrderChange.getOptCd1()}, arr4 = {tmpOrderChange.getOptCd2()};
+				tmpOrderChange.setItemNmArr(arr);
+				tmpOrderChange.setColorNmArr(arr2);
+				tmpOrderChange.setOptCd1Arr(arr3);
+				tmpOrderChange.setOptCd2Arr(arr4);
+			}
+
+			// 취반교 목록 데이터 설정
+			if (index > 0 && ordChgSq != tmpOrderChange.getOrdChgSq()) {
+				creList.add(setOrderChangeMap(orderChangeList));
+				orderChangeList = new ArrayList<>();
+			}
+
+			orderChangeList.add(tmpOrderChange);
+			ordChgSq = tmpOrderChange.getOrdChgSq();
+			index++;
+		}
+
+		if (orderChangeList.size() > 0) {
+			creList.add(setOrderChangeMap(orderChangeList));
+		}
+
+		return creList;
+	}
+
+	private GagaMap setOrderChangeMap(Collection<OrderChange> ordCreList) {
+		OrderChange orderChange = ordCreList.iterator().next();
+
+		GagaMap map = new GagaMap();
+		map.set("giftPackYn", orderChange.getGiftPackYn());
+		map.set("ordChgSq", orderChange.getOrdChgSq());
+		map.set("chgDt", orderChange.getChgDt());
+		map.set("oneData", orderChange);
+		map.set("ordCreList", ordCreList);
+
+		return map;
+	}
+
 }

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

@@ -7,11 +7,13 @@ import java.util.HashMap;
 
 import javax.servlet.http.HttpServletResponse;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.support.env.TscConstants;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mobile.device.Device;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -27,6 +29,7 @@ import com.style24.front.biz.service.TsfPlanningService;
 import com.style24.front.biz.service.TsfSocialService;
 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.BrandGroup;
 import com.style24.persistence.domain.Cate4Srch;
 import com.style24.persistence.domain.Contents;
@@ -473,8 +476,45 @@ public class TsfDisplayController extends TsfBaseController {
 		mav.addObject("filterSeasonList", displayService.getCategoryFilter(cate4Srch, "SEASON"));
 		mav.addObject("filterColorList", displayService.getCategoryFilter(cate4Srch, "COLOR"));
 		mav.addObject("filterBenefitList", displayService.getCategoryFilter(cate4Srch, "BENEFIT"));
+		//mav.addObject("filterBenefitList", displayService.getCategoryFilterBenefit(cate4Srch));
 		mav.addObject("cateInfo", cate4Srch);
 
 		return mav;
 	}
+
+	/**
+	 * 카테고리 상품 리스트 조회
+	 * @param
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 4. 7
+	 */
+	@PostMapping("/category/goods/list")
+	@ResponseBody
+	public GagaMap getGoodsList(GoodsSearch goodsSearch){
+		GagaMap result = new GagaMap();
+		TscPageRequest pageable = new TscPageRequest((goodsSearch.getPageNo() > 0 ? goodsSearch.getPageNo() - 1 : 0), goodsSearch.getPageSize(), goodsSearch.getPageUnit());
+
+		goodsSearch.setSiteCd(TscConstants.Site.STYLE24.value());
+		goodsSearch.setFormalGb("G009_10");
+		goodsSearch.setFrontGb(TsfSession.getFrontGb());
+		goodsSearch.setCustGb(TsfSession.getCustGb());
+		if(goodsSearch.getBrandGroupNo()==null || goodsSearch.getBrandGroupNo().equals("")){
+			goodsSearch.setBrandGroupNo(0);
+		}
+		if(goodsSearch.getCate4No()!=null && !goodsSearch.getCate4No().equals("")){
+			goodsSearch.setCateNo(goodsSearch.getCate4No());
+		} else if(goodsSearch.getCate3No()!=null && !goodsSearch.getCate3No().equals("")){
+			goodsSearch.setCateNo(goodsSearch.getCate3No());
+		} else if(goodsSearch.getCate2No()!=null && !goodsSearch.getCate2No().equals("")){
+			goodsSearch.setCateNo(goodsSearch.getCate2No());
+		} else if(goodsSearch.getCate1No()!=null && !goodsSearch.getCate1No().equals("")){
+			goodsSearch.setCateNo(goodsSearch.getCate1No());
+		}
+
+		int totalCnt = displayService.getCategoryGoodsCount(goodsSearch);
+		log.info("totalCnt::::::::::{}",totalCnt);
+		pageable.setTotalCount(0);
+		return result;
+	}
 }

+ 80 - 8
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -253,7 +253,6 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap getOrderList(@RequestBody Order order) {
 		GagaMap map = new GagaMap();
-		ModelAndView mav = new ModelAndView();
 
 		// 페이징 처리 설정
 		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
@@ -450,7 +449,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 처리 결과 코드에 따른 메세지 설정
 		if (result.get("status").equals(GagaResponseStatus.SUCCESS.getCode())) {
-			result.set("message", message.getMessage("SUCC_0004"));
+			result.set("message", message.getMessage("EXCHANGE_0001"));
 		} else {
 			result.set("message", message.getMessage("FAIL_0004"));
 		}
@@ -642,6 +641,7 @@ public class TsfMypageController extends TsfBaseController {
 		result.set("allCanYn"		, allCanYn);							// 무통장입금전 전체취소 여부 
 		result.set("isCustomer"		, orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
 		result.set("wdGb"			, orderChange.getWdGb());				// 회수방법
+		result.set("wdInvoiceNo"	, orderChange.getWdInvoiceNo());		// 회수송장번호
 
 		// 4. 주문변경 회수지정보 추가
 		result.set("chgerNm"		, orderChange.getChgerNm());			// 변경자명
@@ -657,7 +657,7 @@ public class TsfMypageController extends TsfBaseController {
 		coreOrderChangeService.rtnReq(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "반품 신청이 접수되었습니다.");
+		result.set("message", message.getMessage("RETURN_0001"));
 
 		return result;
 	}
@@ -762,7 +762,7 @@ public class TsfMypageController extends TsfBaseController {
 		coreOrderChangeService.cnclComplete(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "취소 처리 되었습니다.");
+		result.set("message", message.getMessage("CANCEL_0001"));
 		// result.set("message", message.getMessage("SUCC_0004"));
 
 		return result;
@@ -809,6 +809,78 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 취반교 목록 화면
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	@GetMapping({"/cre/list/form"})
+	public ModelAndView mypageCreListForm(@RequestBody(required = false) OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		if (orderChange == null) {
+			orderChange = new OrderChange();
+		}
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		orderChange.setCustNo(custNo);
+
+		// 고객정보 조회
+		Customer customer = new Customer();
+		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+		customer.setCustNo(custNo);
+		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
+		mav.addObject("customerInfo", coreCustomerService.getCustomerInfo(customer));
+
+		// 주문 상태 별 수량 조회
+		// mav.addObject("orderCount", coreOrderService.getOrderStatCount(orderChange));
+
+		// 주문상세상태코드 설정
+		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
+
+		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 취반교 목록 조회
+	 *
+	 * @param OrderChange
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 02. 18
+	 */
+	@PostMapping("/cre/list")
+	@ResponseBody
+	public GagaMap getCreList(@RequestBody OrderChange orderChange) {
+		GagaMap map = new GagaMap();
+
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((orderChange.getPageNo() > 0 ? orderChange.getPageNo() - 1 : 0), orderChange.getPageSize(), orderChange.getPageUnit());
+		pageable.setTotalCount(orderChangeService.getPagingCreListCount(orderChange));
+		orderChange.setPageable(pageable);
+
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordChgSqList = new ArrayList<>();
+
+		for (OrderChange tmpOrderChange : orderChangeService.getPagingCreList(orderChange)) {
+			ordChgSqList.add(tmpOrderChange.getOrdChgSq());
+		}
+
+		if (ordChgSqList.size() > 0) {
+			orderChange.setOrdChgSqArr(ordChgSqList.stream().mapToInt(Integer::intValue).toArray());
+		}
+
+		map.set("creList", orderChangeService.getCreList(orderChange));
+		map.set("creInfo", orderChange);
+
+		return map;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -915,11 +987,11 @@ public class TsfMypageController extends TsfBaseController {
 			// WMS IF TABLE 내 정보 업데이트 처리 필요
 		} catch (Exception e) {
 			result.set("status", GagaResponseStatus.FAIL.getCode());
-			result.set("message", "배송지 수정에 실패했습니다.");
+			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "정상적으로 배송지가 수정되었습니다.");
+		result.set("message", message.getMessage("DELV_0002"));
 
 		return result;
 	}
@@ -947,11 +1019,11 @@ public class TsfMypageController extends TsfBaseController {
 			commonService.updateDeliverAddrDelvMemo(order);
 		} catch (Exception e) {
 			result.set("status", GagaResponseStatus.FAIL.getCode());
-			result.set("message", "배송메모 수정에 실패했습니다.");
+			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "정상적으로 배송메모가 수정되었습니다.");
+		result.set("message", message.getMessage("DELV_0002"));
 
 		return result;
 	}

+ 7 - 0
src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -1,6 +1,7 @@
 package com.style24.persistence.domain;
 
 import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 /**
@@ -57,4 +58,10 @@ public class GoodsSearch extends TscBaseDomain {
     private String  filterCd;
     private String  filterNm;
 
+    private TscPageRequest pageable;				// 페이징
+    private int pageNo;
+    private int pageSize;
+    private int pageUnit = 10;
+    private String sortGb;
+
 }

+ 45 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsfDisplay.xml

@@ -594,21 +594,55 @@
 		SELECT
 		<choose>
 			<when test="filterGb != null and filterGb =='SIZE'">
-		       SUBSTRING_INDEX(FILTER_CD,'|',1) AS FILTER_CD
+		SUBSTRING_INDEX(FILTER_CD,'|',1) AS FILTER_CD
 			</when>
 			<otherwise>
-		       FILTER_CD
+		FILTER_CD
 			</otherwise>
 		</choose>
-			 , FILTER_NM
-		FROM	TB_CATE_FILTER
-		WHERE	1=1
-		  AND	SITE_CD = #{siteCd}
-		  AND 	CATE_GB = #{cateGb}
-		  AND 	FORMAL_GB = #{formalGb}
-		  AND 	BRAND_GROUP_NO = #{brandGroupNo}
-		  AND 	CATE_NO = #{cateNo}
-		  AND 	FILTER_GB = #{filterGb}
+		, FILTER_NM
+		FROM TB_CATE_FILTER
+		WHERE 1=1
+		AND SITE_CD = #{siteCd}
+		AND CATE_GB = #{cateGb}
+		AND FORMAL_GB = #{formalGb}
+		AND BRAND_GROUP_NO = #{brandGroupNo}
+		AND CATE_NO = #{cateNo}
+		AND FILTER_GB = #{filterGb}
 		ORDER BY DISP_ORD
 	</select>
+
+	<!-- 카테고리별 상품 총 수 -->
+	<select id="getCategoryGoodsCount" parameterType="GoodsSearch" resultType="int">
+		/* TsfDisplay.getCategoryGoodsCount */
+		SELECT COUNT(1) AS TOTCNT
+		FROM (SELECT A.GOODS_CD
+		           , A.CATE_NO
+		           , A.DISP_ORD
+		           , A.REG_NO
+		           , A.REG_DT
+		      FROM TB_CATE_GOODS A
+		      WHERE 1 = 1
+		        AND EXISTS(SELECT 1
+		                    FROM TB_CATE_4SRCH
+		                    WHERE 1 = 1
+		                      AND LEAF_CATE_NO = A.CATE_NO
+		                      AND CATE1_NO = #{cate1No}
+		                    <if test="cate2No != null and cate2No != ''">
+		                     AND CATE2_NO = #{cate2No}
+							</if>
+		                    <if test="cate3No != null and cate3No != ''">
+		                    AND CATE3_NO = #{cate3No}
+							</if>
+		                    <if test="cate4No != null and cate4No != ''">
+		                    AND CATE4_NO = #{cate4No}
+							</if>
+		                    <if test="cate5No != null and cate5No != ''">
+		                    AND CATE5_NO = #{cate5No}
+		                    </if>
+				  )
+		) A
+		   , TB_GOODS C
+		WHERE A.GOODS_CD = C.GOODS_CD
+	</select>
 </mapper>

+ 1 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -316,9 +316,7 @@
 		     , CARD_KIND
 		     , CARD_BANK
 		     , CARD_NM
-		     , CASE CARD_MIPS WHEN 0 THEN '일시불'
-							  ELSE CONCAT(CARD_MIPS, '개월')
-				END									AS CARD_MIPS
+		     , IF(CARD_MIPS = 0, '일시불', CONCAT(CARD_MIPS, '개월')) AS CARD_MIPS
 		     , CARD_PCABLE_YN
 		     , VA_NO
 		     , VA_NM

+ 144 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -95,10 +95,8 @@
 		             , OD.RETURNABLE_YN
 		             , G.SELF_GOODS_YN
 		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
-		             , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
-		                    ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-		                END                                                             AS ORD_REQ_CHG_QTY
-		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
+		             , IFNULL(OCD.ORD_REQ_CHG_QTY, 0)                                   AS ORD_REQ_CHG_QTY
+		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
 		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                  AS ACCOUNT_NM
@@ -231,10 +229,8 @@
 		             , OD.RETURNABLE_YN
 		             , G.SELF_GOODS_YN
 		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                                  AS BRAND_NM
-		             , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
-		                    ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-		                END                                                                   AS ORD_REQ_CHG_QTY
-		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
+		             , IFNULL(OCD.ORD_REQ_CHG_QTY, 0)                                         AS ORD_REQ_CHG_QTY
+		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)          AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
 		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                        AS ACCOUNT_NM
@@ -492,4 +488,144 @@
 		 GROUP BY Z.ORD_NO, Z.ORD_DTL_NO, Z.ORD_DTL_ITEM_SQ, Z.ITEM_CD, Z.OPT_CD1, Z.OPT_CD2
 				, Z.COLOR_NM, Z.GOODS_TYPE, Z.SELF_GOODS_YN, Z.ITEM_NM, Z.GOODS_STAT
 	</select>
+	
+	<!-- 마이페이지 취반교 내역 조회 -->
+	<select id="getCreList" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getCreList */
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!')       AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ)                      AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD2
+		     , Z.ORD_CHG_SQ
+		     , Z.CHG_DT
+		     , Z.CHG_ORD_DTL_NO
+		     , Z.CHG_STAT
+		     , Z.ORD_NO
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_CD
+		     , Z.BRAND_NM
+		     , Z.SHOT_DELV_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.GOODS_NM
+		     , Z.LIST_PRICE
+		     , Z.SYS_IMG_NM
+		     , Z.GIFT_PACK_YN
+		  FROM (SELECT OC.ORD_CHG_SQ
+		             , OC.REG_DT                                                        AS CHG_DT
+		             , OCD.CHG_ORD_DTL_NO
+		             , OCD.CHG_STAT
+		             , OD.ORD_NO
+		             , OCD.ORD_DTL_NO
+		             , G1.GOODS_CD
+		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , OD.SHOT_DELV_YN
+		             , G1.SELF_GOODS_YN
+		             , G1.GOODS_NM
+		             , IFNULL(C.COLOR_KNM, ODI.OPT_CD1)                                 AS COLOR_NM
+		             , G2.GOODS_NM AS ITEM_NM
+		             , ODI.ORD_DTL_ITEM_SQ
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , G1.LIST_PRICE
+		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		             , OD.GIFT_PACK_YN
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_ORDER O
+		            ON OD.ORD_NO = O.ORD_NO
+		         INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		            ON OD.ORD_NO = ODI.ORD_NO
+		           AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_GOODS G1
+		            ON OD.GOODS_CD = G1.GOODS_CD
+		         INNER JOIN TB_GOODS G2
+		            ON ODI.ITEM_CD = G2.GOODS_CD
+		         INNER JOIN TB_BRAND B
+		            ON G1.BRAND_CD = B.BRAND_CD
+		          LEFT OUTER JOIN TB_COLOR C
+		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
+		           AND C.USE_YN = 'Y'
+		         WHERE OCD.DEL_YN = 'N'
+		           AND O.DISP_YN = 'Y'
+		<choose>
+			<when test="custNo != null and custNo != ''">
+		           AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+		           AND O.ORD_NO = #{ordNo}
+		           AND O.ORD_NM = #{orderNm}
+			</otherwise>
+		</choose>
+		<if test="ordChgSq != null and ordChgSq != ''">
+			AND OC.ORD_CHG_SQ = #{ordChgSq}
+		</if>
+		<if test="ordDtlNoArr != null">
+			AND OD.ORD_DTL_NO IN
+			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		<if test="ordChgSqList != null">
+			AND OC.ORD_CHG_SQ IN
+			<foreach collection="ordChgSqList" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		<if test="chgStat != null and chgStat != ''">
+			AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		  ) Z
+		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_DT, Z.CHG_ORD_DTL_NO, Z.CHG_STAT, Z.ORD_NO, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM
+		        , Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.GIFT_PACK_YN
+	</select>
+
+	<!-- 마이페이지 취반교 조회 페이징 처리 주문변경번호 수 조회 -->
+	<select id="getPagingCreListCount" parameterType="OrderChange" resultType="int">
+		/* TsfOrderChange.getPagingCreListCount */
+		SELECT COUNT(*) AS CNT
+		  FROM (SELECT OCD.ORD_CHG_SQ
+		          FROM TB_ORDER O
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON O.ORD_NO = OD.ORD_NO
+		          LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		         WHERE O.DISP_YN = 'Y'
+		           AND OCD.ORD_CHG_SQ IS NOT NULL
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		           AND OCD.REG_DT BETWEEN CONCAT(#{stDate}, ' 00:00:00') AND CONCAT(#{edDate}, ' 23:59:59')
+		</if>
+		<if test="ordDtlStat != null and ordDtlStat != ''">
+		           AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		         GROUP BY OCD.CHG_STAT
+		       ) Z
+	</select>
+
+	<!-- 마이페이지 취반교 조회 페이징 처리 주문변경번호 조회 -->
+	<select id="getPagingCreList" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getPagingCreList */
+		<include refid="selectForPagingHeader"/>
+		SELECT OCD.ORD_CHG_SQ
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		 WHERE O.DISP_YN = 'Y'
+		   AND OCD.ORD_CHG_SQ IS NOT NULL
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		   AND OCD.REG_DT BETWEEN CONCAT(#{stDate}, ' 00:00:00') AND CONCAT(#{edDate}, ' 23:59:59')
+		</if>
+		<if test="ordDtlStat != null and ordDtlStat != ''">
+		   AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		 GROUP BY OCD.CHG_STAT
+		<include refid="selectForPagingFooter"/>
+	</select>
 </mapper>

+ 1 - 1
src/main/resources/config/application-locp.yml

@@ -20,7 +20,7 @@ logging:
 has-ssl: false
 
 domain:
-    wivis: //lpfront.style24.com
+    front: //lpfront.style24.com
     image: //image.style24.com/speedy_image-wivismall
     uximage: //lpfront.style24.com
 

+ 4 - 4
src/main/resources/config/application-run.yml

@@ -16,8 +16,8 @@ spring:
 logging.config: classpath:log/logback-run.xml
 
 domain:
-    wivis: //www.style24.com
-    image: //image.style24.com/speedy_image-wivismall
+    front: //www.style24.com
+    image: //image.style24.com
     uximage: //www.style24.com
 
 # SSL Server
@@ -33,12 +33,12 @@ upload:
         target.path: /app/was/deploy/wivismall.front/data/goods
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //image.style24.com/speedy_image-wivismall/goods
+        view: //image.istyle24.com/Upload/ProductImage
     image:
         target.path: /app/was/deploy/wivismall.front/data
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //image.style24.com/speedy_image-wivismall
+        view: //image.istyle24.com/Upload
     excel:
         target.path: /app/was/deploy/wivismall.front/data/excel
         max.size: 10

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

@@ -28,27 +28,27 @@ domain:
 
 upload:
     default:
-        target.path: /TSIT/servers/files/data
+        target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //tdimage.style24.com
     goods:
-        target.path: /TSIT/servers/files/data/goods
+        target.path: /TSIT/servers/files/data/style24/Upload/ProductImage
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //image.istyle24.com/Upload/ProductImage
     image:
-        target.path: /TSIT/servers/files/data
+        target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //tdimage.style24.com
     excel:
-        target.path: /TSIT/servers/files/data/excel
+        target.path: /TSIT/servers/files/data/style24/excel
         max.size: 10
         allow.extension: xls|xlsx
         view: //tdimage.style24.com/excel
     sample:
-        target.path: /WIDE/workspace/files/data
+        target.path: /WIDE/workspace/files/data/style24/sample
         max.size: 10
         allow.extension: txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //tdimage.style24.com/sample

+ 14 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -92,3 +92,17 @@ SABANGNET_0010=\uCD9C\uACE0\uB97C \uC704\uD574 ERP\uB85C \uC804\uC1A1\uD558\uC60
 #\uCFE0\uD3F0
 COUPON_0001=\uCD1D {0}\uC7A5\uC758 \uCFE0\uD3F0\uC744 \uB2E4\uC6B4\uB85C\uB4DC \uD558\uC600\uC2B5\uB2C8\uB2E4.
 COUPON_0002=\uC774\uBBF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC644\uB8CC \uD558\uC168\uC2B5\uB2C8\uB2E4.
+
+#\uAD50\uD658
+EXCHANGE_0001=\uAD50\uD658 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uBC18\uD488
+RETURN_0001=\uBC18\uD488 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uCDE8\uC18C
+CANCEL_0001=\uC8FC\uBB38 \uCDE8\uC18C\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uBC30\uC1A1
+DELV_0001=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uC9C0\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+DELV_0002=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uBA54\uBAA8\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+

+ 1171 - 0
src/main/webapp/WEB-INF/views/mob/cart/CartListAjaxFormMob.html

@@ -0,0 +1,1171 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : cartListFormMob
+ * @desc	: 장바구니
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.07   xodud1202   최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<form id="cartListForm" method="post" action="/order/noMember">
+		<div class="inner shotDelvSelect">
+			<div class="od_method">
+				<div class="tbl_tit">
+					<h3>배송방법 선택</h3>
+				</div>
+				<div class="tbl tbl_radio">
+					<table>
+						<colgroup>
+							<col width="*">
+						</colgroup>
+						<tbody>
+						<tr>
+							<th class="sr-only">총알배송</th>
+							<td>
+								<div class="form_field">
+									<input type="radio" id="chk-1" name="shotDelvUseYn" value="Y" th:checked="${order.shotDelvUseYn != null and order.shotDelvUseYn.equals('Y')}">
+									<label for="chk-1">
+										<span th:text="|${order.shotDelvDt}일 24:00 까지 도착|"></span>
+										<span class="icon_tag">
+											<em class="tag_stype2">총알배송</em>
+										</span>
+									</label>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th class="sr-only">총알배송 안함</th>
+							<td>
+								<div class="form_field">
+									<input id="chk-2" type="radio" name="shotDelvUseYn" value="N" th:checked="${order.shotDelvUseYn == null or !order.shotDelvUseYn.equals('Y')}">
+									<label for="chk-2">
+										<span>총알배송 안함</span>
+									</label>
+								</div>
+							</td>
+						</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="sec_select">
+				<div class="form_field">
+					<input id="od_item_all" type="checkbox" checked="checked"><label for="od_item_all"><span>전체선택</span></label>
+				</div>
+				<button type="button" class="btn btn_default btn_sm" onclick="deleteCart('SELECT', 'cart')"><span>선택삭제</span></button>
+			</div>
+		</div>
+		<div class="inner" th:if="${order.shotCartList.size() > 0 or order.wmsCartList.size() > 0}">
+			<!-- STYLE24 배송 -->
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">STYLE24 배송</div>
+				</div>
+				<!-- 총알 배송 -->
+				<div class="goods_area goods_bullship shotList" th:if="${order.shotCartList != null and order.shotCartList.size() > 0}">
+					<h3>총알배송 <span>오늘 자정까지 도착</span></h3>
+					<div class="goods_section cartInfo shotCartInfo" th:each="cart, status : ${order.shotCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}" />
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default btn_option_pop01" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div> <!-- 옵션변경_팝업01 호출 -->
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div> <!-- 210406_ID 추가 -->
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+					</div>
+				</div>
+				<!-- 총알 배송 -->
+				<!-- 일반 배송 -->
+				<div class="goods_area goods_basic wmsList" th:if="${order.wmsCartList != null and order.wmsCartList.size() > 0}">
+					<h3>일반배송</h3>
+					<div class="goods_section wmsCartInfo cartInfo" th:each="cart, status : ${order.wmsCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete" th:onclick="|deleteCart(${cart.cartSq}, 'cart')|"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}">
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default btn_option_pop01" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div> <!-- 옵션변경_팝업01 호출 -->
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div> <!-- 210406_ID 추가 -->
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+					</div>
+				</div>
+				<!-- 일반 배송 -->
+
+				<!-- 자사 배송비 -->
+				<div class="goods_txt selfGoodsDelv" th:classappend="|delv_${order.cartDelvFeeCd}|">
+					<span class="dlvr_fee" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
+					<span class="dlvr_fee" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
+					<span>STYLE24  배송</span>
+				</div>
+
+				<div class="goods_dlvr_save" th:if="${order.wmsDelvFee > 0}">
+					<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+				</div>
+			</div>
+			<!-- //STYLE24 배송 -->
+		</div>
+
+		<div class="inner" th:if="${order.delvCartList != null and order.delvCartList.size() > 0}">
+			<!-- 업체직배송 -->
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">업체직 배송</div>
+				</div>
+				<!-- 업체직배송 -->
+				<div class="goods_area">
+					<div class="goods_section delvCartInfo cartInfo" th:each="cart, status : ${order.delvCartList}">
+						<input type="hidden" name="applyQtySectionYn" th:value="${cart.applyQtySectionYn}" />
+						<input type="hidden" name="applyAmtSectionYn" th:value="${cart.applyAmtSectionYn}" />
+						<input type="hidden" name="qtyTmtbSq" th:value="${cart.qtyTmtbSq}" />
+						<input type="hidden" name="qtyTmtbNm" th:value="${cart.qtyTmtbNm}" />
+						<input type="hidden" name="amtTmtbSq" th:value="${cart.amtTmtbSq}" />
+						<input type="hidden" name="amtTmtbNm" th:value="${cart.amtTmtbNm}" />
+						<input type="hidden" name="currPrice" th:value="${cart.currPrice}" />
+						<input type="hidden" name="soldoutYn" th:value="${cart.soldoutYn}" />
+						<input type="hidden" name="ordCanYn" th:value="${cart.ordCanYn}" />
+						<input type="hidden" name="tmtbDcAmt" th:value="${cart.tmtbDcAmt}" />
+						<input type="hidden" name="cartSq" th:value="${cart.cartSq}" />
+
+						<button type="button" class="btn_delete"><span><em class="sr-only">상품삭제</em></span></button>
+						<div class="goods_detail">
+							<div class="form_field">
+								<input th:id="|od_item_${cart.cartSq}|" name="cartSqArr" type="checkbox" th:value="${cart.cartSq}"
+									   th:checked=   "${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty()}"
+									   th:disabled="${!(cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.getGoodsQty() >= cart.getMinOrdQty() and cart.getGoodsQty() <= cart.getMaxOrdQty())}">
+								<label th:for="|od_item_${cart.cartSq}|"><span class="sr-only">상품선택</span></label>
+							</div>
+							<div class="thumb_box">
+								<a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|">
+									<img th:src="${IMG_PATH} + '/' + ${cart.sysImgNm}" src="/" th:alt="${cart.sysImgNm}" alt="">
+								</a>
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="|${cart.brandEnm} ${cart.brandKnm}|"></span>
+									</div>
+									<div class="name"><a th:href="|javascript:fnGoToGoodsDetail('${cart.goodsCd}')|" th:text="${cart.goodsNm}"></a></div>
+								</div>
+								<div class="od_opt">
+									<th:block th:each="opt, index : ${cart.itemNmArr}">
+										<th:block th:if="${cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.itemNmArr[index.index]}"></em><em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+										<th:block th:if="${!cart.goodsType.equals('G056_S')}">
+											<div class="option">
+												<em th:text="${cart.colorNmArr[index.index]}"></em><em th:text="${cart.optCd2Arr[index.index]}"></em>
+											</div>
+										</th:block>
+									</th:block>
+								</div>
+								<div class="od_point">
+									<p class="point"><span th:text="${#numbers.formatInteger(cart.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+								</div>
+								<div class="od_exinfo">
+									<span th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<span th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="btn_moresale order_badge order_bullet_badge">다다익선 할인 적용</span>
+									<a th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+									<a th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" href="javascript:;" id="btn_moresale_pop" class="btn_moresale btn_moresale_pop order_badge order_bullet_badge">다다익선 할인 대상</a>
+								</div>
+							</div>
+						</div>
+						<div class="od_calc">
+							<p class="count">수량 <em th:text="${cart.goodsQty}"></em>개</p>
+							<p class="price">
+								<th:block  th:if="${cart.tmtbDcAmt < cart.currPrice}">
+									<span class="sale_price"><del><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</del></span>
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.tmtbDcAmt, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+								<th:block th:if="${cart.tmtbDcAmt == cart.currPrice}">
+									<span class="selling_price"><em th:text="${#numbers.formatInteger(cart.currPrice, 1, 'COMMA')}"></em>원</span>
+								</th:block>
+							</p>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex">
+							<div><button type="button" class="btn btn_default" th:onclick="|fnChangeCartOptCd(${cart.cartSq})|" th:disabled="${cart.ordCanYn.equals('N')}"><span>옵션/수량변경</span></button></div>
+							<div>
+								<button th:if="${cart.soldoutYn.equals('Y') or cart.ordCanYn.equals('N')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line" disabled=""><span>구매 불가</span></button>
+								<button th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y')}" type="button" id="btn_quick_purchase" class="btn btn_primary_line"><span>바로주문</span></button>
+							</div>
+						</div>
+
+						<div class="goods_txt reserv" th:if="${!#strings.isEmpty(cart.delvResDt)}">
+							<span>예약배송 상품</span><span th:text="|${cart.delvResDt} 배송예정|"></span> 배송예정
+						</div>
+
+						<div class="goods_txt" th:if="${cart.ordCanYn.equals('N')}">
+							<span>해당 상품은 구매 불가능한 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">
+							<span>품절된 상품입니다.</span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}">
+							<span th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></span>
+						</div>
+						<div class="goods_txt" th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}">
+							<span th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></span>
+						</div>
+
+						<!-- 입점업체 배송비 -->
+						<div class="goods_txt" th:if="${'Y'.equals(cart.addDelvFeeYn)}" th:classappend="|delv_${cart.delvFeeCd}|">
+							<span class="dlvr_fee" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
+							<span class="dlvr_fee" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
+							<span th:text="|${cart.supplyCompNm} 업체직배송|"></span>
+						</div>
+
+						<div class="goods_dlvr_save" th:if="${'Y'.equals(cart.addDelvFeeYn) and cart.delvFee > 0}">
+							<a href="javascript:;" id="btn_dlvrSave_pop" class="btn_popup_save">배송비 SAVE 상품 보기</a>
+						</div>
+					</div>
+				</div>
+				<!-- 업체직배송 -->
+			</div>
+			<!-- //업체직배송 -->
+		</div>
+		<div class="inner">
+			<div class="area_order">
+				<div class="tit_box">
+					<h3>결제 정보</h3>
+					<span>
+						<em class="number" th:text="${order.totCartCnt}"></em>개의 상품
+					</span>
+				</div>
+				<div class="od_amount_box">
+					<dl>
+						<div>
+							<dt>상품금액</dt>
+							<dd><em class="sumListPrice" th:text="${#numbers.formatInteger(order.sumListPrice, 1, 'COMMA')}"></em>원</dd>
+						</div>
+						<div>
+							<dt>배송비</dt>
+							<dd><em class="totDelvFee" th:text="${#numbers.formatInteger(order.totDelvFee, 1, 'COMMA')}"></em>원</dd>
+						</div>
+						<div>
+							<dt>할인금액</dt>
+							<dd><span class="disc_amount"><em class="totDcAmt" id="totDcAmt" th:text="${#numbers.formatInteger(order.totDcAmt, 1, 'COMMA')}"></em>원</span></dd>
+						</div>
+					</dl>
+				</div>
+				<div class="totalprice_box">
+					<dl>
+						<dt>총 결제 예정 금액</dt>
+						<dd><span class="sumRealPayAmt" id="sumRealPayAmt" th:text="${#numbers.formatInteger(order.sumRealPayAmt + order.totDelvFee, 1, 'COMMA')}"></span>원</dd>
+					</dl>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="area_salecoupon">
+				<h4>할인코드 입력</h4>
+				<div class="form_field">
+					<div class="input_wrap form_full">
+						<label class="input_label sr-only">할인코드입력</label>
+						<input type="text" id="serialCpnNm" class="form_control" placeholder="할인코드를 입력해주세요.">
+					</div>
+					<button type="button" id="btn_salecode" class="btn btn_dark btn_sm" onclick="serialCpnApply()"><span>적용</span></button> <!-- 210406_ID 추가 -->
+				</div>
+				<div class="coupon_box">
+					<div class="coupon">
+						<button type="button" class="btn_delete"><span><em class="sr-only">쿠폰닫기</em></span></button>
+						<div>
+							<p class="cp_name"></p>
+							<p class="cp_cont">
+								<span class="cp_dc_val"></span>
+							</p>
+							<p class="cp_condition"></p>
+						</div>
+						<p class="cp_date">
+							<span class="availStdt"></span>&nbsp;~&nbsp;<span class="availEddt"></span>
+						</p>
+					</div>
+					<button type="button" class="btn_underline" id="btn_couponInfo_pop">
+						<span>사용안내</span>
+					</button>
+				</div>
+			</div>
+		</div>
+
+
+
+		<div class="inner wide">
+			<div class="od_recommend">
+				<h3>추천상품</h3>
+				<div class="swiper-container item_list">
+					<div class="swiper-wrapper">
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+						<div class="swiper-slide">
+							<div class="item_prod"> <!-- item_prod ranker d_detail -->
+								<div class="item_state"> <!-- item_state AD soldout -->
+									<button type="button" class="itemLike">관심상품 추가</button>
+									<a href="#none" class="itemLink">
+										<div class="itemPic">
+											<img class="vLHTC pd_img" src="/images/mo/thumb/br_main03.png" alt="">
+										</div>
+										<p class="itemBrand">BRAND NAME</p>
+										<div class="itemName">남성 헤링본 기모 팬츠 헤링본 기모 팬츠</div>
+										<p class="itemPrice">
+											<span class="itemPrice_original">89,000</span>
+											80,100
+											<span class="itemPercent">10%</span>
+										</p>
+										<div class="itemcolorchip">
+											<span class="chip_color35" value="ABM">BEIGE</span>
+											<span class="chip_color54" value="BDS">BLACK</span>
+											<span class="chip_color40" value="YBR">WHITE</span>
+										</div>
+										<p class="itemBadge">
+											<span class="badge13">베스트 </span>
+										</p>
+										<div class="itemComment">#주문 폭주 상품</div>
+									</a>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="od_calc_wrap" id="bottomOrderArea">
+				<button type="button" class="btn btn_dark"><span>합계 <em class="realOrderAmtText" th:text="${#numbers.formatInteger(order.sumRealPayAmt + order.totDelvFee, 1, 'COMMA')}">0</em>원</span></button>
+				<button type="button" id="btn_purchase" class="btn btn_primary"><span>구매하기 (<em class="realOrderQtyText" th:text="${order.totCartCnt}"></em>개)</span></button> <!-- 210406_ID 추가 -->
+			</div>
+		</div>
+	</form>
+
+	<!-- 쿠폰사용안내 팝업 -->
+	<div class="modal fade couponInfo_pop cartCpnInfoModal" id="couponInfoPop" tabindex="-1" role="dialog" aria-labelledby="couponInfoLabel" aria-hidden="true">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+				<div class="modal-header">
+					<h5 class="modal-title" id="couponInfoLabel"></h5>
+				</div>
+				<div class="modal-body">
+					<div class="pop_cont">
+						<dl>
+							<div>
+								<dt>사용조건</dt>
+								<dd class="cpnCondition"></dd>
+							</div>
+							<div class="cartCpnPubLimitQty">
+								<dt>발급수량</dt>
+								<dd class="custPubLimitQtyTxt"></dd>
+							</div>
+							<div>
+								<dt>유효기간</dt>
+								<dd class="availDt"></dd>
+							</div>
+							<div>
+								<dt>대상조건</dt>
+								<dd class="refVal"></dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+			</div>
+		</div>
+		<a href="#close-modal" rel="modal:close" id="couponInfoPop_close" class="close-modal">Close</a>
+	</div>
+	<!-- //쿠폰사용안내 팝업 -->
+
+	<script th:inline="javascript">
+		let sumRealPayAmt = [[${order.sumRealPayAmt + order.totDelvFee}]];
+		let totDcAmt = [[${order.totDcAmt}]];
+		let loginInfo = [[${loginInfo}]];
+		let orderFlag = true;
+
+		$(document).ready(function() {
+			if([[${!order.shotCanYn.equals('Y')}]]) {
+				//$(".shotDelvSelect").hide();
+			}
+
+			$("#cartListForm .area_salecoupon .coupon_box").hide();
+
+			if(!loginInfo || loginInfo.custNo == null || loginInfo.custNo == 0) {
+				$("#cartListForm .area_salecoupon").parent().hide();
+			}
+		});
+
+		function cancelCartCpn() {
+			$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+			$("#cartListForm #totDcAmt").text(Number(totDcAmt).toLocaleString());
+			$("#cartListForm .area_salecoupon .coupon_box").hide();
+
+			$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt).toLocaleString());
+		}
+
+		function serialCpnApply() {
+			let cartArr = [];
+			let currPrices = [];
+			$("#cartListForm input[name=cartSqArr]:checked").each(function(index, item) {
+				cartArr.push($(this).val());
+				currPrices.push($(this).parents(".cartInfo").find("input[name=tmtbDcAmt]").val());
+			});
+
+			let data = {
+				rdCpnNm : $("#cartListForm #serialCpnNm").val(),
+				cartSqArr : cartArr,
+				currPrices : currPrices
+			}
+
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/list/serialCpnApply',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					if(result.serialCpnInfo.result == "SUCCESS") {
+						let cpnInfo = result.serialCpnInfo;
+						$("#cartListForm .area_salecoupon .coupon_box").show();
+
+						// 합계 금액
+						$("#cartListForm #sumRealPayAmt").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
+						$("#cartListForm #totDcAmt").text(Number(totDcAmt - cpnInfo.dcAmt).toLocaleString());
+						$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt - cpnInfo.dcAmt).toLocaleString());
+
+						// 쿠폰 정보
+						$("#cartListForm .area_salecoupon .cp_name").text(cpnInfo.cpnNm);
+						$("#cartListForm .area_salecoupon .cp_condition").html(cpnInfo.cpnDesc + "<span><em class='tag'>1장 보유</em></span>");
+						$("#cartListForm .area_salecoupon .availStdt").text(cpnInfo.availStdt);
+						$("#cartListForm .area_salecoupon .availEddt").text(cpnInfo.availEddt);
+						if (cpnInfo.dcWay == "G240_10") {
+							$("#cartListForm .area_salecoupon .cp_dc_val").html("<em>" + Number(cpnInfo.dcVal).toLocaleString() + "</em> 원");
+						} else if (cpnInfo.dcWay == "G240_11") {
+							$("#cartListForm .area_salecoupon .cp_dc_val").html("<em>" + cpnInfo.dcVal + "%</em>");
+						}
+
+						let conditionComment = "", refValComment = "";
+
+						if(cpnInfo.buyLimitAmt > 0) { conditionComment += "<span>" + Number(cpnInfo.buyLimitAmt).toLocaleString() + "</span>원 이상 구매 시 "; }
+						if(cpnInfo.maxDcAmt > 0) { conditionComment += "최대 <span>" +  Number(cpnInfo.maxDcAmt).toLocaleString() + "</span>원 할인"; }
+
+						if("A" == cpnInfo.applyScope) {
+							refValComment += "전체<br/>";
+						} else {
+							if(cpnInfo.refCateCnt > 0) {
+								refValComment += cpnInfo.refCateNm + " 카테고리";
+								if(cpnInfo.refCateCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refSupplyCompCnt > 0) {
+								refValComment += cpnInfo.refSupplyCompNm + " 업체";
+								if(cpnInfo.refSupplyCompCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refBrandCnt > 0) {
+								refValComment += cpnInfo.refBrandNm;
+								refValComment += " 브랜드";
+								if(cpnInfo.refBrandCnt > 2) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+							if(cpnInfo.refGoodsCnt > 0) {
+								refValComment += cpnInfo.refGoodsNm + " 상품";
+								if(cpnInfo.refGoodsCnt > 1) { refValComment += " 外"; }
+								refValComment += "<br/>";
+							}
+						}
+						refValComment += "일부상품, 특가상품 제외";
+
+						$(".cartCpnInfoModal .modal-header").html('<h5 class="modal-title" id="couponInfoLabel">' + cpnInfo.cpnNm + '</h5>');
+
+						if(conditionComment != "") { $(".cartCpnInfoModal .cpnCondition").html(conditionComment); }
+						else { $(".cartCpnInfoModal .cartCpnCondition").hide(); }
+
+						if(cpnInfo.custPubLimitQty > 0) { $(".cartCpnInfoModal .custPubLimitQtyTxt").html("1인 최대 <span>" + Number(cpnInfo.custPubLimitQty).toLocaleString() + "</span>매"); }
+						else { $(".cartCpnInfoModal .cartCpnPubLimitQty").hide(); }
+
+						$(".cartCpnInfoModal .availDt").html('<span>' + cpnInfo.availStdtTime + "</span> ~ <span>" + cpnInfo.availEddtTime + "</span>");
+						$(".cartCpnInfoModal .refVal").html(refValComment);
+					} else {
+						mcxDialog.alert(result.serialCpnInfo.result);
+					}
+				}
+			});
+		}
+
+		$("input[name=cartSqArr]").on("change", function(e) {
+			changeCartSqArr();
+		});
+
+		function changeCartSqArr() {
+			let cartArr = [];
+
+			// 선택된 장바구니 번호
+			$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+				cartArr.push($(this).val());
+			});
+
+			// 선택된 장바구니 정보 가공
+			let data = {	cartSqArr : cartArr }
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/change/goods/list',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					fnChangeCartListInfo(result);
+				}
+			});
+		}
+
+		function fnChangeCartListInfo(order) {
+			let shotList = order.shotCartList;
+			let wmsList = order.wmsCartList;
+			let delvList = order.delvCartList;
+			let cartList = new Array();
+
+			// 다다익선 정보 숨김
+			$("#cartListForm .applyTmtb").hide();
+			$("#cartListForm .notApplyTmtb").hide();
+
+			// 장바구니 각 상품 가격 정보 할인 전으로 변경
+			$("#cartListForm .cartInfo input[name=cartSq]").each(function() {
+				if($(this).parent().find(".calc_box .price_org").text() != "") {
+					$(this).parent().find(".calc_box .price_sale").text($(this).parent().find(".calc_box .price_org").text());
+					$(this).parent().find(".calc_box .price_org").remove();
+				}
+			});
+
+			$("#cartListForm").find(".delvFeeArea").html("<div class='info_dlvr'><span class='dlvr_fee'>배송비 무료</span></div>");
+			for(let i = 0 ; i < shotList.length ; i++) {
+				cartList.push(shotList[i]);
+				$("#cartListForm .shotCartInfo input[name=cartSq]").each(function() {
+					if(shotList[i].cartSq == $(this).val()) {
+						let shot = shotList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(shot.qtyTmtbSq > 0 && shot.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(shot.amtTmtbSq > 0 && shot.applyAmtSectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+
+						// 다다익선 할인가 적용
+						if(shot.tmtbDcAmt < shot.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(shot.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(shot.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(shot.tmtbDcAmt);
+						}
+					}
+				});
+			}
+
+			for(let i = 0 ; i < wmsList.length ; i++) {
+				cartList.push(wmsList[i]);
+				$("#cartListForm .wmsCartInfo input[name=cartSq]").each(function() {
+					if(wmsList[i].cartSq == $(this).val()) {
+						let wms = wmsList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(wms.qtyTmtbSq > 0 && wms.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(wms.amtTmtbSq > 0 && wms.applyAmtSectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+
+						// 다다익선 할인가 적용
+						if(wms.tmtbDcAmt < wms.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(wms.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(wms.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(wms.tmtbDcAmt);
+						}
+					}
+				});
+			}
+
+			// 자사 상품 배송비
+			if(order.wmsDelvFee == 0) {
+				$(".selfGoodsDelv").html("<span class='dlvr_fee'>배송비 무료</span>");
+			} else {
+				let html = "<span class='dlvr_fee'>배송비 <em>" + Number(order.wmsDelvFee).toLocaleString() + "</em> 원</span><a href='#' class='btn_popup_save'>배송비 SAVE 상품 보기</a>";
+				$(".selfGoodsDelv").html(html);
+			}
+
+			for(let i = 0 ; i < delvList.length ; i++) {
+				cartList.push(delvList[i]);
+				$("#cartListForm .delvList .delvCartInfo input[name=cartSq]").each(function() {
+					if(delvList[i].cartSq == $(this).val()) {
+						let delv = delvList[i];
+						$(this).parent().find(".od_moresale .applyTmtbNm > ul").html("");
+						$(this).parent().find(".od_moresale .notApplyTmtbNm > ul").html("");
+
+						// 다다익선 적용 정보 생성성
+						if(delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "Y") {
+							$(this).parent().find(".applyTmtb").show();
+						}
+						if(delv.qtyTmtbSq > 0 && delv.applyQtySectionYn == "N") {
+							$(this).parent().find(".notApplyTmtb").show();
+						}
+						if(delv.amtTmtbSq > 0 && delv.applyAmtSectionYn == "N") {
+						}
+
+						// 다다익선 할인가 적용
+						if(delv.tmtbDcAmt < delv.currPrice) {
+							$(this).parent().find(".calc_box .price_sale").text(Number(delv.tmtbDcAmt).toLocaleString() + " 원");
+							$(this).parent().find(".calc_box").prepend("<p><span class='price_org'><em>" + Number(delv.currPrice).toLocaleString() + "</em>원</span></p>");
+							$(this).parent().find("input[name=tmtbDcAmt]").val(delv.tmtbDcAmt);
+						}
+
+						if(delv.delvFee == 0) {
+							$(".delvList").find(".delv_" + delv.delvFeeCd).html("<span class='dlvr_fee'>배송비 무료</span><span class='dlvr_fee'><em>" + delv.supplyCompNm + "</em> 업체직배송</span>");
+						} else {
+							let html = "<div className='order_delivery'><span class='dlvr_fee'>배송비 <em>" + Number(delv.delvFee).toLocaleString() + "</em>원</span><span class='dlvr_shop'><em>" + delv.supplyCompNm + "</em> 업체직배송</span><a href='#' className='btn_popup_save'>배송비 SAVE 상품 보기</a></div>";
+							$(".delvList").find(".delv_" + delv.delvFeeCd).html(html);
+						}
+					}
+				});
+			}
+
+			// 결제 총액 영역 수정
+			$("#cartListForm .checkSelectCartListCnt").text(Number(order.totCartCnt).toLocaleString());
+			$("#cartListForm .sumListPrice").text(Number(order.sumListPrice).toLocaleString());
+			$("#cartListForm .totDelvFee").text(Number(order.totDelvFee).toLocaleString());
+			sumRealPayAmt = order.sumRealPayAmt + order.totDelvFee;
+			totDcAmt = order.totDcAmt;
+
+			// 하단 구매하기 버튼 수량 및 금액 변경
+			$("#bottomOrderArea .realOrderQtyText").text(Number(order.totCartCnt).toLocaleString());
+			$("#bottomOrderArea .realOrderAmtText").text(Number(sumRealPayAmt).toLocaleString());
+
+			// 할인코드 쿠폰 금액 재확인
+			if($("#cartListForm #serialCpnNm").val()) {
+				serialCpnApply();
+			} else {
+				$("#cartListForm .totDcAmt").text(Number(totDcAmt).toLocaleString());
+				$("#cartListForm .sumRealPayAmt").text(Number(sumRealPayAmt).toLocaleString());
+				cancelCartCpn();
+			}
+		}
+
+		function fnOrderValidation(list, listIndex, cartSqArr, allYn) {
+			// listIndex가 -1이면 (마지막이 지난후)
+			if(listIndex ==  - 1) {
+				if(allYn == "Y" && orderFlag) {
+					$("#cartListForm").submit();
+				} else {
+					if(orderFlag) {
+						let html	 = "<input type='hidden' name='cartSqArr' value='" + cartSqArr + "' />";
+						html		+= "<input type='hidden' name='shotDelvUseYn' value='" + $("input[name=shotDelvUseYn]:checked").val() + "' />";
+						$("#cartInfoForm").html(html);
+						$("#cartInfoForm").submit();
+					}
+				}
+			}
+
+			let info = list[listIndex];
+			let removeCartSq = 0, updateCartSq = 0, goodsQty = 0;
+			listIndex++;
+
+			// list[listIndex]가 null이 아니라면
+			if(info != null) {
+				if (info.ordCanYn == "N") {		// 주문 불가
+					let message = info.goodsNm + " 상품은 구매 할 수 없습니다. 제외하고 계속 주문하시겠습니까?";
+					fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn);
+				} else if (info.soldoutYn == "Y") {		// 품절
+					if (info.goodsStat == "G008_70" || info.ordCanQty < info.minOrdQty) {		// 상품 상태가 품절이거나 주문 가능 수량이 최소주문수량보다 적을경우
+						let message = info.goodsNm + " 상품은 품절입니다. 제외하고 계속 주문하시겠습니까?";
+						fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn)
+					} else if (info.goodsQty < info.ordCanQty) {		// 주문 가능 수량이 0일경우
+						let message = info.goodsNm + "의 " + info.colorNm + " 옵션이 품절되었습니다. 제외하고 계속 주문하시겠습니까?";
+						fnRemoveCartSqConfirm(message, cartSqArr, info.cartSq, list, listIndex, allYn)
+					} else if (listIndex < list.length) {
+						// 혹시 else일 경우
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				} else if (info.ordCanQty < info.goodsQty) {		// 최소 주문 수량보다 장바구니에 적게 들어왔을 경우
+					let message;
+					if ("G056_S" == info.goodsType) {
+						message = info.goodsNm + " 의" + info.itemNm + "/" + info.colorNm + "/" + info.optCd2 + "의 수량이 부족합니다.\n구매가능 수량은 " + info.ordCanQty + "개입니다.\n구매가능 수량만큼 주문하시겠습니까?";
+					} else {
+						message = info.goodsNm + " 의" + info.colorNm + "/" + info.optCd2 + "의 수량이 부족합니다.\n구매가능 수량은 " + info.ordCanQty + "개입니다.\n구매가능 수량만큼 주문하시겠습니까?";
+					}
+
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (info.goodsQty < info.minOrdQty) {
+					let message = info.goodsNm + " 의 최소 구매수량은 " + info.minOrdQty + "개입니다.\n최소 구매 수량으로 주문하시겠습니까?";
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (info.goodsQty > info.maxOrdQty) {
+					let message = info.goodsNm + " 의 최대 구매 사능 수량은 " + info.maxOrdQty + "개입니다. 최대 구매 가능한 수량으로 주문하시겠습니까?";
+					fnUpdateConfirmChangeQty(message, info.cartSq, info.minOrdQty, list, listIndex, cartSqArr, allYn);
+				} else if (listIndex < list.length) {
+					fnOrderValidation(list, listIndex, cartSqArr, allYn);
+				} else {
+					fnOrderValidation(list, -1, cartSqArr, allYn);
+				}
+			} else {
+				fnOrderValidation(list, -1, cartSqArr, allYn);
+			}
+		}
+
+		function fnUpdateConfirmChangeQty(message, cartSq, goodsQty, list, listIndex, cartSqArr, allYn) {
+			mcxDialog.confirmC(message, { //내용
+				btn     : ["취소", "확인"],
+				btnClick: function (index) {
+					if (index == 1) { //button1 일때 처리문
+						orderFlag = false; return false;
+					} else {	//button2 일때 처리문
+						updateGoodsQty(cartSq, goodsQty);
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				}
+			});
+		}
+
+		function fnRemoveCartSqConfirm(message, cartSqArr, cartSq, list, listIndex, allYn) {
+			mcxDialog.confirmC(message, { //내용
+				btn     : ["취소", "확인"],
+				btnClick: function (index) {
+					if (index == 1) { //button1 일때 처리문
+						orderFlag = false; return false;
+					} else {	//button2 일때 처리문
+						fnCheckOffCartSqArr(cartSqArr, info.cartSq);
+						fnOrderValidation(list, listIndex, cartSqArr, allYn);
+					}
+				}
+			});
+		}
+
+		function fnCheckOffCartSqArr(cartSqArr, cartSq) {
+			// 체크박스 해제
+			$("#cartListForm input[name=cartSqArr]").each(function () {
+				if ($(this).val() == cartSq) {
+					$(this).prop("checked", false);
+				}
+			});
+
+			// 장바구니 선택된것 삭제 > cartSq 0으로 변경
+			for (let i = 0; i < cartSqArr.length; i++) {
+				if (cartSqArr[i] == cartSq) {
+					cartSqArr[i] = 0;
+				}
+			}
+		}
+
+		// 주문하기
+		function fnSubmitNoMember(cartSq) {
+			let cartSqArr = [];
+			orderFlag = true;
+
+			if($("#cartListForm input[name=cartSqArr]:checked").length < 1) {
+				mcxDialog.alert("구매하실 상품을 선택해주세요.");
+				return false;
+			}
+
+			if(loginInfo == null || loginInfo.custNo == null || loginInfo.custNo == 0) {
+				var btn = ["비회원 구매", "로그인 후 구매"];
+				mcxDialog.confirmC("로그인 후 구매 시 다양한 혜택을 받으실 수 있습니다.", { //내용
+					btn: btn,
+					btnClick: function(index){
+						if (index == 1){ //button1 일때 처리문
+							if(cartSq == "all") {
+								// 선택된 장바구니 번호
+								$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+									cartSqArr.push($(this).val());
+								});
+
+								fnOrderCheck(cartSqArr, 0, "Y");
+							} else {
+								fnOrderCheck(cartSq, 0, "N");
+							}
+						} else {	//button2 일때 처리문
+							location.href="/signin";
+						}
+					}
+				});
+			} else {
+				if(cartSq == "all") {
+					// 선택된 장바구니 번호
+					$("#cartListForm input[name=cartSqArr]:checked").each(function () {
+						cartSqArr.push($(this).val());
+					});
+
+					fnOrderCheck(cartSqArr, loginInfo.custNo, "Y");
+				} else {
+					fnOrderCheck(cartSq, loginInfo.custNo, "N");
+				}
+			}
+		}
+
+		// 주문 데이터 밸리데이션 체크
+		function fnOrderCheck(cartSq, custNo, allYn) {
+			// 선택된 장바구니 정보 가공
+			let data = {	  cartSqArr : cartSq
+				, custNo : custNo
+			}
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type: "POST",
+				url : '/cart/order/list/check',
+				contentType: 'application/json',
+				dataType : 'json',
+				data : jsonData,
+				success : function(result) {
+					if(result == null || result.length == 0) {
+						mcxDialog.alert("주문 가능한 상품이 존재하지 않습니다. 새로고침 후 다시 시도해주세요.");
+					} else {
+						fnOrderValidation(result, 0, cartSq, allYn);
+					}
+				}
+			});
+		}
+
+		// 장바구니 구매 수량 변경
+		function updateGoodsQty(cartSq, goodsQty) {
+			let url = '/cart/update/goodsQty';
+			// 선택된 장바구니 정보 가공
+			let data = {	  cartSq : cartSq
+				, goodsQty : goodsQty
+			}
+			let jsonData = JSON.stringify(data);
+
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				//alert(result.changeQty);
+			});
+		}
+
+		// 페이지 이동
+		function fnGoToGoodsDetail(goodsCd) {
+			cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+		}
+
+		// 전체선택 버튼
+		$("#od_item_all").on("change", function() {
+			if($("#od_item_all").is(":checked")) {
+				$("input[name=cartSqArr]").prop("checked", true);
+				changeCartSqArr();
+			} else {
+				$("input[name=cartSqArr]").prop("checked", false);
+				// 하단 합계금액, 구매하기 수량 변경
+				$("#cartListForm .realOrderAmtText").text("0");
+				$("#cartListForm .realOrderQtyText").text("0");
+				$("#cartListForm .area_order .number").text("0");
+				$("#cartListForm .od_amount_box .sumListPrice").text("0");
+				$("#cartListForm .od_amount_box .totDelvFee").text("0");
+				$("#cartListForm .od_amount_box .totDcAmt").text("0");
+				$("#cartListForm .totalprice_box .sumRealPayAmt").text("0");
+			}
+		});
+	</script>
+</th:block>
+</body>
+</html>

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

@@ -18,13 +18,80 @@
  -->
 <body>
 <th:block layout:fragment="content">
+	<main role="" id="" class="container od">
+		<section class="content shopping_bag" id="cartAjaxList">
+			<!-- 장바구니 내용 -->
+		</section>
 
+		<!-- 옵션변경_팝업01 -->
+		<div id="optModifyPop01" class="popup_box optModifyPop optModifyPop01">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>옵션변경</h2>
+				</div>
+				<div class="popup_con"></div>
+			</div>
+		</div>
+		<!-- //옵션변경_팝업01 -->
+		<!-- 옵션변경_팝업02 -->
+		<div id="optModifyPop02" class="popup_box optModifyPop optModifyPop02">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>옵션변경</h2>
+				</div>
+				<div class="popup_con"></div>
+			</div>
+		</div>
+		<!-- //옵션변경_팝업02 -->
+		<!-- 다다익선 할인 대상_팝업 -->
+		<div id="moresalePop" class="popup_box moresalePop">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>다다익선 할인 상품</h2>
+					<div class="area_benefit">
+						<span class="tag primary">SALE</span>
+						<p>
+							<span>10만원 이상 구매 시 1만원 할인</span>
+							<span>5개 이상 구매 시 1만원 할인</span>
+						</p>
+					</div>
+				</div>
+				<div class="popup_con">
+
+				</div>
+			</div>
+		</div>
+		<!-- //다다익선 할인 대상_팝업 -->
+
+		<!-- 배송비 SAVE_팝업 -->
+		<div id="dlvrSavePop" class="popup_box dlvrSavePop">
+			<div class="lap">
+				<div class="popup_close">카테고리닫기</div>
+				<div class="popup_head">
+					<h2>배송비 SAVE 상품</h2>
+				</div>
+				<div class="popup_con">
+
+				</div>
+			</div>
+		</div>
+		<!-- //배송비 SAVE_팝업 -->
+	</main>
+
+	<script src="/ux/mo/js/swiper.min.js"></script>
+	<link rel="stylesheet" type="text/css" href="/ux/mo/css/swiper.min.css" />
 
 <script th:inline="javascript">
 	$(document).ready(function(){
 		// 1. 타이틀설정
 		$("#htopTitle").text("쇼핑백");
 
+		// 장바구니 상품 정보 select
+		getCartList();
+
 		//추천상품_슬라이드
 		var od_recommend_slide = new Swiper('.od_recommend .swiper-container', {
 			slidesPerView: 2,
@@ -79,8 +146,23 @@
 		$("#couponInfoPop_close").click(function() {
 			$("#couponInfoPop").modal("hide");
 		});
+	});
 
-	})
+	function getCartList(parameter) {
+		// 장바구니 정보 조회
+		$.ajax( {
+			type: "POST",
+			url : '/cart/goods/list',
+			data : parameter,
+			dataType : 'html',
+			success : function(result) {
+				if (result != null) {
+					$("#cartListForm").remove();
+					$("#cartAjaxList").html(result);
+				}
+			}
+		});
+	}
 </script>
 
 </th:block>

+ 27 - 21
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -143,7 +143,7 @@
 													<p th:if="${cart.qtyTmtbSq > 0 and cart.applyQtySectionYn == 'N'}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
 													<p th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'Y'}" class="applyTmtb"><span class="tag primary">SALE</span>다다익선 할인 적용</p>
 													<p th:if="${cart.amtTmtbSq > 0 and cart.applyAmtSectionYn == 'N'}" class="notApplyTmtb"><a href="" class="btn_moresale"><span class="tag primary">SALE</span>다다익선 상품보기</a></p>
-													<p th:if="${(cart.goodsQty < cart.ordCanQty or cart.soldoutYn.equals('Y')) and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
+													<p th:if="${cart.soldoutYn.equals('Y') and cart.ordCanYn.equals('Y')}">품절된 상품입니다.</p>
 													<p th:if="${cart.ordCanYn.equals('N')}">해당 상품은 구매 불가능한 상품입니다.</p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty < cart.minOrdQty}" th:text="|해당 상품은 최소 ${cart.minOrdQty}개부터 구매 가능합니다.|"></p>
 													<p th:if="${cart.soldoutYn.equals('N') and cart.ordCanYn.equals('Y') and cart.goodsQty > cart.maxOrdQty}" th:text="|해당 상품은 최대 ${cart.maxOrdQty}개까지 구매 가능합니다.|"></p>
@@ -433,7 +433,7 @@
 			<div class="area_order">
 				<div class="tit_box">
 					<h3>결제 정보</h3>
-					<span><em class="number" th:text="${order.totCartCnt}"></em>개의 상품</span>
+					<span><em class="number checkSelectCartListCnt" th:text="${order.totCartCnt}"></em>개의 상품</span>
 				</div>
 				<div class="od_amount_box">
 					<dl>
@@ -473,9 +473,7 @@
 				<div class="coupon_box">
 					<div class="coupon">
 						<div>
-							<p class="cp_name">
-								TBJ 시즌오프 20% 할인쿠폰
-							</p>
+							<p class="cp_name"></p>
 							<p class="cp_cont">
 								<!--<span><em>12,399,900</em>원</span>
 								<span><em>40</em>%</span>-->
@@ -487,7 +485,7 @@
 							</p>
 						</div>
 						<p class="cp_date">
-							<span class="availStdt">2021.01.01</span>&nbsp;~&nbsp;<span class="availEddt">2021.12.30</span>
+							<span class="availStdt"></span>&nbsp;~&nbsp;<span class="availEddt"></span>
 						</p>
 					</div>
 					<button type="button" class="btn_underline" id="btn_cartCouponInfo_pop">
@@ -512,34 +510,26 @@
 		<div class="modal-dialog" role="document">
 			<div class="modal-content">
 				<div class="modal-header">
-					<h5 class="modal-title" id="couponInfoLabel">aa</h5>
+					<h5 class="modal-title" id="couponInfoLabel"></h5>
 				</div>
 				<div class="modal-body">
 					<div class="pop_cont">
 						<dl>
 							<div class="cartCpnCondition">
 								<dt>사용조건</dt>
-								<dd class="cpnCondition">
-									<span>9,999,999</span>원 이상 구매 시 최대 <span>9,999,999</span>원 할인
-								</dd>
+								<dd class="cpnCondition"></dd>
 							</div>
 							<div class="cartCpnPubLimitQty">
 								<dt>발급수량</dt>
-								<dd class="custPubLimitQtyTxt">
-									1인 최대<span>9,999</span>매
-								</dd>
+								<dd class="custPubLimitQtyTxt"></dd>
 							</div>
 							<div>
 								<dt>유효기간</dt>
-								<dd class="availDt">
-									<span>2020.09.21 23:59</span>&nbsp;~&nbsp;<span>2020.09.21 23:59</span>
-								</dd>
+								<dd class="availDt"></dd>
 							</div>
 							<div>
 								<dt>대상조건</dt>
-								<dd class="refVal">
-									카테고리명 / 브랜드명 / 상품명 등 (일부 품목 제외)
-								</dd>
+								<dd class="refVal"></dd>
 							</div>
 						</dl>
 					</div>
@@ -595,7 +585,7 @@
 			cfnAddCart(compsList);*/
 
 			if([[${!order.shotCanYn.equals('Y')}]]) {
-				$(".shotDelvSelect").hide();
+				//$(".shotDelvSelect").hide();
 			}
 
 			$("#cartListForm .area_salecoupon .coupon_box").hide();
@@ -853,6 +843,10 @@
 		}*/
 
 		$("input[name=cartSqArr]").on("change", function(e) {
+			changeCartSqArr();
+		});
+
+		function changeCartSqArr() {
 			let cartArr = [];
 
 			// 선택된 장바구니 번호
@@ -874,7 +868,7 @@
 					fnChangeCartListInfo(result);
 				}
 			});
-		});
+		}
 
 		function fnChangeCartListInfo(order) {
 			let shotList = order.shotCartList;
@@ -1006,6 +1000,7 @@
 			}
 
 			// 결제 총액 영역 수정
+			$("#cartListForm .checkSelectCartListCnt").text(Number(order.totCartCnt).toLocaleString());
 			$("#cartListForm .sumListPrice").text(Number(order.sumListPrice).toLocaleString());
 			$("#cartListForm .totDelvFee").text(Number(order.totDelvFee).toLocaleString());
 			sumRealPayAmt = order.sumRealPayAmt + order.totDelvFee;
@@ -1222,15 +1217,26 @@
 			});
 		}
 
+		// 페이지 이동
 		function fnGoToGoodsDetail(goodsCd) {
 			cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
 		}
 
+		// 전체선택 버튼
 		$("#od_item_all").on("change", function() {
 			if($("#od_item_all").is(":checked")) {
 				$("input[name=cartSqArr]").prop("checked", true);
+				changeCartSqArr();
 			} else {
 				$("input[name=cartSqArr]").prop("checked", false);
+				// 하단 합계금액, 구매하기 수량 변경
+				$("#cartListForm .realOrderAmtText").text("0");
+				$("#cartListForm .realOrderQtyText").text("0");
+				$("#cartListForm .area_order .number").text("0");
+				$("#cartListForm .od_amount_box .sumListPrice").text("0");
+				$("#cartListForm .od_amount_box .totDelvFee").text("0");
+				$("#cartListForm .od_amount_box .totDcAmt").text("0");
+				$("#cartListForm .totalprice_box .sumRealPayAmt").text("0");
 			}
 		});
 	</script>

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

@@ -40,7 +40,7 @@
 					</div>
 				</div>
 				<div id="cartAjaxList" class="cont_body">
-
+					<!-- 장바구니 내용 -->
 				</div>
 			</div>
 			<div class="content od_recommend">

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/BrandGnbWeb.html

@@ -46,7 +46,7 @@
 			<!-- search -->
 			<div class="search">
 				<button type="button" class="btn_open_search"><i class="ico ico_search"><em>통합검색 열기</em></i></button>
-				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
+				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count"></span></a>
 			</div>
 			<!-- //search -->
 		</div>

+ 5 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1051,11 +1051,15 @@
 	// 장바구니
 	let fnGetCartGoodsList = function() {
 		$.getJSON('/cart/quick/cart/list', function(order, status) {
+			let cartCnt;
+			if(order.totCartCnt > 99) {cartCnt = "99+";} else {cartCnt = order.totCartCnt;}
 			$("#quick_menu .shopingbag.quick_con.quick02 .quick_head a").attr("href", _PAGE_CART);
+			$("#header .gnb .btn_cart").attr("href", _PAGE_CART);
+			$("#header .gnb .btn_cart .circle_count").text(cartCnt);
 
 			if (status == 'success') {
 				let quickShoppingBagHtml = "";
-				$("#quick_menu #quick02 .count").text(order.totCartCnt);
+				$("#quick_menu #quick02 .count").text(cartCnt);
 
 				$("#quick_menu .shopingbag.quick_con.quick02 .quick_body").html("");
 				if(order.totCartCnt > 0) {

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/GnbWeb.html

@@ -158,7 +158,7 @@
 					</form>
 				</div>
 
-				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count">99+</span></a>
+				<a href="#" class="btn_ico btn_cart" title="장바구니 바로가기"><i class="ico ico_bag"></i><span class="circle_count"></span></a>
 
 			</div>
 			<!-- // search -->

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

@@ -331,7 +331,7 @@
 
 				<!-- brand_product -->
 				<th:block th:if="${contentsLoc=='013'}">
-					<div class="content brand_product">
+					<div class="content brand_product" style="display: none;">
 						<div class="cont_head">
 							<p class="displayH t_c" th:text="${contentsTitle}"></p>
 						</div>

+ 17 - 6
src/main/webapp/WEB-INF/views/web/display/CategoryGoodsListFormWeb.html

@@ -455,12 +455,7 @@
 			if(!gagajf.isNull(filterPriceList)){
 				var custom_values = [];
 				$.each(filterPriceList, function (priceIdx, priceItem){
-					custom_values[0] = priceItem.price1;
-					custom_values[1] = priceItem.price2;
-					custom_values[2] = priceItem.price3;
-					custom_values[3] = priceItem.price4;
-					custom_values[4] = priceItem.price5;
-					custom_values[5] = priceItem.price6;
+					custom_values[priceIdx] = priceItem.filterNm;
 				});
 
 				var my_from = custom_values.indexOf(custom_values[0]); //custom_values.indexOf('9,000원');
@@ -500,8 +495,24 @@
 			});
 
 			fnCreateCategoryList();
+
+			fnGoodsListSearch();
 		});
 
+		var fnGoodsListSearch = function (){
+			gagaInfiniteScroll.getHistory();
+		}
+
+		// 상품 검색
+		var fnGetInfiniteScrollDataList = function (pageNum){
+			$("#searchForm input[name=pageNo]").val(pageNum+1);
+			gagajf.ajaxFormSubmit("/display/category/goods/list", document.searchForm,  gagaInfiniteScroll.jsonToHtml);
+		}
+
+		var fnDrawInfiniteScrollData = function (result){
+			console.log('nn');
+		}
+
 		var fnCreateCategoryList = function (){
 			$.getJSON('/display/gnb/tab/list'
 					, function(result, status) {

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

@@ -36,24 +36,22 @@
 									<th:block th:each="ContentsData, ContentsStat : ${mainLayoutData.ContentsList}">
 										<div class="swiper-slide">
 											<th:block th:if="${ContentsData.imgPath1!=null && ContentsData.imgPath1!=''}">
-												<th:block th:if="${ContentsData.strVar1!=null && ContentsData.strVar1!='' }">
-													<div class="txtWrap">
-														<th:block th:if="${ContentsData.strVar5!=null && ContentsData.strVar5!=''}">
-															<p class="vrt_txt" th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></p>
-															<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}">EVENT</p>
-														</th:block>
-														<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
-															<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></dt>
-															<dt th:if="${ContentsData.strVar5!='P'}" >EVENT</dt>
-															<dd th:text="${ContentsData.strTitle1}"></dd>
-															<!--<dd>NEW ARRIVAL</dd>-->
-															<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
-														</dl>
-														<button type="button" class="btn"><span>자세히 보기</span></button>
-													</div>
-													<!--<img src="/images/pc/thumb/main_visual01.jpg" alt="">-->
-													<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
-												</th:block>
+												<div class="txtWrap">
+													<th:block th:if="${ContentsData.strVar5!=null && ContentsData.strVar5!=''}">
+														<p class="vrt_txt" th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></p>
+														<p class="vrt_txt" th:if="${ContentsData.strVar5!='P'}">EVENT</p>
+													</th:block>
+													<dl th:class="${ContentsData.strVar7=='BLACK'?'':'w'}">
+														<dt th:if="${ContentsData.strVar5=='P'}" th:text="${ContentsData.planBrandGroupNm}"></dt>
+														<dt th:if="${ContentsData.strVar5!='P'}" >EVENT</dt>
+														<dd th:text="${ContentsData.strTitle1}"></dd>
+														<!--<dd>NEW ARRIVAL</dd>-->
+														<dd class="txt_xs" th:text="${ContentsData.subText1}"></dd>
+													</dl>
+													<button type="button" class="btn"><span>자세히 보기</span></button>
+												</div>
+												<!--<img src="/images/pc/thumb/main_visual01.jpg" alt="">-->
+												<img th:src="${@environment.getProperty('domain.image')+ContentsData.imgPath1}">
 											</th:block>
 										</div>
 									</th:block>

+ 3 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -223,7 +223,7 @@
 		fnSetMypageLnbList(2);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '취소 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
 
 		// 셀렉트박스 활성화
 		$(".myOrderView .part_goods .select_custom.select_count").each(function() {
@@ -311,7 +311,7 @@
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 	
@@ -364,7 +364,7 @@
 			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
 
 			// 추가배송비 영역 설정
-			if (refundPayAmt > 0) {
+			if (refundPayAmt < 0) {
 				refundPayAmt = spanRefundAmt;
 				$('#addDeliveryFee').css('display', '');
 				$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');

+ 77 - 55
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html

@@ -287,7 +287,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
 						</div>
 					</div>
@@ -299,9 +299,8 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	var isLogin = [[${isLogin}]];
-	//let ordNo = [[${oneData.ordNo}]];
 	let oneData = [[${oneData}]];
-	let isCustomer = true;
+	let isCustomer = false;
 	let addrGb = '';
 
 	$(document).ready(function() {
@@ -309,16 +308,16 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom').each(function() {
 			new sCombo($(this));
 		});
 
-		// 입점업체의 경우 회수방식 직접배송 처리
+		// 입점업체의 경우 회수방식 방문회수 처리
 		if (oneData.selfGoodsYn != 'Y') {
-			$('#direct').click();
+			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
 	});
@@ -402,39 +401,64 @@
 
 	// 교환 처리
 	var fnExchange = function() {
-		// TODO
-		// 교환신청 처리
-
 		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();
+		
+		// 교환 사유 체크
+		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) {
-			let json = $(item).val();
-			let jsonData = JSON.parse(json);
-			$.each(jsonData, function(index, chgOpt) {
-				let cancelReq = {};
-				cancelReq.ordDtlNo = 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.includes($(item).attr('ordDtlNo')) && !gagajf.isNull($(item).val())) {
+				let json = $(item).val();
+				let jsonData = JSON.parse(json);
+				$.each(jsonData, function (index, chgOpt) {
+					let cancelReq = {};
+					cancelReq.ordDtlNo = 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();
@@ -454,11 +478,12 @@
 		data.chgerRtnMemo = $('#exchangeForm input[name=chgerRtnMemo]').val();
 		data.addPayAmt = 0;
 		data.cancelReqList = cancelReqList;
-		
+
 		let jsonData = JSON.stringify(data);
 
+		// 교환 처리
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			console.log(result);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 
@@ -505,35 +530,32 @@
 
 	// 추가 배송비 계산
 	var fnAddCost = function() {
-		// 자사상품만 처리, 입점업체는 SCM에서 별도 처리
-		if (oneData.selfGoodsYn == 'Y') {
-			let addPayCost = 0;
-			let delvFee = oneData.delvFee;
-			let rtnDelvFee = oneData.rtnDelvFee;
-
-			// 교환 수량 체크
-			let qty = 0;
-			$.each($('#exchangeForm input[name=chgQty]'), function (idx, item) {
-				qty += Number($(item).val());
-			});
-
-			// 교환 수량이 있고 고객 귀책 사유 시 추가 배송비 계산
-			if (isCustomer && qty > 0) {
-				addPayCost = delvFee;
-
-				// 회수 요청 시 반품배송비 추가
-				if ($('#exchangeForm input[name=wdGb]:radio:checked').val() == 'W') {
-					addPayCost += rtnDelvFee;
-				}
+		let addPayCost = 0;
+		let delvFee = oneData.delvFee;
+		let rtnDelvFee = oneData.rtnDelvFee;
 
-				// 추가배송비 영역 설정
-				$('#addDeliveryFee').css('display', '');
-				$('#addPayCost').text(addPayCost.addComma() + '원');
-				$('#exchangeForm input[name=addPayCost]').val(addPayCost);
-			} else {
-				$('#addDeliveryFee').css('display', 'none');
-				$('#exchangeForm input[name=addPayCost]').val(0);
+		// 교환 수량 체크
+		let qty = 0;
+		$.each($('#exchangeForm input[name=chgQty]'), function (idx, item) {
+			qty += Number($(item).val());
+		});
+
+		// 교환 수량이 있고 고객 귀책 사유 시 추가 배송비 계산
+		if (isCustomer && qty > 0) {
+			addPayCost = delvFee;
+
+			// 회수 요청 시 반품배송비 추가
+			if ($('#exchangeForm input[name=wdGb]:radio:checked').val() == 'W') {
+				addPayCost += rtnDelvFee;
 			}
+
+			// 추가배송비 영역 설정
+			$('#addDeliveryFee').css('display', '');
+			$('#addPayCost').text(addPayCost.addComma() + '원');
+			$('#exchangeForm input[name=addPayCost]').val(addPayCost);
+		} else {
+			$('#addDeliveryFee').css('display', 'none');
+			$('#exchangeForm input[name=addPayCost]').val(0);
 		}
 	}
 
@@ -558,7 +580,7 @@
 			$('#exchangeForm input[name=recipBaseAddr]').val(recipBaseAddr);
 			$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
 			$('#exchangeForm input[name=delvMemo]').val(delvMemo);
-		} else {
+		} 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>';
 

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

@@ -238,7 +238,7 @@
 					</div>
 				</section>
 				<div class="btn_wrap">
-					<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>교환 취소</span></button>
+					<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>교환 취소</span></button>
 					<button tyep="submit" class="btn btn_primary submit_btn" onclick="fnExchange()"><span id="exchangeButton">교환 신청</span></button>
 				</div>
 			</div>
@@ -251,7 +251,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 	});
 
 	// 교환 옵션 변경 팝업

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

@@ -113,10 +113,20 @@
 														<th:block th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
 														</th:block>
+
+														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+														</th:block>
 														
 														<!-- 리뷰 쓰기 버튼 -->
 														<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+														</th:block>
+
+														<!-- 쇼핑백담기 버튼(구매확정) -->
+														<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>
 														</th:block>
 													</th:block>
 													<!-- 주문 -->
@@ -164,7 +174,7 @@
 	
 														<!-- 리뷰작성 버튼(구매확정) -->
 														<th:block th:if="${(ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70') and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
 														</th:block>
 	
 														<!-- 쇼핑백담기 버튼(구매확정) -->
@@ -277,7 +287,10 @@
 									</tbody></table>
 							</div>
 						</th:block>
-						<h4 class="subH3">주문자/배송지 정보</h4>
+						<!-- 선물 -->
+						<h4 class="subH3" th:if="${oneData.giftPackYn == 'Y'}">주문자 정보</h4>
+						<!-- 주문 -->
+						<h4 class="subH3" th:unless="${oneData.giftPackYn == 'Y'}">주문자/배송지 정보</h4>
 						<div class="tbl type1">
 							<table>
 								<colgroup>
@@ -299,7 +312,30 @@
 											</div>
 										</td>
 									</tr>
-									<tr>
+									<!-- 선물 -->
+									<tr th:if="${oneData.giftPackYn == 'Y'}">
+										<th>
+											선물 받으실 분
+										</th>
+										<td>
+											<div class="single_line">
+												<ul>
+													<li><span th:text="${deliveryAddrInfo.recipNm}"></span></li>
+													<li><span th:text="${deliveryAddrInfo.recipPhnno}"></span></li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									<tr th:if="${oneData.giftPackYn == 'Y'}">
+										<th>
+											선물 메세지
+										</th>
+										<!-- TODO -->
+										<!-- 선물 메세지 처리 -->
+										<td></td>
+									</tr>
+									<!-- 주문 -->
+									<tr th:unless="${oneData.giftPackYn == 'Y'}">
 										<th>
 											배송지 정보
 										</th>
@@ -420,7 +456,8 @@
 										</dl>
 									</td>
 								</tr>
-								</tbody></table>
+								</tbody>
+							</table>
 						</div>
 						<div class="btn_footer_area">
 							<button type="button" class="btn btn_dark btn_md"><span>확인</span></button>

+ 14 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -111,7 +111,7 @@
 						</div>
 						<div class="invalid">
 							<p class="txt">취소/교환/반품</p>
-							<p class="count"><span id="orderCrsCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
+							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
 						</div>
 					</div>
 				</div>
@@ -200,10 +200,6 @@
 					<input type="hidden" name="ordNo"/>
 					<input type="hidden" name="ordDtlNo"/>
 				</form>
-				<form id="reviewForm" name="reviewForm" th:action="@{'/mypage/review/form'}" th:method="get">
-					<input type="hidden" name="ordNo"/>
-					<input type="hidden" name="ordDtlNo"/>
-				</form>
 			</div>
 			<!-- // CONT-BODY -->
 		</div>
@@ -345,7 +341,7 @@
 			$('#shipPrepareCount').text(result.orderCount.shipPrepareCount);
 			$('#shippingCount').text(result.orderCount.shippingCount);
 			$('#shipCompleteCount').text(result.orderCount.shipCompleteCount);
-			$('#orderCrsCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
+			$('#orderCreCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
 		});
 	}
 
@@ -364,7 +360,6 @@
 	var fnCreateOrderList = function(param) {
 		let tag = '';
 		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-		console.log(param);
 
 		if (param.orderList != null && param.orderList.length > 0) {
 			$.each(param.orderList, function (idx, order) {
@@ -450,9 +445,19 @@
 							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>\n';
 						}
 
+						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
+							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
+						}
+
 						// 리뷰 쓰기 버튼
 						if (!gagajf.isNull(ordDtl.recipBaseAddr) && ordDtl.ordDtlStat != 'G013_98' && ordDtl.ordDtlStat != 'G013_99' && ordDtl.reviewableYn == 'Y' && ordDtl.reviewSq == null) {
-							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+						}
+
+						// 쇼핑백담기 버튼(구매확정)
+						if (!gagajf.isNull(ordDtl.recipBaseAddr) && ordDtl.ordDtlStat != 'G013_98' && ordDtl.ordDtlStat != 'G013_99') {
+							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
 						}
 					} else {
 						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
@@ -495,7 +500,7 @@
 
 						// 리뷰작성 버튼(배송중, 배송완료, 구매확정)
 						if ((ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60' || ordDtl.ordDtlStat == 'G013_70') && ordDtl.reviewableYn == 'Y' && ordDtl.reviewSq == null) {
-							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
 						}
 
 						// 쇼핑백담기 버튼(구매확정)

+ 7 - 15
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -319,7 +319,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
 						</div>
 					</div>
@@ -355,7 +355,7 @@
 		fnSetMypageLnbList(2);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '반품 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 
 		// 반품상품 수량 셀렉트박스 활성화
 		var goods_count_selecter = new sCombo('.myOrderView .part_goods .select_custom.select_count');
@@ -365,7 +365,7 @@
 
 		// 입점업체의 경우 회수방식 직접배송 처리
 		if (oneData.selfGoodsYn != 'Y') {
-			$('#direct').click();
+			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
 	});
@@ -381,14 +381,6 @@
 			return false;
 		}
 
-		// 반송 송장번호 체크
-		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
-		let wdInvoiceNo = $('#returnForm input[name=chgReason]').val();
-		if (wdGb == 'D' && gagajf.isNull(wdInvoiceNo)) {
-			mcxDialog.alert('직접 반송하신 송장번호를 입력해주세요.');
-			return false;
-		}
-
 		// 주문상세번호 및 반품 수량 설정
 		let ordDtlNoArr = [];
 		let cnclRtnReqQtyArr = [];
@@ -456,7 +448,7 @@
 		data.accountNm = $('#returnForm input[name=accountNm]').val();
 		data.bankCd = $('#returnForm input[name=bankCd]').val();
 		data.isCustomer = isCustomer;
-		data.wdGb = wdGb;
+		data.wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
 		data.chgerNm = $('#chgerNm').text();
 		data.chgerZipcode = $('#returnForm input[name=chgerZipcode]').val();
 		data.chgerBaseAddr = $('#returnForm input[name=chgerBaseAddr]').val();
@@ -464,12 +456,13 @@
 		data.chgerPhnno = $('#returnForm input[name=chgerPhnno]').val();
 		data.chgerRtnMemo = $('#returnForm input[name=chgerRtnMemo]').val();
 		data.ordDtlNoArr = ordDtlNoArr;
+		data.wdInvoiceNo = $('#returnForm input[name=wdInvoiceNo]').val();
 		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function() {
-			cfnGoToPage(_PAGE_MYPAGE_CRS_LIST);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 
@@ -548,11 +541,9 @@
 					$('#addDeliveryFee').css('display', '');
 					$('#addPayCost').text(addDelvFee.addComma() + '원');
 					$('#returnForm input[name=addPayCost]').val(addDelvFee);
-					//addPayCost = addDelvFee;
 				} else {
 					$('#addDeliveryFee').css('display', 'none');
 					$('#returnForm input[name=addPayCost]').val(0);
-					//addPayCost = 0;
 				}
 
 				// 금액 설정
@@ -656,6 +647,7 @@
 		$('#returnForm input[name=chgerZipcode]').val(chgerZipcode);
 		$('#returnForm input[name=chgerBaseAddr]').val(chgerBaseAddr);
 		$('#returnForm input[name=chgerDtlAddr]').val(chgerDtlAddr);
+		$('#returnForm input[name=chgerRtnMemo]').val(delvMemo);
 		
 		$('#chgerNm').text(chgerNm);
 		$('#chgerPhnno').text(chgerPhnno);

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

@@ -318,7 +318,7 @@
 								</div>
 							</section>
 							<div class="btn_wrap">
-								<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>반품 취소</span></button>
+								<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>반품 취소</span></button>
 								<button tyep="submit" class="btn btn_primary submit_btn" onclick="fnReturn()"><span id="returnButton">반품 신청</span></button>
 							</div>
 						</div>
@@ -340,7 +340,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '반품 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom.type1').each(function(index) {

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

@@ -207,9 +207,12 @@ 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!='') {
@@ -233,7 +236,7 @@ var appendHtml = function () {
 		}
 		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 += '		<div class="date" id="'+item.tue+'">'+item.tue+'</div>\n';
 			html += '	</td>\n	';
 		}else{
 			html += '	<td>\n';
@@ -250,7 +253,6 @@ var appendHtml = function () {
 			html += '	</td>\n	';
 		}
 		if (item.thu!=null && item.thu!='') {
-			if (item.thu == item1.entryDt) {
 			html += '	<td id="td_'+item.thu+'">\n';
 			html += '		<div class="date" id="'+item.thu+'">'+item.thu+'</div>\n';
 			html += '	</td>\n	';
@@ -278,8 +280,16 @@ var appendHtml = function () {
 			html += '	</td>\n	';
 		}
 		
-		html += '</tr>\n'
+		html += '</tr>\n';
+
 		$("#monthTbody").append(html);
+		
+		$.each(custAttendList, function(idx1, item1) {
+			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_"+item.tue).attr("class","complete");
+			}
+		})
 	
 	})    
 } 
@@ -299,33 +309,30 @@ var fnAttendEntry = function () {
 
 var fnInfoConfirmCallBack = function(result) {
 	mcxDialog.alert(result.msg);
-	custAttendList = result.custAttendList; 
-	
-	$.each(custAttendList, function(idx, item)  {
-		if(item.entryDt == date){
-			$("#td_"+date).attr("class","complete");
-		}else{
-			
-		}
-	}) 
-	
 	appendHtml();
+	$("#td_"+date).attr("class","complete");
+	
 };
 
 $(document).ready(function() {
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
 	}
-	 
+	
 	appendHtml();
-	$("#td_"+date).attr("class","today");
-	$.each(custAttendList, function(idx, item)  {
+	
+	$.each(custAttendList, function(idx, item) {
 		if(item.entryDt == date){
 			$("#td_"+date).attr("class","complete");
 		}else{
-			
+			$("#td_"+date).attr("class","today"); 
 		}
-	}) 
+	})
+	
+	
+	
+	
+	
 	
 	$(".title").html("<strong>"+month+"월</strong> 출석체크");
 	

+ 28 - 22
src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html

@@ -80,7 +80,7 @@
 
 <script th:inline="javascript">
 	let ordNo = [[${ordNo}]];
-	let isValid;
+	let isValid = false;
 
 	$(document).ready( function() {
 		var bank_selector = new sCombo('.select_custom.select_bank');
@@ -88,27 +88,33 @@
 
 	// 계좌인증 버튼 클릭 이벤트
 	$('#confirmAccount').click(function() {
-		let url = '/mypage/account/check';
-		let accountNm = $('#refundAccountForm input[name=accountNm]').val();
-		let accountNo = $('#refundAccountForm input[name=accountNo]').val();
-		let bankCd = $('#refundAccountForm input[name=bankCd]').val();
-
-		let data = {};
-		data.accountNm = accountNm;
-		data.accountNo = accountNo;
-		data.bankCd = bankCd;
-		data.ordNo = ordNo;
-
-		let jsonData = JSON.stringify(data);
+		if (!isValid) {
+			let url = '/mypage/account/check';
+			let accountNm = $('#refundAccountForm input[name=accountNm]').val();
+			let accountNo = $('#refundAccountForm input[name=accountNo]').val();
+			let bankCd = $('#refundAccountForm input[name=bankCd]').val();
+			
+			let data = {};
+			data.accountNm = accountNm;
+			data.accountNo = accountNo;
+			data.bankCd = bankCd;
+			data.ordNo = ordNo;
+			
+			let jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+				isValid = result.isValid;
+				if (isValid) {
+					mcxDialog.alert('계좌인증에 성공했습니다.');
 
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			isValid = result.isValid;
-			if (isValid) {
-				mcxDialog.alert('계좌인증에 성공했습니다.')
-			} else {
-				mcxDialog.alert('계좌정보를 다시 확인해주세요.');
-			}
-		});
+					// 계좌인증 성공 시 Disabled 처리
+					$('#refundAccountForm .select_custom.select_bank').attr('disabled', true);
+					$('#refundAccountForm input[name=accountNo]').attr('disabled', true);
+				} else {
+					mcxDialog.alert('계좌정보를 다시 확인해주세요.');
+				}
+			});
+		}
 	});
 
 	// 계좌등록 후 환불신청 버튼 클릭 이벤트
@@ -129,7 +135,7 @@
 			// 팝업 닫기
 			$(".close-modal").trigger("click");
 		} else {
-			mcxDialog.alert('계좌인증을 해주세요.');
+			mcxDialog.alert('계좌인증이 필요합니다.');
 		}
 	});
 </script>

+ 4 - 57
src/main/webapp/biz/mypage.js

@@ -2,7 +2,7 @@
 var fnSetMypageLnbList = function(lnbLvl) {
 	let tag = '';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"' + (lnbLvl == 1 ? ' class="on"' : '') + '>주문확인/배송조회</a></li>\n';
-	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>취소/반품/환불내역</a></li>\n';
+	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>취소/반품/환불내역</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_RESTOCK);"' + (lnbLvl == 3 ? ' class="on"' : '') + '>재입고 알림 내역</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);"' + (lnbLvl == 4 ? ' class="on"' : '') + '>쿠폰</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_POINT);"' + (lnbLvl == 5 ? ' class="on"' : '') + '>STYLE24 포인트</a></li>\n';
@@ -63,7 +63,7 @@ var fnDecideOrder = function(param) {
 		return false;
 	}
 
-	mcxDialog.confirm('구매확정 처리를 하시겠습니까?', {
+	mcxDialog.confirm('구매확정 후에는 반품/교환이 불가합니다. 구매확정하시겠습니까?', {
 		cancelBtnText: "취소",
 		sureBtnText: "확인",
 		sureBtnClick: function(){
@@ -90,11 +90,9 @@ var fnDecideOrder = function(param) {
 var fnCreateReview = function(param) {
 	let ordNo = $(param).attr('ordNo');
 	let ordDtlNo = $(param).attr('ordDtlNo');
+	let goodsCd = $(param).attr('goodsCd');
 
-	$('#reviewForm input[name=ordNo]').val(ordNo);
-	$('#reviewForm input[name=ordDtlNo]').val(ordDtlNo);
-	
-	document.reviewForm.submit();
+	fnReviewCreate(ordNo, ordDtlNo, goodsCd);
 }
 
 // 장바구니 담기 버튼 클릭 이벤트
@@ -243,50 +241,6 @@ var fnChangeDeliveryAddr = function(param) {
 	}
 }
 
-// 배송지추가 팝업열기
-//$(document).on('click','#btn_addrAdd_pop',function(e){
-//	$("#adrsAddPop").modal("show");
-//	return false;
-//});
-
-// 배송지수정 팝업열기
-//$(document).on('click','#btn_addrModify_pop',function(e){
-//	$("#adrsModifyPop").modal("show");
-//	return false;
-//});
-
-// 배송요청사항 팝업열기
-//$("#btn_rqstModify_pop").on("click", function(e){
-//	let data = {};
-//	data.delvMemo = $("input[name='delvMemo']").val();
-//
-//	$.ajax({
-//		type		: "POST",
-//		url 		: "/common/delvMemoChangePop",
-//		data		: JSON.stringify(data),
-//		dataType 	: "html",
-//		beforeSend 	: function(xhr, settings) {
-//			xhr.setRequestHeader("AJAX"			, "true");
-//			xhr.setRequestHeader('Accept'		, 'application/json');
-//			xhr.setRequestHeader('Content-Type'	, 'application/json');
-//			gagajf.showProgressbar(true);
-//		},
-//		success 	: function(result) {
-//			if (result != null) {
-//				$("#rqstModifyPop .modal-dialog .modal-content").html(result);
-//				$("#rqstModifyPop").modal("show");
-//			}
-//		}
-//	});
-//});
-
-// 회수지, 교환지, 배송지 선택 처리
-//var deliveryAddrInfoSet = function(temp) {
-//	// TODO
-//	// 배송지 변경 처리
-//	
-//}
-
 // 배송메모 설정 팝업
 var fnChangeDeliveryMemo = function() {
 	var data = {};
@@ -313,13 +267,6 @@ var fnChangeDeliveryMemo = function() {
 	});
 }
 
-// 배송메모 선택 처리
-//var fnChangeDelvMemo = function(delvMemo) {
-//	// TODO
-//	// 배송메모 변경 처리
-//	console.log(delvMemo);
-//}
-
 // 신용카드 전표 및 현금영수증 버튼 클릭 이벤트
 var fnReceipt = function(param) {
 	// TODO

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

@@ -258,14 +258,14 @@ input[type="reset"], input[type="button"], input[type="submit"], button {line-he
 .form_field input[type="checkbox"]:Disabled + label, 
 .form_field input[type="radio"]:Disabled + label{cursor: default;opacity: .45;} 
 .form_field input[type="checkbox"]:checked + label:after{ 
-  content: ''; position:absolute; top:50%; margin-top:-10px; left:0; width:20px; height:20px; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
+  content: ''; position:absolute; top:50%; margin-top:-1rem; left:0; width:2.0rem; height:2.0rem; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
   background: url('/images/mo/ico_chk_rdi.png') no-repeat;
-  background-position: -20px 0px;
+  background-position: -2rem 0px;
 }
 .form_field input[type="checkbox"]:Disabled + label:after{ 
-  content: ''; position:absolute; top:3px; left:0; width:20px; height:20px; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
+  content: ''; position:absolute; top:-1.0rem; left:0; width:2.0rem; height:2.0rem; background-color: #fd4800; border-radius: 100%; box-sizing:border-box; 
   background: url('/images/mo/ico_chk_rdi.png') no-repeat;
-  background-position: -40px 0px;
+  background-position: -4rem 0px;
 }
 
 /* 라디오 */

+ 25 - 13
src/main/webapp/ux/mo/css/layout_m.css

@@ -445,6 +445,7 @@
 .pd_detail .option_box .opt_size .form_field .lap{margin:-0.25rem -0.25rem 0; overflow:hidden;}
 .pd_detail .option_box .opt_size .form_field .lap > div {margin:0.25rem; float:left; width:auto;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label {display:block; width:6rem; height:3.4rem; padding:0; line-height:3.4rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.2rem;}
+.pd_detail .option_box .opt_size .form_field input[type="radio"]:checked + label{border: 1px solid red;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label::before,
 .pd_detail .option_box .opt_size .form_field input[type="radio"] + label::after {display:none;}
 .pd_detail .option_box .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #fd4802;}
@@ -458,7 +459,7 @@
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle{margin-bottom:1.5rem;}
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle:last-child{margin-bottom:0;}
 .pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_name {margin-bottom:0.5rem; color:#222; font-size:1.3rem; font-weight:300;}
-.pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_option {font-size:1.1rem; color:#666; text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:30rem;overflow:hidden;}
+.pd_detail .option_box .opt_result .result_item .opt_header .bundle .item_option {font-size:1.1rem; color:#666; text-overflow:ellipsis;white-space:normal;word-wrap:normal;width:26rem;overflow:hidden;}
 .pd_detail .option_box .opt_result .result_item .item_price {position:absolute; right:2rem; bottom:3.2rem; color:#222; font-size:1.5rem; font-weight:500;}
 .pd_detail .option_box .opt_result .result_item .item_price em{font-weight:600;}
 .pd_detail .option_box .opt_result .result_item .btn_delete_item {position:absolute; right:2rem; top:2rem; width:1.3rem; height:1.3rem; font-size:0; overflow:hidden; background:url('/images/mo/btn_delete_item.png') no-repeat 50% 50%;}
@@ -681,13 +682,23 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .Purchase_pop .select_custom.on .combo .select{border-bottom:1px solid #dcdcdc}
 .pd_qnalist_pop .foldGroup > ul > li{border-bottom:0px none;}
 .pd_qnalist_pop .fold_cont .fold_answer{border-top:0px none;}
+.pd_qnalist .fold_cont .fold_answer{border-top:0px none;}
 .pd_qnalist_pop .fold_cont > div:first-of-type{border-bottom:1px solid #dcdcdc}
 .pd [class*="pd_descrp"] .cont_body.on{overflow: visible;}
 .pd .mdhtml_box a{margin:0 -2rem; display:block;}
-
+.pd_descrp_pop .mdhtml_box a{margin:0 -2rem; display:block;}
 .option_box .opt_size .form_field > div {margin-left:8px; margin-top:8px;}
-/*.option_box .opt_size .form_field > div:nth-child(7n-6) {margin-left:0px;}*/
 .option_box .opt_size .form_field > div {float:left; width:auto;}
+/* 210407 */
+.pd.deal .pd_detail .foldGroup > ul > li{border-bottom:0px none;}
+.pd_listDescrp_pop .deal_list_select .list li{border-bottom:0px none;}
+/*.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemBrand{text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;width:20rem;overflow:hidden; background:red;}
+.pd_descrp_pop .item_blk .item_prod .item_state .itemLink .itemName{overflow: hidden;text-overflow: ellipsis;display: -webkit-box; -webkit-box-orient: vertical; line-height: 1.2em; -webkit-line-clamp: 3; height: 3.6em}*/
+.pd_descrp_pop .item_prod .itemPrice_original{margin-left:0.6rem; margin-right:-0.6rem;}
+.Purchase_pop .item_prod .itemPrice_original{margin-left:0.5rem;}
+.Purchase_pop .item_prod .itemPercent{left:10.2rem}
+/*.Purchase_pop .option_box .opt_size .form_field input[type="radio"]:checked + label{border:1px solid #fd4802;}*/
+
 
 
 /* 플롯팅 메뉴 > 구매하기 */
@@ -709,7 +720,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 
 .container.btPop_full.pd_open::after, 
 .container.btPop_open.pd::after{position:fixed; z-index: 100;}
-.pd_pop.Purchase_pop .btPop_body{max-height:30rem;}
+.pd_pop.Purchase_pop .btPop_body{max-height:40rem;}
 .btPop_open .btPop.Purchase_pop{bottom:0; top:auto!important; height:auto;}
 .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;}
@@ -840,7 +851,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop[class*="bnf_"] .benefit_blk {margin-top:3rem}
 .modal.pd_pop[class*="bnf_"] .benefit_blk:first-child {margin-top:0}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 {border-top:1px solid #000; border-bottom:1px solid #ddd;} 
-.modal.pd_pop[class*="bnf_"] .tbl.type1 table {width:100%; text-align:left; word-break:keep-all;}
+.modal.pd_pop[class*="bnf_"] .tbl.type1 table {width:100%; text-align:left; word-break:break-all;}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table th,
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table td {position:relative; padding:1.4rem 1.2rem; font-weight:300; font-size:1.3rem; letter-spacing:-0.025em;}
 .modal.pd_pop[class*="bnf_"] .tbl.type1 table th {font-weight:400;}
@@ -943,13 +954,13 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .modal.pd_pop.push_restock_pop .item_blk .item_prod .item_state .itemLink .itemPrice .lap .itemPercent {position:relative;}
 .modal.pd_pop.push_restock_pop .select_blk {margin-top:3rem;}
 .modal.pd_pop.push_restock_pop .select_blk h6 {margin-bottom:1rem; font-size:1.4rem; font-weight:500;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field {display:block; margin-top:-0.8rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field {display:block; margin-top:-0.8rem; margin-left:-0.8rem !important;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div {margin-left:0.8rem; margin-top:0.8rem;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div:nth-child(7n-6) {margin-left:0px;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label {display:block; width:6.6rem; height:4.2rem; padding:0; line-height:4.2rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.4rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div:nth-child(7n-6) {margin-left:0.8rem;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label {display:block; width:6rem; height:3.4rem; padding:0; line-height:3.4rem; text-align:center; background:#fff; box-sizing:border-box; border:1px solid #ddd; color:#222; font-weight:200; font-size:1.2rem;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label::before,
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"] + label::after {display:none;}
-.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #222;}
+.modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:checked + label {border:1px solid #fd4802;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field input[type="radio"]:disabled + label {text-decoration:line-through; background:#f5f5f5; border-color:#f5f5f5; color:#bbb; opacity:1;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_size .form_field > div {float:left; width:auto;}
 .modal.pd_pop.push_restock_pop .select_blk .opt_select .select_blk {display:block; max-height:30.0rem; overflow-y:scroll;}
@@ -1021,7 +1032,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_delivery .change .pop_table { width: 100%; margin: 2rem 0 1rem; border-top: 0.1rem solid #222222;}
 .pd_delivery .change .pop_table tr th,
 .pd_delivery .change .pop_table tr td { font-size: 1.2rem; padding: 2.5rem 0 2.5rem 1.2rem; align-items: center; border-bottom: 1px solid #eeeeee; }
-.pd_delivery .change .pop_table tr th {width: 10rem; padding: 0 0 0 1.2rem; color:#222; font-weight:500; background: #f5f5f5;}
+.pd_delivery .change .pop_table tr th {width: 10rem; padding: 0 0 0 1.2rem; color:#222; font-weight:500; background: #f5f5f5; text-align:left; word-break: break-all;}
 
 /* pd_pop > 상품리뷰 페이지 */
 .modal.pd_pop.pd_review_pop .modal-header{border-bottom:0; box-shadow:0 0 5px rgba(0,0,0,.2);}
@@ -1170,7 +1181,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd_review .category_open > li > span:after{display:block; content:''; position:absolute; right:0; top:50%; margin-top:-2px; border:5px solid transparent; border-bottom-color:#222; -webkit-transform:rotate(180deg); transform:rotate(180deg);}
 .pd_review .category_box{display:none; position:fixed; width:100%; height:100%; top:0; left:0; background:rgba(0,0,0,.5); z-index:500;}
 .pd_review .category_box .lap{position:absolute; bottom:0; left:0; padding:3rem 0; width:100%; background:#fff;}
-.pd_review .category_box .category_list{min-height:25rem; max-height:40rem; overflow-y:auto;}
+.pd_review .category_box .category_list{max-height:40rem; overflow-y:auto;}
 .pd_review .category_box .category_list .category {display:none; padding:0 1.33rem;}
 .pd_review .category_box .category_list .category ul {margin:0 -0.6rem;}
 .pd_review .category_box .category_list .category ul li { padding:0.4rem 0.6rem; background:#fff; text-align:center;}
@@ -1231,7 +1242,8 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .pd.deal .tab_detail_nav ul::after {content:''; clear:both; display:block;}
 .pd.deal .tab_detail_nav ul li {float:left; width:25%; text-align:center; background:#fff; box-sizing:border-box;}
 .pd.deal .tab_detail_nav ul li.active {background:#fff;}
-.pd.deal .tab_detail_nav ul li a {position:relative; display:block; color:#888; font-size:1.2rem; font-weight:300; padding:1.4rem 0;}
+.pd.deal .tab_detail_nav ul li a {position:relative; display:block; color:#888; font-size:1.2rem; font-weight:300; padding:1.4rem 0;color: rgb(31, 31, 31);}
+.pd.deal .tab_detail_nav ul li a em{font-size:1rem; color: rgb(137, 137, 137);}
 .pd.deal .tab_detail_nav ul li a:after{display:block; content:''; position:absolute; left:0; bottom:0; width:0; height:3px; background-color:#fd4802;}
 .pd.deal .tab_detail_nav ul li.active a {color:#fd4802; font-weight:500;}
 .pd.deal .tab_detail_nav ul li.active a:after {width:100%;}
@@ -1302,7 +1314,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .deal_list_select .list li:first-child{margin-top:0;}
 .deal_list_select .list li.selected:after{border:1px solid #fd4802;}
 .deal_list_select .list li {position: relative; display:table; width:100%; box-sizing: border-box; z-index:1;}
-.deal_list_select .list li:after{content:''; position:absolute; width:100%; height:100%; top:0; left:0; border:1px solid #fff; box-sizing:border-box; z-index:2;}
+.deal_list_select .list li:after{content:''; position:absolute; width:100%; height:100%; top:0; left:0; box-sizing:border-box; z-index:2;}
 .deal_list_select .list .item_prod .itemLink{position: relative; display:table-cell; width: 100%; height:102px; padding-left:88px; padding-right:1rem; box-sizing:border-box; vertical-align: middle;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemPic {position:absolute; left:0; top:0; padding:0; margin-bottom:0; width:68px; height:102px; z-index:2;}
 .deal_list_select .list .item_prod .item_state .itemLink .itemBrand {display:block; padding-right: 4rem; font-size:1rem; color:#888888; font-weight:300;}

+ 82 - 44
src/main/webapp/ux/mo/css/style24_m.css

@@ -840,7 +840,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .ev_rank .member_level_area .level_content.one_row .birth_info {width: 100%;}
 
 /* 배송관련 아이콘  */
-.tag {display:inline-block; height:22px; padding:5px 8px; /*background:#fff;*/ border:1px solid #ddd; color:#666; font-size:11px; font-weight:300; text-align:center; line-height:1;}
+.tag {display:inline-block; height:2.2rem; padding:0.5rem 0.8rem; /*background:#fff;*/ border:1px solid #ddd; color:#666; font-size:1.1rem; font-weight:300; text-align:center; line-height:1;}
 .tag.gray {background:#f5f5f5; border-color:#f5f5f5; color:#666;}
 .tag.deepgray {background:#aaa; border-color:#aaa; color:#fff;}
 .tag.primary {background:#fd4802; border-color:#fd4802; color:#fff;}
@@ -850,7 +850,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .my {background: #f5f5f5;}
 .my .pnb{background: #ffffff;}
 .my .mypage {background: #f5f5f5;}
-.my .inner {padding-bottom: 0; background: #fff;}
+.my .inner {margin-bottom: 1.2rem; padding-bottom: 0; background: #fff;}
 .my .inner.bg_gray {background: #f5f5f5;}
 .my .help_block {margin-top: 1rem;font-size: 1.2rem;}
 .my .tbl_wrap {padding: 3rem 0;}
@@ -905,7 +905,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .goods_btn_wrap > div > .btn.btn_primary {background-color:#fff; border-color:#fd4802; color: #fd4802;}
 
 /* my_index */
-main.container.my .inner:last-child {padding-bottom: 0;}
+/* main.container.my .inner:last-child {padding-bottom: 0;} */
 .my .lnb_list {margin-top: 1.2rem; padding-bottom: 6rem;}
 .my .lnb_list li { border-bottom: 1px solid #ddd;}
 .my .lnb_list li a {display: block; padding: 2rem; background: url(/images/mo/ico_lnb_arrow.png) no-repeat right 2rem center; background-size:0.7rem 1.26rem;}
@@ -952,7 +952,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .goods_top .delete_btn {position: absolute; bottom: 1.5rem; right: 0; font-size: 1.3rem; color: #8d8d8d; padding-right: 1.4rem; background: url(/images/mo/ico_btn_cls.png) no-repeat right top 3px; background-size:0.9rem 0.9rem;}
 .my .goods_top .purchase_btn {position: absolute; bottom: 1.5rem; right: 0; font-size: 1.3rem; color: #8d8d8d; padding-right: 1.6rem; background: url(/images/mo/ico_check01.png) no-repeat right top 3px; background-size:1.06rem 0.8rem;}
 .my .badge_wrap {display: inline-block;}
-.my .order_badge {font-size: 1rem; border-radius: 0.1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: top;}
+.my .order_badge {font-size: 1rem; border-radius: 0.1rem; color: #666; font-weight: 300; border:1px solid #888; padding:0.4rem 0.4rem 0.25rem; margin-left: 1px; vertical-align: middle;}
 .my .order_bullet_badge {background: #fff6f2; color: #fd4802; border:1px solid #fd4802;}
 
 .my .part_goods {position:relative;}
@@ -978,13 +978,14 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .part_goods .goods_detail .thumb_box {width:9rem; height:13.5rem; position: absolute; left: 0; top: 0;}
 .part_goods .goods_detail .thumb_box a {display:block; background:#f5f5f5;}
 
-.part_goods .goods_detail .info_box {min-height:13.5rem;}
+.part_goods .goods_detail .info_box {min-height:13.5rem; padding-top: 1rem;}
 .part_goods .goods_detail .info_box .od_name a {display:block;}
-.part_goods .goods_detail .info_box .od_name .name {display:inline-block; font-size: 1.3rem; line-height:1.4; margin:0.5rem 0; display:-webkit-box; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:keep-all;}
-.part_goods .goods_detail .info_box .od_name .brand {color:#888; font-size: 1.1rem; font-weight:300; padding-top: 1rem;}
+.part_goods .goods_detail .info_box .od_name .name {display:inline-block; font-size: 1.3rem; line-height:1.4; margin:0.3rem 0; display:-webkit-box; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:keep-all;}
+.part_goods .goods_detail .info_box .od_name .brand {color:#888; font-size: 1.1rem; font-weight:300;}
 .part_goods .goods_detail .info_box .od_name .brand span {display: inline-block; margin-bottom: 0.5rem; margin-right: 0.2rem;}
 .part_goods .goods_detail .info_box .od_name .reserv_date {position:relative; padding-left:10px; margin-left:10px; color:#fd4802; font-size:14px; font-weight:200;}
 .part_goods .goods_detail .info_box .od_name .reserv_date::before {content:''; position:absolute; left:-1px; top:50%; transform:translateY(-50%); width:1px; height:10px; border-left:1px solid #ddd;}
+.part_goods .goods_detail .info_box > div:last-child {margin-bottom: 0;}
 
 .part_goods .goods_detail .od_opt, .part_goods .goods_detail .od_exchange_opt {color:#666; font-size:1.1rem; margin-bottom: 0.8rem;}
 .part_goods .goods_detail .od_opt .option, .part_goods .goods_detail .od_exchange_opt .option {display:block;}
@@ -1012,21 +1013,24 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .part_goods .goods_gift .gift_wrap {padding:1.5rem; margin-top: 1.8rem; background: #fff6f2; border:1px solid #ffe4d9;}
 .my .part_goods .goods_gift .title {font-size: 1.3rem; font-weight: 500; color: #fd4802; padding-left: 1.7rem; background: url(/images/mo/ico_gift.png) no-repeat left top 1px; background-size:1.1rem 1.2rem; margin-bottom: 1rem;}
 .my .part_goods .goods_gift .li_gift {}
-.my .part_goods .goods_gift .li_gift li {padding-left: 15px; background: url(/images/mo/ico_bracket.png) no-repeat left top; background-size:0.7rem; font-size: 1.1rem; margin-bottom: 0.8rem; line-height: 1;}
+.my .part_goods .goods_gift .li_gift li {padding-left: 15px; background: url(/images/mo/ico_bracket.png) no-repeat left top; background-size:0.7rem; font-size: 1.1rem; margin-bottom: 0.8rem; line-height: 1; vertical-align: middle; width: 100%;}
 .my .part_goods .goods_gift .li_gift li:last-child {margin-bottom: 0;}
-.my .part_goods .goods_gift .li_gift li .gift_name {display: inline-block; white-space: nowrap; overflow:hidden; text-overflow: ellipsis; vertical-align: middle; width: 80%;}
+.my .part_goods .goods_gift .li_gift li .gift_name {display: inline-block; color:#666;}
 .my .part_goods .goods_gift .li_gift .deduct_p {display: inline-block; color: #fd4802; width: 15%;}
 .my .part_goods .order_confirm {background: #f5f5f5; text-align: center; padding:1.5rem 0;}
 
 
 /* my_review_1 */
+.my .review .inner:last-child .goods_btn_wrap {padding:0 0 6rem;}
+.my .review .tab_cont .inner .goods_btn_wrap {padding: 0; margin-top: 2.4rem;}
 .my .review .inner {margin-bottom: 0;}
+.my .review .inner:last-child {padding-bottom: 0;}
 .my .review .inner.wide {background: #f5f5f5;}
 /* .my .review .inner .tabWrap .inner{margin-bottom:1.3rem;} */
 .my .review .tabIndex{margin-bottom: 0.85em;}
 .my .review .tabIndex li .count{font-size:1.0rem; font-weight: 300; padding-left: 0.5rem;color: #888888;}
 .my .review .tabIndex li.active a .count{color: #888888;}
-.my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem);}
+.my .review .tip1 .tip_contents{width: 34rem;transform: translate(-77%, 1.0rem); padding:1.3rem 1.6rem;}
 .my .review .tip2 .tip_contents{width: 31.5rem;transform: translate(-62%, 1.0rem);}
 .my .review .tip1 .tip_contents:before,
 .my .review .tip1 .tip_contents:after{left: 79.5%;}
@@ -1034,13 +1038,23 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .tip2 .tip_contents:after{left: 64.5%;}
 .my .review .tip_wrap ul li{position: relative;padding-left: 1.0rem;font-weight: 200;}
 .my .review .tip_wrap ul li::before{content: '';position: absolute;top: 7px;left: 0;background: #858585;width: 3px;height: 3px;}
-.my .review .part_goods .goods_section:last-of-type {margin-bottom: 0;border-bottom: 1px solid #ddd;}
+.my .review .tab_cont .inner:first-child {margin-top: 0;}
+.my .review .tab_cont .inner {margin-top: 1.2rem;}
+.my .review .tab_cont .inner .reviewMy {padding: 2.4rem 0 6rem; font-weight: 200;}
+.my .review .part_goods {padding-top: 2.4rem;}
+.my .review .part_goods:first-child {margin-top: 0;}
+.my .review .part_goods .goods_section:last-of-type {margin-bottom: 0; border-bottom: 1px solid #eee;}
+.my .review .part_goods .goods_detail .info_box {padding-top: 1.6rem;}
+.my .review .part_goods .goods_detail .info_box .goods_date {font-size: 1.3rem;}
+.my .review .part_goods .goods_detail .info_box .od_name .brand {padding-top: 1.5rem;}
 .my .review .part_goods .goods_detail .info_box .od_name .name{-webkit-line-clamp: 1;}
+.my .review .part_goods .goods_btn_wrap {margin-top: 1.5rem;}
+.my .review .tip_close {position: absolute; top: 0; right: 0; width: 3rem; height: 3rem; background: url(/images/mo/ico_btn_cls.png) no-repeat center; background-size: 1rem; background-position: center;}
 
 /* my_review_2 */
 .my .review > ul > li .reviewMy {}
-.my .review .once {background: #ffffff;padding: 0;margin-top: -1.5rem;text-align: center;}
-.my .review .alert {position: relative;display: inline-block;height: 7.4rem;width: 100%;max-width: calc(100% - 4.0rem);margin: 2.33rem 0 1.5rem;padding: 1.5rem;text-align: center;font-size: 1.2rem;color: #fd4802;border-color: #ffe4d9;background-color: #fff6f2;border-radius: 0;}
+.my .review .once {background: #ffffff;padding: 0;margin-top: -1.5rem;text-align: center; margin-bottom: -1.2rem;}
+.my .review .alert {position: relative;display: inline-block;height: 7.4rem;width: 100%;max-width: calc(100% - 4.0rem);margin: 2.33rem 0 0;padding: 1.5rem;text-align: center;font-size: 1.2rem;color: #fd4802;border-color: #ffe4d9;background-color: #fff6f2;border-radius: 0;}
 .my .review .formOnly {position: relative;display: inline-block;color: #666666;text-align: center;}
 .my .review .formOnly::after {content: '';display: inline-block;width: 1rem;height: 1.5rem;position: absolute;top: 5px;right: -1.5rem;background: url(/images/mo/ico_btn_detail02.png);background-size: 0.6rem 1.0rem;background-repeat: no-repeat;}
 .my .review button.alertCls {font-size: 0;position: absolute;top: 0;left: 0;width: 100%;height: 100%;}
@@ -1052,42 +1066,48 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .reviewMy .info_box .star_score .star::after {content:''; position:absolute; left:0; top:0; z-index:3; width:100%; height:100%; background:url('/images/pc/star_empty_big.png') no-repeat 0 0; background-size:100% 100%; image-rendering:pixelated;}
 .my .review .reviewMy .info_box .star_score .star .progbar {display:inline-block; height:100%; background:#fd4802}
 .my .review .reviewMy .info_box .writer {float:right;}
-.my .review .reviewMy .info_box .writer span {position:relative; margin-left:2.0rem; padding-left:2.0rem; color:#888; font-size:1.4rem; line-height: 1.8rem;}
+.my .review .reviewMy .info_box .writer span {position:relative; margin-left:2.0rem; padding-left:2.0rem; color:#888; font-size:1.1rem; line-height: 1.8rem;}
 .my .review .reviewMy .info_box .writer span::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); height:1.2rem; width:0.1rem; background:#ddd;}
 .my .review .reviewMy .info_box .writer span:first-child {margin-left:0; padding-left:0}
 .my .review .reviewMy .info_box .writer span:first-child::after {display:none;}
-.my .review .reviewMy .response_box {margin-top:2.5rem}
+.my .review .reviewMy .response_box {margin-top:1rem}
 .my .review .reviewMy .response_box > div {margin-top:1.5rem;}
 .my .review .reviewMy .response_box > div:first-child {margin-top:0}
-/* .my .review .reviewMy .response_box > div dl div {margin-right:3.0rem} */
-.my .review .reviewMy .response_box > div dl div dt {color:#888;display: inline-block;width: 6.5rem;}
-.my .review .reviewMy .response_box > div dl div dd {display: inline-block;width: calc(100% - 8.05rem);margin-left:1.2rem; color:#fd4802}
-.my .review .reviewMy .response_box2 {margin-top:2.5rem}
+.my .review .reviewMy .response_box > div dl div {font-size: 1.1rem;}
+.my .review .reviewMy .response_box > div dl div dt {color:#888;display: inline-block;width: 6.5rem; font-size: 1.1rem;}
+.my .review .reviewMy .response_box > div dl div dd {display: inline-block;width: calc(100% - 8.05rem); /*margin-left:1.2rem;*/ font-size: 1.1rem; color:#fd4802;}
+.my .review .reviewMy .response_box2 {margin-top:1.4rem}
 .my .review .reviewMy .response_box2 > div {margin-top:1.5rem;}
 .my .review .reviewMy .response_box2 > div:first-child {margin-top:0}
 /* .my .review .reviewMy .response_box2 > div dl div {margin-right:3.0rem} */
+.my .review .reviewMy .response_box2 > div dl div {float:left; width: 50%;}
 .my .review .reviewMy .response_box2 > div dl div dt {position:relative;color:#888;display: inline-block;width: auto;font-size: 1.1rem;padding-left: 0.85rem;}
-.my .review .reviewMy .response_box2 > div dl div dt::before {content: '';position: absolute;top: 0.7rem;left: 0;background: #858585;width: 0.3rem;height: 0.3rem;}
+.my .review .reviewMy .response_box2 > div dl div dt::before {content: '';position: absolute;top: 0.6rem;left: 0;background: #858585;width: 0.2rem;height: 0.2rem;}
 .my .review .reviewMy .response_box2 > div dl div dd {display: inline-block;width: calc(49.45% - 8.05rem);font-size: 1.1rem;margin-left:0.2rem; color:#222222;}
-.my .review .reviewMy .photo_box {margin-top:2.0rem}
+.my .review .reviewMy .photo_box {margin-top:1.4rem}
 .my .review .reviewMy .photo_box .photo_list {}
-.my .review .reviewMy .photo_box .photo_list > ul li {float:left; width:calc((100% - 9.0rem)/10); margin-left:1.0rem}
+.my .review .reviewMy .photo_box .photo_list > ul {white-space: nowrap; overflow-x:auto; -ms-overflow-style:none; font-size: 0;}
+.my .review .reviewMy .photo_box .photo_list > ul::-webkit-scrollbar { display:none; }
+.my .review .reviewMy .photo_box .photo_list > ul li {display: inline-block; /*width:calc((100% - 9.0rem)/10);*/ width: 7.2rem; margin-left:0.8rem}
 .my .review .reviewMy .photo_box .photo_list > ul li:nth-child(10n-9) {margin-left:0;}
-.my .review .reviewMy .txt_review_box {margin-top:25px; font-size: 1.3rem; line-height:2.1rem;}
-.my .review .reviewMy .reply_box {margin-top:3.0rem; padding-top:1.5rem}
-.my .review .reviewMy .reply_box .reply {position:relative; padding:3.0rem; background:#f5f5f5;}
+.my .review .reviewMy .photo_box .photo_list .pic {width: 7.2rem; height: 7.2rem;}
+.my .review .reviewMy .photo_box .photo_list .pic span {display: block; width: 100%; height: 100%; background-size:100%;}
+.my .review .reviewMy .txt_review_box {margin-top:1.9rem; font-size: 1.3rem; line-height:2.1rem;}
+.my .review .reviewMy .reply_box {margin-top:1.5rem; padding-top:1.5rem;}
+.my .review .reviewMy .reply_box .reply {position:relative; padding:2.0rem; background:#f5f5f5;}
 .my .review .reviewMy .reply_box .reply::after {content:''; position:absolute; left:0px; top:-1.5rem; width:0px; height:0px; border:1.5rem solid #f5f5f5; border-top-color:transparent; border-right-color:transparent;}
-.my .review .reviewMy .reply_box .reply .reply_writer {}
+.my .review .reviewMy .reply_box .reply .reply_writer {font-size: 1.3rem;}
 .my .review .reviewMy .reply_box .reply .reply_writer span {display:inline-block; position:relative;}
 .my .review .reviewMy .reply_box .reply .reply_writer .wr_name {padding-left:2.4rem; font-weight:300;}
-.my .review .reviewMy .reply_box .reply .reply_writer .wr_name::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.6rem; height:1.6rem; background:url('/images/pc/ico_admin.png') no-repeat 0 0;}
-.my .review .reviewMy .reply_box .reply .reply_writer .wr_date {padding-left:2.0rem; margin-left:2.0rem; color:#888; font-weight:200;}
+.my .review .reviewMy .reply_box .reply .reply_writer .wr_name::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1.6rem; height:1.6rem; background:url('/images/mo/ico_admin2.png') no-repeat 0 0; background-size:1.5rem;}
+.my .review .reviewMy .reply_box .reply .reply_writer .wr_date {padding-left:1.5rem; margin-left:1.5rem; color:#888; font-weight:200;}
 .my .review .reviewMy .reply_box .reply .reply_writer .wr_date::after {content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); height:1.2rem; width:0.1rem; background:#ddd;}
-.my .review .reviewMy .reply_box .reply .reply_txt {margin-top:2.0rem; color:#666; font-size:1.3rem; line-height:2.4rem;}
-.my .review .reviewMy .goods_btn_wrap {padding: 2.0rem 0;}
+.my .review .reviewMy .reply_box .reply .reply_txt {margin-top:1.2rem; color:#666; font-size:1.3rem; line-height:1.4; font-weight: 200;}
+.my .review .reviewMy .goods_btn_wrap {padding: 2.4rem 0;}
 
 
 /* my_review_3 */
+.my .review .form_wrap .inner {margin-bottom: 0;}
 .my .review_score {margin-top: 14px;padding-bottom: 2.0rem;border-bottom: 1px solid #dddddd;}
 .my .review_score #star_grade {width: 14.0rem;margin:0 auto;}
 .my .review_score #star_grade button {display: inline-block; width: 25px; height: 25px; text-decoration: none; background: url(/images/pc/ico_star01.png) no-repeat center;}
@@ -1108,7 +1128,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .review .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 .my .review .desc_txt {margin-top: 1.5rem; font-size: 1.1rem; color: #666; font-weight: 200; position: relative; padding-left: 0.6rem;}
 .my .review .desc_txt:before {content:''; position: absolute; left: 0; top: 0.6rem; width: 0.2rem; height: 0.2rem; background: #888;}
-.my .review .btn_group_flex {padding:0 0 6rem; margin:0; background: #fff;}
+.my .review .btn_group_flex {/*padding:0 0 6rem;*/ margin:0; background: #fff;}
 .my .review .tbl_wrap .tbl td .certi_wrap {display: block;}
 .my .review .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 
@@ -1272,10 +1292,23 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .my_page_edit .tbl_wrap .tbl td input {width: 100%;}
 .my .my_page_edit .tbl_wrap .tbl .password .btn.btn_primary {width: 100%; height: 4.5rem; background: #fff; color:#fd4802}
 
-.my .my_page_edit .btn_group_flex {padding:0 0 6rem; margin:0; background: #fff;}
+.my .my_page_edit .btn_group_flex {padding:0; margin:0; background: #fff;}
 .my .my_page_edit .tbl_wrap .tbl td .certi_wrap {display: block;}
 .my .my_page_edit .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 
+/* my_mypage_2 비밀번호 변경 팝업 */
+.modal.password_change_pop .modal-header {padding: 0; height: 5.5rem;}
+.password_change_pop .htop {position: relative;height: 55px;-webkit-box-sizing: border-box;box-sizing: border-box;background-color: #fff;}
+.password_change_pop #htopSub {border-bottom: 1px solid #e5e5e5;box-sizing: border-box;}
+.password_change_pop #htopSubs {border-bottom: 1px solid #000000;box-sizing: border-box;}
+.password_change_pop .htop h5 {display: inline-block;position: relative;height: 3.5rem;line-height: 3.5rem;vertical-align: top; font-size: 1.8rem;color: #222; margin:1rem 0 0 2rem;}
+.password_change_pop .htop h5 img {position: relative;top: 50%;left: 0;right: 0;transform: translate(0, -50%);margin: 0px 0;}
+.password_change_pop .modal-body {padding:0 2rem;}
+.password_change_pop .modal-body .pop_cont {font-size: 1.1rem;}
+.password_change_pop .pass_confirm .form_field:first-child {margin-top: 0;}
+.password_change_pop .pass_confirm .form_field {margin-top: 1rem;}
+.password_change_pop .form_control {width: 100%;}
+
 /* my_mypage_3 */
 .my .my_page_edit .authen_wrap {text-align: center; padding:5rem 0 3rem;}
 .my .my_page_edit .authen_wrap img {width: 3.4rem;}
@@ -1295,6 +1328,9 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .my_return .tbl_tarea .textarea_wrap {position: relative;}
 .my .my_return .tbl_tarea .textarea_wrap .txt_cnt {position: absolute; right: 1.5rem; bottom: 1.5rem;}
 .my .my_return .tbl_tarea .textarea_wrap textarea {resize:none; height: 15rem; width: 100%; padding:1.7rem 1.5rem;}
+.my .my_return .retrieve_box.direct input[type="number"] {width: 100%; padding:0 1rem;}
+.my .my_return .retrieve_box.direct .ship_info dt, .my .my_return .retrieve_box.direct .ship_info dd {width: 100%;}
+.my .my_return .retrieve_box.direct .ship_info dl > div:first-child dd {font-weight: 300;}
 
 /* my_exchange_optionPOP_옵션변경 팝업 */
 .container.my.btPop_open::after, .container.od.btPop_open::after {display: none;}
@@ -1343,6 +1379,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .refund_account_pop .tbl_wrap .tbl td .certi_wrap .btn {width: 8.6rem; height: 4.5rem; position: absolute; top: 0; right: 0; padding: 0; text-align: center;}
 .refund_account_pop .tbl_wrap .tbl table tr:last-child th, .refund_account_pop .tbl_wrap .tbl table tr:last-child td {padding-bottom: 0;}
 .refund_account_pop .tbl_wrap .tbl table tr:last-child th {padding-bottom: 1.5rem;}
+.refund_account_pop .btn_group_flex {margin-top: 0;}
 
 /* my_delivery_1 */
 .my .my_delivery {}
@@ -1398,6 +1435,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .myMbLeave .message .msg_tit {font-size: 1.3rem; color: #fd4802; margin-bottom: 1rem; font-weight: 500; padding-top: 1.5rem;   padding-left: 2rem;}
 .my .myMbLeave .message .msg_tit.t_err {text-indent: -2rem;}
 .my .myMbLeave .message .content {font-size: 1.3rem; padding-bottom: 1.5rem;padding-left: 2rem;color: #888888;}
+.my .myMbLeave .btn_group_flex {margin-top: 0;}
 
 
 /* my_point */
@@ -1414,7 +1452,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .have_amount dl div:first-child::before {display:none;}
 .my .have_amount dl div > * {vertical-align:top;}
 .my .have_amount dl div dt {float:left; color:#666; font-size: 1.3rem;}
-.my .have_amount dl div dt .tag {margin-top:-4px;margin-left:0.5rem;padding: 0.5rem; height:auto;}
+.my .have_amount dl div dt .tag {margin-left:0.5rem;padding: 0.5rem; height:auto;}
 .my .have_amount dl div dd {float:right; margin-left:1.0rem; color:#222; font-weight: 300;}
 .my .point .tag.primary_line {background:#fff3f2; border-color:#fd4802; color:#fd4802;border: 1px solid;font-size: 0.4rem;}
 .my .point .select_box {  width: auto;  background: #fff;position: relative;}
@@ -1467,14 +1505,14 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 
 /* popup_쿠폰사용안내 */
 .modal.couponInfo_pop {max-width:none; height:auto;}
-.modal.couponInfo_pop .modal-title {word-break:keep-all;}
+.modal.couponInfo_pop .modal-title {word-break:keep-all; line-height: 1.4;}
 .modal.couponInfo_pop .modal-body .pop_cont {line-height:1; max-height:none; padding-bottom: 2rem;}
 .modal.couponInfo_pop button span {line-height:1;}
 .modal.couponInfo_pop .form_field,
 .modal.couponInfo_pop .form_field > div {display:block; width:100%;}
 .modal.couponInfo_pop dl {font-size:14px; line-height:1;}
 .modal.couponInfo_pop dl > div:first-child {margin-top:0}
-.modal.couponInfo_pop dl > div {margin-top:20px}
+.modal.couponInfo_pop dl > div {margin-top:2rem;}
 .modal.couponInfo_pop dl > div::after {content:''; clear:both; display:block;}
 .modal.couponInfo_pop dl dt {position:relative; padding-left:1rem; color:#222; font-weight:300;}
 .modal.couponInfo_pop dl dt::before {content:''; position:absolute; left:0; top:5px; width:3px; height:3px; background:#888}
@@ -1494,7 +1532,7 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .myVoucher .have_amount dl div:first-child::before {display:none;}
 .my .myVoucher .have_amount dl div > * {vertical-align:top;}
 .my .myVoucher .have_amount dl div dt {float:left; color:#666;    font-size: 1.2rem;}
-.my .myVoucher .have_amount dl div dt .tag {margin-top:-4px;margin-left:0.5rem;padding: 0rem 0.3rem;}
+.my .myVoucher .have_amount dl div dt .tag {margin-left:0.5rem;padding: 0rem 0.3rem;}
 .my .myVoucher .have_amount dl div dd {float:right; margin-left:1.0rem; color:#222;}
 .my .myVoucher .tag.primary_line {background:#fff3f2; border-color:#fd4802; color:#fd4802;border: 1px solid;font-size: 0.4rem;}
 .my .myVoucher .select_box {  width: auto;  background: #fff;position: relative;}
@@ -1526,12 +1564,13 @@ main.container.my .inner:last-child {padding-bottom: 0;}
 .my .restock .inner.bg_gray {background: transparent;padding-bottom: 1.3rem;}
 .my .restock .announce_txt {padding:0;}
 .my .restock .announce_txt .announce_list {padding:1.6rem 0 1.6rem;}
+.my .restock .btn_group_flex  {margin-top: 1.5rem;}
 .my .restock .btn_group_flex > div > .btn {font-size: 1.4rem;}
 .my .restock .btn_group_flex > div > .btn.btn_primary {color: #ffffff;background-color: #fd4802;border-color: #fd4802;}
 .my .restock .part_goods .goods_detail .info_box .od_name .brand span{margin-bottom: 0;}
-.my .restock .restock_ready {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#222; background:url('/images/pc/ico_restock_ready.png') no-repeat 0% 29%;background-size: 1.5rem;}
-.my .restock .restock_remain {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#fd4802; background:url('/images/pc/ico_restock_remain.png') no-repeat 0% 29%;background-size: 1.5rem;}
-.my .restock  .restock_past {display:inline-block; font-size: 1.2rem; padding-left:2.0rem; margin-bottom:1.0rem; color:#888; background:url('/images/pc/ico_restock_past.png') no-repeat 0% 29%;background-size: 1.5rem;}
+.my .restock .restock_ready {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#222; background:url('/images/mo/ico_restock_ready.png') no-repeat 0% 45%;background-size: 1.1rem;}
+.my .restock .restock_remain {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#fd4802; background:url('/images/mo/ico_restock_remain.png') no-repeat 0% 45%;background-size: 1.1rem;}
+.my .restock .restock_past {display:inline-block; font-size: 1.2rem; padding-left:1.5rem; margin-bottom:1.0rem; color:#888; background:url('/images/mo/ico_restock_past.png') no-repeat 0% 45%;background-size: 1.1rem;}
 
 /* my_wishlist */
 .my .my_wishlist .wishlist {padding-top: 3rem;}
@@ -1625,11 +1664,10 @@ background-size:100%;}
 .od .part_goods .goods_status .dlvr_desc {display: inline-block; font-size: 1.3rem; color: #888; font-weight: 300;}
 
 .od .part_goods .goods_btn_wrap {margin: 1.8rem 0;}
-.od .part_goods .goods_txt {background: #f5f5f5; text-align: center; padding:1.5rem 0; margin: 1.8rem 0 0;}
+.od .part_goods .goods_txt {background: #f5f5f5; color: #666666; text-align: center; padding:1.5rem 0; margin: 1.8rem 0 0;}
 .od .part_goods .goods_txt.reserv {background: #fff6f2;}
-.od .part_goods .goods_txt span {position: relative;}
-.od .part_goods .goods_txt span:first-child {margin-right: 0.8rem; padding-right: 0.8rem; border-right:1px solid #ddd;}
-.od .part_goods .goods_txt span:first-child:after { position: absolute; top: 0; right: -1rem; width: 0.1rem; height: 1rem; background: #ddd;}
+.od .part_goods .goods_txt span {position: relative;color: #666666;}
+.od .part_goods .goods_txt span:nth-last-child(2) {margin-right: 0.8rem; padding-right: 0.8rem; color: #222222; font-weight: 400; border-right:1px solid #ddd;}
 .od .part_goods .goods_txt p {font-size: 1.1rem; font-weight: 300;}
 .od .part_goods .goods_txt .period {color: #fd4802; margin-top: 0.5rem;}
 .od .part_goods .goods_alert {text-align: center; margin-bottom: 1.8rem;}
@@ -1956,7 +1994,7 @@ background-size:100%;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .list > li {line-height:1; padding:0; border-top:1px solid #ddd;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon {padding:1.5rem; }
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .name {color:#222; font-size:1.3rem; font-weight:300;}
-.od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt {margin-top:10px; color:#888; font-size:1.1rem; font-weight:200;}
+.od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt {margin-top:1rem; color:#888; font-size:1.1rem; font-weight:200;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .txt span {font-weight:300;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .discount {margin-top:10px;  color:#fd4802; font-size:1.5rem; font-weight:300;}
 .od .area_seldiscount .dlvr_fee_box .select_custom .combo .dlvr_coupon .discount span {font-weight:500;}

Fichier diff supprimé car celui-ci est trop grand
+ 333 - 333
src/main/webapp/ux/pc/css/common.css


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

@@ -2563,7 +2563,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 
 	/***** pd_detail *****/
 	.pd_detail {}
-	.pd_detail .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; background:#f5f5f5; overflow:hidden;}
+	.pd_detail .thumb {display:block; position:relative; width:100%; height:0px; line-height:0; font-size:0; padding-top:150%; overflow:hidden;background:#f5f5f5;background: #ffffff;border: 1px solid #f5f5f5;box-sizing: border-box;}
 	.pd_detail .thumb img,
 	.pd_detail .thumb video {position:absolute; left:0; top:50%; width:100%; transform:translateY(-50%) ; z-index:2;}
 	.pd_detail .btn_popup {display:inline-block; padding:0px; box-sizing:border-box;}
@@ -3271,7 +3271,7 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist {}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul {height:50px; width:max-content;}
-	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul::after {content:''; clear:both;}
+	.modal[class*="reviewdetail_pop"] .detail .review .thumblist ul::after {content:''; clear:both; display:;}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist li {float:left; margin-right:8px;}
     .modal[class*="reviewdetail_pop"] .detail .review .thumblist li .pic {position:relative; width:50px; height:50px; cursor:pointer; z-index:2;}
 	.modal[class*="reviewdetail_pop"] .detail .review .thumblist li .pic .thumb img,
@@ -3916,7 +3916,9 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.myOrderView .tbl table td .select_custom .combo .list > li {padding:0 15px;}
 	.myOrderView .tbl table td .input_wrap {width:100%;}
 	.myOrderView .tbl table td .input_wrap textarea {width:100%; height:82px; padding:14px 15px; font-size:14px; color:#222;}
-	.myOrderView .tbl table td .input_wrap .txt_cnt {margin-top:10px}
+	.myOrderView .tbl table td .input_wrap .txt_cnt {margin-top:10px;}
+	.myOrderView .tbl.type6 {position: relative;}
+	.myOrderView .tbl.type6 table + p {position: absolute;top: auto;bottom: -25px;left: 0;right: auto;}
 	.myOrderView .retrieve_method .form_field > div {margin-right:30px}
 	.myOrderView .retrieve_method .form_field span {color:#222; font-size:16px; font-weight:200;}
 	.myOrderView .retrieve_method .form_field span em {margin-left:5px; color:#fd4802; font-size:14px;}
@@ -4576,17 +4578,19 @@ ul.maintabs li [class^='box_depth'] {display:none; position:absolute; left:100%;
 	.modal.refund_pop .modal-title {margin-top:0;}
 	.modal.refund_pop .modal-footer {margin-top:40px}
 	.modal.refund_pop .modal-footer .btn {width:255px}
-	.modal.refund_pop .modal-body .pop_cont {overflow:auto; max-height:none;}
+	.modal.refund_pop .modal-body .pop_cont {overflow:visible; position: relative; max-height:none;}
 	.modal.refund_pop .select_custom {color:#666; font-size:14px;}
 	.modal.refund_pop .select_custom .combo {min-width:300px; width:100%;}
 	.modal.refund_pop .select_custom .combo .select {padding:14px 15px; color:#666; font-size:14px;}
+	.modal.refund_pop .select_custom .combo .list {max-height: 200px;}
 	.modal.refund_pop .select_custom .combo .list > li {padding:0 15px;}
 	.modal.refund_pop table {width:470px;}
 	.modal.refund_pop table th {padding:10px 0; color:#222; font-size:14px; font-weight:500; vertical-align:top;}
 	.modal.refund_pop table th span {display:inline-block; line-height:42px;}
 	.modal.refund_pop table td {padding:10px 0;}
-	.modal.refund_pop .input_wrap .form_control {float:left; width:275px;}
-	.modal.refund_pop .input_wrap .form_control:disabled {float:none; width:100%;}
+	.modal.refund_pop .input_wrap .form_control {float:left; width:100%;}
+	.modal.refund_pop .input_wrap .form_control:disabled {}
+	.modal.refund_pop .input_wrap > *:nth-last-child(2) {width:275px;}
 	.modal.refund_pop .input_wrap .form_control + .btn.btn_sm {width:95px; height:42px; font-size:14px; font-weight:300;}
 	.modal.refund_pop .txt_info {margin-top:10px; color:#888; font-size:14px; font-weight:200;}
 	.modal.refund_pop .txt_info ul li {position:relative; padding-left:10px; margin-top:5px}

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

@@ -457,13 +457,14 @@ $(document).ready( function() {
 	$(function(){
 		/* 스크롤시 효과 */
 		$(window).scroll(function(){
+
 			var windScroll = $(window).scrollTop();
-			var miniGnbH = $('.common_header > .gnb').outerHeight();
-			var stickyTopNavH = $('.common_header > .gnb').outerHeight();
-			var navOffsetTop = $('.sticky_nav_list').offset().top - miniGnbH;
+			var miniGnbH = $('.common_header .gnb').outerHeight();
+			var stickyTopNavH = $('.common_header .gnb').outerHeight();
+			var navOffsetTop = $('.sticky_nav_list').size() ? $('.sticky_nav_list').offset().top : 0;
 			var navOffsetBottom = navOffsetTop + $('.list_content').outerHeight();
 			var arr = [];
-			
+
 			if (windScroll > navOffsetTop){
 				$('.sticky_nav_list').css('padding-top',stickyTopNavH);
 				$(".sticky_nav").addClass("sticky");

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

@@ -57,7 +57,7 @@ const _PAGE_CART = _frontUrl + "/cart/list/form";								// 장바구니
 const _PAGE_MYPAGE = _frontUrl + "/mypage/main/form";							// 마이페이지 > 메인
 const _PAGE_MYPAGE_ORDER_LIST = _frontUrl + "/mypage/order/list/form";			// 마이페이지 > 주문확인/배송조회
 const _PAGE_MYPAGE_ORDER_DETAIL = _frontUrl + "/mypage/order/detail/form/";		// 마이페이지 > 주문/배송 상세
-const _PAGE_MYPAGE_CRS_LIST = _frontUrl + "/mypage/crs/list/form";				// 마이페이지 > 취소/교환/반품 목록
+const _PAGE_MYPAGE_CRE_LIST = _frontUrl + "/mypage/cre/list/form";				// 마이페이지 > 취소/교환/반품 목록
 const _PAGE_MYPAGE_RESTOCK = _frontUrl + "/mypage/restock/form";				// 마이페이지 > 재입고 알림 내역
 const _PAGE_MYPAGE_COUPON = _frontUrl + "/mypage/coupon/form";					// 마이페이지 > 쿠폰
 const _PAGE_MYPAGE_POINT = _frontUrl + "/mypage/point/form";					// 마이페이지 > 포인트

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff