Browse Source

Merge remote-tracking branch 'origin/jsh77b' into order

card007 5 years ago
parent
commit
d961f2b4f9

+ 12 - 4
src/main/java/com/style24/front/biz/web/TsfCommonController.java

@@ -223,8 +223,19 @@ public class TsfCommonController extends TsfBaseController {
 		
 		// 1.0 주문고객 배송지정보조회
 		Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
+		int index 				= 0;
+		int deliveryAddrCnt 	= deliveryAddrList.size();
 		
-		mav.addObject("deliveryAddrList", deliveryAddrList);	// 배송지정보
+		for (Order deliveryAddr : deliveryAddrList) {
+			if (index == 0) {
+				if (deliveryAddr.getRecipZipcode() == null || "".equals(deliveryAddr.getRecipZipcode())) {
+					deliveryAddrCnt = 0;
+				}
+			}
+		}
+		
+		mav.addObject("deliveryAddrList"	, deliveryAddrList);		// 배송지정보
+		mav.addObject("deliveryAddrCnt"		, deliveryAddrCnt);			// 배송지등록수
 		mav.setViewName(super.getDeviceViewName("popup/DelvAddrChangePop"));
 		
 		return mav;
@@ -353,9 +364,6 @@ public class TsfCommonController extends TsfBaseController {
 	public ModelAndView delvMemoChangePop(@RequestBody Order order) {
 		
 		ModelAndView mav = new ModelAndView();
-
-		log.info("ordNo >>> {}", order.getOrdNo());
-		log.info("delvMemo >>> {}", order.getDelvMemo());
 		
 		mav.addObject("ordNo", order.getOrdNo() == null ? 0 : order.getOrdNo());
 		

+ 57 - 0
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -52,6 +52,7 @@ import com.style24.persistence.domain.CustDeliveryAddr;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.GiftCard;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.MainLayout;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 import com.style24.persistence.domain.Point;
@@ -175,6 +176,10 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 주문 상태 별 수량 조회
 		mav.addObject("orderCount", coreOrderService.getOrderStatCount(order));
+		
+		// 2021.04.21 모바일에서 사용하려고 추가
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		mav.addObject("totalCnt", totalCnt);
 
 		// 주문상세상태코드 설정
 		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
@@ -2024,12 +2029,64 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	@PostMapping("/order/listInfo")
 	public ModelAndView getOrderListInfo(@RequestBody Order order) {
+		
 		// 주문목록조회
 		ModelAndView mav = new ModelAndView();
+		
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		pageable.setTotalCount(totalCnt);
+		order.setPageable(pageable);
+		
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordNoList = new ArrayList<>();
+
+		for (Order tmpOrder : orderService.getPagingOrdNoList(order)) {
+			ordNoList.add(tmpOrder.getOrdNo());
+		}
+		
+		if (ordNoList.size() > 0) {
+			order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
+		}
+				
 		mav.addObject("orderList", orderService.getOrderListForMypage(order));
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListInfo"));
 
 		return mav;
 	}
+	
+	/**
+	 * 마이페이지 주문목록 조회 (모바일)
+	 * 
+	 * @param Order
+	 * @return ModelAndView
+	 * @author jsh77b
+	 * @since 2021. 04. 19
+	 */
+	@ResponseBody
+	@PostMapping("/order/listInfo2")
+	public GagaMap getOrderListInfo2(@RequestBody Order order) {
+		
+		GagaMap result = new GagaMap();
+		
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		pageable.setTotalCount(orderService.getPagingOrdNoListCount(order));
+		order.setPageable(pageable);
+
+		result.set("paging"		, order);
+		result.set("totalCnt"	, totalCnt);
+		result.set("endRow"		, pageable.getEndRow());
+		result.set("orderList"	, orderService.getOrderListForMypage(order));
+		
+		// 주문목록조회
+		//ModelAndView mav = new ModelAndView();
+		//mav.addObject("orderList", orderService.getOrderListForMypage(order));
+		//mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListInfo"));
+
+		return result;
+	}
 
 }

+ 2 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/MypageLayoutMob.html

@@ -22,6 +22,8 @@
 		<th:block th:replace="~{mob/common/fragments/FooterMob :: footer}"></th:block>
 
 		<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
+		
+		<script th:src="@{'/biz/mypage.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/mypage.js"></script>
 
 <script th:inline="javascript">
 /*<![CDATA[*/

+ 0 - 1
src/main/webapp/WEB-INF/views/mob/goods/GoodsDetailReviewFormMob.html

@@ -577,7 +577,6 @@
 	}
 	
 	var fnDrawInfiniteScrollData = function(result, pageNum){
-
 		if (result.dataList != null && result.dataList.length > 0) {
 			var htm = fnCreateGoodsReviewList(result);
 			gagaInfiniteScroll.draw(htm);

+ 891 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html

@@ -0,0 +1,891 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypageOrderDetailFormMob.html
+ * @desc    : 마이페이지 > 주문상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.22   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="" class="container my">
+	<section class="content my_order">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd  th:text="${ordNo}"></dd>
+				</dl>
+				<a href="javascript:void(0);" class="delete" onclick="fnDeleteOrder()">주문 내역 삭제</a>
+			</div>
+		</div>
+		<div class="inner">
+			<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+				<div class="part_goods">
+					<div class="goods_top">
+						<th:block th:unless="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+						<th:block th:if="${order.giftPackYn == 'Y'}">
+							<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+						</th:block>
+						<th:block th:if="${order.allCanYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0);" id="btn_all_delete" class="delete_btn" onclick="fnAllCancel();">주문 전체 취소</a> <!-- 210409_추가 : btn_all_delete id 추가 -->
+						</th:block>
+						<!--<a href="javascript:;" id="btn_all_confirm" class="purchase_btn">전체 구매 확정</a> 전체 구매확정 버튼. --> <!-- 210409_추가 : btn_all_confirm id 추가 -->
+					</div>
+					
+					<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_status">
+								<!-- 선뭃주문 -->
+								<th:block th:if="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">주소 입력 대기중</p>
+									<p class="dlvr_staus" th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">선물 완료</p>
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
+								</th:block>
+								<!-- //선뭃주문 -->
+								<!-- 일반주문 -->
+								<th:block th:unless="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+								</th:block>
+								<!-- //일반주문 -->
+							</div>
+							<div class="goods_detail">
+								<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+								<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+														
+								<a href="javascript:void(0);" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${ordDtl.brandNm}"></span>
+												<div class="badge_wrap">
+													<span class="brand" th:text="${ordDtl.brandNm}"></span>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="order_badge" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="order_badge" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${ordDtl.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<!-- 세트상품 -->
+												<th:block th:if="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${option}"></em>
+														<em th:text="${ordDtl.optCd2Arr[status.index]}"></em>
+													</th:block>
+												</th:block>
+												<!-- //세트상품 -->
+												<!-- 일반상품 -->
+												<th:block th:unless="${ordDtl.goodsType == 'G056_S'}">
+													<th:block th:each="option, status : ${ordDtl.colorNmArr}">
+														<em th:text="${ordDtl.colorNm}"></em>
+														<em th:text="${ordDtl.optCd2}"></em>
+													</th:block>
+												</th:block>
+												<!-- //일반상품 -->
+											</div>
+										</div>
+										<div class="od_calc">
+											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
+											<p class="sale_price">
+												<del>
+													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</em>원
+												</del>
+											</p>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+												<span class="count">
+													<em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 일반주문 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+									</div>
+								</th:block>
+								<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+								
+								<!-- 배송준비중-->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								</th:block>
+								<!-- //배송준비중-->
+								
+								<!-- 배송중 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+									<!-- 교환가능, 반품가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+										<div class="goods_btn_wrap btn_group_flex">
+											<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+											</th:block>
+											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+												<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+											</th:block>
+										</div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+									
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //배송중 (교환가능, 반품가능) -->
+								
+								<!-- 배송완료 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환가능, 반품가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+										</th:block>
+										<!-- //교환가능, 반품가능 -->
+										
+										<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><span>구매 확정</span></button></div>
+									</div>
+									<div class="goods_btn_wrap btn_group_flex">
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+											<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+										
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //배송완료 (교환가능, 반품가능) -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+										
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</div>
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							<!-- //일반주문 -->
+							<!-- 선물주문 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<div><button type="button" class="btn btn_primary btn_sms_send"><span>SMS 재발송</span></button></div>
+								</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'">
+									<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+								</th:block>
+								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							</th:block>
+							<!-- //선물주문 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_alert">
+									<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+										<!-- 교환불가능, 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능, 반품불가능 -->
+										
+										<!-- 교환불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능 -->
+										
+										<!-- 반품불가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //반품불가능 -->
+										
+									</th:block>
+									<!-- //배송중, 배송완료 상태 -->
+								</div>
+								
+								<!-- 주문접수 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //주문접수 -->
+								
+								<!-- 결제완료, 예약배송상품 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+									</th:block>
+								</th:block>
+								<!-- //결제완료, 예약배송상품 -->
+								
+								<!-- 상품준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //상품준비중 -->
+								
+								<!-- 배송준비중 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+										<th:block th:if="${ordDtl.delvResDt} != null">
+											<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //배송준비중 -->
+								
+								<!-- 배송완료 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+									</div>
+								</th:block>
+								<!-- //배송완료 -->
+								
+								<!-- 구매확정 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div class="goods_txt">
+											<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+										</div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+								<!-- //구매확정 -->
+							</th:block>
+							
+							<!-- 선물배송일때 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_txt">
+									<!-- 배송지등록전 -->
+									<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+										<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
+										<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+									</th:block>
+									<!-- //배송지등록전 -->
+									
+									<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+										<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+											<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
+										</th:block>
+									</th:block>
+									<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									
+									<!-- 선물 취소 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+										<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+									</th:block>
+									<!-- //선물 취소 -->
+								</div>
+							</th:block>
+							<!-- //선물배송일때 -->
+							<!-- //주문상태별 문구정보 정의 -->
+							
+							<!-- 사은품 영역 -->
+							<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+								<div class="goods_gift">
+									<div class="gift_wrap">
+										<div class="title">사은품</div>
+										<div class="li_gift">
+											<ul>
+												<th:block th:each="freeGift , j : ${order.freeGiftList}">
+													<li>
+														<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+														<th:block th:if="${freeGift.usePoint} > 0">
+															<span class="deduct_p" th:text="|(-${freeGift.usePoint.addComma()}P)|"></span>
+														</th:block>
+													</li>
+												</th:block>
+											</ul>
+										</div>
+									</div>
+								</div>
+							</th:block>
+							<!-- //사은품 영역 -->
+						</div>
+					</th:block>
+				</div>
+				<input type="hidden" name="accountNo" 	th:value="${order.oneData.accountNo}"/>
+				<input type="hidden" name="accountNm" 	th:value="${order.oneData.accountNm}"/>
+				<input type="hidden" name="bankCd" 		th:value="${order.oneData.bankCd}"/>
+				<input type="hidden" name="delvMemo" 	th:value="${deliveryAddrInfo.delvMemo}"/>
+			</th:block>
+		</div>
+		
+		<!-- 무통장입금정보 -->
+		<th:block th:if="${paymentInfo.payMeans == 'G014_20'}">
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>무통장 입금 정보</h3>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="107">
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<th>은행명/명의자</th>
+								<td><div><span th:text="${paymentInfo.vaBank}"></span>/<span th:text="|(${paymentInfo.vaNm})|"></span></div></td>
+							</tr>
+							<tr>
+								<th>계좌번호</th>
+								<td><div><span th:text="${paymentInfo.vaNo}"></span></div></td>
+							</tr>
+							<tr>
+								<th>입금기한</th>
+								<td><div><span th:text="${paymentInfo.vaDeadlineYmd}"></span><span th:text="${paymentInfo.vaDeadlineHms}"></span> 까지</div></td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<!-- //무통장입금정보 -->
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup customerfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span >주문고객</span></div>
+											<span class="fold_txt" th:text="${orderInfo.ordNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="customer_info">
+									<dl>
+										<div>
+											<dt><span class="sr-only">주문자명</span></dt>
+											<dd th:text="${orderInfo.ordNm}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">이메일</span></dt>
+											<dd th:text="${orderInfo.ordEmail}"></dd>
+										</div>
+										<div>
+											<dt><span class="sr-only">휴대폰 번호</span></dt>
+											<dd th:text="${orderInfo.ordPhnno}"></dd>
+										</div>
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		
+		<div class="inner wide">
+			<!-- 폴딩리스트 -->
+			<div class="ui_row">
+				<div class="foldGroup shipfold">
+					<ul>
+						<li>
+							<div class="fold_head">
+								<a href="javascript:void(0)">
+									<div>
+										<div class="fold_tit">
+											<div class="lap2"><span>배송지 정보</span></div>
+											<span class="fold_txt recipNm" th:text="${deliveryAddrInfo.recipNm}"></span>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="fold_cont">
+								<div class="ship_info ship_edit">
+									<!--  배송비정보변경가능 -->
+									<th:block th:if="${allCanYn == 'Y'}">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup">
+											<span>배송지 변경</span>
+										</button>
+									</th:block>
+									<!--  //배송비정보변경가능 -->
+									<dl>
+										<div class="company">
+											<dt><span class="sr-only">배송지명</span></dt>
+											<dd>
+												<span th:text="${deliveryAddrInfo.recipNm}" id="recipNm"></span>
+												<div class="badge_wrap">
+													<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
+														<em class="order_badge defaultYn">기본 배송지</em>
+													</th:block>
+													<em class="order_badge order_bullet_badge" style="display:none">총알배송</em>
+												</div>
+											</dd>
+										</div>
+										<div class="addr">
+											<dt><span class="sr-only">배송주소</span></dt>
+											<dd th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|" id="recipAddr"></dd>
+										</div>
+										<div class="phone">
+											<dt><span class="sr-only">휴대폰 번호</span></dt>
+											<dd th:text="${deliveryAddrInfo.recipPhnno}" id="recipPhnno"></dd>
+										</div>
+										<!--  배송메모정보변경가능 -->
+										<th:block th:if="${allCanYn == 'Y'}">
+											<div class="ship_request ship_select">
+												<span>배송요청 사항</span>
+												<div class="ship_option">
+													<div class="form_field">
+														<div class="select_custom delivery_list"> <!-- 비활성화시 disabled 추가 -->
+															<div class="combo">
+																<div class="select" th:text="${deliveryAddrInfo.delvMemo}">선택</div>
+																<ul class="list">
+																	<li>문 앞</li> 
+																	<li>직접 받고 부재 시 문 앞</li>
+																	<li>경비실</li> 
+																	<li>택배함</li>
+																	<li class="select_etc">기타사항</li>
+																</ul>
+															</div>
+														</div>
+													</div>
+												</div>
+											</div>
+											<div class="ship_etc">
+												<div class="form_text etc">
+													<input type="text" name="delvMemoText" placeholder="보관 장소만 입력 (필수)" maxlength="30" disabled>
+													<p class="desc_txt">보관 장소 외 다른 내용 입력시 통보 없이 삭제 될 수 있습니다.</p>
+												</div>
+											</div>
+										</th:block>
+										<!--  //배송메모정보변경가능 -->
+										<!--  배송메모정보변경불가 -->
+										<th:block th:unless="${allCanYn == 'Y'}">
+											<div class="ship_request">
+												<dt>배송요청 사항</dt>
+												<dd th:text="${deliveryAddrInfo.delvMemo}"></dd>
+											</div>
+										</th:block>
+										<!--  //배송메모정보변경불가 -->
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		
+		<th:block th:if="${orderInfo.giftPackYn} == 'Y'">
+			<div class="inner">
+				<div class="gift_wrap">
+					<h3>선물 받으실 분</h3>
+					<div class="gift_con">
+						<div class="gift_info">
+							<span th:text="${orderInfo.recipNm}"></span> / <span th:text="${orderInfo.recipPhnno}"></span>
+						</div>
+						<div class="message">
+							<p class="gift_tit">선물 메세지</p>
+							<div class="content">
+								<p th:text="${orderInfo.giftMsg}" id="giftMsg"></p>
+							</div> 
+						</div>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		
+		<div class="inner">
+			<div class="tbl_wrap pay_wrap">
+				<div class="tbl_tit"> 
+					<h3>결제 정보</h3>
+					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</strong>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl>
+									<div>
+										<dt>총주문금액(상품금액+배송비)</dt>
+										<dd><div><span th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></span>원</div></dd>
+									</div>
+									<th:block th:if="${orderAmtInfo.cpn1DcAmt} > 0">
+										<div>
+											<dt>상품할인(즉시할인)</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cpn1DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.tmtb1DcAmt} + ${orderAmtInfo.tmtb2DcAmt} > 0">
+										<div>
+											<dt>다다익선 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.tmtb1DcAmt + orderAmtInfo.tmtb2DcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.cartCpnDcAmt} + ${orderAmtInfo.goodsCpnDcAmt} + ${orderAmtInfo.delvCpnDcAmt} > 0">
+										<div>
+											<dt>쿠폰할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.cartCpnDcAmt + orderAmtInfo.goodsCpnDcAmt + orderAmtInfo.delvCpnDcAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.prePntDcAmt} > 0">
+										<div>
+											<dt>선 포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.prePntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.pntDcAmt} > 0">
+										<div>
+											<dt>포인트 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.pntDcAmt, 1, 'COMMA')}|"></span>P</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.gfcdUseAmt} > 0">
+										<div>
+											<dt>상품권 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.gfcdUseAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.npayPntAmt} > 0">
+										<div>
+											<dt>마일리지 사용</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.npayPntAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${paymentInfo.pgCpnAmt} > 0">
+										<div>
+											<dt>제휴 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(paymentInfo.pgCpnAmt, 1, 'COMMA')}|"></span>원</div></dd>
+										</div>
+									</th:block>
+									<th:block th:if="${orderAmtInfo.savePntAmt} > 0">
+										<div>
+											<dt>적립예정 포인트</dt>
+											<dd><div><span th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}P|">3000</span>P</div></dd>
+										</div>
+									</th:block>
+									<div>
+										<dt>결제수단</dt>
+										<dd>
+											<div>
+												<span th:if="${paymentInfo.pgGb == 'NAVER'}">네이버 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오 페이</span>
+												<span th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_10'}">실시간계좌이체</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_20'}">무통장입금</span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" th:text="|${paymentInfo.cardNm}/${paymentInfo.cardMips}|"></span>
+												<span th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_60'}">휴대폰결제</span>
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</table>
+					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and paymentInfo.payMeans == 'G014_30'}" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
+					<button type="button" class="btn btn_default btn_sm" th:if="${paymentInfo.pgGb == 'KCP' and not #strings.isEmpty(paymentInfo.cashAuthNo) and (paymentInfo.payMeans == 'G014_10' or paymentInfo.payMeans == 'G014_20')}" onclick="fnReceipt('cash')"><span>현금 영수증</span></button>
+					<!-- 
+					<button type="button" class="btn btn_default btn_sm" th:if="${orderAmtInfo.gfcdUseAmt > 0 and #strings.isEmpty(paymentInfo.cashAuthNo)}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><span>상품권 현금 영수증 신청</span></button>
+					 -->
+				</div>
+				<!-- 210415_ 추가 : 결제정보 안내 텍스트 추가 -->
+				<p class="txt_ref">NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+			</div>
+			<div class="btn_group btn_group_flex">
+				<div>
+					<button type="button" class="btn btn_dark"><span>확인</span></button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let giftMsg				= [[${orderInfo.giftMsg}]];		// 선물메세지
+	let ordNo 				= [[${ordNo}]];
+	var isLogin 			= [[${isLogin}]];
+	let orderList 			= [[${orderList}]];
+	let oneData 			= [[${oneData}]];
+	let paymentInfo 		= [[${paymentInfo}]];
+	let orderAmtInfo 		= [[${orderAmtInfo}]];
+	let deliveryAddrInfo 	= [[${deliveryAddrInfo}]];
+	let kcpReceiptUrl 		= [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let jsonObj 			= {};
+	let delvMemo			= [[${deliveryAddrInfo.delvMemo}]];
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(1);
+		
+		// 마이페이지 location 설정
+		fnSetMypageLocation('주문확인/배송조회', '_PAGE_MYPAGE_ORDER_LIST', '주문상세');
+		
+		// 선물메시지
+		if ($("#giftMsg").html() != null) {
+			$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+		}
+		
+		// 2021.04.22 배송지정보수정
+		var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
+		var tempMemo = true;
+		
+		$(".ship_request .ship_option .delivery_list ul li").removeClass("selected");
+		
+		// 배송요청사항설정
+		for (i=0 ; i<delvMemoArr.length ; i++) {
+			if (delvMemoArr[i] == delvMemo) {
+				tempMemo = false;
+			}
+		}
+
+		// 배송메모설정
+		$(".ship_request .ship_option .delivery_list ul li").each(function(){
+			if (delvMemo == $(this).text()) {
+				$(this).addClass("selected");
+			}
+		});
+		
+		if (tempMemo) {
+			$(".ship_request .ship_option .delivery_list .select").text("기타사항");
+			$("input[name=delvMemoText]").attr("disabled", false);
+			$("input[name=delvMemoText]").val(delvMemo);
+			$(".ship_request .ship_option .delivery_list ul li").eq(4).addClass("selected");
+		}
+		
+		// 콤보박스 
+		var od_delivery_list = new sCombo('.ship_request .ship_option .delivery_list');
+		
+		// 210405_배송요청 사항 기타사항 selected시 기타사항 input 구현
+		$(".ship_request .ship_option .delivery_list ul li").on("click", function(){
+			if ($(".ship_request .ship_option .delivery_list ul .select_etc").hasClass("selected")){
+				$(".ship_etc").show();
+			} else {
+				$(".ship_etc").hide();
+			}
+		});
+	});
+	
+	// 전체취소 버튼 클릭 이벤트
+	var fnAllCancel = function() {
+		// 환불계좌 체크
+		let accountNo = $('#orderDetailForm input[name=accountNo]').val();
+		let accountNm = $('#orderDetailForm input[name=accountNm]').val();
+		let bankCd = $('#orderDetailForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+			
+			let jsonData = JSON.stringify(data);
+			
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/popup/form',
+				data		: jsonData,
+				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) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+			
+			return false;
+		}
+
+		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				// 취소요청 데이터 설정
+				let url = '/mypage/cancel';
+				
+				// 주문상세번호 설정
+				let ordDtlNoArr = [];
+				$.each($('#orderDetailForm input[name=ordDtlNoArr]'), function(idx, item) {
+					ordDtlNoArr.push($(item).val());
+				});
+				
+				// 취소 수량 설정
+				let cnclRtnReqQtyArr = [];
+				$.each($('#orderDetailForm input[name=cnclRtnReqQtyArr]'), function(idx, item) {
+					cnclRtnReqQtyArr.push($(item).val());
+				});
+				
+				// 전체 취소 처리
+				let data = {};
+				data.ordNo = ordNo;
+				data.chgReason = 'G686_10';
+				data.chgReasonNm = '고객변심';
+				data.accountNo = accountNo;
+				data.accountNm = accountNm;
+				data.bankCd = bankCd;
+				data.isCustomer = 'Y';
+				data.reqGbn = 'cnclComplete';
+				data.ordDtlNoArr = ordDtlNoArr;
+				data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
+				
+				let jsonData = JSON.stringify(data);
+				
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+				});
+			}
+		});
+	}
+
+	// 배송지 정보 설정
+	var delvAddrSet = function(delvObj) {
+		let delvAddrSq = deliveryAddrInfo.delvAddrSq;
+		let recipNm = delvObj.recipNm;
+		let recipPhnno = delvObj.recipPhnno;
+		let recipZipcode = delvObj.recipZipcode;
+		let recipBaseAddr = delvObj.recipBaseAddr;
+		let recipDtlAddr = delvObj.recipDtlAddr;
+		let delvMemo = delvObj.delvMemo;
+		
+		$('#recipNm').text(recipNm);
+		$('#recipPhnno').text(recipPhnno);
+		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+		$('#delvMemo').text(delvMemo);
+		
+		let url = '/mypage/change/delvery/addr';
+		let data = {};
+		data.delvAddrSq = delvAddrSq;
+		data.recipNm = recipNm;
+		data.recipPhnno = recipPhnno;
+		data.recipZipcode = recipZipcode;
+		data.recipBaseAddr = recipBaseAddr;
+		data.recipDtlAddr = recipDtlAddr;
+		data.delvMemo = delvMemo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		})
+	}
+	
+	// 배송메모 설정
+	var delvMemoSet = function(delvMemoObj) {
+		let url = '/mypage/change/delvery/memo';
+		let delvMemo = delvMemoObj.delvMemo;
+
+		let data = {};
+		data.delvMemo = delvMemo;
+		data.delvAddrSq = oneData.delvAddrSq;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		})
+
+		$("#delvMemo").text(delvMemo);
+	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#orderDetailForm input[name=accountNo]').val(result.accountNo);
+		$('#orderDetailForm input[name=accountNm]').val(result.accountNm);
+		$('#orderDetailForm input[name=bankCd]').val(result.bankCd);
+		
+		// 반품처리
+		fnReturn();
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 268 - 19
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -16,37 +16,134 @@
 <body>
 
 <th:block layout:fragment="content">
+
+<!-- 주문목록조회 -->
+<form id="searchForm" name="searchForm">
+	<input type="hidden" name="pageNo" 		value=1 />
+	<input type="hidden" name="pageSize" 	value=5 />
+	<input type="hidden" name="pageUnit" 	value=10 />
+	<input type="hidden" name="ordDtlStat" 	value="" />
+	<input type="hidden" name="stDate" 		value="" />
+	<input type="hidden" name="edDate" 		value="" />
+	<input type="hidden" name="custNo" 		th:value ="${customerInfo.custNo}"/>
+</form>
+<!-- //주문목록조회 -->
+
+<!-- 교환상세 -->
+<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/exchange/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<!-- //교환상세 -->
+
+<!-- 반품상세 -->
+<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/return/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<!-- //반품상세 -->
+
+<!-- 취소상세 -->
+<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<!-- //취소상세 -->
+
 <main role="" id="" class="container my">
 	<section class="content my_order">
 		<div class="inner">
 			<div class="order_sort">
-				<a href="javascript:;" class="od_date_btn">최근 1개월</a>
-				<a href="javascript:;" class="od_status_btn">전체</a>
+				<a href="javascript:void(0);" class="od_date_btn">최근 3개월</a>
+				<a href="javascript:void(0);" class="od_status_btn">전체</a>
 			</div>
 		</div>
 		
 		<!-- 주문목록 -->
-		<div class="area_list" id="orderList">
-		</div>
-		<!-- //주문목록 -->
-		
-		
+		<div data-id="layer_infinite_item" >
+			<section id="infiniteContainer">
+				<div id="listBoxOuter">
+					<div class="area_list" id="listBox">
+					</div>
+				</div>
+			</section>
+ 		</div>
+ 		
 	</section>
 </main>
-<!-- 210408_분류 팝업 추가 -->
 
-<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<!-- 기간 선택 팝업 -->
+<div id="odDatePop" class="popup_box odDatePop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">기간 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" onclick="fnSetSearchPeriod(1);" period="1"><span>최근 1개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(3);" period="3"><span>최근 3개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(6);" period="6"><span>최근 6개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(9);" period="9"><span>최근 9개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(12);" period="12"><span>최근 12개월</span></button>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //기간 선택 팝업 -->
+<!-- 주문상태 선택 팝업 -->
+<div id="odStatusPop" class="popup_box odStatusPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">주문상태 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" code="" class="ordDtlStat on"><span>전체상태</span></button>
+				<th:block th:each="ordDtlStat , i : ${ordDtlStatList}">
+					<button type="button" class="ordDtlStat" th:code="${ordDtlStat.cd}"><span th:text="${ordDtlStat.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //주문상태 선택 팝업 -->
+
+<!-- <script src="/ux/plugins/jquery/jquery.history.min.js"></script> -->
+<!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
+<!-- <script src="/ux/plugins/gaga/gaga.paging.js"></script> -->
+
 <script th:inline="javascript">
 // 변수설정
 var custNo 			= [[${customerInfo.custNo}]];
+var totalCnt		= [[${totalCnt}]];
+var totalPage		= 0;
+var remainList		= 0;
 var jsonObj 		= {};
+var scrollTemp		= true;
 
 // 초기설정
 $(document).ready(function() {
 	
+	// 전체페이지 구하기
+	totalPage 	= parseInt(totalCnt / 10);
+	remainList 	= totalCnt % 10; 
+	
+	// 나머지가 있으면 전체 페이지 + 1
+	if (remainList > 0) {
+		totalPage = totalPage + 1;
+	}
+	
+	// 인피니티스크롤 초기화
+	//fnGoodsReviewInfiniteScrollInit();
+	
 	// AJAX 로드를 위한 변수 설정
 	jsonObj = {
-		"pageNo" 			: 1
+		"pageNo" 			: 0
 		, "pageSize" 		: 5
 		, "pageUnit" 		: 10
 		, "ordDtlStat" 		: ""
@@ -56,21 +153,56 @@ $(document).ready(function() {
 	}
 	// AJAX 변수 설정
 	jsonData = JSON.stringify(jsonObj);
-
-	// 초기주문목로조회
-	fnSearchOrderList(1);
 	
+	// 초기 3개월 조회
+	fnSetSearchPeriod(3);
+	
+	var win = $(window);
+	 
+	// Each time the user scrolls
+	win.scroll(function() {
+		// End of the document reached?
+		if ($(document).height() - win.height() == win.scrollTop()) {
+			if (scrollTemp) {
+				var tempPage 	= parseInt($("#searchForm input[name=pageNo]").val());
+				tempPage 		= tempPage + 1;
+				
+				if (totalPage > tempPage) {
+					scrollTemp = false;
+					fnGetInfiniteScrollDataList(tempPage);
+				}
+			}
+		}
+	});
+	
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
+		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
+		jsonObj.ordDtlStat = $(this).attr('code');
+		
+		// 상태값 명칭
+		var ordDtlStatNm = $(this).find("span").text();
+		$(".container .my_order .od_status_btn").text(ordDtlStatNm);
+		
+		// 초기화설정
+		fnGetInfiniteScrollDataList(0);
+	});
 });
 
-//주문 목록 조회
-var fnSearchOrderList = function(pageNo) {
-	alert(pageNo);
-	
+// 주문 목록 조회
+var fnGetInfiniteScrollDataList = function(pageNo) {
+
+	// 페이지번호가 없으면 1페이지 설정
 	if (pageNo == null) {
 		pageNo = 1;
 	}
 	
+	// 페이지설정
+	$("#searchForm input[name=pageNo]").val(pageNo);
+	
 	jsonObj.pageNo = pageNo;
+	jsonObj.stDate = $("#searchForm input[name=stDate]").val();
+	jsonObj.edDate = $("#searchForm input[name=edDate]").val();
 	
 	$.ajax( {
 		type		: "POST",
@@ -85,17 +217,134 @@ var fnSearchOrderList = function(pageNo) {
 		},
 		success 	: function(result) {
 			if (result != null) {
-				$("#orderList").css("display", "block");
-				$("#orderList").append(result);
+				$("#listBox").css("display", "block");
+				$("#listBox").append(result);
+				
+				scrollTemp = true;
+				
+				// 인피니티 스크롤 기억기능
+				//gagaInfiniteScroll.draw(result);
+				//gagaInfiniteScroll.draw('not');
+				
 			}
 		}
 	});
+	
+	//$("#searchForm input[name=pageNo]").val(pageNo+1);
+	//gagajf.ajaxFormSubmit("/mypage/order/listInfo2", document.searchForm,  gagaInfiniteScroll.jsonToHtml);
+}
+
+//검색기간 버튼 클릭 이벤트 처리
+var fnSetSearchPeriod = function(period) {
+	let date 		= new Date();
+	let edDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+	date.setMonth(date.getMonth() - period);
+	let stDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+
+	$('#searchForm input[name=edDate]').val(edDate);
+	$('#searchForm input[name=stDate]').val(stDate);
+	
+	// 리헷
+	$("#listBox").html("");
+	
+	// 초기화설정
+	fnGetInfiniteScrollDataList(0);
+	
+	$("#odDatePop .popup_con button").removeClass("on");
+	
+	// 기간설정
+	$("#odDatePop .popup_con button").each(function() {
+		var tempPeriod = $(this).attr("period");
+		if (tempPeriod == period) {
+			$(this).addClass("on");
+			
+			// 텍스트설정
+			var periodStr = $(this).find("span").text();
+			$(".container .my_order .od_date_btn").text(periodStr);
+		}
+	});
+}
+
+// 2021.04.21 인피니티 스크롤 기능 구현전 추후 수정
+// 인피니트 스크롤 초기화
+/*
+var fnGoodsReviewInfiniteScrollInit = function(){
+	// sessionStorage.removeItem(document.location.href);
+	History.replaceState(null, null);
+	gagaInfiniteScroll.pageStatus = {
+			  pageNum 			: []      // [0,1,2...] 로드된 페이지 (Array)
+			, loadPage 			: 0      // 로드할 페이지
+			, loadAlign 		: 'not' // 로드 상태(prev, next, not)
+			, historyScroll 	: 0 //
+			, nowPage 			: null    // 현재 페이지
+			, pageUrl 			: {       // page url
+				
+			}
+	}
+	
+	//History 초기화
+	$("#listBox").html("");
+}
+
+var fnDrawInfiniteScrollData = function (result){
+	let totalCnt 								= result.totalCnt;
+	gagaInfiniteScroll.pageStatus.totalCount 	= result.totalCnt;
+	
+	var htm = fnCreateGoodsList(result);
+	gagaInfiniteScroll.draw(htm);
 }
 
+$(function() { gagaInfiniteScroll.getHistory(); });
+*/
+</script>
 
+<!-- 210408_스크립트 추가 -->
+<script>
+	$(document).ready(function(){
+		$(document).on('click','.popup_box .button_list button',function(){
+			$('.popup_box .button_list button').removeClass('on');
+			$(this).addClass('on');
+		})
+	});
 
+	//기간 선택 팝업
+	$(document).on("click", ".order_sort .od_date_btn", function(){
+		$('#odDatePop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
 
+	//주문상태 선택 팝업
+	$(document).on("click", ".order_sort .od_status_btn", function(){
+		$('#odStatusPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
+
+	//팝업_닫기
+	$('.popup_close').on("click",function(){
+		$('.popup_box').hide().removeClass('active');
+		$("body").css({"overflow":"visible"});
+	});
+
+	/* 210409_추가 : alert 모음 */
+	$(document).on("click", "#btn_purchase_confirm", function(){
+		mcxDialog.confirm("구매확정 후에는 반품/교환이 불가합니다. 구매확정하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",  // Confirmation button text
+			sureBtnClick: function() {  // Confirm button click callback
+				alert("9,999P가 적립되었습니다.");
+			}
+		});
+	});
+
+	$(document).on("click", "#btn_sms_alert", function(){
+		mcxDialog.alert("SMS로 선물내역을 다시 전송하였습니다.", { 
+				//alert("선물하기 SMS를 조금 전 다시 발송하였습니다. 잠시 후 다시 시도해주세요."); : SMS 발송한지 10분이 지나지 않았을 경우
+			sureBtnText: "닫기",  
+		});
+	});
+	/* //210409_추가 : alert 모음 */
 </script>
+<!-- //210408_스크립트 추가 -->
 </th:block>
 </body>
 </html>

+ 359 - 40
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -1,54 +1,373 @@
 <div class="inner">
 	<div class="part_goods">
-		<div class="goods_top">
-			<div class="goods_date">주문일<span class="date">2020.10.25</span></div>
-			<a href="javascript:;" class="detail_btn">상세보기</a>
-		</div>
 		
-		<!-- 주문 접수 -->
-		<div class="goods_section">
-			<div class="goods_status">
-				<p class="dlvr_staus">주문 접수</p>
+		<th:block th:each="order , i : ${orderList}">
+			<div class="goods_top">
+				<th:block th:if="${order.giftPackYn} == 'Y'">
+					<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+				</th:block>
+				<th:block th:if="${order.giftPackYn} == 'N'">
+					<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+				</th:block>
+				<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this)">상세보기</a>
 			</div>
-			<div class="goods_detail">
-				<a href="">
-					<div class="thumb_box">
-						<img src="/images/mo/thumb/tmp_pdClickother1.jpg" alt="tmp_pdClickother1">
+			
+			<th:block th:each="ordDtl , j : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+				<!-- 주문 접수 -->
+				<div class="goods_section">
+					<div class="goods_status">
+						<!-- 선물배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+							<div class="goods_txt">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<p class="dlvr_staus">주소 입력 대기 중</p>
+								</th:block>
+								<!-- //배송지등록전 -->
+								
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<p class="dlvr_staus">선물 완료</p>
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								
+								<!-- 선물 취소 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+									<p class="dlvr_staus">선물 취소</p>
+								</th:block>
+								<!-- //선물 취소 -->
+							</div>
+						</th:block>
+						<!-- //선물배송일때 -->
+						
+						<!-- 일반배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+							<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+						</th:block>
+						<!-- //일반배송일때 -->
+					</div>
+					<div class="goods_detail">
+						<a href="">
+							<div class="thumb_box">
+								<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" src="/" width="100%" alt="">
+							</div>
+							<div class="info_box">
+								<div class="od_name">
+									<div class="brand">
+										<span th:text="${ordDtl.brandNm}"></span>
+										<div class="badge_wrap">
+											<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
+												<em class="order_badge order_bullet_badge">총알배송</em>
+											</th:block>
+											<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
+												<em class="order_badge">STYLE24 일반배송</em>
+											</th:block>
+											<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
+												<em class="order_badge">업체직배송</em>
+											</th:block>
+										</div>
+									</div>
+									<div class="name" th:text="${ordDtl.goodsNm}"></div>
+								</div>
+								<div class="od_opt">
+									<div class="option" th:each="colorNm, index : ${ordDtl.colorNmArr}">
+										<em th:text="${colorNm}"></em>
+										<em th:text="${ordDtl.optCd2Arr[index.index]}"></em>
+									</div>
+								</div>
+								<div class="od_calc">
+									<!-- 판매금액과 할인금액이 같으면 표시 안함 -->
+									<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt} - ${ordDtl.cpn1DcAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
+										<p class="sale_price">
+											<del>
+												<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원
+											</del>
+										</p>
+									</th:block>
+									<p class="price">
+										<span class="selling_price">
+											<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+										</span>
+										<span class="count">
+											<em th:text="${ordDtl.ordQty} - ${ordDtl.cnclRtnQty}"></em>개
+										</span>
+									</p>
+								</div>
+							</div>
+						</a>
 					</div>
-					<div class="info_box">
-						<div class="od_name">
-							<div class="brand">
-								<span>Mollimelli 몰리멜리</span>
-								<div class="badge_wrap">
-									<em class="order_badge">STYLE24 일반배송</em>
-									<em class="order_badge order_bullet_badge">총알배송</em>
+					
+					<!-- 버튼기능정리 -->
+					<!-- 일반배송 -->
+					<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+						<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+							<div class="goods_btn_wrap btn_group_flex">
+								<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+							</div>
+						</th:block>
+						<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+						
+						<!-- 배송준비중-->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+						</th:block>
+						<!-- //배송준비중-->
+						
+						<!-- 배송중 (교환가능, 반품가능) -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
+							<!-- 교환가능, 반품가능 -->
+							<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+								<div class="goods_btn_wrap btn_group_flex">
+									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+									</th:block>
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+									</th:block>
 								</div>
+							</th:block>
+							<!-- //교환가능, 반품가능 -->
+							
+							<!-- 리뷰사용가능, 리뷰등록전일때 -->
+							<div class="goods_btn_wrap btn_group_flex">
+								<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+								<!-- 리뷰사용가능, 리뷰등록전일때 -->
+								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+								</th:block>
+								<!-- //리뷰사용가능, 리뷰등록전일때 -->
+							</div>
+							<!-- //리뷰사용가능, 리뷰등록전일때 -->
+						</th:block>
+						<!-- //배송중 (교환가능, 반품가능) -->
+							
+						<!-- 배송완료 (교환가능, 반품가능) -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+							<div class="goods_btn_wrap btn_group_flex">
+								<!-- 교환가능, 반품가능 -->
+								<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+									<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+								</th:block>
+								<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+									<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+								</th:block>
+								<!-- //교환가능, 반품가능 -->
+								
+								<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><span>구매 확정</span></button></div>
 							</div>
-							<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</div>
+							<div class="goods_btn_wrap btn_group_flex">
+								<!-- 교환불가, 반품불가 -->
+								<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+									<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+								</th:block>
+								<!-- //교환불가, 반품불가 -->
+								
+								<!-- 리뷰사용가능, 리뷰등록전일때 -->
+								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+								</th:block>
+								<!-- //리뷰사용가능, 리뷰등록전일때 -->
+							</div>
+						</th:block>
+						<!-- //배송완료 (교환가능, 반품가능) -->
+						
+						<!-- 구매확정 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+							<div class="goods_btn_wrap btn_group_flex">
+								<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+								<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+								
+								<!-- 리뷰사용가능, 리뷰등록전일때 -->
+								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+								</th:block>
+								<!-- //리뷰사용가능, 리뷰등록전일때 -->
+							</div>
+						</th:block>
+						<!-- //구매확정 -->
+					</th:block>
+					
+					<!--  선물배송 -->
+					<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+						<!-- 선물배송, 배송미입력 -->
+						<div class="goods_btn_wrap btn_group_flex">
+							<!-- 배송지등록전 -->
+							<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+								<div><button type="button" class="btn btn_primary btn_sms_send"><span>SMS 재발송</span></button></div>
+							</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'">
+								<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+							</th:block>
+							<!-- //배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+							
+							<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+								<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+									<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</th:block>
+							</th:block>
+							<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+						</div>
+					</th:block>
+					<!-- //선물배송 -->
+					<!-- //버튼기능정리 -->
+					
+					<!-- 상태문구정리 -->
+					<!-- 일반배송일때 -->
+					<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+						<div class="goods_alert">
+							<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+								<!-- 교환불가능, 반품불가능 -->
+								<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+									<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+								</th:block>
+								<!-- //교환불가능, 반품불가능 -->
+								
+								<!-- 교환불가능 -->
+								<th:block th:if="${ordDtl.changeableYn} == 'N'">
+									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+								</th:block>
+								<!-- //교환불가능 -->
+								
+								<!-- 반품불가능 -->
+								<th:block th:if="${ordDtl.returnableYn} == 'N'">
+									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+								</th:block>
+								<!-- //반품불가능 -->
+								
+							</th:block>
+							<!-- //배송중, 배송완료 상태 -->
 						</div>
-						<div class="od_opt">
-							<div class="option">
-								<em>Black</em><em>XXL</em>
+						
+						<!-- 주문접수 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+								<th:block th:if="${ordDtl.delvResDt} != null">
+									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+								</th:block>
 							</div>
+						</th:block>
+						<!-- //주문접수 -->
+						
+						<!-- 결제완료, 예약배송상품 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
+							<th:block th:if="${ordDtl.delvResDt} != null">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+								</div>
+							</th:block>
+						</th:block>
+						<!-- //결제완료, 예약배송상품 -->
+						
+						<!-- 상품준비중 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+								<th:block th:if="${ordDtl.delvResDt} != null">
+									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+								</th:block>
+							</div>
+						</th:block>
+						<!-- //상품준비중 -->
+						
+						<!-- 배송준비중 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+								<th:block th:if="${ordDtl.delvResDt} != null">
+									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+								</th:block>
+							</div>
+						</th:block>
+						<!-- //배송준비중 -->
+						
+						<!-- 배송완료 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+							</div>
+						</th:block>
+						<!-- //배송완료 -->
+						
+						<!-- 구매확정 -->
+						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+							<!-- 리뷰사용가능, 리뷰등록전일때 -->
+							<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+								</div>
+							</th:block>
+							<!-- //리뷰사용가능, 리뷰등록전일때 -->
+						</th:block>
+						<!-- //구매확정 -->
+					</th:block>
+					<!-- //일반배송일때 -->
+					
+					<!-- 선물배송일때 -->
+					<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+						<div class="goods_txt">
+							<!-- 배송지등록전 -->
+							<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+								<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
+								<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+							</th:block>
+							<!-- //배송지등록전 -->
+							
+							<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+								<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+									<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
+								</th:block>
+							</th:block>
+							<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							
+							<!-- 선물 취소 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+								<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+							</th:block>
+							<!-- //선물 취소 -->
 						</div>
-						<div class="od_calc">
-							<p class="sale_price"><del><em>95,000</em>원</del></p>
-							<p class="price">
-								<span class="selling_price"><em>61,200</em>원</span>
-								<span class="count"><em>99</em>개</span>
-							</p>
+					</th:block>
+					<!-- //선물배송일때 -->
+					<!-- //상태문구정리 -->
+					
+					<!-- 사은품 영역 -->
+					<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+						<div class="goods_gift">
+							<div class="gift_wrap">
+								<div class="title">사은품</div>
+								<div class="li_gift">
+									<ul>
+										<th:block th:each="freeGift , j : ${order.freeGiftList}">
+											<li>
+												<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+												<th:block th:if="${freeGift.usePoint} > 0">
+													<span class="deduct_p" th:text="|(-${freeGift.usePoint.addComma()}P)|"></span>
+												</th:block>
+											</li>
+										</th:block>
+									</ul>
+								</div>
+							</div>
 						</div>
-					</div>
-				</a>
-			</div>
-			<div class="goods_btn_wrap btn_group_flex">
-				<div><button type="button" class="btn btn_default"><span>주문 취소</span></button></div>
-			</div>
-			<div class="goods_txt">
-				<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
-			</div>
-		</div>
-		<!-- //주문 접수 -->
+					</th:block>
+					<!-- //사은품 영역 -->
+				</div>
+				<!-- //주문 접수 -->
+			</th:block>
+		</th:block>
 	</div>
 </div>
 

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

@@ -341,8 +341,11 @@ var giftMsg			= [[${orderInfo.giftMsg}]];		// 선물메세지
 
 //컨텐츠 호출
 $(document).ready( function() {
+	
 	// 선물메시지
-	$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+	if ($("#giftMsg").html() != null) {
+		$("#giftMsg").html(giftMsg.replaceAll("\n", "</br>"));
+	}
 });
 
 // 2.1 회원 배송지변경 팝업열기

+ 4 - 4
src/main/webapp/WEB-INF/views/mob/order/OrderDeliveryAddrInfoMob.html

@@ -49,7 +49,7 @@
 								<th:block th:text="${deliveryAddrInfo.recipNm}"></th:block> 
 								<span class="icon_tag"> 
 									<th:block th:if="${deliveryAddrInfo.defaultYn} == 'Y'">
-										<em class="tag_stype1">기본배송지</em> 
+										<em class="tag_stype1 defaultYn">기본배송지</em> 
 									</th:block>
 									<em class="tag_stype2 shotDelv" style="display:none">총알배송</em>
 								</span>
@@ -116,6 +116,9 @@ var deliveryAddrInfoDispYn = function(temp) {
 
 //컨텐츠 호출
 $(document).ready( function() {
+	// 화면펼침
+	deliveryAddrInfoDispYn(dispYn);
+	
 	var delvMemoArr = ["문 앞", "직접 받고 부재 시 문 앞", "경비실", "택배함"];
 	var tempMemo = true;
 	
@@ -143,9 +146,6 @@ $(document).ready( function() {
 		$(".ship_etc").show();
 	}
 	
-	// 화면펼침
-	deliveryAddrInfoDispYn(dispYn);
-	
 	// 콤보박스 
 	var od_delivery_list = new sCombo('#orderForm .ship_select .select_custom.delivery_list');
 	

+ 73 - 48
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrChangePopMob.html

@@ -4,59 +4,63 @@
 		<h5 class="modal-title" id="adrsChangeLabel">배송지 관리</h5>
 	</div>
 	<div class="modal-body">
-		<div class="pop_cont">
-			<div class="inner wide">
-				<div class="delivery_list">
-					<!-- 배송지목록 -->
-					<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
-						<div class="ship_info">
-							<dl>
-								<div class="name">
-									<dt><span class="sr-only">배송지명</span></dt>
-									<dd>
-										<th:block th:text="${deliveryAddr.recipNm}"></th:block>
-										<div class="badge_wrap">
-											<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
-												<em class="order_badge">기본배송지</em> 
-											</th:block>
-											<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
-												<em class="order_badge order_bullet_badge">총알배송</em>
-											</th:block>
-										</div>
-									</dd>
+		<th:block th:if="${deliveryAddrList != null and #lists.size(deliveryAddrList) > 0}">
+			<div class="pop_cont">
+				<div class="inner wide">
+					<div class="delivery_list">
+						<!-- 배송지목록 -->
+						<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
+							<div class="ship_info">
+								<dl>
+									<div class="name">
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd>
+											<th:block th:text="${deliveryAddr.recipNm}"></th:block>
+											<div class="badge_wrap">
+												<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
+													<em class="order_badge">기본배송지</em> 
+												</th:block>
+												<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
+													<em class="order_badge order_bullet_badge">총알배송</em>
+												</th:block>
+											</div>
+										</dd>
+									</div>
+									<div class="phone">
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddr.recipPhnno}"></dd>
+									</div>
+									<div class="addr">
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
+									</div>
+									<div class="ship_request">
+										<dl>
+											<dt>배송요청 사항</dt>
+											<dd th:text="${deliveryAddr.delvMemo}"></dd>
+										</dl>
+									</div>
+								</dl>
+								<div class="btn_group btn_group_flex">
+									<div><button type="button" class="btn btn_gost btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}" id="btn_addrModify_pop"><span>수정</span></button></div>
+									<div><button type="button" class="btn btn_dark btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button></div>
 								</div>
-								<div class="phone">
-									<dt><span class="sr-only">휴대폰 번호</span></dt>
-									<dd th:text="${deliveryAddr.recipPhnno}"></dd>
-								</div>
-								<div class="addr">
-									<dt><span class="sr-only">배송주소</span></dt>
-									<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
-								</div>
-								<div class="ship_request">
-									<dl>
-										<dt>배송요청 사항</dt>
-										<dd th:text="${deliveryAddr.delvMemo}"></dd>
-									</dl>
-								</div>
-							</dl>
-							<div class="btn_group btn_group_flex">
-								<div><button type="button" class="btn btn_gost btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}" id="btn_addrModify_pop"><span>수정</span></button></div>
-								<div><button type="button" class="btn btn_dark btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button></div>
+								
+								<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
+								<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
+								<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
+								<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
+								<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
+								<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
 							</div>
-							
-							<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
-							<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
-							<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
-							<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
-							<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
-							<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
-						</div>
-					</th:block>
+						</th:block>
+					</div>
 				</div>
 			</div>
-		</div>
+		</th:block>
 	</div>
+	
+	
 	<div class="modal-footer">
 		<button type="button" class="btn btn_dark" id="btn_adrsAdd_pop">
 			<span>배송지 추가</span>
@@ -65,8 +69,29 @@
 </form>
 
 <script th:inline="javascript">
+var deliveryAddrCnt = [[${deliveryAddrCnt}]];
+
 //컨텐츠 호출
 $(document).ready( function() {
+	// 목록이없으면 등록화면 이동
+	if (parseInt(deliveryAddrCnt) < 1) {
+		$.ajax( {
+			type		: "POST",
+			url 		: '/common/delvAddrAddPop',
+			data		: JSON.stringify(jsonObj),
+			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) {
+				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+				$("#adrsAddPop").modal("show");
+			}
+		});	
+	}
 });
 
 // 2. 버튼기능구현

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

@@ -610,7 +610,13 @@
 					tag += '									<span class="title">사은품</span>';
 					tag += '									<ul>';
 					$.each(order.freeGiftList, function(index, freeGift) {
-						tag += '										<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+						// 2021.04.20 무료 사은품일때 - 처리 삭제
+						if (freeGift.usePoint > 0) {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+						} else {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span></li>';
+						}
+						
 					});
 					tag += '									</ul>';
 					tag += '								</div>';

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

@@ -36,7 +36,7 @@
 	<div class="area_receiveinfo">
 		<dl>
 			<div>
-				<dt><span>배송지명</span></dt>
+				<dt><span class="sr-only">배송지명</span></dt>
 				<dd>
 					<th:block th:text="${deliveryAddrInfo.recipNm}"></th:block>
 					<span class="icon_tag"> 
@@ -48,7 +48,7 @@
 				</dd>
 			</div>
 			<div>
-				<dt><span>배송주소</span></dt>
+				<dt><span class="sr-only">배송주소</span></dt>
 				<dd>
 					<th:block th:text="${deliveryAddrInfo.recipBaseAddr} + '    ' + ${deliveryAddrInfo.recipDtlAddr}"></th:block>
 					<button type="button" class="btn btn_default btn_sm" id="btn_adrsChange_pop">
@@ -57,11 +57,11 @@
 				</dd>
 			</div>
 			<div>
-				<dt><span>휴대폰 번호</span></dt>
+				<dt><span class="sr-only">휴대폰 번호</span></dt>
 				<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
 			</div>
 			<div>
-				<dt>배송요청 사항</dt>
+				<dt class="sr-only">배송요청 사항</dt>
 				<dd>
 					<span th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></span>
 					<button type="button" class="btn_underline" id="btn_rqstModify_pop">

+ 2 - 2
src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html

@@ -1872,7 +1872,7 @@ var gfcdUseAmtReset = function() {
 }
 
 // 1.17 쿠폰할인금액합계설정(금액전체계산)
-var custCpnSumAmtCal = function() {
+var custCpnSumAmtCal = function() {	
 	var cpnDcSumAmt 		= 0;
 	var cpnApplyCnt 		= 0;
 	var goodsCartCpnSumAmt 	= 0;
@@ -1908,7 +1908,7 @@ var custCpnSumAmtCal = function() {
 	// 배송비할인적용
 	$("input[name='cpnType']").each(function(){
 		if ($(this).val() == "delvCpn") {
-			var delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
+			delvSumAmt = parseInt(orgSumDelvFee) - parseInt($(this).parent().find("input[name='cpnDcAmt']").val());
 			
 			// 최종배송비
 			$("#delvSumAmt").text(delvSumAmt.addComma() + " 원");

+ 65 - 48
src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html

@@ -4,54 +4,50 @@
 		<h5 class="modal-title" id="adrsChangeLabel">배송지 선택</h5>
 	</div>
 	<div class="modal-body">
-		<div class="pop_cont">
-			<ul>
-				<!-- 배송지목록 -->
-				<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
-					<li>
-						<div class="adrs_box">
-							<dl>
-								<div>
-									<dt><span class="sr-only">배송지명</span></dt>
-									<dd>
-										<th:block th:text="${deliveryAddr.recipNm}"></th:block>
-										<span class="icon_tag">
-											<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
-												<em class="tag">기본 배송지</em>
-											</th:block>
-											<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
-												<em class="tag primary_line">총알배송</em>
-											</th:block>
-										</span>
-									</dd>
-								</div>
-								<div>
-									<dt><span class="sr-only">휴대폰 번호</span></dt>
-									<dd th:text="${deliveryAddr.recipPhnno}"></dd>
-								</div>
-								<div>
-									<dt><span class="sr-only">배송주소</span></dt>
-									<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
-								</div>
-								<div>
-									<dt>배송요청 사항&nbsp;:&nbsp;</dt>
-									<dd th:text="${deliveryAddr.delvMemo}"></dd>
-								</div>
-							</dl>
-							<button type="button" class="btn btn_default btn_sm btn_addrModify_pop" th:value="${deliveryAddr.custDelvAddrSq}"><span>수정</span></button>
-							<button type="button" class="btn btn_dark btn_sm btn_sel_delvAddr" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button>
-							
-							<input type="hidden" name="recipNm" 			th:value="${deliveryAddr.recipNm}"/>
-							<input type="hidden" name="recipPhnno" 			th:value="${deliveryAddr.recipPhnno}"/>
-							<input type="hidden" name="recipZipcode" 		th:value="${deliveryAddr.recipZipcode}"/>
-							<input type="hidden" name="recipBaseAddr" 		th:value="${deliveryAddr.recipBaseAddr}"/>
-							<input type="hidden" name="recipDtlAddr" 		th:value="${deliveryAddr.recipDtlAddr}"/>
-							<input type="hidden" name="delvMemo" 			th:value="${deliveryAddr.delvMemo}"/>
-						</div>
-					</li>
-				</th:block>
-			</ul>
-		</div>
+		<th:block th:if="${deliveryAddrList != null and #lists.size(deliveryAddrList) > 0}">
+			<div class="pop_cont">
+				<ul>
+					<!-- 배송지목록 -->
+					<th:block th:each="deliveryAddr, index : ${deliveryAddrList}">
+						<li>
+							<div class="adrs_box">
+								<dl>
+									<div>
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd>
+											<th:block th:text="${deliveryAddr.recipNm}"></th:block>
+											<span class="icon_tag">
+												<th:block th:if="${deliveryAddr.defaultYn} == 'Y'">
+													<em class="tag">기본 배송지</em>
+												</th:block>
+												<th:block th:if="${deliveryAddr.shotDelvUseYn} == 'Y'">
+													<em class="tag primary_line">총알배송</em>
+												</th:block>
+											</span>
+										</dd>
+									</div>
+									<div>
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddr.recipPhnno}"></dd>
+									</div>
+									<div>
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd th:text="${deliveryAddr.recipBaseAddr} + ' ' + ${deliveryAddr.recipDtlAddr}"></dd>
+									</div>
+									<div>
+										<dt>배송요청 사항&nbsp;:&nbsp;</dt>
+										<dd th:text="${deliveryAddr.delvMemo}"></dd>
+									</div>
+								</dl>
+								<button class="btn btn_default btn_sm btn_addrModify_pop" id="btn_adrsModify_pop" th:value="${deliveryAddr.custDelvAddrSq}"><span>수정</span></button>
+								<button class="btn btn_dark btn_sm btn_sel_delvAddr" id="" th:value="${deliveryAddr.custDelvAddrSq}"><span>선택</span></button>
+							</div>
+						</li>
+					</th:block>
+				</ul>
+			</div>
+		</th:block>
+		
 	</div>
 	<div class="modal-footer">
 		<button type="button" class="btn btn_dark" id="btn_adrsAdd_pop"><span>배송지 추가</span></button>
@@ -59,8 +55,29 @@
 </form>
 
 <script th:inline="javascript">
+var deliveryAddrCnt = [[${deliveryAddrCnt}]];
+
 //컨텐츠 호출
 $(document).ready( function() {
+	// 목록이없으면 등록화면 이동
+	if (parseInt(deliveryAddrCnt) < 1) {
+		$.ajax( {
+			type		: "POST",
+			url 		: '/common/delvAddrAddPop',
+			data		: JSON.stringify(jsonObj),
+			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) {
+				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+				$("#adrsAddPop").modal("show");
+			}
+		});
+	}
 });
 
 // 2. 버튼기능구현

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

@@ -1997,7 +1997,7 @@ button.alertCls {-webkit-appearance: none;padding: 0;cursor: pointer;background:
 .app-only .guidance:after{content: '';position: absolute;top: 0;bottom: 15px;left: 10px;width: 100%;height: 100%;z-index: -1;}
 .app-only .guidance{
     box-shadow: 0 0px 30px rgb(0 0 0 / 20%), 0 0px 30px rgb(0 0 0 / 20%);
-	/* 마스크 미사용
+	/* 마스크 미사용 
 	mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
     -webkit-mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white), linear-gradient(white, white);
 	mask-size: 100% 0%, 2vh 2vh, calc(100% - 1.9vh) 100%, 100% calc(100% - 1.9vh);

+ 9 - 3
src/main/webapp/ux/mo/css/layout_m.css

@@ -853,8 +853,14 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .dp .Bulletship_body{padding:0 2rem;}
 .dp .Bulletship_foot{padding:0 2rem;}
 /* 210420 */
-.app .gnb{background-color:#222222; z-index:99;}
+.app .gnb{background-color:#222222; position:relative; z-index:79;}
 .app .gnb .btn-expand::before{background: linear-gradient(90deg, rgba(0,0,0,0) 0%, #222222 100%);}
+/* 210421 */
+header .subs .dp_list_btn_gnbs {position: absolute;top: 0px;right: -2.0rem;width: 3.5rem;height: 4.5rem;z-index: 10;}
+header .subs .dp_list_btn_gnbs span i {display: block;position: absolute;left: 0;width: 100%;height: 100%;-webkit-transition: all 0.5s ease-out;transition: all 0.5s ease-out;}
+header .subs .dp_list_btn_gnbs span {display: block;width: 24px;height: 24px;margin: 0 auto;position: relative;}
+header .subs .dp_list_btn_gnbs span i {background: url(/images/mo/ico_btn_more.png) no-repeat;background-size: 1.3rem 0.733rem;background-position: 50% 50%;}
+header .subs .dp_list_btn_gnbs.on span i {transform: rotate(-180deg);-webkit-transform: rotate(-180deg);}
 
 
 
@@ -1934,7 +1940,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .filter_list .form_field div label span{color:#222!important;}
 .filter_list .form_field input[type="checkbox"] + label:before{left:auto; right:0}
 .filter_list .form_field input[type="checkbox"]:checked + label:after{left:auto; right:0}
-.filter_top{position: absolute; left:0; top:0; width:100%; padding:0 2rem; height:5rem; line-height:5rem; z-index:2;}
+.filter_top{position: absolute; left:0; top:0; width:100%; padding:0 2rem; height:5rem; line-height:5rem; z-index:10000;}
 .filter_top:after{content:''; display:block; clear:both;}
 .filter_top > div:nth-child(1){float:left;}
 .filter_top > div:nth-child(2){float:right;}
@@ -2147,7 +2153,7 @@ header .htop.trans{position:absolute; background:transparent !important;}
 .br .pnb_mo > ul > li > a{font-size:1.6rem; color:#686868; font-weight:500; padding:0 1.2rem;}
 .br .pnb_mo > ul > li > a.on{color:#fff}
 .br .pnb_mo > button{background:url(/images/mo/ico_btn_expand.png) center top/1.8rem 2.0rem no-repeat; width:3.8rem; height:1.9rem; background-color:red; text-indent:-9999px; position:absolute; z-index:9; top:1.6rem; right:0; background-color:#222222;}
-.pnb_mo.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0); position:fixed; top:0; width:100%; z-index:999;}
+.pnb_mo.fixed{-webkit-transform: translate(0, 0);-ms-transform: translate(0, 0);-moz-transform: translate(0, 0);transform: translate(0, 0); position:fixed; top:0; width:100%; z-index:79;}
 .br_main{background-color:#fff;}
 /* br_main *
 /* br_main - 메인배너&info */

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

@@ -694,6 +694,7 @@ main.container .inner h2[data-style~="unusual"] {font-size:2.0rem;top: 0;positio
 .modal.pop_full .modal-body {padding:0 2rem;}
 .modal.pop_full a.close-modal {background: url('/images/mo/ico_pop_cls.png') no-repeat center/100%; width: 1.6rem; height: 1.6rem;}
 .modal.photo_comment_popup {background: #f5f5f5; overflow:hidden; position: fixed; left: 0; top: 0;}
+.modal.photo_comment_popup:-webkit-full-screen {display: block;}
 .modal.photo_comment_popup .modal-dialog, .modal.photo_comment_popup .modal-content {height: 100%;}
 .modal.photo_comment_popup .modal-body {padding: 0 0; margin:0; height: 100%;}
 .modal.photo_comment_popup .modal-body .pop_cont {max-height:none; height: 100vh; height: calc(var(--vh, 1vh) * 100); overflow:hidden; position: relative; padding-bottom: 13rem; padding-top: 5.2rem;}
@@ -2096,8 +2097,8 @@ background-size:100%;}
 .od .paymentinfo .payinfo_blk a::after {clear:both; display:block; width:100%;}
 .od .paymentinfo .payinfo_blk a span {float:right; position:relative; padding-right:22px; color:#222; font-size:14px; text-indent: -999em;}
 .od .paymentinfo .payinfo_blk a span::after {content:''; position:absolute; right:0; top:2px; width:11px; height:9px; background:url('/images/pc/ico_mb_arrow.png') no-repeat 0% 100%; background-size:100% auto;}
-.od .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#888; font-size:14px; line-height:26px; overflow-y:scroll;}
-.od .paymentinfo .payinfo_blk.on {background:#f5f5f5;}
+.od .paymentinfo .payinfo_blk .infotxt {display:none; max-height:190px; margin-top:20px; color:#222; font-size:1.2rem; line-height:1.4; overflow-y:scroll;}
+.od .paymentinfo .payinfo_blk.on {background:#fff;}
 .od .paymentinfo .payinfo_blk.on a span::after {top:3px; transform:rotate(-180deg);}
 .od .paymentinfo .payinfo_blk.on .infotxt {display:block; margin:0px 1.9rem 1.9rem;}
 .od .area_paymentinfo .agree_payment {margin:4rem 0 4.8rem; color:#222; font-size:1.4rem; font-weight:200; text-align:center;}
@@ -2106,10 +2107,10 @@ background-size:100%;}
 
 .odPayment .infotxt table {word-break:keep-all;margin-top: 1.0rem;margin-bottom: 1.0rem;width: 100%;border-top: 1px solid #dddddd;}
 .odPayment .infotxt table th,
-.odPayment .infotxt table td {position:relative; padding:1.0rem 1.0rem; font-size:1.3rem;line-height: 1.4;color: #222222;letter-spacing:-0.025em;}
+.odPayment .infotxt table td {position:relative; padding:1.0rem 1.0rem; font-size:1.1rem;line-height: 1.4;color: #666;letter-spacing:-0.025em;}
 .odPayment .infotxt table td {border-bottom:1px solid #ddd;border-right: 1px solid #ddd;font-weight:200;}
 .odPayment .infotxt table td:last-child {border-right: 1px solid transparent;}
-.odPayment .infotxt table th {border-top: 0;border-bottom:1px solid #ddd;border-right:1px solid #ddd;font-weight: 400;text-align: center;background: #f5f5f5;}
+.odPayment .infotxt table th {border-top: 0;border-bottom:1px solid #ddd;border-right:1px solid #ddd;font-weight: 400;text-align: center;background: #fff; color:#666;}
 
 .od .extra_pay {padding:0px 30px 40px; margin-bottom: 20px; border-top:1px solid #222; border-bottom:1px solid #ddd;}
 .od .extra_pay .tit_pay {padding:30px 0px; line-height:1; font-size:24px; font-weight:500;}
@@ -2456,7 +2457,7 @@ main.container .od_gift .inner:last-child {padding-bottom: 0;}
 .od_gift .gift_banner.timeout dl dt, .od_gift .gift_banner.timeout dl dd {display: inline-block;}
 
 .od .gift_tab .tab_cont {background: #fff; padding:2.4rem 2rem;}
-.od .gift_tab .input_wrap {display: block;}
+.od .gift_tab .input_wrap {display: block; margin-bottom: 1rem;}
 .od .gift_tab .input_wrap .form_control {width: 100%; float:none;}
 .od .od_gift .gift_tab .desc_txt {margin:1rem 0 2.4rem;}
 .od .od_gift .gift_tab .tabIndex li {flex:1;}

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

@@ -63,6 +63,7 @@ var gagaInfiniteScroll = {
 	},
 	scrollCheck : function() {
 		var obj = this.obj, stat = this.pageStatus;
+		alert("aaaaa");
 		if ($('[data-id="layer_infinite"]').scrollTop() + $('[data-id="layer_infinite"]').height() >= $('[data-id="layer_infinite_item"]').height() ) { // 더보기
 			if (stat.loadAlign == 'not') {
 				var pageLen = this.pageStatus.pageNum.length - 1;