ソースを参照

취소,반품,교환 모바일 개발중

jsh77b 5 年 前
コミット
7f0aa2a536

+ 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"}));
@@ -1988,12 +1993,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;
+	}
 
 }

+ 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);

+ 255 - 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" class="on"><span>전체상태</span></button>
+				<th:block th:each="ordDtlStat , i : ${ordDtlStatList}">
+					<button type="button" 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,43 @@ $(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);
+				}
+			}
+		}
+	});
 });
 
-//주문 목록 조회
-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 +204,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>

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

@@ -1,54 +1,372 @@
 <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:if="${ordDtl.giftPackYn} == 'N'">
+						<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+						<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>
 

+ 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. 버튼기능구현

+ 25 - 12
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -170,6 +170,7 @@
 					</div>
 					<!-- //주문조회 검색 -->
 					<div class="area_list" id="orderList"></div>
+
 					<div class="sec_foot">
 						<div class="ui_row">
 							<ul class="pageNav" id="paging">
@@ -446,23 +447,29 @@
 							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') {
+						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정)
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35') {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" 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 + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+						
+						// 배송중, 출고완료, 배송완료, 구매확정
+						if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60' || ordDtl.ordDtlStat == 'G013_70') {
+							// 리뷰 쓰기 버튼
+							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 + '" 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';
+						
+						// 구매확정
+						if (ordDtl.ordDtlStat == 'G013_70') {
+							// 쇼핑백담기 버튼(구매확정)
+							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 {
 						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
-						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35') {
 							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
 						}
 
@@ -610,7 +617,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>';

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

@@ -4,54 +4,57 @@
 		<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 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>
+		
 	</div>
 	<div class="modal-footer">
 		<button type="button" class="btn btn_dark" id="btn_adrsAdd_pop"><span>배송지 추가</span></button>
@@ -59,8 +62,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 - 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;