jsh77b 5 лет назад
Родитель
Сommit
2dc8cd364b

+ 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[*/

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

+ 15 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html

@@ -103,9 +103,9 @@
 		</div>
 		<div class="popup_con">
 			<div class="button_list clear">
-				<button type="button" class="on"><span>전체상태</span></button>
+				<button type="button" code="" class="ordDtlStat 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>
+					<button type="button" class="ordDtlStat" th:code="${ordDtlStat.cd}"><span th:text="${ordDtlStat.cdNm}"></span></button>
 				</th:block>
 			</div>
 		</div>
@@ -174,6 +174,19 @@ $(document).ready(function() {
 			}
 		}
 	});
+	
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	$('#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);
+	});
 });
 
 // 주문 목록 조회

+ 7 - 6
src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html

@@ -101,21 +101,21 @@
 					
 					<!-- 버튼기능정리 -->
 					<!-- 일반배송 -->
-					<th:block th:if="${ordDtl.giftPackYn} == 'N'">
-						<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
+					<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'">
@@ -141,9 +141,9 @@
 							</div>
 							<!-- //리뷰사용가능, 리뷰등록전일때 -->
 						</th:block>
-						<!-- //배송중 교환가능, 반품가능 -->
+						<!-- //배송중 (교환가능, 반품가능) -->
 							
-						<!-- 배송완료 교환가능, 반품가능 -->
+						<!-- 배송완료 (교환가능, 반품가능) -->
 						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
 							<div class="goods_btn_wrap btn_group_flex">
 								<!-- 교환가능, 반품가능 -->
@@ -171,6 +171,7 @@
 								<!-- //리뷰사용가능, 리뷰등록전일때 -->
 							</div>
 						</th:block>
+						<!-- //배송완료 (교환가능, 반품가능) -->
 						
 						<!-- 구매확정 -->
 						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">

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

+ 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() + " 원");

+ 2 - 9
src/main/webapp/WEB-INF/views/web/popup/DelvAddrChangePopWeb.html

@@ -39,15 +39,8 @@
 										<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}"/>
+								<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>

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