Преглед на файлове

마이페이지 주문확인 임시 커밋

card007 преди 5 години
родител
ревизия
c9ad3b5ffe

+ 32 - 26
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -1,11 +1,7 @@
 package com.style24.front.biz.service;
 
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -31,8 +27,6 @@ import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 
-import com.gagaframework.web.parameter.GagaMap;
-
 /**
  * 주문 Service
  *
@@ -59,35 +53,47 @@ public class TsfOrderService {
 	private TscNaverPayService coreNaverPayService;
 
 	/**
-	 * 마이페이지 검색 기간 영역 설정
+	 * 마이페이지 주문 정보 조회
 	 *
-	 * @return int[]
+	 * @param Order
 	 * @author card007
-	 * @since 2021. 02. 08
+	 * @since 2021. 02. 04
 	 */
-	public String[] getSearchPeriod() {
-		String[] period = new String[6];
+	public Collection<GagaMap> getOrderListForMypage(Order order) {
+		int ordNo = 0;
+		int index = 0;
+		Collection<GagaMap> orderList = new ArrayList<>();
+		Collection<Order> ordDtlList = new ArrayList<>();
 
-		Calendar cal = Calendar.getInstance();
-		cal.setTime(new Date());
-		DateFormat df = new SimpleDateFormat("MM");
+		for (Order tmpOrder : orderDao.getOrderListForMypage(order)) {
+			if (index > 0 && ordNo != tmpOrder.getOrdNo()) {
+				orderList.add(setOrderMap(ordDtlList));
 
-		for (int i = 5; i > -1; i--) {
-			period[i] = df.format(cal.getTime()) + "월";
-			cal.add(Calendar.MONTH, -1);
+				ordDtlList = new ArrayList<>();
+			} else {
+				ordDtlList.add(tmpOrder);
+			}
+
+			ordNo = tmpOrder.getOrdNo();
+			index++;
 		}
+
+		orderList.add(setOrderMap(ordDtlList));
 		
-		return period; 
+		return orderList;
+	}
+	
+	private GagaMap setOrderMap(Collection<Order> ordDtlList) {
+		GagaMap map = new GagaMap();
+		map.set("giftPackYn", ordDtlList.iterator().next().getGiftPackYn());
+		map.set("ordNo", ordDtlList.iterator().next().getOrdNo());
+		map.set("ordDt", ordDtlList.iterator().next().getOrdDt());
+		map.set("ordDtlList", ordDtlList);
+
+		return map;
 	}
 
-	/**
-	 * 마이페이지 주문 정보 조회
-	 *
-	 * @param Order
-	 * @author card007
-	 * @since 2021. 02. 04
-	 */
-	public Collection<GagaMap> getOrderListForMypage(Order order) {
+	public Collection<GagaMap> getOrderListForMypageBak(Order order) {
 		Collection<GagaMap> mapList = new ArrayList<>();
 		Collection<GagaMap> orderList = new ArrayList<>();
 		List<Order> ordDtlList = new ArrayList<>();

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

@@ -4,7 +4,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -142,8 +141,8 @@ public class TsfMypageController extends TsfBaseController {
 		// 주문 상태 별 수량 조회
 		mav.addObject("orderCount", orderService.getOrderStatCount(order));
 
-		// 검색기간 설정
-		mav.addObject("searchPeriod", orderService.getSearchPeriod());
+		// 주문상세상태코드 설정
+		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G059", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
 
 		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListForm"));
 

+ 5 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -31,6 +31,7 @@
 		     , OD.ORD_EXCH_GB
 		     , OD.GOODS_CD
 		     , G.GOODS_NM
+		     , G.LIST_PRICE
 		     , ODI.OPT_CD
 		     , ODI.OPT_CD1
 		     , ODI.OPT_CD2
@@ -38,6 +39,7 @@
 		     , OD.ORD_DTL_STAT
 		     , OD.ORD_QTY
 		     , OD.ORD_AMT
+		     , OD.REAL_ORD_AMT
 		     , OD.SAVE_PNT_AMT
 		     , OD.SHIP_COMP_CD
 		     , OD.GIFT_PACK_YN
@@ -48,10 +50,13 @@
 		     , OD.SUPPLY_COMP_CD
 		     , OD.DELV_FEE_CD
 		     , OD.SHOT_DELV_YN
+		     , OD.CHANGABLE_YN
+		     , OD.RETURNABLE_YN
 		     , G.SELF_GOODS_YN
 		     , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)						AS BRAND_NM
 		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)						AS ORD_DTL_STAT_NM
 		     , R.REVIEW_SQ
+		     , IF(NOW() <![CDATA[<]]> O.ORD_DT + INTERVAL 90 DAY, 'Y', 'N')	AS REVIEWABLE_YN
 		     , TIMESTAMPDIFF(DAY, NOW(), OD.DELV_EDDT + INTERVAL 2 WEEK)	AS PURCHASE_CONFIRM_DAY
 		     , DA.RECIP_NM
 		     , DA.RECIP_TELNO

+ 171 - 8
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -31,9 +31,46 @@
 		<input type="hidden" name="ordNo"/>
 		<input type="hidden" name="ordDtlNoArr"/>
 	</form>
-	<div class="my_cont">
+	<div class="cont">
 		<div class="sec_head">
-			<h3 class="mem_name"><strong th:text="${customerInfo.custNm}"></strong>님 반갑습니다.</h3>
+			<div class="my_information">
+				<div class="name_box">
+					<strong th:text="${customerInfo.custNm}"></strong>님 반갑습니다.
+				</div>
+				<div class="property_box">
+					<div class="level lv_vip"> <!-- 레벨별 클래스명 : VIP (lv_vip) / GOLD (lv_gold) / SILVER (lv_silver) / BRONZE (lv_bronze) / WELCOME (lv_welcome) -->
+					<div th:class="|level lv_${#strings.toLowerCase(customerInfo.custGradeNm)}|"></div>
+						<span class="txt" th:text="${customerInfo.custGradeNm}"></span>
+						<div class="btn_level">
+							<a href="javascript:void(0);" onclick="fnGoToCustomerBenefit();">등급혜택 보기</a>
+							<button type="button" id="btn_lv_coupon" onclick="fnDownloadCoupon();"><span>등급쿠폰 받기</span></button>
+						</div>
+					</div>
+					<div class="property">
+						<ul>
+							<li>
+								<div>
+									<p class="txt">보유쿠폰 / 만료예정</p>
+									<p class="count"><span id="couponCnt" th:text="${couponCnt}"></span>장 / <span id="expiredSoonCouponCnt" th:text="|${expiredSoonCouponCnt}|"></span>장</p>
+								</div>
+							</li>
+							<li>
+								<div>
+									<p class="txt">STYLE24 포인트</p>
+									<p class="count"><span th:text="${#numbers.formatInteger(rmPntAmt, 1, 'COMMA')}"></span>P</p>
+								</div>
+							</li>
+							<li>
+								<div>
+									<p class="txt">상품권</p>
+									<p class="count"><span th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></span>원</p>
+								</div>
+							</li>
+						</ul>
+					</div>
+				</div>
+			</div>
+			<!--<h3 class="mem_name"><strong th:text="${customerInfo.custNm}"></strong>님 반갑습니다.</h3>
 			<div class="mem_info clear">
 				<div class="mem_rank">
 					<div th:class="|rank_icon ${#strings.toLowerCase(customerInfo.custGradeNm)}|" th:text="${#strings.substring(customerInfo.custGradeNm, 0, 1)}"></div>
@@ -57,10 +94,123 @@
 						<a href="#pop"><span class="big_txt" th:text="${#numbers.formatInteger(rmGfcdAmt, 1, 'COMMA')}"></span>원</a>
 					</div>
 				</div>
+			</div>-->
+		</div>
+		<div class="my_order_progress">
+			<div class="progress">
+				<ul>
+					<li>
+						<div>
+							<p class="txt">주문접수</p>
+							<p class="count"><span id="orderReceiptCount" th:text="${orderCount.orderReceiptCount}">0</span></p>
+						</div>
+					</li>
+					<li>
+						<div>
+							<p class="txt">결제완료</p>
+							<p class="count"><span id="paymentCompleteCount" th:text="${orderCount.paymentCompleteCount}">0</span></p>
+						</div>
+					</li>
+					<li>
+						<div>
+							<p class="txt">상품 준비 중</p>
+							<p class="count"><span id="goodsPrepareCount" th:text="${orderCount.goodsPrepareCount}">0</span></p>
+						</div>
+					</li>
+					<li>
+						<div>
+							<p class="txt">배송 준비 중</p>
+							<p class="count"><span id="shipPrepareCount" th:text="${orderCount.shipPrepareCount}">0</span></p>
+						</div>
+					</li>
+					<li>
+						<div>
+							<p class="txt">배송 중</p>
+							<p class="count"><span id="shippingCount" th:text="${orderCount.shippingCount}">0</span></p>
+						</div>
+					</li>
+					<li>
+						<div>
+							<p class="txt">배송 완료</p>
+							<p class="count"><span id="shipCompleteCount" th:text="${orderCount.shipCompleteCount}">0</span></p>
+						</div>
+					</li>
+				</ul>
+			</div>
+			<div class="invalid">
+				<p class="txt">취소/교환/반품</p>
+				<p class="count"><span id="orderCrsCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
+			</div>
+		</div>
+		<div class="sec_body">
+			<h3 class="subH2 mb40">주문확인/배송조회</h3>
+			<!-- 주문조회 검색 -->
+			<div class="area_filter">
+				<div class="select_month_box">
+					<div class="form_field">
+						<div>
+							<input type="radio" name="rdi-month" id="rdi-month1" onclick="fnSetSearchPeriod(1);">
+							<label for="rdi-month1"><span>최근 1개월</span></label>
+						</div>
+						<div>
+							<input type="radio" name="rdi-month" id="rdi-month2" onclick="fnSetSearchPeriod(3);">
+							<label for="rdi-month2"><span>최근 3개월</span></label>
+						</div>
+						<div>
+							<input type="radio" name="rdi-month" id="rdi-month3" onclick="fnSetSearchPeriod(6);">
+							<label for="rdi-month3"><span>최근 6개월</span></label>
+						</div>
+					</div>
+				</div>
+				<div class="select_period_box">
+					<form class="form_wrap">
+						<div class="form_field">
+							<label class="input_label sr-only">선택기간 시작</label>
+							<div class="input_wrap">
+								<input type="text" class="form_control period_datepicker hasDatepicker" name="stDate" value="" id="stDate" onchange="fnCheckPeriod(this);">
+							</div>
+						</div>
+						<div class="form_field">
+							<label class="input_label sr-only">선택기간 끝</label>
+							<div class="input_wrap">
+								<input type="text" class="form_control period_datepicker hasDatepicker" name="edDate" value="" id="edDate" onchange="fnCheckPeriod(this);">
+							</div>
+						</div>
+						<button type="button" class="btn btn_dark btn_sm" onclick="fnSearchOrderList();"><span>조회</span></button>
+					</form>
+				</div>
+				<div class="select_status_box">
+					<form class="form_wrap">
+						<div class="form_field">
+							<div class="select_custom order_status">
+								<div class="combo">
+									<input type="hidden" name="ordDtlStat" value=""/>
+									<div class="select">전체상태</div>
+									<ul class="list">
+										<li class="selected" value="" onclick="fnChangeOrdDtlStat(this);">전체상태</li>
+										<li th:if="${ordDtlStatList}" th:each="oneData, status : ${ordDtlStatList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeOrdDtlStat(this);"></li>
+										<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+										<!--<li class="selected">전체상태</li>
+										<li>주문접수</li>
+										<li>결제완료</li>
+										<li>상품준비중</li>
+										<li>배송준비중</li>
+										<li>배송중</li>
+										<li>배송완료</li>
+										<li>구매확정</li>-->
+									</ul>
+								</div>
+							</div>
+						</div>
+					</form>
+				</div>
+			</div>
+			<!-- //주문조회 검색 -->
+			<div class="area_list" id="orderList">
 			</div>
 		</div>
-		<div class="sec_body mypage_body">
-			<!-- 주문 경로 -->
+		<!--<div class="sec_body mypage_body">
+			&lt;!&ndash; 주문 경로 &ndash;&gt;
 			<div class="order_info clear">
 				<ul class="clear">
 					<li>
@@ -93,9 +243,9 @@
 					<p class="count"><span id="orderCrsCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
 				</div>
 			</div>
-			<!-- //주문 경로 -->
+			&lt;!&ndash; //주문 경로 &ndash;&gt;
 			<h2 class="subH2 my_subtit">주문확인/배송조회</h2>
-			<!-- 주문조회 검색 -->
+			&lt;!&ndash; 주문조회 검색 &ndash;&gt;
 			<div class="order_sch_filter clear">
 				<div class="sch_radio_tab">
 					<input type="checkbox" name="month" value="최근 1개월" id="chk01" onclick="fnSetSearchPeriod(1);">
@@ -115,10 +265,10 @@
 					<button type="button" class="btn btn_dark" onclick="fnSearchOrderList();">조회</button>
 				</div>
 			</div>
-			<!-- //주문조회 검색 -->
+			&lt;!&ndash; //주문조회 검색 &ndash;&gt;
 			<div class="order_list" id="orderList">
 			</div>
-		</div>
+		</div>-->
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
@@ -274,6 +424,19 @@
 			$('#orderCrsCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
 		});
 	}
+
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	var fnChangeOrdDtlStat = function(param) {
+		console.log('before >>> ' + $('input[name=ordDtlStat]').val())
+		$(param).parent().parent().find('input[name=ordDtlStat]').val($(param).val());
+		console.log('after >>> ' + $('input[name=ordDtlStat]').val())
+	}
+
+	// 배송조회 버튼 클릭 이벤트
+	var fnGoToDelivery = function(param) {
+		// TODO
+		// 배송조회 페이지 이동
+	}
 /*]]>*/
 </script>
 

+ 136 - 129
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListWeb.html

@@ -11,144 +11,151 @@
  * VER  DATE         AUTHOR      DESCRIPTION
  * ===  ===========  ==========  =============================================
  * 1.0  2021.02.18   card007     최초 작성
+ * 1.1  2021.03.15   card007     퍼블 수정
  *******************************************************************************
  -->
+<input type="hidden" th:value="${orderInfo.pageNo}" id="pageNo"/>
 <th:block th:if="${orderList}" th:each="oneData, status : ${orderList}">
-	<input type="hidden" th:value="${orderInfo.pageNo}" id="pageNo"/>
-	<div class="part_deliver">
-		<div class="tbl_tit">
-			<!-- 주문일/선물일 설정 -->
-			<span class="start_t" th:unless="${oneData.giftPackYn == 'Y'}">주문일</span>
-			<span class="gift_t" th:if="${oneData.giftPackYn == 'Y'}">선물일</span>
-			<!-- //주문일/선물일 설정 -->
-
-			<span class="order_date" th:text="${oneData.ordDt}"></span>
-
-			<!-- 배송구분 설정 -->
-			<span class="order_label02" th:if="${oneData.shotDelv}">총알배송</span>
-			<span class="order_label01" th:if="${oneData.selfMall}">STYLE24 일반배송</span>
-			<span class="order_label01" th:if="${oneData.supplyMall}">업체직배송</span>
-			<!-- //배송구분 설정 -->
-			<a href="javascript:void(0)" class="detail_btn" th:attr="ordNo=${oneData.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
+	<div class="part_goods">
+		<div class="goods_head">
+			<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
+			<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
+			<a href="javascript:void(0)" class="btn_detail_view" th:attr="ordNo=${oneData.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
 		</div>
-		<th:block th:if="${oneData.orderList}" th:each="order, status : ${oneData.orderList}">
-			<div class="tbl type2">
-				<table>
-					<colgroup>
-						<col width="1020">
-						<col width="180">
-					</colgroup>
-					<tbody>
-						<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-						<input type="hidden" name="ordDtlNo" th:value="${ordDtl.ordDtlNo}"/>
-						<input type="hidden" name="ordDtlStat" th:value="${ordDtl.ordDtlStat}"/>
-						<input type="hidden" name="reviewSq" th:value="${ordDtl.reviewSq}"/>
-						<tr class="bundle_row">
-							<td>
-								<div class="info_item">
-									<div class="thumb_box">
-										<a href="">
-											<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
-										</a>
-									</div>
-									<div class="info_box">
-										<p class="od_name">
-											<a href="">
-												<span class="brand" th:text="${ordDtl.brandNm}"></span>
-												<span class="name" th:text="${ordDtl.goodsNm}"></span>
-											</a>
-										</p>
-										<p class="od_opt">
-											<span class="option"><em th:text="${ordDtl.optCd1}"></em><em th:text="${ordDtl.optCd2}"></em></span>
-											<span class="count">수량 <em th:text="${ordDtl.ordQty}"></em>개</span>
-										</p>
-									</div>
-									<div class="info_calc">
-										<p class="price">
-											<span class="selling_price" th:text="|${#numbers.formatInteger(ordDtl.ordAmt, 1, 'COMMA')}원|"></span>
-										</p>
-										<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>p</p>
-									</div>
-								</div>
-							</td>
-							<!-- 주문 -->
-							<td class="merge_row" th:unless="${oneData.giftPackYn == 'Y'}">
-								<div class="delivery">
-									<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
-									<p class="dlvr_desc" th:if="${ordDtl.delvEddt}" th:text="|${ordDtl.delvEddt}일 도착|"></p>
-								</div>
-								<div class="tbl_btn_wrap case02">
-									<button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateChange(this, 'exchange');"><span>교환</span></button>
-									<button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateChange(this, 'cancel');"><span>반품/취소</span></button>
-<!--									<button type="button" class="btn btn_default btn_sm" th:if="${ordDtl.reviewSq == 0}" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰작성</span></button>-->
-									<button type="button" class="btn btn_default btn_sm" th:if="${!order.review}" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰작성</span></button>
-								</div>
-							</td>
-							<td class="merge_row" th:if="${oneData.giftPackYn == 'Y' and #strings.isEmpty(ordDtl.recipBaseAddr)}">
-								<div class="delivery">
-									<p class="dlvr_staus c_primary">주소 입력 대기</p>
-									<p class="dlvr_desc" th:text="|남은 기간 ${ordDtl.giftLimitDay}일|"></p>
-									<p class="dlvr_desc" th:text="|(${ordDtl.giftLimitDt}까지)|"></p>
-								</div>
-								<div class="tbl_btn_wrap case02">
-									<button type="button" class="btn btn_dark btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재전송</span></button>
-								</div>
-							</td>
-							<td class="merge_row" th:if="${oneData.giftPackYn == 'Y' and !#strings.isEmpty(ordDtl.recipBaseAddr)}">
-								<div class="delivery">
-									<p class="dlvr_staus c_primary">선물 완료</p>
-									<p class="dlvr_desc" th:text="|(${ordDtl.giftCompleteDt})|"></p>
-								</div>
-								<div class="tbl_btn_wrap case02">
-								</div>
-							</td>
-						</tr>
+		<div class="goods_cont">
+			<th:block th:if="${oneData.ordDtlList}" th:each="ordDtl, status : ${oneData.ordDtlList}">
+			<!-- 주문상품 -->
+			<div class="goods_info">
+				<div class="oder_desc">
+					<div class="goods_box">
+						<div class="gd_item">
+							<a href="">
+								<span class="thumb">
+									<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
+								</span>
+								<p>
+									<span class="brand" th:text="${ordDtl.brandNm}"></span>
+									<span class="tag primary" th:if="${ordDtl.shotDelvYn == 'Y'}">총알배송</span>
+									<span class="tag" th:if="${ordDtl.shotDelvYn == 'N' and ordDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+									<span class="tag" th:if="${ordDtl.selfGoodsYn == 'N'}">업체직배송</span>
+								</p>
+								<p>
+									<span class="name" th:text="${ordDtl.goodsNm}"></span>
+								</p>
+							</a>
+						</div>
+						<div class="gd_opt">
+							<div class="option_wrap">
+								<span class="title sr-only">주문 옵션</span>
+								<span class="option" th:text="|${ordDtl.optCd1} / ${ordDtl.optCd2}|"></span>
+							</div>
+						</div>
+						<div class="gd_calc">
+							<p>
+								<span class="count"><em th:text="${ordDtl.ordQty}"></em>개</span>
+							</p>
+							<p>
+								<span class="price_org"><em th:text="${#numbers.formatInteger(ordDtl.listPrice, 1, 'COMMA')}"></em>원</span>
+								<span class="price_sale"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt, 1, 'COMMA')}"></em>원</span>
+							</p>
+						</div>
+					</div>
+					<div class="status_box">
+						<!-- 주문 -->
+						<th:block th:unless="${ordDtl.gifyPackYn == 'Y'}">
+							<p th:text="${ordDtl.ordDtlStatNm}"></p>
 						</th:block>
-					</tbody>
-				</table>
-			</div>
-			<!-- 주문 -->
-			<th:block th:unless="${oneData.giftPackYn == 'Y'}">
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_00' or order.ordDtlStat == 'G013_10' or order.ordDtlStat == 'G013_11'}">
-					<span class="cf_txt">주문 완료 / 결제를 기다리고 있습니다.</span>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_20' or order.ordDtlStat == 'G013_30' or order.ordDtlStat == 'G013_35'}">
-					<span class="cf_txt">배송할 상품을 준비 중입니다.</span>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_40'}">
-					<span class="cf_txt">상품준비가 완료되어 곧 배송될 예정입니다.</span>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_50' or order.ordDtlStat == 'G013_55'}">
-					<span class="cf_txt" th:text="|${order.shipCompNm} / ${order.invoiceNo}|"></span>
-					<button type="button" class="btn btn_primary" th:attr="ordNo=${oneData.ordNo}, invoiceNo=${order.invoiceNo}, shipCompCd=${order.shipCompCd}" onclick="fnGetDeliveryInfo(this)">배송조회</button>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_60'}">
-					<span class="cf_txt" th:text="|${order.purchaseConfirmDay}일 후 자동으로 구매확정|"></span>
-					<button type="button" class="btn btn_primary" onclick="fnDecideOrder(this);">구매확정 하기</button>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and !order.review}">
-					<span class="cf_txt">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</span>
-					<button type="button" class="btn btn_primary" onclick="fnCreateReview(this, 'Y');">리뷰작성</button>
-				</div>
-				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and order.review}">
-					<span class="cf_txt">주문내역 다시 구매하기 위해</span>
-					<button type="button" class="btn btn_primary" onclick="fnCreateCart(this, 'Y');">장바구니 담기</button>
+						
+						<!-- 선물 -->
+						<th:block th:if="${ordDtl.gifyPackYn == 'Y'}">
+							<!-- <p th:if="${ordDtl.ordDtlStatNm}">선물 결제</p> -->
+							<!-- 주소 입력 대기중 -->
+							<p th:if="${ordDtl.ordDtlStat == 'G013_20' and #strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay >= 0}">주소 입력 대기중</p>
+							<!-- 선물 완료 -->
+							<p th:if="${ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40' or ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70'}">선물 완료</p>
+							<!-- 선물 취소 -->
+							<p th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">선물 취소</p>
+						</th:block>
+					</div>
+					<div class="button_box">
+						<!-- 주문 -->
+						<th:block th:unless="${ordDtl.gifyPackYn == 'Y'}">
+							<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'} or ordDtl.ordDtlStat == 'G013_40'">
+								<p><button type="button" class="btn btn_default btn_sm"  th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+							</th:block>
+							<!-- 교환신청 버튼(배송중, 출고완료, 배송완료)  -->
+							<th:block th:if="${ordDtl.changableYn == 'Y' and (ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60')}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+							</th:block>
+							<!-- 반품신청 버튼(배송중, 출고완료, 배송완료)  -->
+							<th:block th:if="${ordDtl.returnableYn == 'Y' and (ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60')}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+							</th:block>
+							<!-- 배송조회 버튼(배송중) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></p>
+							</th:block>
+							<!-- 구매확정 버튼(배송완료) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_60'}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></p>
+							</th:block>
+							<!-- 쇼핑백담기 버튼(구매확정) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_70'}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>
+							</th:block>
+							<!-- 리뷰작성 버튼 -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_70' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == 0}">
+								<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+							</th:block>
+							<!-- 1:1문의 버튼 -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0)}">
+								<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"><span>1:1 문의</span></button></p>
+							</th:block>
+						</th:block>
+						
+						<!-- 선물 -->
+						<th:block th:if="${ordDtl.gifyPackYn == 'Y'}">
+							<!-- 주소 입력 대기중 -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' and #strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay >= 0}">
+								<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
+							</th:block>
+							<!-- 선물 완료 -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40' or ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70'}">
+								<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+							</th:block>
+						</th:block>
+					</div>
 				</div>
-			</th:block>
+				<div class="oder_text">
+					<!-- 주문 -->
+					<th:block th:unless="${ordDtl.gifyPackYn == 'Y'}">
+						<!-- 주문접수 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문이 완료되어 결제를 기다리고 있습니다.</p>
+						<!-- 상품준비중 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_40'}">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+						<!-- 예약상품 상품준비중 -->
+						<!-- <p th:if="${ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">예약판매 상품으로 YYYY.MM.DD 출고 예정입니다.</p> -->
+						<!-- 배송완료 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_60'}">15일 후 자동으로 구매확정됩니다.</p>
+						<!-- 구매확정 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_70' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == 0}">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</p>
+					</th:block>
 
-			<!-- 선물 -->
-			<th:block th:if="${oneData.giftPackYn == 'Y'}">
-				<div class="order_confirm" th:if="${#strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay >= 0}">
-					<span class="cf_txt" th:text="|${order.recipNm}님이 주소를 입력하기 전입니다. (입력기한 ${order.giftLimitDt})|"></span>
-				</div>
-				<div class="order_confirm" th:unless="${#strings.isEmpty(order.recipBaseAddr)}">
-					<span class="cf_txt" th:text="|${order.recipNm}님께 선물이 발송되었습니다.|"></span>
-				</div>
-				<div class="order_confirm" th:if="${#strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay < 0}">
-					<span class="cf_txt">주소입력 기한이 경과되어 선물이 취소 되었습니다.</span>
+					<!-- 선물 -->
+					<th:block th:if="${ordDtl.gifyPackYn == 'Y'}">
+						<!-- 주소 입력 대기중 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_20' and #strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay >= 0}" th:text="|${order.recipNm}님이 주소를 입력하기 전입니다. (입력기한 ${order.giftLimitDt})|"></p>
+						<!-- 선물 완료 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40' or ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70'}" th:text="|${order.recipNm}님께 선물이 발송되었습니다.|"></p>
+						<!-- 선물 취소 -->
+						<p th:if="${ordDtl.ordDtlStat == 'G013_98' or ordDtl.ordDtlStat == 'G013_99'}">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+					</th:block>
 				</div>
+			</div>
+			<!-- //주문상품 -->
 			</th:block>
-		</th:block>
+		</div>
 	</div>
 </th:block>
 

+ 167 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListWeb_20210315.html

@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : MypageOrderListWeb.html
+ * @desc    : 마이페이지 > 주문확인/배송조회 주문리스트 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.18   card007     최초 작성
+ *******************************************************************************
+ -->
+<th:block th:if="${orderList}" th:each="oneData, status : ${orderList}">
+	<input type="hidden" th:value="${orderInfo.pageNo}" id="pageNo"/>
+	<div class="part_deliver">
+		<div class="tbl_tit">
+			<!-- 주문일/선물일 설정 -->
+			<span class="start_t" th:unless="${oneData.giftPackYn == 'Y'}">주문일</span>
+			<span class="gift_t" th:if="${oneData.giftPackYn == 'Y'}">선물일</span>
+			<!-- //주문일/선물일 설정 -->
+
+			<span class="order_date" th:text="${oneData.ordDt}"></span>
+
+			<!-- 배송구분 설정 -->
+			<span class="order_label02" th:if="${oneData.shotDelv}">총알배송</span>
+			<span class="order_label01" th:if="${oneData.selfMall}">STYLE24 일반배송</span>
+			<span class="order_label01" th:if="${oneData.supplyMall}">업체직배송</span>
+			<!-- //배송구분 설정 -->
+			<a href="javascript:void(0)" class="detail_btn" th:attr="ordNo=${oneData.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
+		</div>
+		<th:block th:if="${oneData.orderList}" th:each="order, status : ${oneData.orderList}">
+			<div class="tbl type2">
+				<table>
+					<colgroup>
+						<col width="1020">
+						<col width="180">
+					</colgroup>
+					<tbody>
+						<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<input type="hidden" name="ordDtlNo" th:value="${ordDtl.ordDtlNo}"/>
+						<input type="hidden" name="ordDtlStat" th:value="${ordDtl.ordDtlStat}"/>
+						<input type="hidden" name="reviewSq" th:value="${ordDtl.reviewSq}"/>
+						<tr class="bundle_row">
+							<td>
+								<div class="info_item">
+									<div class="thumb_box">
+										<a href="">
+											<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" width="100%" alt="">
+										</a>
+									</div>
+									<div class="info_box">
+										<p class="od_name">
+											<a href="">
+												<span class="brand" th:text="${ordDtl.brandNm}"></span>
+												<span class="name" th:text="${ordDtl.goodsNm}"></span>
+											</a>
+										</p>
+										<p class="od_opt">
+											<span class="option"><em th:text="${ordDtl.optCd1}"></em><em th:text="${ordDtl.optCd2}"></em></span>
+											<span class="count">수량 <em th:text="${ordDtl.ordQty}"></em>개</span>
+										</p>
+									</div>
+									<div class="info_calc">
+										<p class="price">
+											<span class="selling_price" th:text="|${#numbers.formatInteger(ordDtl.ordAmt, 1, 'COMMA')}원|"></span>
+										</p>
+										<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>p</p>
+									</div>
+								</div>
+							</td>
+							<!-- 주문 -->
+							<td class="merge_row" th:unless="${oneData.giftPackYn == 'Y'}">
+								<div class="delivery">
+									<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+									<p class="dlvr_desc" th:if="${ordDtl.delvEddt}" th:text="|${ordDtl.delvEddt}일 도착|"></p>
+								</div>
+								<div class="tbl_btn_wrap case02">
+									<button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateChange(this, 'exchange');"><span>교환</span></button>
+									<button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateChange(this, 'cancel');"><span>반품/취소</span></button>
+<!--									<button type="button" class="btn btn_default btn_sm" th:if="${ordDtl.reviewSq == 0}" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰작성</span></button>-->
+									<button type="button" class="btn btn_default btn_sm" th:if="${!order.review}" th:attr="ordNo=${oneData.ordNo}" onclick="fnCreateReview(this);"><span>리뷰작성</span></button>
+								</div>
+							</td>
+							<td class="merge_row" th:if="${oneData.giftPackYn == 'Y' and #strings.isEmpty(ordDtl.recipBaseAddr)}">
+								<div class="delivery">
+									<p class="dlvr_staus c_primary">주소 입력 대기</p>
+									<p class="dlvr_desc" th:text="|남은 기간 ${ordDtl.giftLimitDay}일|"></p>
+									<p class="dlvr_desc" th:text="|(${ordDtl.giftLimitDt}까지)|"></p>
+								</div>
+								<div class="tbl_btn_wrap case02">
+									<button type="button" class="btn btn_dark btn_sm" th:attr="ordNo=${oneData.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재전송</span></button>
+								</div>
+							</td>
+							<td class="merge_row" th:if="${oneData.giftPackYn == 'Y' and !#strings.isEmpty(ordDtl.recipBaseAddr)}">
+								<div class="delivery">
+									<p class="dlvr_staus c_primary">선물 완료</p>
+									<p class="dlvr_desc" th:text="|(${ordDtl.giftCompleteDt})|"></p>
+								</div>
+								<div class="tbl_btn_wrap case02">
+								</div>
+							</td>
+						</tr>
+						</th:block>
+					</tbody>
+				</table>
+			</div>
+			<!-- 주문 -->
+			<th:block th:unless="${oneData.giftPackYn == 'Y'}">
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_00' or order.ordDtlStat == 'G013_10' or order.ordDtlStat == 'G013_11'}">
+					<span class="cf_txt">주문 완료 / 결제를 기다리고 있습니다.</span>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_20' or order.ordDtlStat == 'G013_30' or order.ordDtlStat == 'G013_35'}">
+					<span class="cf_txt">배송할 상품을 준비 중입니다.</span>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_40'}">
+					<span class="cf_txt">상품준비가 완료되어 곧 배송될 예정입니다.</span>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_50' or order.ordDtlStat == 'G013_55'}">
+					<span class="cf_txt" th:text="|${order.shipCompNm} / ${order.invoiceNo}|"></span>
+					<button type="button" class="btn btn_primary" th:attr="ordNo=${oneData.ordNo}, invoiceNo=${order.invoiceNo}, shipCompCd=${order.shipCompCd}" onclick="fnGetDeliveryInfo(this)">배송조회</button>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_60'}">
+					<span class="cf_txt" th:text="|${order.purchaseConfirmDay}일 후 자동으로 구매확정|"></span>
+					<button type="button" class="btn btn_primary" onclick="fnDecideOrder(this);">구매확정 하기</button>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and !order.review}">
+					<span class="cf_txt">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다.</span>
+					<button type="button" class="btn btn_primary" onclick="fnCreateReview(this, 'Y');">리뷰작성</button>
+				</div>
+				<div class="order_confirm" th:if="${order.ordDtlStat == 'G013_70' and order.review}">
+					<span class="cf_txt">주문내역 다시 구매하기 위해</span>
+					<button type="button" class="btn btn_primary" onclick="fnCreateCart(this, 'Y');">장바구니 담기</button>
+				</div>
+			</th:block>
+
+			<!-- 선물 -->
+			<th:block th:if="${oneData.giftPackYn == 'Y'}">
+				<div class="order_confirm" th:if="${#strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay >= 0}">
+					<span class="cf_txt" th:text="|${order.recipNm}님이 주소를 입력하기 전입니다. (입력기한 ${order.giftLimitDt})|"></span>
+				</div>
+				<div class="order_confirm" th:unless="${#strings.isEmpty(order.recipBaseAddr)}">
+					<span class="cf_txt" th:text="|${order.recipNm}님께 선물이 발송되었습니다.|"></span>
+				</div>
+				<div class="order_confirm" th:if="${#strings.isEmpty(order.recipBaseAddr) and order.giftLimitDay < 0}">
+					<span class="cf_txt">주소입력 기한이 경과되어 선물이 취소 되었습니다.</span>
+				</div>
+			</th:block>
+		</th:block>
+	</div>
+</th:block>
+
+<!-- 주문 없을 때 -->
+<th:block th:unless="${orderList}" th:each="oneData, status : ${orderList}">
+
+</th:block>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+	$(document).ready(function() {
+	});
+/*]]>*/
+</script>
+
+</html>