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

마이페이지 모바일 비회원 임시커밋

card007 преди 5 години
родител
ревизия
5c695a550d
променени са 37 файла, в които са добавени 4226 реда и са изтрити 195 реда
  1. 1 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  2. 126 8
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  3. 11 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  4. 4 0
      src/main/webapp/WEB-INF/views/mob/common/layout/NoMemberLayoutMob.html
  5. 20 21
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  6. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  7. 0 7
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html
  8. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html
  9. 5 5
      src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html
  10. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html
  11. 6 6
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  12. 6 6
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  13. 27 28
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  14. 25 26
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCancelFormMob.html
  15. 223 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html
  16. 316 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html
  17. 0 7
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListFormMob.html
  18. 3 3
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListInfoMob.html
  19. 335 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html
  20. 368 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberDeliveryInfoFormMob.html
  21. 769 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html
  22. 784 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html
  23. 6 6
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderListInfoMob.html
  24. 890 0
      src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html
  25. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderAddPaymentFormMob.html
  26. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html
  27. 2 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  28. 6 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html
  29. 6 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  30. 10 10
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  31. 0 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCancelFormWeb.html
  32. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html
  33. 2 9
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html
  34. 254 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberDeliveryInfoFormWeb.html
  35. 5 5
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  36. 1 10
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  37. 9 6
      src/main/webapp/biz/mypage.js

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

@@ -1385,7 +1385,7 @@ public class TsfMypageController extends TsfBaseController {
 	}
 
 	/**
-	 * 마이페이지 교환 옵션 변경 팝업
+	 * 회수 배송 조회 팝업
 	 *
 	 * @param Order
 	 * @return ModelAndView

+ 126 - 8
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -26,6 +26,7 @@ import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
 import com.style24.front.biz.service.TsfCommonService;
+import com.style24.front.biz.service.TsfDeliveryService;
 import com.style24.front.biz.service.TsfGiftcardService;
 import com.style24.front.biz.service.TsfOrderChangeService;
 import com.style24.front.biz.service.TsfOrderService;
@@ -36,6 +37,7 @@ import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.Cart;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
+import com.style24.persistence.domain.SweetTracker;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -86,6 +88,9 @@ public class TsfNoMemberController extends TsfBaseController {
 	@Autowired
 	private TscWmsService coreWmsService;
 
+	@Autowired
+	private TsfDeliveryService deliveryService;
+
 	/**
 	 * 비회원 주문 내역
 	 *
@@ -104,9 +109,6 @@ public class TsfNoMemberController extends TsfBaseController {
 			return mav;
 		}
 
-		log.info("noMemberOrdNo >>> {}", TsfSession.getAttribute("noMemberOrdNo"));
-		log.info("noMemberOrdNm >>> {}", TsfSession.getAttribute("noMemberOrdNm"));
-		log.info("noMemberOrdPhnno >>> {}", TsfSession.getAttribute("noMemberOrdPhnno"));
 		// 비회원 정보 유효성 체크
 		if (StringUtils.isBlank(TsfSession.getAttribute("noMemberOrdNo"))
 			|| StringUtils.isBlank(TsfSession.getAttribute("noMemberOrdNm"))
@@ -329,6 +331,16 @@ public class TsfNoMemberController extends TsfBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
+		// 비회원 정보 설정
+		orderChange.setOrdNo(Integer.parseInt(TsfSession.getAttribute("noMemberOrdNo")));
+		orderChange.setOrdNm(TsfSession.getAttribute("noMemberOrdNm"));
+		orderChange.setOrdPhnno(TsfSession.getAttribute("noMemberOrdPhnno"));
+
+		// 핸드폰번호 하이픈 처리
+		if (!orderChange.getOrdPhnno().contains("-")) {
+			orderChange.setOrdPhnno(orderChange.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
+		}
+
 		// 2. 환불 사전 정보 조회
 		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
 		List<Order> cnclReqList = (List<Order>)refundPreInfo.get("cnclReqList");
@@ -522,6 +534,15 @@ public class TsfNoMemberController extends TsfBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
+		// 비회원 정보 설정
+		orderChange.setOrdNm(TsfSession.getAttribute("noMemberOrdNm"));
+		orderChange.setOrdPhnno(TsfSession.getAttribute("noMemberOrdPhnno"));
+
+		// 핸드폰번호 하이픈 처리
+		if (!orderChange.getOrdPhnno().contains("-")) {
+			orderChange.setOrdPhnno(orderChange.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
+		}
+
 		// 1. 취소완료 처리
 		orderChange.setCustNo(0);
 		GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange, 0);
@@ -631,9 +652,14 @@ public class TsfNoMemberController extends TsfBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
-		// TODO
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+		// 비회원 정보 설정
+		orderChange.setOrdNm(TsfSession.getAttribute("noMemberOrdNm"));
+		orderChange.setOrdPhnno(TsfSession.getAttribute("noMemberOrdPhnno"));
+
+		// 핸드폰번호 하이픈 처리
+		if (!orderChange.getOrdPhnno().contains("-")) {
+			orderChange.setOrdPhnno(orderChange.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
+		}
 
 		// 2. 환불 사전 정보 조회
 		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
@@ -1247,7 +1273,7 @@ public class TsfNoMemberController extends TsfBaseController {
 		}
 
 		mav.addObject("orderList", orderService.getOrderListForMypage(order));
-		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListInfo"));
+		mav.setViewName(super.getDeviceViewName("mypage/NoMemberOrderListInfo"));
 
 		return mav;
 	}
@@ -1284,7 +1310,99 @@ public class TsfNoMemberController extends TsfBaseController {
 
 		mav.addObject("creList", orderChangeService.getCreList(orderChange));
 		mav.addObject("creInfo", orderChange);
-		mav.setViewName(super.getDeviceViewName("mypage/MypageCreListInfo"));
+		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreListInfo"));
+
+		return mav;
+	}
+
+	/**
+	 * 배송조회 화면
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since  2021. 05. 04
+	 */
+	@GetMapping("/delivery/info/form")
+	@ResponseBody
+	public ModelAndView deliveryInfoForm(Order order) {
+		ModelAndView mav = new ModelAndView();
+
+		// 로그인 상태이면 메인으로 리다이렉트 처리
+		if (TsfSession.isLogin()) {
+			mav.setViewName("redirect:/");
+			return mav;
+		}
+
+		// 비회원 정보 유효성 체크
+		if (StringUtils.isBlank(TsfSession.getAttribute("noMemberOrdNo"))
+			|| StringUtils.isBlank(TsfSession.getAttribute("noMemberOrdNm"))
+			|| StringUtils.isBlank(TsfSession.getAttribute("noMemberOrdPhnno"))) {
+			// 세션에 비회원 정보가 없으면 비회원 주문 조회 화면으로 리다이렉트 처리
+			mav.setViewName("redirect:/customer/noncust/order/confirm/form");
+			return mav;
+		}
+
+		// 비회원 정보 설정
+		order.setOrdNo(Integer.parseInt(TsfSession.getAttribute("noMemberOrdNo")));
+		order.setOrdNm(TsfSession.getAttribute("noMemberOrdNm"));
+		order.setOrdPhnno(TsfSession.getAttribute("noMemberOrdPhnno"));
+
+		// 핸드폰번호 하이픈 처리
+		if (!order.getOrdPhnno().contains("-")) {
+			order.setOrdPhnno(order.getOrdPhnno().replaceAll("(\\d{3})(\\d{3,4})(\\d{4})", "$1-$2-$3"));
+		}
+
+		mav.addObject("ordNo", order.getOrdNo());
+		mav.addObject("ordNm", order.getOrdNm());
+		mav.addObject("ordPhnno", order.getOrdPhnno());
+
+		// 주문목록 조회
+		Collection<GagaMap> orderList = orderService.getOrderListForMypage(order);
+
+		if (orderList.size() == 0) {
+			mav.setViewName("redirect:/noMember/order/list/form");
+			return mav;
+		}
+
+		mav.addObject("orderList", orderList);
+		mav.addObject("oneData", orderList.iterator().next().get("oneData"));
+
+
+		// 주문 배송지 정보 조회
+		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
+
+		// 스윗트래커 정보 조회
+		SweetTracker sweetTracker = new SweetTracker();
+		sweetTracker.setShipCompCd(order.getShipCompCd());
+		sweetTracker.setInvoiceNo(order.getInvoiceNo());
+		mav.addObject("sweetTrackerInfoList", deliveryService.getSweetTrackerDeliveryInfo(sweetTracker));
+
+		mav.setViewName(super.getDeviceViewName("mypage/NoMemberDeliveryInfoForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 회수 배송 조회 팝업
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 03. 30
+	 */
+	@PostMapping("/track/withdraw/popup/form")
+	@ResponseBody
+	public ModelAndView trackWithdrawPopupForm(OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 스윗트래커 정보 조회
+		SweetTracker sweetTracker = new SweetTracker();
+		sweetTracker.setShipCompCd(orderChange.getShipCompCd());
+		sweetTracker.setInvoiceNo(orderChange.getWdInvoiceNo());
+		mav.addObject("sweetTrackerInfoList", deliveryService.getSweetTrackerDeliveryInfo(sweetTracker));
+
+		mav.setViewName(super.getDeviceViewName("popup/TrackWithdrawPopupForm"));
 
 		return mav;
 	}

+ 11 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -769,6 +769,8 @@
 		     , Z.ORD_DTL_NO
 		     , Z.ORG_ORD_DTL_NO
 		     , Z.ORD_DTL_STAT
+		     , Z.SHIP_COMP_CD
+		     , Z.INVOICE_NO
 		     , GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!')       AS ITEM_NM
 		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ)                      AS COLOR_NM
 		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD1
@@ -778,6 +780,8 @@
 		             , OD.ORD_DTL_NO
 		             , OD.ORG_ORD_DTL_NO
 		             , OD.ORD_DTL_STAT
+		             , OD.SHIP_COMP_CD
+		             , OD.INVOICE_NO
 		             , IFNULL((SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
 		             , G2.GOODS_NM                      AS ITEM_NM
 		             , ODI.OPT_CD1
@@ -798,7 +802,7 @@
 		         WHERE OC.ORD_CHG_SQ = #{ordChgSq}
 		           AND OCD.ORD_DTL_NO = #{ordDtlNo}
 		  ) Z
-		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.ORD_DTL_NO, Z.ORG_ORD_DTL_NO, Z.ORD_DTL_STAT
+		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.ORD_DTL_NO, Z.ORG_ORD_DTL_NO, Z.ORD_DTL_STAT, Z.SHIP_COMP_CD, Z.INVOICE_NO
 	</select>
 	
 	<!-- 마이페이지 취소 상세 정보 조회 -->
@@ -1172,6 +1176,8 @@
 		     , Z.CHG_STAT
 		     , Z.CHG_STAT_NM
 		     , Z.ORD_DTL_STAT
+		     , Z.EXCHANGE_SHIP_COMP_CD
+		     , Z.EXCHANGE_INVOICE_NO
 		     , Z.ORD_NO
 		     , Z.ORD_AMT
 		     , Z.ORD_QTY
@@ -1226,6 +1232,8 @@
 		             , OCD.CHG_STAT
 		             , FN_GET_CODE_NM('G685', OCD.CHG_STAT)                             AS CHG_STAT_NM
 		             , OD2.ORD_DTL_STAT                                                 AS ORD_DTL_STAT
+		             , OD2.INVOICE_NO                                                   AS EXCHANGE_INVOICE_NO
+		             , OD2.SHIP_COMP_CD                                                 AS EXCHANGE_SHIP_COMP_CD
 		             , OD.ORD_NO
 		             , OD.ORD_AMT
 		             , OD.ORD_QTY
@@ -1330,8 +1338,8 @@
 		</if>
 		       ) Z
 		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.CHG_QTY, Z.ORD_DT, Z.CHG_DATE, Z.CHG_TIME, Z.CHG_DT, Z.COMPLETE_DT, Z.CHG_STAT
-		        , Z.CHG_STAT_NM, Z.ORD_DTL_STAT, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
-		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
+		        , Z.CHG_STAT_NM, Z.ORD_DTL_STAT, Z.EXCHANGE_SHIP_COMP_CD, Z.EXCHANGE_INVOICE_NO, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT
+		        , Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
 		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
 		        , Z.CHGER_DTL_ADDR, Z.CHGER_RTN_MEMO, Z.CHG_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM, Z.DELV_ADDR_SQ, Z.RECIP_NM, Z.RECIP_PHNNO
 		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO, Z.PG_TID, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.CARD_NM, Z.CARD_MIPS, Z.CHG_ORD_DTL_STAT

+ 4 - 0
src/main/webapp/WEB-INF/views/mob/common/layout/NoMemberLayoutMob.html

@@ -16,6 +16,10 @@
 
 	<!-- CONTENT AREA -->
 	<th:block layout:fragment="content"></th:block>
+	<form id="addPaymentForm" name="addPaymentForm" th:action="@{'/order/addPaymentForm'}" th:method="post">
+		<input type="hidden" name="ordNo"/>
+		<input type="hidden" name="ordChgSq"/>
+	</form>
 	<!-- // CONTENT AREA -->
 
 	<!-- Footer -->

+ 20 - 21
src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html

@@ -439,32 +439,28 @@ var fnChangeCancelQty = function(param) {
 	let jsonData = JSON.stringify(data);
 
 	gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-		// 환불포인트, 환불상품권 금액 계산
-		let refundPoint 		= Number(result.spanPntDcAmt);
-		let refundGiftCard 		= Number(result.spanGfcdUseAmt);
-
-		let spanCnclRtnAmt 		= Number(result.spanCnclRtnAmt);
-		let sumDeliveryFee 		= Number(result.sumDeliveryFee);
-		let spanTotDeliveryFee 	= Number(result.spanTotDeliveryFee);
-		let spanCpnDcAmt 		= Number(result.spanCpnDcAmt);
-		let spanTmtbDcAmt 		= Number(result.spanTmtbDcAmt);
-		let spanPrePntDcAmt 	= Number(result.spanPrePntDcAmt);
-		let spanRefundAmt 		= Number(result.spanRefundAmt);
-
-		let goodsCancelAmt 		= spanCnclRtnAmt;											// 상품취소금액
-		let deliveryFee 		= sumDeliveryFee - spanTotDeliveryFee;						// 배송비
-		let deductDcAmt 		= 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-		let refundPayAmt 		= spanRefundAmt;											// 결제금액 환불
-		let returnAmt 			= refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+		let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+		let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+		let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+		let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+		let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+		let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+		let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+		let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+		let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
+		let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+		let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+		let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+		let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+		let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
 
 		// 추가배송비 영역 설정
 		if (refundPayAmt < 0) {
-			refundPayAmt = spanRefundAmt;
-			$('#addDeliveryFee').css('display', '');
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			//refundPayAmt = spanRefundAmt;
+			//$('#addDeliveryFee').css('display', '');
+			//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = spanTotDeliveryFee;
 		} else {
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = 0;
 		}
 
@@ -477,6 +473,9 @@ var fnChangeCancelQty = function(param) {
 		$('#refundPoint').text(refundPoint.addComma());
 		$('#refundGiftCard').text(refundGiftCard.addComma());
 	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
 }
 
 let isValid = false;

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html

@@ -171,7 +171,7 @@
 							</div>
 							<div class="addr">
 								<dt><span class="sr-only">배송주소</span></dt>
-								<dd id="recipAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></dd>
+								<dd id="recipAddr" th:text="|${oneData.recipBaseAddr} ${oneData.recipDtlAddr}|"></dd>
 							</div>
 							<div class="phone">
 								<dt><span class="sr-only">휴대폰 번호</span></dt>

+ 0 - 7
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html

@@ -266,13 +266,6 @@ var fnGoToCreDetail = function(param) {
 
 	cfnGoToPage(_frontUrl + url);
 }
-
-// 취반교 배송조회 버튼 클릭 이벤트
-var fnGoToDeliveryTrack = function(param) {
-	let ordDtlNo = $(param).attr('ordDtlNo');
-	// TODO
-	// 최반교 배송조회 페이지 이동 처리
-}
 /*]]>*/
 </script>
 

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html

@@ -127,7 +127,7 @@
 							<!-- 배송조회 -->
 							<th:block th:if="${cre.chgStat} == 'G685_40'">
 								<div>
-									<button type="button" class="btn btn_default" th:ordDtlNo="${cre.ordDtlNo}" onclick="fnGoToDeliveryTrack(this);">
+									<button type="button" class="btn btn_default" th:attr="ordNo=${cre.ordNo}, ordDtlNo=${cre.ordDtlNo}, shipCompCd=${cre.exchangeShipCompCd}, invoiceNo=${cre.exchangeInvoiceNo}" onclick="fnGoToDelivery(this);">
 										<span>배송조회</span>
 									</button>
 								</div>

+ 5 - 5
src/main/webapp/WEB-INF/views/mob/mypage/MypageDeliveryInfoFormMob.html

@@ -147,10 +147,10 @@
 									<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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+												<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
 											</th:block>
 											<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-												<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+												<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
 											</th:block>
 										</div>
 									</th:block>
@@ -174,10 +174,10 @@
 									<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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+											<div><button type="button" class="btn btn_default btn_exch_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
 										</th:block>
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
 										</th:block>
 										<!-- //교환가능, 반품가능 -->
 										
@@ -230,7 +230,7 @@
 								
 								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 								</th:block>
 								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/mypage/MypageExchangeFormMob.html

@@ -156,7 +156,7 @@
 								<th class="sr-only">반품 완료 일자</th>
 								<td>
 									<div class="textarea_wrap">
-										<textarea class="doc_return" name="" id="" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
+										<textarea class="doc_return" name="chgMemo" id="chgMemo" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
 										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
 									</div>
 								</td>

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

@@ -163,7 +163,7 @@
 										<!-- 교환가능 -->
 										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 											<div>
-												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
 													<span>교환 신청</span>
 												</button>
 											</div>
@@ -172,7 +172,7 @@
 										<!-- 반품가능 -->
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 											<div>
-												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
 													<span>반품 신청</span>
 												</button>
 											</div>
@@ -309,7 +309,7 @@
 										<!-- 교환가능 -->
 										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 											<div>
-												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
 													<span>교환 신청</span>
 												</button>
 											</div>
@@ -318,7 +318,7 @@
 										<!-- 반품가능 -->
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 											<div>
-												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
 													<span>반품 신청</span>
 												</button>
 											</div>
@@ -489,7 +489,7 @@
 								
 								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
+									<div><button type="button" class="btn btn_default btn_cncl_complete" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 								</th:block>
 								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								
@@ -754,7 +754,7 @@
 								<div class="ship_info ship_edit">
 									<!--  배송비정보변경가능 -->
 									<th:block th:if="${allCanYn == 'Y'}">
-										<button type="button" id="btn_adrsChange_pop" class="btn_popup">
+										<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();">
 											<span>배송지 변경</span>
 										</button>
 									</th:block>

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

@@ -126,7 +126,7 @@
 							<th:block th:if="${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" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');">
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');">
 											<span>주문 취소</span>
 										</button>
 									</div>
@@ -154,7 +154,7 @@
 									<!-- 교환가능 -->
 									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
+											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
 												<span>교환 신청</span>
 											</button>
 										</div>
@@ -163,7 +163,7 @@
 									<!-- 반품가능 -->
 									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
+											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
 												<span>반품 신청</span>
 											</button>
 										</div>
@@ -215,7 +215,7 @@
 									<!-- 교환가능 -->
 									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');">
+											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
 												<span>교환 신청</span>
 											</button>
 										</div>
@@ -224,7 +224,7 @@
 									<!-- 반품가능 -->
 									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');">
+											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
 												<span>반품 신청</span>
 											</button>
 										</div>
@@ -312,7 +312,7 @@
 								<!-- 배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<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" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');">
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');">
 											<span>주문 취소</span>
 										</button>
 									</div>

+ 27 - 28
src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html

@@ -130,7 +130,7 @@
 								<th class="sr-only">반품 완료 일자</th>
 								<td>
 									<div class="textarea_wrap">
-										<textarea class="doc_return" name="" id="" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
+										<textarea class="doc_return" name="chgMemo" id="chgMemo" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
 										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
 									</div>
 								</td>
@@ -646,42 +646,41 @@ var fnChangeReturnQty = function(param) {
 		let jsonData = JSON.stringify(data);
 		
 		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-			let refundPoint 		= Number(result.spanPntDcAmt);
-			let refundGiftCard 		= Number(result.spanGfcdUseAmt);
-			let spanCnclRtnAmt 		= Number(result.spanCnclRtnAmt);
-			let spanTotDeliveryFee 	= Number(result.spanTotDeliveryFee);
-			let spanCpnDcAmt 		= Number(result.spanCpnDcAmt);
-			let spanTmtbDcAmt 		= Number(result.spanTmtbDcAmt);
-			let spanPrePntDcAmt 	= Number(result.spanPrePntDcAmt);
-			let spanRefundAmt 		= Number(result.spanRefundAmt);
-			let spanTotRtnDelvFee 	= Number(result.spanTotRtnDelvFee);
-			
+			let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+			let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+			let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 포인트 할인 차감 금액
+			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+			let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비 (반품에서는 안돌려줘서 항상 0일듯)
+			//let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비) - 추가배송비는 환불컨펌에서 처리
+			let spanTotDeliveryFee = 0;
+			let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);				// 반품배송비 (회수요청으로 인한 반품 배송비)
+			let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt);				// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
+			let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 - 원주문배송비)
+
 			// 반품 사유 및 반품 방식 배송비 계산
 			if (result.spanRealCnclRtnAmt > 0) {
 				let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
 				// 회사사유 : 추가배송비 0, 반품배송비 0
 				if (!isCustomer) {
-					spanTotRtnDelvFee 	= 0;
-					spanTotDeliveryFee 	= 0;
+					spanTotRtnDelvFee = 0;
+					//spanTotDeliveryFee = 0;											// 추가배송비는 환불컨펌에서 처리
 				}
 				// 고객사유(직접발송) : 반품배송비 0
 				else if (wdGb == 'D') {
 					spanTotRtnDelvFee = 0;
 				}
 			} else {
-				spanTotRtnDelvFee 	= 0;
-				spanTotDeliveryFee 	= 0;
+				spanTotRtnDelvFee = 0;
+				//spanTotDeliveryFee = 0;												// 추가배송비는 환불컨펌에서 처리
 			}
-			
-			let goodsCancelAmt 	= spanCnclRtnAmt;											// 상품취소금액
-			let addDelvFee 		= spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
-			let deductDcAmt 	= spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
-			let refundPayAmt 	= spanRefundAmt - addDelvFee;								// 결제금액 환불
-			
-			if (!isCustomer) {
-				refundPayAmt += spanTotDeliveryFee;
-			}
-			
+
+			let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
+			let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
+			let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
+			let refundPayAmt = spanRefundAmt - addDelvFee;								// 결제금액 환불
+
 			// 추가배송비 영역 설정
 			if (refundPayAmt < 0) {
 				refundPayAmt += addDelvFee;
@@ -692,14 +691,14 @@ var fnChangeReturnQty = function(param) {
 				$('#addDeliveryFee').css('display', 'none');
 				$('#returnForm input[name=addPayCost]').val(0);
 			}
-			
+
 			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
-			
+
 			// 금액 설정
 			$('#returnAmt').text(returnAmt.addComma());
 			$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
 			$('#deliveryFee').text((0 - addDelvFee).addComma());
-			$('#deductDcAmt').text(deductDcAmt.addComma());
+			$('#deductDcAmt').text((0 - deductDcAmt).addComma());
 			$('#refundPayAmt').text(refundPayAmt.addComma());
 			$('#refundPoint').text(refundPoint.addComma());
 			$('#refundGiftCard').text(refundGiftCard.addComma());

+ 25 - 26
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCancelFormMob.html

@@ -243,7 +243,7 @@
 								<th>예금주</th>
 								<td>
 									<div class="form_field">
-										<input type="text" name="accountNm" class="form_control" th:value="${customerInfo.custNm}" placeholder="이름를 입력해 주세요" readonly="readonly">
+										<input type="text" name="accountNm" class="form_control" th:value="${ordNm}" placeholder="이름를 입력해 주세요" readonly="readonly">
 									</div>
 								</td>
 							</tr>
@@ -388,11 +388,11 @@ var fnCancel = function() {
 	let jsonData = JSON.stringify(data);
 	
 	// 취소 처리 가능 여부 조회
-	gagajf.ajaxJsonSubmit('/mypage/wms/cancel/available', jsonData, function(result) {
+	gagajf.ajaxJsonSubmit('/noMember/wms/cancel/available', jsonData, function(result) {
 		if (result.cancelYn == 'Y') {
 			// 취소 처리
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+				cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);
 			});
 		} else {
 			mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
@@ -402,7 +402,7 @@ var fnCancel = function() {
 
 // 취소 수량 변경 이벤트 처리
 var fnChangeCancelQty = function(param) {
-	let url = '/mypage/cancel/refund/amt/calculate';
+	let url = '/noMember/cancel/refund/amt/calculate';
 	
 	// 취소수량설정
 	if (param != null) {
@@ -438,32 +438,28 @@ var fnChangeCancelQty = function(param) {
 	let jsonData = JSON.stringify(data);
 
 	gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-		// 환불포인트, 환불상품권 금액 계산
-		let refundPoint 		= Number(result.spanPntDcAmt);
-		let refundGiftCard 		= Number(result.spanGfcdUseAmt);
-
-		let spanCnclRtnAmt 		= Number(result.spanCnclRtnAmt);
-		let sumDeliveryFee 		= Number(result.sumDeliveryFee);
-		let spanTotDeliveryFee 	= Number(result.spanTotDeliveryFee);
-		let spanCpnDcAmt 		= Number(result.spanCpnDcAmt);
-		let spanTmtbDcAmt 		= Number(result.spanTmtbDcAmt);
-		let spanPrePntDcAmt 	= Number(result.spanPrePntDcAmt);
-		let spanRefundAmt 		= Number(result.spanRefundAmt);
-
-		let goodsCancelAmt 		= spanCnclRtnAmt;											// 상품취소금액
-		let deliveryFee 		= sumDeliveryFee - spanTotDeliveryFee;						// 배송비
-		let deductDcAmt 		= 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-		let refundPayAmt 		= spanRefundAmt;											// 결제금액 환불
-		let returnAmt 			= refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+		let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+		let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+		let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+		let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+		let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+		let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+		let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+		let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+		let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
+		let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+		let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+		let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+		let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+		let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
 
 		// 추가배송비 영역 설정
 		if (refundPayAmt < 0) {
-			refundPayAmt = spanRefundAmt;
-			$('#addDeliveryFee').css('display', '');
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			//refundPayAmt = spanRefundAmt;
+			//$('#addDeliveryFee').css('display', '');
+			//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = spanTotDeliveryFee;
 		} else {
-			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 			addPayCost = 0;
 		}
 
@@ -476,6 +472,9 @@ var fnChangeCancelQty = function(param) {
 		$('#refundPoint').text(refundPoint.addComma());
 		$('#refundGiftCard').text(refundGiftCard.addComma());
 	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
 }
 
 let isValid = false;
@@ -494,7 +493,7 @@ $('#btn_bank_certi').on('click', function () {
 	}
 	
 	if (!isValid) {
-		let url 		= '/mypage/account/check';
+		let url 		= '/noMember/account/check';
 		let accountNm 	= $('#refundAccountPop input[name=accountNm]').val();
 		let accountNo 	= $('#refundAccountPop input[name=accountNo]').val();
 		let bankCd 		= $('#refundAccountPop input[name=bankCd]').val();

+ 223 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreCancelDetailFormMob.html

@@ -0,0 +1,223 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberCreCancelDetailFormWeb.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 취소상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<main role="" id="" class="container my">
+	<section class="content my_return">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd th:text="${oneData.ordNo}"></dd>
+				</dl>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+				</div>
+				
+				<th:block th:if="${cancelDetailList.cancelDetailList}" th:each="cancelDtl, status : ${cancelDetailList.cancelDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+					<div class="goods_section">
+						<div class="goods_status">
+							<p class="dlvr_staus" 	th:if="${cancelDtl.chgStat == 'G685_17' or cancelDtl.chgStat == 'G685_18'}">주문취소</p>
+							<p class="dlvr_staus" 	th:unless="${cancelDtl.chgStat == 'G685_17' or cancelDtl.chgStat == 'G685_18'}" th:text="${cancelDtl.chgStatNm}"></p>
+							<p class="dlvr_desc" 	th:text="|${cancelDtl.chgDate} ${cancelDtl.chgTime}|"></p>
+						</div>
+						<div class="goods_detail">
+							<a href="javascript:void(0)" th:attr="goodsCd=${cancelDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+								<div class="thumb_box">
+									<img th:src="${imageUrl + '/' + cancelDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
+								</div>
+								<div class="info_box">
+									<div class="od_name">
+										<div class="brand">
+											<span th:text="${cancelDtl.brandNm}"></span>
+											<div class="badge_wrap">
+												<em class="tag primary" 	th:if="${cancelDtl.shotDelvYn == 'Y'}">총알배송</em>
+												<em class="tag" 			th:if="${cancelDtl.shotDelvYn == 'N' and cancelDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+												<em class="tag" 			th:if="${cancelDtl.selfGoodsYn == 'N'}">업체직배송</em>
+											</div>
+										</div>
+										<div class="name" th:text="${cancelDtl.goodsNm}"></div>
+									</div>
+									<div class="od_opt">
+										<div class="option">
+											<th:block th:if="${cancelDtl.goodsType == 'G056_S'}">
+												<th:block th:each="option, status : ${cancelDtl.colorNmArr}">
+													<em th:text="${option}"></em>
+													<em th:text="${cancelDtl.optCd2Arr[status.index]}"></em>
+												</th:block>
+											</th:block>
+											<th:block th:unless="${cancelDtl.goodsType == 'G056_S'}">
+												<em th:text="${cancelDtl.colorNm}"></em>
+												<em th:text="${cancelDtl.optCd2}"></em>
+											</th:block>
+										</div>
+									</div>
+									<div class="od_calc">
+										<p class="price">
+											<span class="count"><em th:text="${cancelDtl.chgQty}"></em>개</span>
+										</p>
+									</div>
+								</div>
+							</a>
+						</div>
+<!--						<div class="goods_btn_wrap btn_group_flex">-->
+<!--							<div>-->
+<!--								<button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);">-->
+<!--									<span>1:1 문의</span>-->
+<!--								</button>-->
+<!--							</div>-->
+<!--						</div>-->
+					</div>
+				</th:block>
+			</div>
+		</div>
+		
+		<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="${oneData.chgDt}"></span></div></td>
+						</tr>
+						<tr>
+							<th>취소 완료 일자</th>
+							<td><div><span th:text="${oneData.completeDt}"></span></div></td>
+						</tr>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="tbl_wrap pay_wrap">
+				<div class="tbl_tit"> 
+					<h3>환불 정보</h3>
+					<strong class="pay"><span th:text="${#numbers.formatInteger(oneData.refundAmt + oneData.rfPntAmt + oneData.rfGfcdUseAmt, 1, 'COMMA')}"></span>원</strong>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl class="refund_deduct">
+									<div>
+										<dt>상품 취소 금액</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfCnclAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>배송비</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>할인 금액 차감</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+								</dl>
+								<dl class="refund_detail">
+									<div>
+										<dt>환불 수단</dt>
+										<dd>
+											<div>
+												<span th:if="${oneData.pgGb == 'KCP'}" th:text="${oneData.payMeansNm}"></span>
+												<span th:if="${oneData.pgGb == 'NAVER'}">네이버페이</span>
+												<span th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</span>
+												<span th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</span>
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>결제금액 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.refundAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>포인트 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfPntAmt, 1, 'COMMA')}"></span>P
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>상품권 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfGfcdUseAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</table>
+					<th:block th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
+						<button type="button" id="btn_chit_cancle" class="btn btn_default" onclick="fnReceipt('cancel')">
+							<span>취소 전표 보기</span>
+						</button>
+					</th:block>
+				</div>
+			</div>
+			<p class="desc_txt">카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이<br>소요될 수 있습니다.</p>
+			<div class="btn_group btn_group_flex">
+				<div><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
+			</div>
+		</div>
+	</section>
+</main>
+<script th:inline="javascript">
+/*<![CDATA[*/
+let oneData = [[${oneData}]];
+var isLogin = [[${isLogin}]];
+
+$(document).ready(function() {
+	// 타이틀명
+	$('#htopTitle').text('취소상세');
+});
+/*]]>*/
+</script>
+</th:block>
+
+</body>
+</html>

+ 316 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreExchangeDetailFormMob.html

@@ -0,0 +1,316 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberCreExchangeDetailFormMob.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 교환상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="" class="container my">
+	<section class="content my_exchange">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd th:text="${oneData.ordNo}"></dd>
+				</dl>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+					<th:block th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}">
+						<a href="javascript:void(0);" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}" onclick="fnCreCancel(this, 'noMember');" class="detail_btn">전체신청취소</a>
+					</th:block>
+				</div>
+				
+				<th:block th:if="${exchangeDetailList.exchangeDetailList}" th:each="exchangeDtl, status : ${exchangeDetailList.exchangeDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+					<div class="goods_section">
+						<div class="goods_status">
+							<p class="dlvr_staus" th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_20' or exchangeDtl.ordDtlStat == 'G013_30' or exchangeDtl.ordDtlStat == 'G013_35' or exchangeDtl.ordDtlStat == 'G013_40' or exchangeDtl.ordDtlStat == 'G013_50')}" th:text="|교환진행중|"></p>
+							<p class="dlvr_staus" th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_60' or exchangeDtl.ordDtlStat == 'G013_70')}" th:text="|교환완료|"></p>
+							<p class="dlvr_staus" th:if="${exchangeDtl.chgStat == 'G685_49'}" th:text="|접수취소|"></p>
+							<p class="dlvr_staus" th:unless="${exchangeDtl.chgStat == 'G685_40' or exchangeDtl.chgStat == 'G685_49'}" th:text="${exchangeDtl.chgStatNm}"></p>
+							
+							<p class="dlvr_desc" th:text="|${exchangeDtl.chgDate} ${exchangeDtl.chgTime}|"></p>
+						</div>
+						<div class="goods_detail">
+							<a href="">
+								<div class="thumb_box">
+									<img th:src="${imageUrl + '/' + exchangeDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
+								</div>
+								<div class="info_box">
+									<div class="od_name">
+										<div class="brand">
+											<span th:text="${exchangeDtl.brandNm}"></span>
+											<div class="badge_wrap">
+												<em class="tag primary" th:if="${exchangeDtl.shotDelvYn == 'Y'}">총알배송</em>
+												<em class="tag" 		th:if="${exchangeDtl.shotDelvYn == 'N' and exchangeDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+												<em class="tag" 		th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</span>
+											</div>
+										</div>
+										<div class="name" th:text="${exchangeDtl.goodsNm}"></div>
+									</div>
+									<div class="od_opt">
+										<div class="option">
+											<th:block th:if="${exchangeDtl.goodsType == 'G056_S'}">
+												<th:block th:each="option, status : ${exchangeDtl.colorNmArr}">
+													<em th:text="${option}"></em>
+													<em th:text="${exchangeDtl.optCd2Arr[status.index]}"></em>
+												</th:block>
+											</th:block>
+											<th:block th:unless="${exchangeDtl.goodsType == 'G056_S'}">
+												<em th:text="${exchangeDtl.colorNm}"></em>
+												<em th:text="${exchangeDtl.optCd2}"></em>
+											</th:block>
+										</div>
+									</div>
+									<div class="od_exchange_opt">
+										<span>교환옵션</span>
+										<div class="option">
+											<th:block th:if="${exchangeDtl.goodsType == 'G056_S'}">
+												<th:block th:each="option, status : ${exchangeDtl.chgColorNmArr}">
+													<em th:text="${exchangeDtl.chgItemNmArr[status.index]}"></em>
+													<em th:text="${option}"></em>
+													<em th:text="${exchangeDtl.chgOptCd2Arr[status.index]}"></em>
+												</th:block>
+											</th:block>
+											<th:block th:unless="${exchangeDtl.goodsType == 'G056_S'}">
+												<em th:text="${exchangeDtl.chgColorNm}"></em>
+												<em th:text="${exchangeDtl.chgOptCd2}"></em>
+											</th:block>
+										</div>
+									</div>
+									<div class="od_calc">
+										<p class="price">
+											<span class="count"><em th:text="${exchangeDtl.chgQty}"></em>개</span>
+										</p>
+									</div>
+								</div>
+							</a>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex" th:if="${exchangeDtl.chgStat == 'G685_32' or exchangeDtl.chgStat == 'G685_21'}">
+							<div>
+								<button type="button" class="btn btn_default" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCrePayAddCost(this);">
+									<span>결재하기</span>
+								</button>
+							</div>
+						</div>
+						<div class="goods_txt">
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_21' or (exchangeDtl.chgGb == 'G680_40' and exchangeDtl.chgStat == 'G685_32')}" th:text="|${exchangeDtl.addPayCost}원 결제 후 교환 가능합니다.|"></p>
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_20'}">교환 신청이 접수 되었습니다.<br> 신속하게 처리하여 드리겠습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_30'}">고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_31' and exchangeDtl.chgGb == 'G680_40'}">고객님이 교환하신 상품을 검수 중에 있습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_40' and (exchangeDtl.chgOrdDtlStat == 'G013_60' or exchangeDtl.chgOrdDtlStat == 'G013_70')}">교환이 완료되었습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${exchangeDtl.chgStat == 'G685_49'}">요청하신 교환을 취소하였습니다.</p>
+						</div>
+					</div>
+				</th:block>
+			</div>
+		</div>
+		<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="${oneData.chgDt}"></span></div></td>
+						</tr>
+						<tr>
+							<th>교환 완료 일자</th>
+							<td><div><span th:text="${oneData.completeDt}"></span></div></td>
+						</tr>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="tbl_wrap">
+				<div class="tbl_tit"> 
+					<h3>교환 상품 배송지</h3>
+					<th:block th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35' or oneData.chgOrdDtlStat == 'G013_40'}">
+						<button type="button" class="btn_popup" onclick="fnChangeAddr('recip');">
+							<span>배송지 변경</span>
+						</button>
+					</th:block>
+				</div>
+				<div class="tbl">
+					<div class="ship_info">
+						<dl>
+							<div class="name">
+								<dt><span class="sr-only">배송지명</span></dt>
+								<dd id="recipNm" th:text="${oneData.recipNm}"></dd>
+							</div>
+							<div class="addr">
+								<dt><span class="sr-only">배송주소</span></dt>
+								<dd id="recipAddr" th:text="|${oneData.recipBaseAddr} ${oneData.recipDtlAddr}|"></dd>
+							</div>
+							<div class="phone">
+								<dt><span class="sr-only">휴대폰 번호</span></dt>
+								<dd id="recipPhnno" th:text="${oneData.recipPhnno}"></dd>
+							</div>
+							<div class="ship_request">
+								<dt>배송요청 사항</dt>
+								<dd id="delvMemo" th:text="${oneData.delvMemo}"></dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+			</div>
+		</div>
+		<th:block th:if="${oneData.wdGb == 'W'}">
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>교환 회수지 주소</h3>
+						<th:block th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}">
+							<button type="button" class="btn_popup"  onclick="fnChangeAddr('chger');">
+								<span>회수지 변경</span>
+							</button>
+						</th:block>
+					</div>
+					<div class="tbl">
+						<div class="ship_info">
+							<dl>
+								<div class="name">
+									<dt><span class="sr-only">배송지명</span></dt>
+									<dd id="chgerNm" th:text="${oneData.chgerNm}"></dd>
+								</div>
+								<div class="addr">
+									<dt><span class="sr-only">배송주소</span></dt>
+									<dd id="chgerAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></dd>
+								</div>
+								<div class="phone">
+									<dt><span class="sr-only">휴대폰 번호</span></dt>
+									<dd id="chgerPhnno" th:text="${oneData.chgerPhnno}"></dd>
+								</div>
+							</dl>
+						</div>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<th:block th:if="${not #strings.isEmpty(oneData.wdInvoiceNo) and not #strings.isEmpty(oneData.shipCompNm)}">
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>회수 정보</h3>
+						<button type="button" class="btn_popup" onclick="fnGoToWithdrawDelivery()"><span>회수 조회</span></button>
+					</div>
+					<div class="tbl tbl_row">
+						<dl>
+							<dt class="sr-only">택배회사/송장번호</dt>
+							<dd><span th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></span> / <span th:text="${oneData.wdInvoiceNo}"></span></dd>
+						</dl>
+					</div>
+				</div>
+			</div>
+		</th:block>
+		<div class="inner">
+			<div class="btn_group"><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
+		</div>
+	</section>
+</main>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	let oneData = [[${oneData}]];
+	var isLogin = [[${isLogin}]];
+	let addrGb = '';
+	let memoGb = '';
+
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('교환상세');
+	});
+	
+	// 배송메모 및 반품메모 변경 처리
+	var fnChangeMemo = function(param) {
+		memoGb = param;
+		fnChangeDeliveryMemo();
+	}
+	
+	// 배송지 및 교환지 변경 처리
+	var fnChangeAddr = function(param) {
+		addrGb = param;
+		fnChangeDeliveryAddr();
+	}
+	
+	// 배송지 및 회수지 정보 설정
+	var delvAddrSet = function(delvObj) {
+		let url = '';
+		let ordChgSq 		= oneData.ordChgSq;
+		let delvAddrSq 		= oneData.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;
+		let recipAddr 		= recipBaseAddr + ' ' + recipDtlAddr;
+
+		let data = {};
+
+		if (addrGb == 'chger') {
+			url = '/noMember/change/chger/addr';
+			data.ordChgSq 		= ordChgSq;
+			data.chgerNm 		= recipNm;
+			data.chgerPhnno 	= recipPhnno;
+			data.chgerZipcode 	= recipZipcode;
+			data.chgerBaseAddr 	= recipBaseAddr;
+			data.chgerDtlAddr 	= recipDtlAddr;
+			data.chgerRtnMemo 	= delvMemo;
+		} else {
+			url = '/noMember/change/delvery/addr';
+			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) {
+			if (result.status == '200') {
+				if (addrGb == 'chger') {
+					$('#chgerNm').text(recipNm);
+					$('#chgerPhnno').text(recipPhnno);
+					$('#chgerAddr').text(recipAddr);
+					$('#chgerRtnMemo').text(delvMemo);
+				} else {
+					$('#recipNm').text(recipNm);
+					$('#recipPhnno').text(recipPhnno);
+					$('#recipAddr').text(recipAddr);
+					$('#delvMemo').text(delvMemo);
+				}
+			}
+		});
+	}
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 0 - 7
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListFormMob.html

@@ -283,13 +283,6 @@ var fnGoToCreDetail = function(param) {
 
 	cfnGoToPage(_frontUrl + url);
 }
-
-// 취반교 배송조회 버튼 클릭 이벤트
-var fnGoToDeliveryTrack = function(param) {
-	let ordDtlNo = $(param).attr('ordDtlNo');
-	// TODO
-	// 최반교 배송조회 페이지 이동 처리
-}
 /*]]>*/
 </script>
 

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreListInfoMob.html

@@ -16,7 +16,7 @@
 							<p class="dlvr_desc"><th:block th:text="|${cre.chgDate} ${cre.chgTime}|"></p>
 						</div>
 						<div class="goods_detail">
-							<a href="javascript:void(0);">
+							<a href="javascript:void(0)" th:attr="goodsCd=${cre.goodsCd}" onclick="fnGoToGoodsDetail(this)">
 								<div class="thumb_box">
 									<img th:src="${imageUrl + '/' + cre.sysImgNm + '?RS=90'}" width="100%" alt="">
 								</div>
@@ -120,9 +120,9 @@
 							<!-- 배송조회 -->
 							<th:block th:if="${cre.chgStat} == 'G685_40'">
 								<th:block th:each="exchange, index , ${creList.exchangeOptionList}">
-									<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo} and (${exchange.ordDtlStat} == 'G013_20' or ${exchange.ordDtlStat} == 'G013_30' or ${exchange.ordDtlStat} == 'G013_35' or ${exchange.ordDtlStat} == 'G013_40' or ${exchange.ordDtlStat} == 'G013_50')">
+									<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo} and ${exchange.ordDtlStat} == 'G013_50'">
 										<div>
-											<button type="button" class="btn btn_default" th:ordDtlNo="${cre.ordDtlNo}" onclick="fnGoToDeliveryTrack(this);">
+											<button type="button" class="btn btn_default" th:attr="ordNo=${cre.ordNo}, ordDtlNo=${cre.ordDtlNo}, shipCompCd=${exchange.shipCompCd}, invoiceNo=${exchange.invoiceNo}" onclick="fnGoToDelivery(this);">
 												<span>배송조회</span>
 											</button>
 										</div>

+ 335 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberCreReturnDetailFormMob.html

@@ -0,0 +1,335 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberCreReturnDetailFormMob.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 반품상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+<main role="" id="" class="container my">
+	<section class="content my_return">
+		<div class="inner wide bg_beige">
+			<div class="order_number">
+				<dl class="clear">
+					<dt>주문번호</dt>
+					<dd th:text="${oneData.ordNo}"></dd>
+				</dl>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="part_goods">
+				<div class="goods_top">
+					<div class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+					<th:block th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}">
+						<a href="javascript:void(0);" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}" onclick="fnCreCancel(this, 'noMember');" class="detail_btn">전체신청취소</a>
+					</th:block>
+				</div>
+				
+				<th:block th:if="${returnDetailList.returnDetailList}" th:each="returnDtl, status : ${returnDetailList.returnDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+					<div class="goods_section">
+						<div class="goods_status">
+							<p class="dlvr_staus" th:if="${returnDtl.chgStat == 'G685_33'}" th:text="|환불진행중|"></p>
+							<p class="dlvr_staus" th:if="${returnDtl.chgStat == 'G685_69'}" th:text="|접수취소|"></p>
+							<p class="dlvr_staus" th:unless="${returnDtl.chgStat == 'G685_33' or returnDtl.chgStat == 'G685_69'}" th:text="${returnDtl.chgStatNm}"></p>
+							<p class="dlvr_desc"  th:text="|${returnDtl.chgDate} ${returnDtl.chgTime}|"></p>
+						</div>
+						
+						<div class="goods_detail">
+							<a href="javascript:void(0)" th:attr="goodsCd=${returnDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+								<div class="thumb_box">
+									<img th:src="${imageUrl + '/' + returnDtl.sysImgNm + '?RS=90'}" width="100%" alt="">
+								</div>
+								<div class="info_box">
+									<div class="od_name">
+										<div class="brand">
+											<span th:text="${returnDtl.brandNm}"></span>
+											<div class="badge_wrap">
+												<em class="tag primary" th:if="${returnDtl.shotDelvYn == 'Y'}">총알배송</em>
+												<em class="tag" 		th:if="${returnDtl.shotDelvYn == 'N' and returnDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+												<em class="tag" 		th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</span>
+											</div>
+										</div>
+										<div class="name" th:text="${returnDtl.goodsNm}"></div>
+									</div>
+									<div class="od_opt">
+										<div class="option">
+											<th:block th:if="${returnDtl.goodsType == 'G056_S'}">
+												<th:block th:each="option, status : ${returnDtl.colorNmArr}">
+													<em th:text="${option}"></em>
+													<em th:text="${returnDtl.optCd2Arr[status.index]}"></em>
+												</th:block>
+											</th:block>
+											<th:block th:unless="${returnDtl.goodsType == 'G056_S'}">
+												<em th:text="${returnDtl.colorNm}"></em>
+												<em th:text="${returnDtl.optCd2}"></em>
+											</th:block>
+										</div>
+									</div>
+									<div class="od_calc">
+										<p class="price">
+											<span class="count"><em th:text="${returnDtl.chgQty}"></em>개</span>
+										</p>
+									</div>
+								</div>
+							</a>
+						</div>
+						<div class="goods_btn_wrap btn_group_flex" th:if="${returnDtl.chgStat == 'G685_32' or returnDtl.chgStat == 'G685_51'}">
+							<div>
+								<button type="button" class="btn btn_default" th:attr="ordNo=${returnDtl.ordNo}, ordChgSq=${returnDtl.ordChgSq}" onclick="fnCrePayAddCost(this);">
+									<span>결재하기</span>
+								</button>
+							</div>
+						</div>
+						<div class="goods_txt">
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_51' or (returnDtl.chgGb == 'G680_30' and returnDtl.chgStat == 'G685_32')}" th:text="|${returnDtl.addPayCost}원 결제 후 반품 가능합니다.|"></p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_50'}">반품 신청이 접수 되었습니다.<br> 신속하게 처리하여 드리겠습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_30'}">고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_31' and returnDtl.chgGb == 'G680_30'}">고객님이 반품하신 상품을 검수 중에 있습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_33'}">환불을 진행하고 있습니다(영업일 최대 3일 내 환불 예정)</p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_60'}">반품이 완료되었습니다.</p>
+							<p class="cf_txt cf_desc" th:if="${returnDtl.chgStat == 'G685_69'}">요청하신 반품을 취소하였습니다.</p>
+						</div>
+					</div>
+				</th:block>
+			</div>
+		</div>
+		
+		<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="${oneData.chgDt}"></span></div></td>
+						</tr>
+						<tr>
+							<th>반품 완료 일자</th>
+							<td><div><span th:text="${oneData.completeDt}"></span></div></td>
+						</tr>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="inner">
+			<div class="tbl_wrap">
+				<div class="tbl_tit"> 
+					<h3>반품 회수지 주소</h3>
+					<th:block th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}">
+						<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();">
+							<span>회수지 변경</span>
+						</button>
+					</th:block>
+				</div>
+				<div class="tbl">
+					<div class="ship_info">
+						<dl>
+							<div class="name">
+								<dt><span class="sr-only">배송지명</span></dt>
+								<dd id="chgerNm" th:text="${oneData.chgerNm}"></dd>
+							</div>
+							<div class="addr">
+								<dt><span class="sr-only">배송주소</span></dt>
+								<dd id="chgerAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></dd>
+							</div>
+							<div class="phone">
+								<dt><span class="sr-only">휴대폰 번호</span></dt>
+								<dd id="chgerPhnno" th:text="${oneData.chgerPhnno}"></dd>
+							</div>
+						</dl>
+					</div>
+				</div>
+			</div>
+		</div>
+		<th:block th:if="${not #strings.isEmpty(oneData.wdInvoiceNo) and not #strings.isEmpty(oneData.shipCompNm)}">
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>회수 정보</h3>
+						<button type="button" class="btn_popup" onclick="fnGoToWithdrawDelivery()"><span>회수 조회</span></button>
+					</div>
+					<div class="tbl tbl_row">
+						<dl>
+							<dt class="sr-only">택배회사/송장번호</dt>
+							<dd><span th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></span> / <span th:text="${oneData.wdInvoiceNo}"></span></dd>
+						</dl>
+					</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(oneData.refundAmt + oneData.rfPntAmt + oneData.rfGfcdUseAmt, 1, 'COMMA')}"></span>원</strong>
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="227">
+							<col width="*">
+						</colgroup>   
+						<tr>
+							<td>
+								<dl class="refund_deduct">
+									<div>
+										<dt>상품 취소 금액</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfCnclAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>배송비</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>할인 금액 차감</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+								</dl>
+								<dl class="refund_detail">
+									<div>
+										<dt>환불 수단</dt>
+										<dd>
+											<div>
+												<span th:if="${oneData.pgGb == 'KCP'}" th:text="${oneData.payMeansNm}"></span>
+												<span th:if="${oneData.pgGb == 'NAVER'}">네이버페이</span>
+												<span th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</span>
+												<span th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</span>
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>결제금액 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.refundAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>포인트 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfPntAmt, 1, 'COMMA')}"></span>P
+											</div>
+										</dd>
+									</div>
+									<div>
+										<dt>상품권 환불</dt>
+										<dd>
+											<div>
+												<span th:text="${#numbers.formatInteger(oneData.rfGfcdUseAmt, 1, 'COMMA')}"></span>원
+											</div>
+										</dd>
+									</div>
+								</dl>
+							</td>
+						</tr>
+					</table>
+					<th:block th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
+						<button type="button" id="btn_chit_cancle" class="btn btn_default" onclick="fnReceipt('cancel')">
+							<span>취소 전표 보기</span>
+						</button>
+					</th:block>
+				</div>
+			</div>
+			<p class="desc_txt">카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이<br>소요될 수 있습니다.</p>
+			<div class="btn_group btn_group_flex">
+				<div><button class="btn btn_dark" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"><span>확인</span></button></div>
+			</div>
+		</div>
+	</section>
+</main>
+<script th:inline="javascript">
+/*<![CDATA[*/
+let oneData = [[${oneData}]];
+var isLogin = [[${isLogin}]];
+
+$(document).ready(function() {
+	// 타이틀명
+	$('#htopTitle').text('반품상세');
+});
+
+// 회수지 정보 설정
+var delvAddrSet = function(delvObj) {
+	let ordChgSq 		= oneData.ordChgSq;
+	let chgerNm 		= delvObj.recipNm;
+	let chgerPhnno 		= delvObj.recipPhnno;
+	let chgerZipcode 	= delvObj.recipZipcode;
+	let chgerBaseAddr 	= delvObj.recipBaseAddr;
+	let chgerDtlAddr 	= delvObj.recipDtlAddr;
+	let chgerRtnMemo 	= delvObj.delvMemo;
+	let chgerAddr 		= chgerBaseAddr + ' ' + chgerDtlAddr;
+
+	let data = {};
+	data.ordChgSq 		= ordChgSq;
+	data.chgerNm 		= chgerNm;
+	data.chgerPhnno 	= chgerPhnno;
+	data.chgerZipcode 	= chgerZipcode;
+	data.chgerBaseAddr 	= chgerBaseAddr;
+	data.chgerDtlAddr 	= chgerDtlAddr;
+	data.chgerRtnMemo 	= chgerRtnMemo;
+
+	let jsonData = JSON.stringify(data);
+
+	gagajf.ajaxJsonSubmit('/noMember/change/chger/addr', jsonData, function(result) {
+		if (result.status == '200') {
+			$('#chgerNm').text(chgerNm);
+			$('#chgerPhnno').text(chgerPhnno);
+			$('#chgerAddr').text(chgerAddr);
+			$('#chgerRtnMemo').text(chgerRtnMemo);
+		}
+	});
+}
+
+// 배송메모 설정
+var delvMemoSet = function(delvMemoObj) {
+	let ordChgSq = oneData.ordChgSq;
+	let delvMemo = delvMemoObj.delvMemo;
+
+	let data = {};
+	data.ordChgSq = ordChgSq;
+	data.chgerRtnMemo = delvMemo;
+	
+	let jsonData = JSON.stringify(data);
+	
+	gagajf.ajaxJsonSubmit('/noMember/change/chger/rtn/memo', jsonData, function(result) {
+		if (result.status == '200') {
+			$("#chgerRtnMemo").text(delvMemo);
+		}
+	});
+	
+}
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 368 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberDeliveryInfoFormMob.html

@@ -0,0 +1,368 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberDeliveryInfoFormMob.html
+ * @desc    : 비회원 > 배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="noMemberDeliveryInfoForm" 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">
+						<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+					</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">
+								<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+								<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+							</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)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm + '?RS=90'}" 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">
+													<em class="order_badge order_bullet_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="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></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>
+							
+							<!-- 주문상태별 버튼기능 정의 -->
+							<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+							<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+								<div class="goods_btn_wrap btn_group_flex">
+									<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+								</div>
+							</th:block>
+							<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+							<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+							<th:block th:if="${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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //교환가능, 반품가능 -->
+							</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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></div>
+									</th:block>
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_rtn_req" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+
+									<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></div>
+								</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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+								</div>
+							</th:block>
+							<!-- //구매확정 -->
+							<!-- //주문상태별 버튼기능 정의 -->
+							
+							<!-- 주문상태별 문구정보 정의 -->
+							<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">해당 상품은 교환/반품이 불가능한 상품입니다.</p>
+									</th:block>
+									<!-- //교환불가능, 반품불가능 -->
+
+									<!-- 교환불가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.</p>
+									</th:block>
+									<!-- //교환불가능 -->
+
+									<!-- 반품불가능 -->
+									<th:block th:if="${ordDtl.returnableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.</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:block th:if="${#lists.size(order.ordDtlList) == status.count}">
+								<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="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</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>
+		
+		<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>
+						<tbody><tr>
+							<th>보내는 사람</th>
+							<td>
+								<div>
+									<span th:text="${deliveryAddrInfo.recipNm}"></span> / <span th:text="${deliveryAddrInfo.recipPhnno}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>제품정보</th>
+							<td>
+								<div>
+									<span th:utext="|${oneData.brandNm}<br/>${oneData.goodsNm}|"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>송장번호</th>
+							<td>
+								<div>
+									<span th:text="${oneData.invoiceNo}"></span>
+								</div>
+							</td>
+						</tr>
+						<tr>
+							<th>배송주소</th>
+							<td>
+								<div>
+									<span th:utext="|${deliveryAddrInfo.recipBaseAddr}<br/>${deliveryAddrInfo.recipDtlAddr}|"></span>
+								</div>
+							</td>
+						</tr>
+					</tbody></table>
+				</div>
+			</div>
+			<div class="goods_tbl">
+				<div class="tblWrap">
+					<table class="table">
+						<colgroup>
+							<col style="width: 34%;">
+							<col style="width: 33%;">
+							<col style="width: 33%;">
+						</colgroup>
+						<thead>
+							<tr>
+								<th scope="col">시간</th>
+								<th scope="col">장소</th>
+								<th scope="col">유형</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+								<td th:utext="|${#strings.substring(sweetTrackerInfo.timeTrans, 0, 10)}<br/>${#strings.substring(sweetTrackerInfo.timeTrans, 11, 19)}|"></td>
+								<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+								<td th:text="${sweetTrackerInfo.details}"></td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+		// 타이틀명
+		$('#htopTitle').text('배송조회');
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 769 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberExchangeFormMob.html

@@ -0,0 +1,769 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberExchangeFormMob.html
+ * @desc    : 비회원 > 교환신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+
+<main class="container my">
+	<section class="content my_exchange my_return">
+		<form id="exchangeForm" class="form_wrap">
+			<input type="hidden" name="chgReason"/>
+			
+			<div class="inner wide bg_beige">
+				<div class="order_number">
+					<dl class="clear">
+						<dt>주문번호</dt>
+						<dd th:text="${oneData.ordNo}"></dd>
+					</dl>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="part_goods">
+					<div class="goods_top">
+						<div class="goods_date">주문일 <span class="date" th:text="${oneData.ordDt}"></span></div>
+					</div>
+					
+					<th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_detail">
+								<a href="javascript:void(0)" th:attr="goodsCd=${exchange.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + exchange.sysImgNm + '?RS=90'}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${exchange.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="tag primary" th:if="${exchange.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="tag" 		th:if="${exchange.shotDelvYn == 'N' and exchange.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="tag" 		th:if="${exchange.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${exchange.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<!-- 세트상풍일때 -->
+											<th:block th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}">
+												<div class="option">
+													<em th:text="${exchange.itemNmArr[status.index]}"></em>
+													<em th:text="${exchange.optCd2Arr[status.index]}"></em>
+												</div>
+											</th:block>
+											<!-- //세트상풍일때 -->
+											<!-- 일반상풍일때 -->
+											<th:block th:unless="${exchange.goodsType == 'G056_S'}">
+												<div class="option">
+													<em th:text="${exchange.colorNm}"></em>
+													<em th:text="${exchange.optCd2}"></em>
+												</div>
+											</th:block>
+											<!-- //일반상풍일때 -->
+										</div>
+										<div class="od_exchange_opt exchangeOption" style="display:none" th:attr="ordDtlNo=${exchange.ordDtlNo}">
+											<th:block th:if="${exchange.goodsType == 'G056_S'}" th:each="option, status : ${exchange.colorNmArr}">
+												<span>교환옵션</span>
+												<div class="option">
+													<em th:text="${exchange.itemNmArr[status.index]}"></em>
+													<em th:text="${exchange.optCd2Arr[status.index]}"></em>
+												</div>
+											</th:block>
+											<th:block th:unless="${exchange.goodsType == 'G056_S'}">
+												<span>교환옵션</span>
+												<div class="option">
+													<em th:text="${exchange.colorNm}"></em>
+													<em th:text="${exchange.optCd2}"></em>
+												</div>
+											</th:block>
+										</div>
+										<div class="od_calc">
+											<th:block th:if="${(exchange.ordAmt - exchange.cnclRtnAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}">
+												<p class="sale_price">
+													<del><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
+												</p>
+											</th:block>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="goods_select">
+								<div class="select_custom select_count">
+									<div class="combo">
+										<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${exchange.ordDtlNo}, ordCanChgQty=${exchange.ordCanChgQty}"/>
+										<input type="hidden" name="chgOptionList" th:attr="ordDtlNo=${exchange.ordDtlNo}"/>
+										<div class="select">수량 0개</div>
+									</div>
+								</div>
+							</div>
+							<div class="goods_btn_wrap btn_group_flex">
+								<div>
+									<button type="button" class="btn btn_dark btn_opion_change" th:attr="ordNo=${exchange.ordNo}, ordDtlNo=${exchange.ordDtlNo}" onclick="fnChangeOption(this)">
+										<span>교환 옵션 변경</span>
+									</button>
+								</div>
+							</div>
+							<th:block th:if="${#lists.size(exchangeList.returnList) == status.count}">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">교환하실 상품의 수량 및 옵션을 선택하신 후<br>교환 신청을 하실 수 있습니다.</p>
+								</div>
+							</th:block>
+						</div>
+					</th:block>
+				</div>
+			</div>
+			
+			<!-- 교환사유 -->
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>교환 사유</h3>
+					</div>
+					<div class="tbl tbl_tarea">
+						<table>
+							<colgroup>
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<th class="sr-only">반품 접수 일자</th>
+								<td>
+									<div class="select_custom select_exchange">
+										<div class="combo">
+											<div class="select">교환 사유를 선택하세요.</div>
+										</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th class="sr-only">반품 완료 일자</th>
+								<td>
+									<div class="textarea_wrap">
+										<textarea class="doc_return" name="chgMemo" id="chgMemo" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
+										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
+									</div>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+			<!-- //교환사유 -->
+			
+			<!-- 반품방식 -->
+			<div class="inner wdGb">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>반품방식 선택</h3>
+					</div>
+					<div class="retrieve_method">
+						<div class="tbl tbl_radio">
+							<table>
+								<colgroup>
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th class="sr-only">방문 회수</th>
+										<td>
+											<div class="form_field">
+												<input type="radio" name="wdGb" id="withdraw"  checked="checked" value="W">
+												<label for="withdraw"><span>방문 회수 <b class="c_primary">택배사에서 고객에게 방문하여 회수</b></span></label>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th class="sr-only">직접 배송</th>
+										<td>
+											<div class="form_field">
+												<input type="radio" name="wdGb" id="direct" value="D">
+												<label for="direct"><span>직접 배송 <b class="c_primary">고객이 반품지로 직접 반송</b></span></label>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+								
+							</table>
+						</div>
+					</div>
+				</div>
+			</div>
+			<!-- //반품방식 -->
+			
+			<div class="inner">
+				<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
+					<div class="tbl_wrap">
+						<div class="tbl_tit"> 
+							<h3>반품 회수지 주소</h3>
+							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
+						</div>
+						<div class="tbl">
+							<div class="ship_info">
+								<dl>
+									<div class="name">
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd th:text="${deliveryAddrInfo.recipNm}"></dd>
+									</div>
+									<div class="addr">
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
+									</div>
+									<div class="phone">
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
+									</div>
+									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
+								</dl>
+								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="retrieve_box direct" style="display:none;" id="returnLocation">
+					<div class="tbl_wrap">
+						<div class="tbl_tit"> 
+							<h3>반송 정보</h3>
+						</div>
+						<div class="tbl">
+							<div class="ship_info">
+								<dl>
+									<div class="addr">
+										<dt><span>반송 주소</span></dt>
+										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
+									</div>
+									<div class="phone">
+										<dt><span>반송 송장번호</span></dt>
+										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+									</div>
+								</dl>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>교환 상품 배송지</h3>
+						<button type="button" class="btn_popup" onclick="fnChangeAddr('recip')"><span>배송지 변경</span></button>
+					</div>
+					<div class="tbl">
+						<div class="ship_info">
+							<dl>
+								<div class="name">
+									<dt><span class="sr-only">배송지명</span></dt>
+									<dd id="recipNm" th:text="${deliveryAddrInfo.recipNm}"></dd>
+								</div>
+								<div class="addr">
+									<dt><span class="sr-only">배송주소</span></dt>
+									<dd id="recipAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
+								</div>
+								<div class="phone">
+									<dt><span class="sr-only">휴대폰 번호</span></dt>
+									<dd id="recipPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></dd>
+								</div>
+							</dl>
+							<input type="hidden" name="recipNm" 		th:value="${deliveryAddrInfo.recipNm}">
+							<input type="hidden" name="recipPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+							<input type="hidden" name="recipZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+							<input type="hidden" name="recipBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+							<input type="hidden" name="recipDtlAddr"	th:value="${deliveryAddrInfo.recipDtlAddr}">
+							<input type="hidden" name="delvMemo" 		th:value="${deliveryAddrInfo.delvMemo}">
+						</div>
+					</div>
+				</div>
+				<!-- 교환 배송비결제 필요할 경우 -->
+				<div class="required_group" id="addDeliveryFee" style="display:none">
+					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
+					<input type="hidden" name="addPayCost"/>
+				</div>
+				<!-- //교환 배송비결제 필요할 경우 -->
+				<div class="btn_group btn_group_flex">
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST)"><span>취소</span></button></div>
+					<div><button type="button" id="btn_exchange_confirm" class="btn btn_dark" onclick="fnExchange()"><span>교환 신청</span></button></div>
+				</div>
+			</div>
+		</form>
+	</section>
+</main>
+
+<!-- 210408_ 추가 : 교환 수량 선택 팝업 -->
+<th:block th:if="${exchangeList.returnList}" th:each="exchange, status : ${exchangeList.returnList}">
+	<div class="popup_box exchangeCountPop">
+		<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" qty=0 onclick="fnChangeExchangeQty(this);">
+						<span>수량 0개</span>
+					</button>
+					<th:block th:each="num : ${#numbers.sequence(1, exchange.ordCanChgQty)}">
+						<button type="button" th:qty="${num}" onclick="fnChangeExchangeQty(this);">
+							<span th:text="|수량 ${num}개|"></span>
+						</button>
+					</th:block>
+					<input type="hidden" name="ordDtlNo" th:value="${exchange.ordDtlNo}">
+				</div> 
+			</div>
+		</div>
+	</div>
+</th:block>
+<!-- //210408_ 추가 : 수량 선택 팝업 -->
+
+<!-- 210408_ 추가 : 사유 선택 팝업 -->
+<div id="exchangeReasonPop" class="popup_box exchangeReasonPop">
+	<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">
+				<th:block th:if="${exchangeReason}" th:each="oneData, status : ${exchangeReason}">
+					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeExchangeReason(this);">
+						<span th:text="${oneData.cdNm}"></span>
+					</button>
+				</th:block>
+			</div> 
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 사유 선택 팝업 -->
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+var isLogin 		= [[${isLogin}]];
+let oneData 		= [[${oneData}]];
+let isCustomer 		= false;
+let addrGb 			= '';
+let jsonObj 		= {};
+let ordNo 			= [[${oneData.ordNo}]];
+
+$(document).ready(function() {	
+	// 입점업체의 경우 회수방식 직접배송 처리
+	if (oneData.selfGoodsYn != 'Y') {
+		$('#withdraw').click();
+		$('.wdGb').css('display','none');
+	}
+
+	// 타이틀명
+	$('#htopTitle').text('교환 신청');
+});
+
+// 교환수량버튼기능
+$(".select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".exchangeCountPop").hide();
+		
+		// 수량팝업활성화
+		$(".exchangeCountPop").eq(idx).show().addClass("active");
+		
+		$("body").css({"overflow":"hidden"});
+	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+});
+
+// 반품 방식 변경 이벤트
+$('#exchangeForm input[name=wdGb]').on('change', function() {
+	let wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
+
+	if (wdGb == 'W') {
+		$('#chgerLocation').css('display', '');
+		$('#returnLocation').css('display', 'none');
+	} else {
+		$('#chgerLocation').css('display', 'none');
+		$('#returnLocation').css('display', '');
+	}
+
+	// 추가 배송비 계산
+	fnAddCost();
+});
+
+// 교환 처리
+var fnExchange = function() {
+	let url 			= '/noMember/exchange';
+	let delvFeeCd 		= oneData.delvFeeCd;
+	let ordDtlNo 		= oneData.ordDtlNo;
+	let supplyCompCd 	= oneData.supplyCompCd;
+	let excDelvFee 		= oneData.excDelvFee;
+	let rtnDelvFee 		= oneData.rtnDelvFee;
+	let chgReason 		= $('#exchangeForm input[name=chgReason]').val();
+	let addPayCost 		= $('#exchangeForm input[name=addPayCost]').val();
+	
+	// 교환 사유 체크
+	if (gagajf.isNull(chgReason)) {
+		mcxDialog.alert('교환 사유를 선택해주세요.');
+		return false;
+	}
+
+	// 교환 상품 설정
+	let chgOrdDtlNoArr = [];
+	$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
+		if (Number($(item).val()) > 0) {
+			chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
+		}
+	});
+
+	// 교환옵션 설정
+	let cancelReqList = [];
+	$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
+		if (chgOrdDtlNoArr.includes($(item).attr('ordDtlNo')) && !gagajf.isNull($(item).val())) {
+			let json 		= $(item).val();
+			let jsonData 	= JSON.parse(json);
+			let cancelReq 	= {};
+			$.each(jsonData, function (index, chgOpt) {
+				cancelReq.ordDtlNo 			= chgOpt.ordDtlNo;
+				cancelReq.ordDtlItemSq 		= chgOpt.ordDtlItemSq;
+				cancelReq.delvFeeCd 		= delvFeeCd;
+				cancelReq.supplyCompCd 		= supplyCompCd;
+				cancelReq.excDelvFee 		= excDelvFee;
+				cancelReq.rtnDelvFee 		= rtnDelvFee;
+				cancelReq.ordChgOpt 		= chgOpt.chgOptCd2;
+				cancelReq.chgQty 			= chgOpt.chgQty;
+				cancelReqList.push(cancelReq);
+			});
+		}
+	});
+
+	// 교환 수량 및 변경 옵션 체크
+	if (chgOrdDtlNoArr.length > cancelReqList.length) {
+		mcxDialog.alert('교환하실 상품의 변경 옵션을 선택해주세요.');
+		return false;
+	} else if (chgOrdDtlNoArr.length < cancelReqList.length || chgOrdDtlNoArr.length == 0) {
+		mcxDialog.alert('교환하실 상품의 수량을 선택해주세요.');
+		return false;
+	}
+
+	// 교환 필요 데이터 설정
+	let data 			= {};
+	data.ordNo 			= oneData.ordNo;
+	data.isCustomer 	= isCustomer;
+	data.wdGb 			= $('#exchangeForm input[name=wdGb]:radio:checked').val();
+	data.wdInvoiceNo 	= $('#exchangeForm input[name=wdInvoiceNo]').val();
+	data.recipNm 		= $('#exchangeForm input[name=recipNm]').val();
+	data.recipPhnno 	= $('#exchangeForm input[name=recipPhnno]').val();
+	data.recipTelno 	= $('#exchangeForm input[name=recipTelno]').val();
+	data.recipZipcode 	= $('#exchangeForm input[name=recipZipcode]').val();
+	data.recipBaseAddr 	= $('#exchangeForm input[name=recipBaseAddr]').val();
+	data.recipDtlAddr 	= $('#exchangeForm input[name=recipDtlAddr]').val();
+	data.delvMemo 		= $('#exchangeForm input[name=delvMemo]').val();
+	data.chgReason 		= $('#exchangeForm input[name=chgReason]').val();
+	data.chgMemo 		= $('#exchangeForm textarea[name=chgMemo]').val();
+	data.chgerNm 		= $('#exchangeForm input[name=chgerNm]').val();
+	data.chgerPhnno 	= $('#exchangeForm input[name=chgerPhnno]').val();
+	data.chgerTelno 	= $('#exchangeForm input[name=chgerTelno]').val();
+	data.chgerEmail 	= $('#exchangeForm input[name=chgerEmail]').val();
+	data.chgerZipcode 	= $('#exchangeForm input[name=chgerZipcode]').val();
+	data.chgerBaseAddr 	= $('#exchangeForm input[name=chgerBaseAddr]').val();
+	data.chgerDtlAddr 	= $('#exchangeForm input[name=chgerDtlAddr]').val();
+	data.chgerRtnMemo 	= $('#exchangeForm input[name=chgerRtnMemo]').val();
+	data.addPayCost 	= addPayCost;
+	data.addPayAmt 		= 0;
+	data.cancelReqList 	= cancelReqList;
+
+	let jsonData = JSON.stringify(data);
+
+	// 교환 처리
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		if (addPayCost > 0) {
+			let ordChgSq = result.ordChgSq;
+			let ordNo = result.ordNo;
+
+			$('#addPaymentForm input[name=ordChgSq]').val(ordChgSq);
+			$('#addPaymentForm input[name=ordNo]').val(ordNo);
+
+			document.addPaymentForm.submit();
+		} else {
+			cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);
+		}
+	}, true);
+}
+
+// 교환 옵션 변경 팝업
+var fnChangeOption = function(param) {
+	let ordNo 		= $(param).attr('ordNo');
+	let ordDtlNo 	= $(param).attr('ordDtlNo');
+
+	// 옵션변경 수량 체크
+	let chgQtyArr 		= [];
+	let chgOrdDtlNoArr 	= [];
+
+	$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
+		chgQtyArr.push($(item).val());
+		chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
+	});
+
+	let index 	= chgOrdDtlNoArr.indexOf(ordDtlNo);
+	let chgQty 	= chgQtyArr[index];
+	
+	if (chgQty == null || chgQty <= 0) {
+		mcxDialog.alert('교환 옵션 변경 수량을 선택해주세요.');
+		return false;
+	}
+
+	var jsonObj 		= {};
+	jsonObj.ordNo 		= ordNo;
+	jsonObj.ordDtlNo 	= ordDtlNo;
+	jsonObj.chgQty 		= chgQty;
+
+	$.ajax({
+		type		: "POST",
+		url 		: "/noMember/change/option/popup/form",
+		data		: jsonObj,
+		dataType 	: "html",
+		success 	: function(result) {
+			if (result != null) {
+				$("#exchangePop .modal-content").html(result);
+				$("#exchangePop").modal("show");
+			}
+		}
+	});
+}
+
+// 교환 옵션 변경 팝업 콜백 처리
+var fnChangeOptionCallback = function(param) {
+	let ordDtlNo;
+	let html = '';
+	
+	html += '<span>교환옵션</span>';
+
+	// 교환옵션 HTML 처리
+	$.each(param, function(idx, item) {
+		ordDtlNo 		= item.ordDtlNo;
+		let colorNm 	= item.colorNm;
+		let itemNm 		= item.itemNm;
+		let goodsType 	= item.goodsType;
+		let optCd2 		= item.chgOptCd2;
+		let qty 		= item.chgQty;
+
+		if (goodsType == 'G056_S') {
+			html += '<div class="option">';
+			html += '	<em>'+itemNm+'</em>';
+			html += '	<em>'+optCd2+'</em>';
+			html += '</div>';
+		} else {
+			html += '<div class="option">';
+			html += '	<em>'+colorNm+'</em>';
+			html += '	<em>'+optCd2+'</em>';
+			html += '</div>';
+		}
+	});
+
+	$.each($('#exchangeForm .exchangeOption'), function(idx, item) {
+		if (ordDtlNo == $(item).attr('ordDtlNo')) {
+			$(item).css('display', '');
+			$(item).html(html);
+		}
+	});
+
+	// 교환옵션 값 JSON 형태로 설정
+	$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
+		if (ordDtlNo == $(item).attr('ordDtlNo')) {
+			$(item).val(JSON.stringify(param));
+		}
+	});
+}
+
+// 교환 수량 변경 이벤트
+var fnChangeExchangeQty = function(param) {
+	var ordDtlNo = "";
+	
+	// 교환수량설정
+	if (param != null) {
+		$("#exchangeForm input[name=chgQty]").each(function(idx){
+			ordDtlNo = $(this).attr("ordDtlNo");
+			if (ordDtlNo == $(param).parent().find("input[name=ordDtlNo]").val()) {
+				$(this).val($(param).attr("qty"));
+				$(this).parent().find(".select").text($(param).find("span").text());
+			}
+		});
+	}
+	
+	// 교환옵션 표기 초기화
+	$.each($('#exchangeForm .exchangeOption'), function(idx, item) {
+		if (ordDtlNo == $(item).attr('ordDtlNo')) {
+			$(item).css('display', 'none');
+			$(item).html('');
+		}
+	});
+
+	// 교환옵션 값 초기화
+	$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
+		if (ordDtlNo == $(item).attr('ordDtlNo')) {
+			$(item).val('');
+		}
+	});
+	
+	// 추가 배송비 계산
+	fnAddCost();
+}
+
+// 교환 사유 변경 이벤트
+var fnChangeExchangeReason = function(param) {
+	var customerReasonArr 	= ['G689_10', 'G689_30'];
+	let chgReason 			= $(param).attr('chgReason');
+
+	// 귀책사유체크(취소,반품,교환)
+	isCustomer = customerReasonArr.includes(chgReason);
+	
+	// 반품 사유 설정
+	$('#exchangeForm input[name=chgReason]').val(chgReason);
+	$("#exchangeForm .select_custom.select_exchange .select").text($(param).find("span").text());
+
+	// 추가 배송비 계산
+	fnAddCost();
+}
+
+// 추가 배송비 계산
+var fnAddCost = function() {
+	let addPayCost 		= 0;
+	let delvFee 		= oneData.delvFee;
+	let rtnDelvFee 		= oneData.rtnDelvFee;
+
+	// 교환 수량 체크
+	let qty = 0;
+	$.each($('#exchangeForm input[name=chgQty]'), function (idx, item) {
+		qty += Number($(item).val());
+	});
+
+	// 교환 수량이 있고 고객 귀책 사유 시 추가 배송비 계산
+	if (isCustomer && qty > 0) {
+		addPayCost = delvFee;
+
+		// 회수 요청 시 반품배송비 추가
+		if ($('#exchangeForm input[name=wdGb]:radio:checked').val() == 'W') {
+			addPayCost += rtnDelvFee;
+		}
+
+		// 추가배송비 영역 설정
+		$('#addDeliveryFee').css('display', '');
+		$('#addPayCost').text(addPayCost.addComma() + '원');
+		$('#exchangeForm input[name=addPayCost]').val(addPayCost);
+	} else {
+		$('#addDeliveryFee').css('display', 'none');
+		$('#exchangeForm input[name=addPayCost]').val(0);
+	}
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+}
+
+// 배송지 정보 설정
+var delvAddrSet = function(delvObj) {
+	let recipNm 		= delvObj.recipNm;
+	let recipPhnno 		= delvObj.recipPhnno;
+	let recipZipcode 	= delvObj.recipZipcode;
+	let recipBaseAddr 	= delvObj.recipBaseAddr;
+	let recipDtlAddr 	= delvObj.recipDtlAddr;
+	let delvMemo 		= delvObj.delvMemo;
+
+	if (addrGb == 'recip') {
+		$('#exchangeForm input[name=recipNm]').val(recipNm);
+		$('#exchangeForm input[name=recipPhnno]').val(recipPhnno);
+		$('#exchangeForm input[name=recipZipcode]').val(recipZipcode);
+		$('#exchangeForm input[name=recipBaseAddr]').val(recipBaseAddr);
+		$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
+		$('#exchangeForm input[name=delvMemo]').val(delvMemo);
+		
+		$('#recipNm').text(recipNm);
+		$('#recipPhnno').text(recipPhnno);
+		$('#recipAddr').text(recipBaseAddr + ' ' + recipDtlAddr);
+		$('#delvMemo').text(delvMemo);
+	} else if (addrGb == 'chger') {
+		let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr;
+		$('#exchangeForm input[name=chgerNm]').val(recipNm);
+		$('#exchangeForm input[name=chgerPhnno]').val(recipPhnno);
+		$('#exchangeForm input[name=chgerZipcode]').val(recipZipcode);
+		$('#exchangeForm input[name=chgerBaseAddr]').val(recipBaseAddr);
+		$('#exchangeForm input[name=chgerDtlAddr]').val(recipDtlAddr);
+		$('#exchangeForm input[name=chgerRtnMemo]').val(delvMemo);
+
+		$('#chgerNm').text(recipNm);
+		$('#chgerPhnno').text(recipPhnno);
+		$('#chgerAddr').html(chgerAddr);
+	}
+}
+
+// 배송메모 설정
+var delvMemoSet = function(delvMemoObj) {
+	let delvMemo = delvMemoObj.delvMemo;
+	$('input[name=delvMemo]').val(delvMemo);
+	$("#delvMemo").text(delvMemo);
+}
+
+// 배송지 및 교환지 변경 처리
+var fnChangeAddr = function(param) {
+	addrGb = param;
+	fnChangeDeliveryAddr();
+}
+</script>
+
+<script>
+// 세부 사유 글자 수 제한
+$('.doc_return').keyup(function(e){
+	var content = $(this).val();
+	$('#return_cnt').html(content.length);
+	//if (content.length > 200){
+	//	mcxDialog.alert("최대 200자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+	//	$(this).val(content.substring(0, 200));
+	//	$('#return_cnt').html("200");
+	//}
+});
+
+// 반품 사유 선택 팝업
+$(document).on("click", ".select_custom.select_exchange",function(e){
+	$('#exchangeReasonPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
+
+// 팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
+
+// 버튼 색
+$(document).on('click', '.popup_box .button_list button',function(){
+	$('.popup_box .button_list button').removeClass('on');
+	$(this).addClass('on');
+});
+
+function handleOnInput(el, maxlength) {
+	if(el.value.length > maxlength)  {
+		el.value = el.value.substr(0, maxlength);
+	}
+}
+</script>
+
+
+</th:block>
+
+</body>
+</html>

+ 784 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberOrderDetailFormMob.html

@@ -0,0 +1,784 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberOrderDetailFormMob.html
+ * @desc    : 비회원 > 주문상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+<main role="" id="mypageOrderDetailForm" 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">
+						<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+						<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>
+						<th:block th:if="${allDecideYn == 'Y' and order.ordReqChgQty == 0}">
+							<a href="javascript:void(0)" id="btn_all_confirm" class="purchase_btn" th:attr="ordNo=${ordNo}" onclick="fnAllDecideOrder(this);">전체구매확정</a></li>
+						</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:unless="${order.giftPackYn == 'Y'}">
+									<p class="dlvr_staus" th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+									<p class="dlvr_staus" th:unless="${ordDtl.ordDtlStat == 'G013_10'}" 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)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + ordDtl.sysImgNm + '?RS=90'}" 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">
+													<em class="order_badge order_bullet_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="sale_price" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></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'">
+								<!-- 입금대기 (1:1문의, 쇼핑백 담기) -->
+								<th:block th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+									<div class="goods_btn_wrap btn_group_flex">
+										<div><button type="button" class="btn btn_primary btn_cart_save" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</th:block>
+								<!-- //입금대기 (1:1문의, 쇼핑백 담기) -->
+
+								<!-- 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+								<th:block th:if="${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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><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'">
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- 반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										</th:block>
+										<!-- //반품불가 -->
+
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+										</th:block>
+										<!-- //교환불가, 반품불가 -->
+
+										<div><button type="button" class="btn btn_default btn_delv_sch" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, shipCompCd=${ordDtl.shipCompCd}, invoiceNo=${ordDtl.invoiceNo}" onclick="fnGoToDelivery(this, 'noMember');"><span>배송 조회</span></button></div>
+									</div>
+								</th:block>
+								<!-- //배송중 (교환가능, 반품가능) -->
+
+								<!-- 배송완료 (교환가능, 반품가능) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+									<div class="goods_btn_wrap btn_group_flex btn_count">
+										<!-- 교환불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'Y'">
+										</th:block>
+										<!-- //교환불가 -->
+										<!-- 교환가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');">
+													<span>교환 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //교환가능 -->
+										<!-- 반품가능 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div>
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');">
+													<span>반품 신청</span>
+												</button>
+											</div>
+										</th:block>
+										<!-- //반품가능 -->
+										<!-- 반품불가 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${ordDtl.returnableYn} == 'N'">
+										</th:block>
+										<!-- //반품불가 -->
+										<!-- 교환불가, 반품불가 -->
+										<th:block th:if="${ordDtl.returnableYn} == 'N' and ${ordDtl.changeableYn} == 'N'">
+										</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" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></div>
+									</div>
+								</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' and ${ordDtl.returnableYn} == 'Y'">
+											<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+										</th:block>
+										<!-- //교환불가능 -->
+
+										<!-- 반품불가능 -->
+										<th:block th:if="${ordDtl.changeableYn} == 'Y' and ${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="${#lists.size(order.ordDtlList) == status.count}">
+								<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="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+															</th:block>
+														</li>
+													</th:block>
+												</ul>
+											</div>
+										</div>
+									</div>
+								</th:block>
+							</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>&nbsp;<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" onclick="fnChangeDeliveryAddr();">
+											<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>
+										<div class="ship_request">
+											<dt>배송요청 사항</dt>
+											<dd th:text="${deliveryAddrInfo.delvMemo}" id="delvMemo"></dd>
+										</div>
+									</dl>
+								</div>
+							</div>
+						</li>
+					</ul>
+				</div>
+			</div>
+			<!-- 폴딩리스트 -->
+		</div>
+		<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>-->
+					<strong class="pay"><span th:text="${#numbers.formatInteger(orderAmtInfo.payAmt - orderAmtInfo.npayPntAmt - orderAmtInfo.pgCpnAmt, 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.cpn1DcAmt) - 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="${orderAmtInfo.pgCpnAmt} > 0">
+										<div>
+											<dt>제휴 할인</dt>
+											<dd><div><span th:text="|- ${#numbers.formatInteger(orderAmtInfo.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')}|"></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 (cashReceiptsInfo == null or #strings.isEmpty(cashReceiptsInfo.authNo))}" th:attr="ordNo=${ordNo}" onclick="fnRequestCashReceipt(this);"><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" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>확인</span></button>
+				</div>
+			</div>
+		</div>
+	</section>
+</main>
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	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() {
+		// 타이틀명
+		$('#htopTitle').text('주문상세');
+	});
+	
+	// 2.1 회원 배송지변경 팝업열기
+	//$('#btn_adrsChange_pop').on("click", function(){
+	//	// 회원인경우
+	//	if (isLogin == true) {
+	//		$.ajax( {
+	//			type		: "POST",
+	//			url 		: '/common/delvAddrChangePop',
+	//			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');
+	//			},
+	//			success 	: function(result) {
+	//				$("#adrsChangePop .modal-dialog .modal-content").html(result);
+	//				$("#adrsChangePop").modal("show");
+	//			}
+	//		});
+	//	}
+	//	// 비회원인경우
+	//	else {
+	//		$.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');
+	//			},
+	//			success 	: function(result) {
+	//				$("#adrsAddPop .modal-dialog .modal-content").html(result);
+	//				$("#adrsAddPop").modal("show");
+	//			}
+	//		});
+	//	}
+	//});
+	
+	// 전체취소 버튼 클릭 이벤트
+	var fnAllCancel = function() {
+		// 환불계좌 체크
+		let accountNo = $('#mypageOrderDetailForm input[name=accountNo]').val();
+		let accountNm = $('#mypageOrderDetailForm input[name=accountNm]').val();
+		let bankCd = $('#mypageOrderDetailForm 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 		: '/noMember/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');
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+			
+			return false;
+		}
+
+		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				// 취소요청 데이터 설정
+				let url = '/noMember/cancel';
+				
+				// 주문상세번호 설정
+				let ordDtlNoArr = [];
+				$.each($('#mypageOrderDetailForm input[name=ordDtlNoArr]'), function(idx, item) {
+					ordDtlNoArr.push($(item).val());
+				});
+				
+				// 취소 수량 설정
+				let cnclRtnReqQtyArr = [];
+				$.each($('#mypageOrderDetailForm 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;
+				console.log(data);
+				let jsonData = JSON.stringify(data);
+				
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					cfnGoToPage(_PAGE_NOMEMBER_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);
+		$('#mypageOrderDetailForm .recipNm').text(recipNm);
+		
+		let url = '/noMember/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 fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#mypageOrderDetailForm input[name=accountNo]').val(result.accountNo);
+		$('#mypageOrderDetailForm input[name=accountNm]').val(result.accountNm);
+		$('#mypageOrderDetailForm input[name=bankCd]').val(result.bankCd);
+		
+		// 전체취소 처리
+		fnAllCancel();
+	}
+
+	// 상품권 현금영수증 신청 처리
+	var fnRequestCashReceipt = function(param) {
+		let url = '/noMember/cash/receipts/request';
+		let ordNo = $(param).attr('ordNo');
+
+		let data = {};
+		data.ordNo = ordNo;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+		});
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

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

@@ -5,7 +5,7 @@
 			<th:block th:each="order , i : ${orderList}">
 				<div class="goods_top">
 					<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
-					<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
+					<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this, 'noMember')">주문상세보기</a>
 				</div>
 				
 				<!-- 주문목록 -->
@@ -90,7 +90,7 @@
 							<th:block th:if="${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" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel', 'noMember');">
+										<button type="button" class="btn btn_default btn_cncl_complete" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');">
 											<span>주문 취소</span>
 										</button>
 									</div>
@@ -110,14 +110,14 @@
 									<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" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange', 'noMember');">
+												<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange', 'noMember');">
 													<span>교환 신청</span>
 												</button>
 											</div>
 										</th:block>
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 											<div>
-												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return', 'noMember');">
+												<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return', 'noMember');">
 													<span>반품 신청</span>
 												</button>
 											</div>
@@ -135,14 +135,14 @@
 									<!-- 교환가능, 반품가능 -->
 									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange', 'noMember');">
+											<button type="button" class="btn btn_default btn_exch_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange', 'noMember');">
 												<span>교환 신청</span>
 											</button>
 										</div>
 									</th:block>
 									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
 										<div>
-											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return', 'noMember');">
+											<button type="button" class="btn btn_default btn_rtn_req" th:ordNo="${ordDtl.ordNo}" th:ordDtlNo="${ordDtl.ordDtlNo}" th:ordCanChgQty="${ordDtl.ordCanChgQty}" th:delvFeeCd="${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return', 'noMember');">
 												<span>반품 신청</span>
 											</button>
 										</div>

+ 890 - 0
src/main/webapp/WEB-INF/views/mob/mypage/NoMemberReturnFormMob.html

@@ -0,0 +1,890 @@
+<!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/NoMemberLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberReturnFormMob.html
+ * @desc    : 마이페이지 > 반품신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+
+<main class="container my">
+	<section class="content my_return">
+		<form id="returnForm" class="form_wrap">
+			<input type="hidden" name="accountNo" 	th:value="${oneData.accountNo}"/>
+			<input type="hidden" name="accountNm" 	th:value="${oneData.accountNm}"/>
+			<input type="hidden" name="bankCd" 		th:value="${oneData.bankCd}"/>
+			<input type="hidden" name="chgReason"/>
+
+			<div class="inner wide bg_beige">
+				<div class="order_number">
+					<dl class="clear">
+						<dt>주문번호</dt>
+						<dd th:text="${oneData.ordNo}"></dd>
+					</dl>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="part_goods">
+					<div class="goods_top">
+						<div class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+					</div>
+
+					<!-- 반품상품목록 -->
+					<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_detail">
+								<a href="javascript:void(0)" th:attr="goodsCd=${return.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + return.sysImgNm + '?RS=90'}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${return.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="tag primary" th:if="${return.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="tag" 		th:if="${return.shotDelvYn == 'N' and return.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="tag" 		th:if="${return.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
+											</div>
+											<div class="name" th:text="${return.goodsNm}"></div>
+										</div>
+										<div class="od_opt">
+											<div class="option">
+												<th:block th:if="${return.goodsType == 'G056_S'}" th:each="option, status : ${return.colorNmArr}">
+													<em th:text="${return.itemNmArr[status.index]}"></em>
+													<em th:text="${return.optCd2Arr[status.index]}"></em>
+												</th:block>
+												<th:block th:unless="${return.goodsType == 'G056_S'}">
+													<em th:text="${return.colorNm}"></em>
+													<em th:text="${return.optCd2}"></em>
+												</th:block>
+											</div>
+										</div>
+										<div class="od_calc">
+											<th:block th:if="${(return.ordAmt - return.cnclRtnAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}">
+												<p class="sale_price">
+													<del><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
+												</p>
+											</th:block>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+											</p>
+										</div>
+									</div>
+								</a>
+							</div>
+							<div class="goods_select">
+								<div class="select_custom select_count">
+									<div class="combo">
+										<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
+										<div class="select">수량 0개</div>
+									</div>
+								</div>
+							</div>
+							<th:block th:if="${#lists.size(returnList.returnList) == status.count}">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">반품하실 상품의 수량을 선택하신 후<br>반품 신청을 하실 수 있습니다.</p>
+								</div>
+							</th:block>
+						</div>
+					</th:block>
+					<!-- //취소상품목록 -->
+					
+				</div>
+			</div>
+			<div class="inner">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>반품 사유</h3>
+					</div>
+					<div class="tbl tbl_tarea">
+						<table>
+							<colgroup>
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<th class="sr-only">반품 접수 일자</th>
+								<td>
+									<div class="select_custom select_return">
+										<div class="combo">
+											<div class="select">반품 사유를 선택하세요.</div>
+										</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th class="sr-only">반품 완료 일자</th>
+								<td>
+									<div class="textarea_wrap">
+										<textarea class="doc_return" name="chgMemo" id="chgMemo" maxlength="200" placeholder="자세한 사유를 입력해주세요."></textarea>
+										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
+									</div>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+			
+			<div class="inner wdGb">
+				<div class="tbl_wrap">
+					<div class="tbl_tit"> 
+						<h3>반품방식 선택</h3>
+					</div>
+					<div class="retrieve_method">
+						<div class="tbl tbl_radio">
+							<table>
+								<colgroup>
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th class="sr-only">방문 회수</th>
+										<td>
+											<div class="form_field">
+												<input type="radio" name="wdGb" id="withdraw" checked="checked" value="W">
+												<label for="withdraw"><span>방문 회수 <b class="c_primary">택배사에서 고객에게 방문하여 회수</b></span></label>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<th class="sr-only">직접 배송</th>
+										<td>
+											<div class="form_field">
+												<input type="radio" name="wdGb" id="direct" value="D">
+												<label for="direct"><span>직접 배송 <b class="c_primary">고객이 반품지로 직접 반송</b></span></label>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+								
+							</table>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
+					<div class="tbl_wrap">
+						<div class="tbl_tit"> 
+							<h3>반품 회수지 주소</h3>
+							<button type="button" id="btn_adrsChange_pop" class="btn_popup" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
+						</div>
+						<div class="tbl">
+							<div class="ship_info">
+								<dl>
+									<div class="name">
+										<dt><span class="sr-only">배송지명</span></dt>
+										<dd th:text="${deliveryAddrInfo.recipNm}"></dd>
+									</div>
+									<div class="addr">
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
+									</div>
+									<div class="phone">
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
+									</div>
+									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
+								</dl>
+								<input type="hidden" name="chgerNm" 		th:value="${deliveryAddrInfo.recipNm}">
+								<input type="hidden" name="chgerPhnno" 		th:value="${deliveryAddrInfo.recipPhnno}">
+								<input type="hidden" name="chgerZipcode" 	th:value="${deliveryAddrInfo.recipZipcode}">
+								<input type="hidden" name="chgerBaseAddr" 	th:value="${deliveryAddrInfo.recipBaseAddr}">
+								<input type="hidden" name="chgerDtlAddr" 	th:value="${deliveryAddrInfo.recipDtlAddr}">
+								<input type="hidden" name="chgerRtnMemo" 	th:value="${deliveryAddrInfo.delvMemo}">
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="retrieve_box direct" style="display:none;" id="returnLocation">
+					<div class="tbl_wrap">
+						<div class="tbl_tit"> 
+							<h3>반송 정보</h3>
+						</div>
+						<div class="tbl">
+							<div class="ship_info">
+								<dl>
+									<div class="addr">
+										<dt><span>반송 주소</span></dt>
+										<dd th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></dd>
+									</div>
+									<div class="phone">
+										<dt><span>반송 송장번호</span></dt>
+										<dd><input type="tel" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" value="" oninput='handleOnInput(this, 20)' placeholder="송장번호를 입력해주세요."></dd>
+									</div>
+								</dl>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="inner">
+				<div class="tbl_wrap pay_wrap">
+					<div class="tbl_tit"> 
+						<h3>환불 정보</h3>
+						<strong class="pay"><span id="returnAmt"></span>원</strong>
+					</div>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="227">
+								<col width="*">
+							</colgroup>   
+							<tr>
+								<td>
+									<dl class="refund_deduct">
+										<div>
+											<dt>상품 취소 금액</dt>
+											<dd>
+												<div>
+													<span id="goodsCancelAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>배송비</dt>
+											<dd>
+												<div>
+													<span id="deliveryFee">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>할인 금액 차감</dt>
+											<dd>
+												<div>
+													<span id="deductDcAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+									</dl>
+									<dl class="refund_detail">
+										<div>
+											<dt>환불 수단</dt>
+											<dd>
+												<div>
+													<span th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></span>
+													<span th:if="${paymentInfo.pgGb == 'NAVER'}" th:text="|네이버페이|"></span>
+													<span th:if="${paymentInfo.pgGb == 'KAKAO'}" th:text="|카카오페이|"></span>
+													<span th:if="${paymentInfo.pgGb == 'PAYCO'}" th:text="|PAYCO|"></span>
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>결제금액 환불</dt>
+											<dd>
+												<div>
+													<span id="refundPayAmt">0</span>원
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>포인트 환불</dt>
+											<dd>
+												<div>
+													<span id="refundPoint">0</span>P
+												</div>
+											</dd>
+										</div>
+										<div>
+											<dt>상품권 환불</dt>
+											<dd>
+												<div>
+													<span id="refundGiftCard">0</span>원
+												</div>
+											</dd>
+										</div>
+									</dl>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</div>
+				<div class="required_group" id="addDeliveryFee" style="display:none">
+					<p>배송비 <span class="c_primary" id="addPayCost">0원</span> 추가 결제가 필요합니다.</p>
+				</div>
+				<div class="btn_group btn_group_flex">
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"><span>취소</span></button></div>
+					<div><button type="button" id="btn_order_return" class="btn btn_dark" onclick="fnReturn()"><span>반품 신청</span></button></div>
+				</div>
+			</div>
+		</form>
+	</section>
+</main>
+
+<!-- 210408_반품 수량 선택 팝업 -->
+<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}">
+	<div class="popup_box returnCountPop">
+		<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" qty=0 onclick="fnChangeReturnQty(this);"><span>수량 0개</span></button>
+					<th:block th:each="num : ${#numbers.sequence(1, return.ordCanChgQty)}">
+						<button type="button" th:qty="${num}" onclick="fnChangeReturnQty(this);"><span th:text="|수량 ${num}개|"></span></button>
+					</th:block>
+					<input type="hidden" name="ordDtlNo" th:value="${return.ordDtlNo}">
+				</div> 
+			</div>
+		</div>
+	</div>
+</th:block>
+<!-- //210408_반품 수량 선택 팝업 -->
+
+<!-- 210408_반품 사유 선택 팝업 -->
+<div id="returnReasonPop" class="popup_box returnReasonPop">
+	<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">
+				<th:block th:if="${returnReason}" th:each="oneData, status : ${returnReason}">
+					<button type="button" th:attr="chgReason=${oneData.cd}" onclick="fnChangeReturnReason(this);">
+						<span th:text="${oneData.cdNm}">단순 변심</span>
+					</button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_반품 사유 선택 팝업 -->
+
+<!-- 210408_ 추가 : 환불 계좌 등록 팝업 -->
+<div id="refundAccountPop" class="popup_box refundAccountPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">환불 계좌 등록 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="tbl_wrap">
+				<div class="tbl_tit"> 
+					<h3>환불 계좌 등록</h3><!-- 210409_수정 : 텍스트 변경 -->
+				</div>
+				<div class="tbl type1">
+					<table>
+						<colgroup>
+							<col width="*">
+						</colgroup>   
+						<tbody>
+							<tr>
+								<th>예금주</th>
+								<td>
+									<div class="form_field">
+										<input type="text" name="accountNm" class="form_control" th:value="${ordNm}" placeholder="이름를 입력해 주세요" readonly="readonly">
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>은행명</th>
+								<td>
+									<div class="form_field">
+										<div class="select_custom select_bank">
+											<div class="combo">
+												<div class="select">선택</div>
+												<input type="hidden" name="bankCd" value=""/>
+											</div>
+										</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>계좌번호</th>
+								<td>
+									<div class="input_wrap certi_wrap">
+										<input type="tel" class="form_control" name="accountNo" value="" placeholder="">
+										<button type="button" id="btn_bank_certi" class="btn btn_dark"><span>계좌인증</span></button>
+									</div>
+								</td>
+							</tr>
+						</tbody>
+					</table>
+				</div>
+			</div>
+		</div>
+		<div class="pop_foot">
+			<div class="btn_group_flex">
+				<div class="">
+					<button type="submit" id="btn_bank_return" class="btn btn_dark btn_block"><span>계좌 등록 후 환불 신청</span></button>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 환불 계좌 등록 토스트 팝업 -->
+
+<!-- 210408_ 추가 : 은행 선택 팝업 -->
+<div id="refundBankPop" class="popup_box refundBankPop">
+	<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">
+				<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">
+					<button type="button" th:id="${oneData.cd}"><span th:text="${oneData.cdNm}"></span></button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //210408_ 추가 : 은행 선택 팝업 -->
+
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+var isLogin 		= [[${isLogin}]];
+let returnList 		= [[${returnList.returnList}]];
+let oneData 		= [[${oneData}]];
+let paymentInfo 	= [[${paymentInfo}]];
+let isCustomer 		= true;
+let jsonObj 		= {};
+let ordNo 			= [[${oneData.ordNo}]];
+
+$(document).ready(function() {
+	// 입점업체의 경우 회수방식 직접배송 처리
+	if (oneData.selfGoodsYn != 'Y') {
+		$('#withdraw').click();
+		$('.wdGb').css('display','none');
+	}
+
+	// 타이틀명
+	$('#htopTitle').text('반품 신청');
+});
+
+// 반품수량버튼기능
+$(".select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".returnCountPop").hide();
+		
+		// 수량팝업활성화
+		$(".returnCountPop").eq(idx).show().addClass("active");
+		
+		$("body").css({"overflow":"hidden"});
+	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+});
+
+// 반품 방식 변경 이벤트
+$('#returnForm input[name=wdGb]').on('change', function() {
+	let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+
+	if (wdGb == 'W') {
+		$('#chgerLocation').css('display', '');
+		$('#returnLocation').css('display', 'none');
+	} else {
+		$('#chgerLocation').css('display', 'none');
+		$('#returnLocation').css('display', '');
+	}
+
+	// 환불금액 계산
+	fnChangeReturnQty();
+});
+
+// 은행목록 버튼 기능
+$("#refundBankPop .button_list button").each(function(){
+	$(this).on("click", function(){
+		$("#refundAccountPop input[name=bankCd]").val($(this).attr("id"));
+		$("#refundAccountPop .select_custom.select_bank .select").text($(this).find("span").text());
+	});
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+});
+
+// 반품 처리
+var fnReturn = function() {
+	let url = '/noMember/return';
+
+	// 반품 사유 체크
+	let chgReason = $('#returnForm input[name=chgReason]').val();
+	if (gagajf.isNull(chgReason)) {
+		mcxDialog.alert('반품사유를 선택해주세요.');
+		return false;
+	}
+
+	// 주문상세번호 및 반품 수량 설정
+	let ordDtlNoArr 		= [];
+	let cnclRtnReqQtyArr 	= [];
+	let chkQty 				= 0;
+	$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
+		let chgQty 		= $(item).val();
+		let ordDtlNo 	= $(item).attr('ordDtlNo');
+
+		if (chgQty > 0) {
+			ordDtlNoArr.push(Number(ordDtlNo));
+			cnclRtnReqQtyArr.push(Number(chgQty));
+			chkQty += chgQty;
+		}
+	});
+
+	// 반품 수량 체크
+	if (chkQty == 0) {
+		mcxDialog.alert('반품하실 상품의 수량을 선택해주세요.');
+		return false;
+	}
+
+	// 환불계좌 체크
+	let accountNo 	= $('#returnForm input[name=accountNo]').val();
+	let accountNm	= $('#returnForm input[name=accountNm]').val();
+	let bankCd 		= $('#returnForm input[name=bankCd]').val();
+	
+	// 임시
+	//paymentInfo.payMeans 	= "G014_20";
+	//paymentInfo.payStat 	= "G016_30";
+	
+	// 무통장입금, 결제완료 일때 환불계좌정보 체크
+	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;
+		
+		$('#refundAccountPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+		
+		return false;
+	}
+
+	// 추가배송비 PG 처리
+	let addPayCost 			= $('#returnForm input[name=addPayCost]').val();
+
+	let data 				= {};
+	data.ordNo 				= oneData.ordNo;
+	data.ordChgSq 			= 0;
+	data.chgReason 			= chgReason;
+	data.chgMemo 			= $('#returnForm textarea[name=chgMemo]').val();
+	data.accountNo 			= $('#returnForm input[name=accountNo]').val();
+	data.accountNm 			= $('#returnForm input[name=accountNm]').val();
+	data.bankCd 			= $('#returnForm input[name=bankCd]').val();
+	data.isCustomer 		= isCustomer;
+	data.wdGb 				= $('#returnForm input[name=wdGb]:radio:checked').val();
+	data.chgerNm 			= $('#chgerNm').text();
+	data.chgerZipcode 		= $('#returnForm input[name=chgerZipcode]').val();
+	data.chgerBaseAddr 		= $('#returnForm input[name=chgerBaseAddr]').val();
+	data.chgerDtlAddr 		= $('#returnForm input[name=chgerDtlAddr]').val();
+	data.chgerPhnno 		= $('#returnForm input[name=chgerPhnno]').val();
+	data.chgerRtnMemo 		= $('#returnForm input[name=chgerRtnMemo]').val();
+	data.ordDtlNoArr 		= ordDtlNoArr;
+	data.wdInvoiceNo 		= $('#returnForm input[name=wdInvoiceNo]').val();
+	data.addPayCost 		= addPayCost;
+	data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+
+	let jsonData = JSON.stringify(data);
+
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		if (addPayCost > 0) {
+			let ordChgSq = result.ordChgSq;
+			let ordNo = result.ordNo;
+
+			$('#addPaymentForm input[name=ordChgSq]').val(ordChgSq);
+			$('#addPaymentForm input[name=ordNo]').val(ordNo);
+
+			document.addPaymentForm.submit();
+		} else {
+			cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);
+		}
+	}, true);
+}
+
+// 반품 수량 변경 이벤트 처리
+var fnChangeReturnQty = function(param) {
+	let url = '/noMember/cancel/refund/amt/calculate';
+	
+	// 반품수량설정
+	if (param != null) {
+		$("#returnForm input[name=chgQty]").each(function(idx){
+			var ordDtlNo = $(this).attr("ordDtlNo");
+			if (ordDtlNo == $(param).parent().find("input[name=ordDtlNo]").val()) {
+				$(this).val($(param).attr("qty"));
+				$(this).parent().find(".select").text($(param).find("span").text());
+			}
+		});
+	}
+
+	let chgReason = $('#returnForm input[name=chgReason]').val();
+
+	if (!gagajf.isNull(chgReason)) {
+		// 반품 수량 설정
+		let cnclRtnReqQtyArr 	= [];
+		let ordDtlNoArr 		= [];
+		let ordCanChgQtyArr 	= [];
+		
+		$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
+			let chgQty 			= $(item).val();
+			let ordDtlNo 		= $(item).attr('ordDtlNo');
+			let ordCanChgQty 	= $(item).attr('ordCanChgQty');
+			
+			cnclRtnReqQtyArr.push(Number(chgQty));
+			ordDtlNoArr.push(Number(ordDtlNo));
+			ordCanChgQtyArr.push(Number(ordCanChgQty));
+		});
+
+		let data 				= {};
+		data.ordNo 				= oneData.ordNo;
+		data.delvFeeCd 			= oneData.delvFeeCd;
+		data.chgGb 				= 'G680_30';
+		data.ordDtlNoArr 		= ordDtlNoArr;
+		data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+			let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+			let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+			let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 포인트 할인 차감 금액
+			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+			let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비 (반품에서는 안돌려줘서 항상 0일듯)
+			//let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비) - 추가배송비는 환불컨펌에서 처리
+			let spanTotDeliveryFee = 0;
+			let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);				// 반품배송비 (회수요청으로 인한 반품 배송비)
+			let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt);				// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
+			let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 - 원주문배송비)
+
+			// 반품 사유 및 반품 방식 배송비 계산
+			if (result.spanRealCnclRtnAmt > 0) {
+				let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+				// 회사사유 : 추가배송비 0, 반품배송비 0
+				if (!isCustomer) {
+					spanTotRtnDelvFee = 0;
+					//spanTotDeliveryFee = 0;											// 추가배송비는 환불컨펌에서 처리
+				}
+				// 고객사유(직접발송) : 반품배송비 0
+				else if (wdGb == 'D') {
+					spanTotRtnDelvFee = 0;
+				}
+			} else {
+				spanTotRtnDelvFee = 0;
+				//spanTotDeliveryFee = 0;												// 추가배송비는 환불컨펌에서 처리
+			}
+
+			let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
+			let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
+			let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
+			let refundPayAmt = spanRefundAmt - addDelvFee;								// 결제금액 환불
+
+			// 추가배송비 영역 설정
+			if (refundPayAmt < 0) {
+				refundPayAmt += addDelvFee;
+				$('#addDeliveryFee').css('display', '');
+				$('#addPayCost').text(addDelvFee.addComma() + '원');
+				$('#returnForm input[name=addPayCost]').val(addDelvFee);
+			} else {
+				$('#addDeliveryFee').css('display', 'none');
+				$('#returnForm input[name=addPayCost]').val(0);
+			}
+
+			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+
+			// 금액 설정
+			$('#returnAmt').text(returnAmt.addComma());
+			$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
+			$('#deliveryFee').text((0 - addDelvFee).addComma());
+			$('#deductDcAmt').text((0 - deductDcAmt).addComma());
+			$('#refundPayAmt').text(refundPayAmt.addComma());
+			$('#refundPoint').text(refundPoint.addComma());
+			$('#refundGiftCard').text(refundGiftCard.addComma());
+		});
+	}
+
+	// 팝업 닫기
+	$(".popup_close").trigger("click");
+}
+
+// 반품 사유 변경 이벤트
+var fnChangeReturnReason = function(param) {
+	var customerReasonArr 	= ['G688_10'];
+	let chgReason 			= $(param).attr('chgReason');
+
+	// 귀책사유체크(취소, 반품, 교환)
+	isCustomer = customerReasonArr.includes(chgReason);
+	
+	// 반품 사유 설정
+	$('#returnForm input[name=chgReason]').val(chgReason);
+	$("#returnForm .select_custom.select_return .select").text($(param).find("span").text());
+
+	// 환불금액 계산
+	fnChangeReturnQty();
+}
+
+// 회수지 정보 설정
+var delvAddrSet = function(delvObj) {
+	let chgerNm 			= delvObj.recipNm;
+	let chgerPhnno 			= delvObj.recipPhnno;
+	let chgerZipcode 		= delvObj.recipZipcode;
+	let chgerBaseAddr 		= delvObj.recipBaseAddr;
+	let chgerDtlAddr 		= delvObj.recipDtlAddr;
+	let delvMemo 			= delvObj.delvMemo;
+	let chgerAddr 			= chgerBaseAddr + '    ' + chgerDtlAddr;
+
+	$('#returnForm input[name=chgerNm]').val(chgerNm);
+	$('#returnForm input[name=chgerPhnno]').val(chgerPhnno);
+	$('#returnForm input[name=chgerZipcode]').val(chgerZipcode);
+	$('#returnForm input[name=chgerBaseAddr]').val(chgerBaseAddr);
+	$('#returnForm input[name=chgerDtlAddr]').val(chgerDtlAddr);
+	$('#returnForm input[name=chgerRtnMemo]').val(delvMemo);
+	
+	$('#chgerNm').text(chgerNm);
+	$('#chgerPhnno').text(chgerPhnno);
+	$('#chgerAddr').html(chgerAddr);
+}
+
+let isValid = false;
+
+// 계좌인증
+$('#btn_bank_certi').on('click', function () {
+	
+	if (gagajf.isNull($('#refundAccountPop input[name=bankCd]').val())) {
+		mcxDialog.alert('은행을 선택해주세요.');
+		return false;
+	}
+	
+	if (gagajf.isNull($('#refundAccountPop input[name=accountNo]').val())) {
+		mcxDialog.alert('계좌번호를 입력해주세요.');
+		return false;
+	}
+	
+	if (!isValid) {
+		let url 		= '/noMember/account/check';
+		let accountNm 	= $('#refundAccountPop input[name=accountNm]').val();
+		let accountNo 	= $('#refundAccountPop input[name=accountNo]').val();
+		let bankCd 		= $('#refundAccountPop input[name=bankCd]').val();
+		
+		let data = {};
+		data.accountNm 	= accountNm;
+		data.accountNo 	= accountNo;
+		data.bankCd 	= bankCd;
+		data.ordNo 		= ordNo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+			isValid = result.isValid;
+			
+			if (isValid) {
+				mcxDialog.alert('계좌인증에 성공했습니다.');
+				// 계좌인증 성공 시 Disabled 처리
+				$('#refundAccountPop .select_custom.select_bank').attr('disabled', true);
+				$('#refundAccountPop input[name=accountNo]').attr('disabled', true);
+				return false;
+			} else {
+				mcxDialog.alert('계좌정보를 다시 확인해주세요.');
+				return false;
+			}
+		});
+	}
+});
+
+// 계좌등록 후 환불신청 버튼 클릭 이벤트
+$('#btn_bank_return').click(function() {
+	if (isValid) {
+		let accountNm 	= $('#refundAccountPop input[name=accountNm]').val();
+		let accountNo 	= $('#refundAccountPop input[name=accountNo]').val();
+		let bankCd 		= $('#refundAccountPop input[name=bankCd]').val();
+		
+		// 부모창의 input 값으로 환불계좌정보 설정
+		$('#returnForm input[name=accountNo]').val(accountNo);
+		$('#returnForm input[name=accountNm]').val(accountNm);
+		$('#returnForm input[name=bankCd]').val(bankCd);
+
+		// 팝업 닫기
+		$(".close-modal").trigger("click");
+		
+		// 반품신청
+		fnReturn();
+	} else {
+		mcxDialog.alert('계좌인증이 필요합니다.');
+	}
+});
+</script>
+
+<script>
+// 세부 사유 글자 수 제한
+$('.doc_return').keyup(function(e){
+	var content = $(this).val();
+	$('#return_cnt').html(content.length);
+	//if (content.length > 200){
+	//	mcxDialog.alert("최대 200자까지 입력 가능합니다."); //210420_수정 : 시스템 alert -> dialog 변경.
+	//	$(this).val(content.substring(0, 200));
+	//	$('#return_cnt').html("200");
+	//}
+});
+
+// 반품 사유 선택 팝업
+$(document).on("click",".select_custom.select_return",function(e){
+	$('#returnReasonPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
+
+// 팝업_닫기
+$('.popup_close').on("click",function(){
+	$('.popup_box').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
+
+// 버튼 색
+$(document).on('click','.popup_box .button_list button',function(){
+	$('.popup_box .button_list button').removeClass('on');
+	$(this).addClass('on');
+});
+
+function handleOnInput(el, maxlength) {
+	if(el.value.length > maxlength)  {
+		el.value = el.value.substr(0, maxlength);
+	}
+}
+
+// 210408_ 추가 : 환불계좌등록 팝업 스크립트
+$(document).on("click","#btn_refund_pop",function(e){
+	$('#refundAccountPop').show().addClass("active");
+	$("body").css({"overflow":"hidden"});
+});
+
+// 210408_ 추가 : 은행선택 팝업 스크립트
+$(document).on("click","#refundAccountPop .select_bank",function(e){
+	if (isValid == false) {
+		$('#refundBankPop').show().addClass("active");
+		$('#refundBankPop').css({"z-index":"1000"});
+		$("body").css({"overflow":"hidden"});
+	}
+});
+
+// 210408_ 추가 : 환불계좌등록 팝업 스크립트 닫기
+$('.refundAccountPop .popup_close').on("click",function(){
+	$('.refundAccountPop').hide().removeClass('active');
+	$("body").css({"overflow":"visible"});
+});
+
+//210408_ 추가 : 은행선택 팝업 스크립트 닫기
+$('.refundBankPop .popup_close').on("click",function(){
+	$('.refundBankPop').hide().removeClass('active');
+});
+</script>
+
+</th:block>
+
+</body>
+</html>

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

@@ -221,7 +221,7 @@ $("#btn_payment").on("click", function(){
 	var paynormalArr		= paynormal.split("|");
 	var pgGb				= paynormalArr[0];
 	var payMeans			= paynormalArr[1];
-	
+	console.log(paynormal);
 	// 주문데이타 생성
 	var orderData = {
 		"pgGb"					: pgGb

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

@@ -102,7 +102,7 @@
 										<div class="button_box">
 <!--											<p th:if="${exchangeDtl.chgStat == 'G685_20' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}, cancelGb=${exchangeDtl.chgGb}" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>-->
 											<p th:if="${exchangeDtl.chgStat == 'G685_32' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>
-											<p th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_20' or exchangeDtl.ordDtlStat == 'G013_30' or exchangeDtl.ordDtlStat == 'G013_35' or exchangeDtl.ordDtlStat == 'G013_40' or exchangeDtl.ordDtlStat == 'G013_50')}"><button type="button" class="btn btn_default btn_sm" ordDtlNo="' + cre.ordDtlNo + '" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>
+											<p th:if="${exchangeDtl.chgStat == 'G685_40' and  xchangeDtl.ordDtlStat == 'G013_50'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordDtlNo=${exchangeDtl.ordDtlNo}, shipCompCd=${exchangeDtl.exchangeShipCompCd}, invoiceNo=${exchangeDtl.exchangeInvoiceNo}" onclick="fnGoToDelivery(this);"><span>배송조회</span></button></p>
 											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 										</div>
 									</div>

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

@@ -441,8 +441,8 @@
 					}
 					if (cre.chgStat == 'G685_40') {
 						$.each(creList.exchangeOptionList, function(index, exchange) {
-							if (cre.chgOrdDtlNo == exchange.ordDtlNo && (exchange.ordDtlStat == 'G013_20' || exchange.ordDtlStat == 'G013_30' || exchange.ordDtlStat == 'G013_35' || exchange.ordDtlStat == 'G013_40' || exchange.ordDtlStat == 'G013_50')) {
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordDtlNo="' + cre.ordDtlNo + '" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>\n';
+							if (cre.chgOrdDtlNo == exchange.ordDtlNo && exchange.ordDtlStat == 'G013_50') {
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordDtlNo="' + cre.ordDtlNo + '" shipCompCd="' + exchange.shipCompCd + '" invoiceNo="' + exchange.invoiceNo + '" onclick="fnGoToDelivery(this);"><span>배송조회</span></button></p>\n';
 							}
 						});
 					}
@@ -554,13 +554,6 @@
 
 		cfnGoToPage(_frontUrl + url);
 	}
-	
-	// 취반교 배송조회 버튼 클릭 이벤트
-	var fnGoToDeliveryTrack = function(param) {
-		let ordDtlNo = $(param).attr('ordDtlNo');
-		// TODO
-		// 최반교 배송조회 페이지 이동 처리
-	}
 /*]]>*/
 </script>
 

+ 6 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageDeliveryInfoFormWeb.html

@@ -112,7 +112,7 @@
 
 													<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
 													<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
-														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 													</th:block>
 
 													<!-- 리뷰 쓰기 버튼 -->
@@ -129,26 +129,26 @@
 												<th:block th:unless="${order.giftPackYn == 'Y'}">
 													<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
 													<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
-														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 													</th:block>
 
 													<!-- 교환/반품 신청 버튼(배송중, 출고완료, 배송완료) -->
 													<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
 														<!-- 교환/반품 가능한 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'Y'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 														</th:block>
 
 														<!-- 교환 신청 불가 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">
 															<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 														</th:block>
 
 														<!-- 반품 신청 불가 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
 															<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 														</th:block>
 

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

@@ -118,7 +118,7 @@
 
 														<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
 														<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</th:block>
 														
 														<!-- 리뷰 쓰기 버튼 -->
@@ -135,26 +135,26 @@
 													<th:block th:unless="${order.giftPackYn == 'Y'}">
 														<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
 														<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
 														</th:block>
 														
 														<!-- 교환/반품 신청 버튼(배송중, 출고완료, 배송완료) -->
 														<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
 															<!-- 교환/반품 가능한 상품 -->
 															<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'Y'}">
-																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
-																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 															</th:block>
 															
 															<!-- 교환 신청 불가 상품 -->
 															<th:block th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">
 																<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
-																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
 															</th:block>
 	
 															<!-- 반품 신청 불가 상품 -->
 															<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">
-																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+																<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
 																<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>
 															</th:block>
 	

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

@@ -514,23 +514,23 @@
 				let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
 				let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
 				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
-				let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+				let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 포인트 할인 차감 금액
 				let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
 				let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
 				let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비 (반품에서는 안돌려줘서 항상 0일듯)
-				let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+				//let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비) - 추가배송비는 환불컨펌에서 처리
+				let spanTotDeliveryFee = 0;
 				let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);				// 반품배송비 (회수요청으로 인한 반품 배송비)
 				let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt);				// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
-				let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 + 원주문배송비)
+				let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 - 원주문배송비)
 
 				// 반품 사유 및 반품 방식 배송비 계산
 				if (result.spanRealCnclRtnAmt > 0) {
 					let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
-
 					// 회사사유 : 추가배송비 0, 반품배송비 0
 					if (!isCustomer) {
 						spanTotRtnDelvFee = 0;
-						spanTotDeliveryFee = 0;
+						//spanTotDeliveryFee = 0;											// 추가배송비는 환불컨펌에서 처리
 					}
 					// 고객사유(직접발송) : 반품배송비 0
 					else if (wdGb == 'D') {
@@ -538,14 +538,14 @@
 					}
 				} else {
 					spanTotRtnDelvFee = 0;
-					spanTotDeliveryFee = 0;
+					//spanTotDeliveryFee = 0;												// 추가배송비는 환불컨펌에서 처리
 				}
 
 				let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
 				let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
 				let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
 				let refundPayAmt = spanRefundAmt - addDelvFee;								// 결제금액 환불
-				
+
 				// 추가배송비 영역 설정
 				if (refundPayAmt < 0) {
 					refundPayAmt += addDelvFee;
@@ -556,14 +556,14 @@
 					$('#addDeliveryFee').css('display', 'none');
 					$('#returnForm input[name=addPayCost]').val(0);
 				}
-				
+
 				let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
-				
+
 				// 금액 설정
 				$('#returnAmt').text(returnAmt.addComma());
 				$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
 				$('#deliveryFee').text((0 - addDelvFee).addComma());
-				$('#deductDcAmt').text(deductDcAmt.addComma());
+				$('#deductDcAmt').text((0 - deductDcAmt).addComma());
 				$('#refundPayAmt').text(refundPayAmt.addComma());
 				$('#refundPoint').text(refundPoint.addComma());
 				$('#refundGiftCard').text(refundGiftCard.addComma());

+ 0 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCancelFormWeb.html

@@ -356,7 +356,6 @@
 			let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
 			let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
 			let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
-
 			let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
 			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
 			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)

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

@@ -100,7 +100,7 @@
 										</div>
 										<div class="button_box">
 											<p th:if="${exchangeDtl.chgStat == 'G685_32' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>
-											<p th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_20' or exchangeDtl.ordDtlStat == 'G013_30' or exchangeDtl.ordDtlStat == 'G013_35' or exchangeDtl.ordDtlStat == 'G013_40' or exchangeDtl.ordDtlStat == 'G013_50')}"><button type="button" class="btn btn_default btn_sm" th:attr="${exchangeDtl.ordDtlNo}" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>
+											<p th:if="${exchangeDtl.chgStat == 'G685_40' && exchangeDtl.ordDtlStat == 'G013_50'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordDtlNo=${exchangeDtl.ordDtlNo}, shipCompCd=${exchangeDtl.exchangeShipCompCd}, invoiceNo=${exchangeDtl.exchangeInvoiceNo}" onclick="fnGoToDelivery(this, 'noMember');"><span>배송조회</span></button></p>
 										</div>
 									</div>
 									<!-- 교환결제대기 -->

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

@@ -440,8 +440,8 @@
 					}
 					if (cre.chgStat == 'G685_40') {
 						$.each(creList.exchangeOptionList, function(index, exchange) {
-							if (cre.chgOrdDtlNo == exchange.ordDtlNo && (exchange.ordDtlStat == 'G013_20' || exchange.ordDtlStat == 'G013_30' || exchange.ordDtlStat == 'G013_35' || exchange.ordDtlStat == 'G013_40' || exchange.ordDtlStat == 'G013_50')) {
-								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordDtlNo="' + cre.ordDtlNo + '" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>\n';
+							if (cre.chgOrdDtlNo == exchange.ordDtlNo && exchange.ordDtlStat == 'G013_50') {
+								tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordDtlNo="' + cre.ordDtlNo + '" shipCompCd="' + exchange.shipCompCd + '" invoiceNo="' + exchange.invoiceNo + '" onclick="fnGoToDelivery(this, \'noMember\');"><span>배송조회</span></button></p>\n';
 							}
 						});
 					}
@@ -550,13 +550,6 @@
 
 		cfnGoToPage(_frontUrl + url);
 	}
-	
-	// 취반교 배송조회 버튼 클릭 이벤트
-	var fnGoToDeliveryTrack = function(param) {
-		let ordDtlNo = $(param).attr('ordDtlNo');
-		// TODO
-		// 최반교 배송조회 페이지 이동 처리
-	}
 /*]]>*/
 </script>
 

+ 254 - 0
src/main/webapp/WEB-INF/views/web/mypage/NoMemberDeliveryInfoFormWeb.html

@@ -0,0 +1,254 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/NoMemberLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberDeliveryInfoFormWeb.html
+ * @desc    : 비회원 > 배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.16   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="content myOrderView"> <!-- 페이지특정 클래스 = myOrderView -->
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="lnb">
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
+			</div>
+			<div class="cont">
+				<div class="sec_head">
+					<h3 class="subH1">주문상세</h3>
+					<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${ordNo}"></em></span>
+					<button type="button" id="btn_order_cancel" class="btn_underline" onclick="fnDeleteOrder()"><span>삭제하기</span></button>
+				</div>
+				<div class="sec_body">
+					<th:block th:if="${orderList}" th:each="order, status : ${orderList}">
+						<div class="part_goods">
+							<div class="goods_head">
+								<p>주문일 <span th:text="${order.ordDt}"></span></p>
+							</div>
+							<div class="goods_cont">
+								<!-- 주문상품 -->
+								<th:block th:if="${order.ordDtlList}" th:each="ordDtl, status : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+									<div class="goods_info">
+										<div class="order_desc">
+											<div class="goods_box">
+												<input type="hidden" name="ordDtlNoArr" th:value="${ordDtl.ordDtlNo}"/>
+												<input type="hidden" name="cnclRtnReqQtyArr" th:value="${ordDtl.ordQty - ordDtl.cnclRtnQty}"/>
+												<div class="gd_item">
+													<a href="javascript:void(0)" th:attr="goodsCd=${ordDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+															<span class="thumb">
+																<img th:src="${imageUrl + '/' + ordDtl.sysImgNm + '?RS=100'}" 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:if="${ordDtl.goodsType == 'G056_S'}" th:each="option, status : ${ordDtl.colorNmArr}" th:text="|${ordDtl.itemNmArr[status.index]} / ${option} / ${ordDtl.optCd2Arr[status.index]}|"></span>
+														<span class="option" th:unless="${ordDtl.goodsType == 'G056_S'}" th:text="|${ordDtl.colorNm} / ${ordDtl.optCd2}|"></span>
+													</div>
+												</div>
+												<div class="gd_calc">
+													<p>
+														<span class="count"><em th:text="${ordDtl.ordQty - ordDtl.cnclRtnQty}"></em>개</span>
+													</p>
+													<p>
+														<span class="price_org" th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
+														<span class="price_sale"><em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+													</p>
+												</div>
+											</div>
+											<div class="status_box">
+												<p th:if="${ordDtl.ordDtlStat == 'G013_10'}">주문접수</p>
+												<p th:unless="${ordDtl.ordDtlStat == 'G013_10'}" th:text="${ordDtl.ordDtlStatNm}"></p>
+											</div>
+											<!-- 버튼 -->
+											<div class="button_box">
+												<!-- 주문 -->
+												<th:block th:unless="${order.giftPackYn == 'Y'}">
+													<!-- 주문취소 버튼(결제완료, 상품준비중, 출고처지정) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35'}">
+														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+													</th:block>
+
+													<!-- 교환/반품 신청 버튼(배송중, 출고완료, 배송완료) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
+														<!-- 교환/반품 가능한 상품 -->
+														<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'Y'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange');"><span>교환 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></p>
+														</th:block>
+													</th:block>
+
+													<!-- 배송조회 버튼(배송중) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55'}">
+													</th:block>
+
+													<!-- 구매확정 버튼(배송완료) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_60'}">
+													</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') and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
+													</th:block>
+
+													<!-- 쇼핑백담기 버튼(입금대기, 배송준비중, 구매확정) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_40' or 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>
+
+													<!-- 1:1문의 버튼(입금대기, 배송준비중, 구매확정) -->
+													<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_40' or (ordDtl.ordDtlStat == 'G013_70' and (ordDtl.reviewableYn == 'N' or ordDtl.reviewSq > 0))}">
+													</th:block>
+												</th:block>
+											</div>
+										</div>
+										<!-- 문구 -->
+										<!-- 주문 접수 -->
+										<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_10'}">
+											<p>주문 완료/결제를 기다리고 있습니다.</p>
+
+											<!-- 예약 상품 -->
+											<p th:if="${!#strings.isEmpty(ordDtl.delvResDt)}" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+
+										<!-- 상품준비중 -->
+										<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_30'}">
+											<p>배송할 상품을 준비 중입니다.</p>
+
+											<!-- 예약 상품 -->
+											<p th:if="${!#strings.isEmpty(ordDtl.delvResDt)}" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+
+										<!-- 배송준비중 -->
+										<div class="order_text" th:if="${ordDtl.ordDtlStat == 'G013_40'}">
+											<p>상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+
+											<!-- 예약 상품 -->
+											<p th:if="${!#strings.isEmpty(ordDtl.delvResDt)}" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+										</div>
+
+										<!-- 배송중, 배송완료 -->
+										<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
+										<div class="order_text" th:unless="${(ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55') and ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'Y'}">
+											<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">해당 상품은 교환이 불가능한 상품입니다.</p>
+											<p th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">해당 상품은 반품이 불가능한 상품입니다.</p>
+											<p th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'N'}">해당 상품은 교환/반품이 불가능한 상품입니다.</p>
+											<p th:if="${ordDtl.ordDtlStat == 'G013_60'}">15일 후 자동으로 구매확정됩니다.</p>
+										</div>
+										</th:block>
+									</div>
+								</th:block>
+								<!-- //주문상품 -->
+							</div>
+						</div>
+					</th:block>
+					<h4 class="subH3">배송 정보</h4>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="210">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>
+										보내는 사람
+									</th>
+									<td>
+										<div class="single_line">
+											<ul>
+												<li><span th:text="${deliveryAddrInfo.recipNm}"></span></li>
+												<li><span th:text="${deliveryAddrInfo.recipPhnno}"></span></li>
+											</ul>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<th>제품 정보</th>
+									<td th:text="|${oneData.brandNm} ${oneData.goodsNm}|"></td>
+								</tr>
+								<tr>
+									<th>송장 번호</th>
+									<td th:text="${oneData.invoiceNo}"></td>
+								</tr>
+								<tr>
+									<th>배송 주소</th>
+									<td th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<div class="tbl type5 mt60">
+						<table>
+							<colgroup>
+								<col width="25%">
+								<col width="25%">
+								<col width="25%">
+								<col width="25%">
+							</colgroup>
+							<thead>
+								<tr>
+									<th scope="col">시간</th>
+									<th scope="col">장소</th>
+									<th scope="col">유형</th>
+									<th scope="col">전화번호</th>
+								</tr>
+							</thead>
+							<tbody>
+								<tr th:if="${sweetTrackerInfoList}" th:each="sweetTrackerInfo, status : ${sweetTrackerInfoList}">
+									<td th:text="${sweetTrackerInfo.timeTrans}"></td>
+									<td th:text="${sweetTrackerInfo.delvWhere}"></td>
+									<td th:text="${sweetTrackerInfo.details}"></td>
+									<td th:text="${sweetTrackerInfo.telno}"></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let ordNo = [[${ordNo}]];
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetNoMemberLnbList(1);
+		
+		// 마이페이지 location 설정
+		fnSetNoMemberLocation('주문확인/배송조회', '배송조회');
+	});
+</script>
+
+</th:block>
+
+</body>
+</html>

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

@@ -96,25 +96,25 @@
 												<div class="button_box">
 													<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 													<th:block th:if="${ordDtl.payStat != 'G016_00' && (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}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></p>
+														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></p>
 													</th:block>
 													
 													<!-- 교환/반품 신청 버튼(배송중, 출고완료, 배송완료) -->
 													<th:block th:if="${ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60'}">
 														<!-- 교환/반품 가능한 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'Y'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange', 'noMember');"><span>교환 신청</span></button></p>
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return', 'noMember');"><span>반품 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange', 'noMember');"><span>교환 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return', 'noMember');"><span>반품 신청</span></button></p>
 														</th:block>
 														
 														<!-- 교환 신청 불가 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'N' and ordDtl.returnableYn == 'Y'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'return', 'noMember');"><span>반품 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'return', 'noMember');"><span>반품 신청</span></button></p>
 														</th:block>
 
 														<!-- 반품 신청 불가 상품 -->
 														<th:block th:if="${ordDtl.changeableYn == 'Y' and ordDtl.returnableYn == 'N'}">
-															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}" onclick="fnCreateChange(this, 'exchange', 'noMember');"><span>교환 신청</span></button></p>
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'exchange', 'noMember');"><span>교환 신청</span></button></p>
 														</th:block>
 
 														<!-- 교환/반품 신청 불가 상품 -->

+ 1 - 10
src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html

@@ -320,15 +320,6 @@
 		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
 	});
 
-	// 비회원 주문상세보기 버튼 클릭 이벤트
-	var fnGoToNoMemberOrderDetail = function(param) {
-		let ordNo = $(param).attr('ordNo');
-		let ordNm = $(param).attr('ordNm');
-		let ordPhnno = $(param).attr('ordPhnno');
-
-		document.detailForm.submit();
-	}
-
 	// 주문내역 리스트 처리
 	var fnCreateOrderList = function(param) {
 		let tag = '';
@@ -425,7 +416,7 @@
 
 					// 배송조회 버튼(배송중)
 					if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55') {
-						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnGoToDelivery(this, \'noMember\');"><span>배송 조회</span></button></p>\n';
+						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" shipCompCd="' + ordDtl.shipCompCd + '" invoiceNo="' + ordDtl.invoiceNo + '" onclick="fnGoToDelivery(this, \'noMember\');"><span>배송 조회</span></button></p>\n';
 					}
 
 					// 쇼핑백담기 버튼(구매확정)

+ 9 - 6
src/main/webapp/biz/mypage.js

@@ -52,9 +52,13 @@ var fnSetNoMemberLocation = function(depth3, depth4) {
 }
 
 // 주문상세보기 버튼 클릭 이벤트 처리
-var fnGoToOrderDetail = function(param) {
-	let ordNo = $(param).attr('ordNo');
-	cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+var fnGoToOrderDetail = function(param, noMember) {
+	if (noMember == 'noMember') {
+		cfnGoToPage(_PAGE_NOMEMBER_ORDER_DETAIL);
+	} else {
+		let ordNo = $(param).attr('ordNo');
+		cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
+	}
 }
 
 // 상품상세 페이지 이동 처리
@@ -67,7 +71,7 @@ var fnGoToGoodsDetail = function(param) {
 var fnGoToDelivery = function(param, noMember) {
 	let url = '';
 	
-	if (meMember == 'noMember') {
+	if (noMember == 'noMember') {
 		url = '/noMember/delivery/info/form';
 	} else {
 		url = '/mypage/delivery/info/form';
@@ -388,11 +392,10 @@ var fnReviewCreate = function(obj1,obj2,obj3) {
 }
 
 // 취반교 신청 취소 버튼 클릭 이벤트
-var fnCreCancel = function(param) {
+var fnCreCancel = function(param, noMember) {
 	let ordNo = $(param).attr('ordNo');
 	let ordChgSq = $(param).attr('ordChgSq');
 	let cancelGb = $(param).attr('cancelGb');
-	let noMember = $(param).attr('noMember');
 	let url;
 	let msg;