瀏覽代碼

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.front into develop

bin2107 5 年之前
父節點
當前提交
44d1198cf0
共有 42 個文件被更改,包括 2709 次插入516 次删除
  1. 177 144
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  2. 35 4
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  3. 4 0
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  4. 31 6
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  5. 50 4
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  6. 4 4
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  7. 0 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  8. 3 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  9. 11 1
      src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html
  10. 366 256
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  11. 1 1
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  12. 33 17
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  13. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  14. 889 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html
  15. 1 1
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  16. 1 1
      src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html
  17. 1 1
      src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html
  18. 1 1
      src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html
  19. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreCancelDetailFormWeb.html
  21. 7 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreExchangeDetailFormWeb.html
  22. 14 14
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreListFormWeb.html
  23. 4 4
      src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html
  24. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  25. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb_20210330.html
  26. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  27. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  28. 4 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  29. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb_20210329.html
  30. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCancelFormWeb.html
  31. 223 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreCancelDetailFormWeb.html
  32. 420 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreExchangeDetailFormWeb.html
  33. 26 20
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html
  34. 345 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberExchangeFormWeb.html
  36. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  37. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  38. 3 2
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html
  39. 1 1
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  40. 4 2
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  41. 16 3
      src/main/webapp/biz/mypage.js
  42. 14 0
      src/main/webapp/ux/style24_link.js

+ 177 - 144
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -488,6 +488,11 @@ public class TsfCartService {
 				if (cart.getTmtbDcAmt() == 0) {
 					cart.setTmtbDcAmt(cart.getCurrPrice());
 				}
+				if(cart.getPntRate() > 0) {
+					cart.setSavePntAmt((int) (cart.getTmtbDcAmt() * cart.getPntRate() / 100.0));
+				} else {
+					cart.setSavePntAmt(0);
+				}
 			}
 		}
 
@@ -506,6 +511,32 @@ public class TsfCartService {
 		return order;
 	}
 
+	// 장바구니 수량 계산(품절제거)
+	@SuppressWarnings("unchecked")
+	public Order getCartNotSoldoutCnt() {
+		Order order = new Order();
+		//ModelAndView result = new ModelAndView();
+		GagaMap result = new GagaMap();							// return
+		List<Integer> cartSqs = new ArrayList<Integer>();				// 품절 제외 장바구니 리스트
+
+		// 로그인 체크
+		if(TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			order.setCustNo(0);
+		}
+		order.setFrontGb(TsfSession.getFrontGb());
+		order.setJsessionId(TscSession.getSessionId());
+
+		// 장바구니 상품 조회
+		Collection<Order> cartGoodsList = cartDao.getCartGoodsList(order);
+
+		// 총계 금액 계산 (수량 계산 내부에 존재)
+		setCartListTotAmtInfo(cartGoodsList, order);
+
+		return order;
+	}
+
 	/**
 	 * 다다익선 할인 금액 조회
 	 * @param param
@@ -519,176 +550,178 @@ public class TsfCartService {
 		param.setFrontGb(TsfSession.getFrontGb());
 		Collection<Order> cartGoodsList = coreOrderService.getCartGoodsList(param);
 
-		// 장바구니 내 수량 다다익선 적용 가능 리스트 조회 (등록된 기본,적용 상품 정보 전체 조회)
-		Collection<Order> tmtbApplyList = cartDao.selectMoreBetterApplyCartList(param);
+		if(param.getCustNo() > 0 ) {
+			// 장바구니 내 수량 다다익선 적용 가능 리스트 조회 (등록된 기본,적용 상품 정보 전체 조회)
+			Collection<Order> tmtbApplyList = cartDao.selectMoreBetterApplyCartList(param);
 
-		// 장바구니 등록 다다익선 일련번호 지정
-		List<Integer> applySq 		= new ArrayList<Integer>();
-		
-		for(Order tmtbApply : tmtbApplyList) {
-			if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
-				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb())) {
-					applySq.add(tmtbApply.getQtyTmtbSq());
-				}
-				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
-					applySq.add(tmtbApply.getAmtTmtbSq());
+			// 장바구니 등록 다다익선 일련번호 지정
+			List<Integer> applySq 		= new ArrayList<Integer>();
+
+			for(Order tmtbApply : tmtbApplyList) {
+				if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb()) || TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
+					if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getQtyGoodsGb())) {
+						applySq.add(tmtbApply.getQtyTmtbSq());
+					}
+					if(TscConstants.GoodsGb.BASE.value().equals(tmtbApply.getAmtGoodsGb())) {
+						applySq.add(tmtbApply.getAmtTmtbSq());
+					}
 				}
 			}
-		}
-		param.setTmtbSqs(applySq.stream().mapToInt(Integer::intValue).toArray());
-
-		// 섹션 정보 조회 후 할인 여부 판단
-		Collection<Order> tmtbSectionList = cartDao.selectTmtbSectionValList(applySq);
-		
-		for(Order applyInfo : tmtbApplyList) {													// 기준 상품 및 다다익선 정보 조회
-			// 다다익선 할인 조건 조회
-			for(Order section : tmtbSectionList) {
-				if(applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
-					// 수량 적용 다다익선
-					if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {             // 장바구니 수량 할인 기준 달성시
-						if (applyInfo.getQtySectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-							applyInfo.setQtySectionVal(section.getSectionVal());
-							applyInfo.setApplyQtySectionYn("Y");
-							applyInfo.setQtyDcWay(section.getDcWay());
-							applyInfo.setQtyDcVal(section.getDcVal());
-						}
-					} else {
-						if (applyInfo.getQtySectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
-							applyInfo.setApplyQtySectionYn("N");
+			param.setTmtbSqs(applySq.stream().mapToInt(Integer::intValue).toArray());
+
+			// 섹션 정보 조회 후 할인 여부 판단
+			Collection<Order> tmtbSectionList = cartDao.selectTmtbSectionValList(applySq);
+
+			for(Order applyInfo : tmtbApplyList) {													// 기준 상품 및 다다익선 정보 조회
+				// 다다익선 할인 조건 조회
+				for(Order section : tmtbSectionList) {
+					if(applyInfo.getQtyTmtbSq() == section.getTmtbSq()) {
+						// 수량 적용 다다익선
+						if (section.getSectionVal() <= applyInfo.getQtyTmtbSumQty()) {             // 장바구니 수량 할인 기준 달성시
+							if (applyInfo.getQtySectionVal() <= section.getSectionVal()) {            // 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+								applyInfo.setQtySectionVal(section.getSectionVal());
+								applyInfo.setApplyQtySectionYn("Y");
+								applyInfo.setQtyDcWay(section.getDcWay());
+								applyInfo.setQtyDcVal(section.getDcVal());
+							}
+						} else {
+							if (applyInfo.getQtySectionVal() < 1 && applyInfo.getQtyGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+								applyInfo.setApplyQtySectionYn("N");
+							}
 						}
 					}
-				}
 
-				if (applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
-					// 금액 적용 다다익선
-					if(section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {			// 장바구니 수량 할인 기준 달성시
-						if(applyInfo.getAmtSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
-							applyInfo.setAmtSectionVal(section.getSectionVal());
-							applyInfo.setApplyAmtSectionYn("Y");
-							applyInfo.setAmtDcWay(section.getDcWay());
-							applyInfo.setAmtDcVal(section.getDcVal());
-						}
-					} else {
-						if(applyInfo.getAmtSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
-							applyInfo.setApplyAmtSectionYn("N");
+					if (applyInfo.getAmtTmtbSq() == section.getTmtbSq()) {
+						// 금액 적용 다다익선
+						if(section.getSectionVal() <= applyInfo.getAmtTmtbSumAmt()) {			// 장바구니 수량 할인 기준 달성시
+							if(applyInfo.getAmtSectionVal() <= section.getSectionVal()) {			// 기존 달성된 기준치보다 할인폭이 클 경우 기준할인 수정
+								applyInfo.setAmtSectionVal(section.getSectionVal());
+								applyInfo.setApplyAmtSectionYn("Y");
+								applyInfo.setAmtDcWay(section.getDcWay());
+								applyInfo.setAmtDcVal(section.getDcVal());
+							}
+						} else {
+							if(applyInfo.getAmtSectionVal() < 1 && applyInfo.getAmtGoodsGb().equals(TscConstants.GoodsGb.BASE.value())) {
+								applyInfo.setApplyAmtSectionYn("N");
+							}
 						}
 					}
 				}
 			}
-		}
 
-		// 수량 다다익선에 맞춰 정렬
-		Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
-			@Override
-			public int compare(Order c1, Order c2) {
-				return c1.getQtyTmtbSq() - c2.getQtyTmtbSq();
-			}
-		});
+			// 수량 다다익선에 맞춰 정렬
+			Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
+				@Override
+				public int compare(Order c1, Order c2) {
+					return c1.getQtyTmtbSq() - c2.getQtyTmtbSq();
+				}
+			});
 
-		// 수량 다다익선 적용 상품 할인 금액 계산
-		int leftAmt = 0;
-		int i = 0;
+			// 수량 다다익선 적용 상품 할인 금액 계산
+			int leftAmt = 0;
+			int i = 0;
 
-		for(Order resultAmt : tmtbApplyList) {
-			int tempAmt  = 0;
-			
-			if("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
-				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
-					i++;
-					tempAmt = resultAmt.getCurrPrice();
+			for(Order resultAmt : tmtbApplyList) {
+				int tempAmt  = 0;
 
-					if (i == 1) {
-						leftAmt = resultAmt.getQtyDcVal();
-					}
+				if("Y".equals(resultAmt.getApplyQtySectionYn()) && resultAmt.getQtyTmtbSq() > 0) {
+					if (TscConstants.DcWay.AMT.value().equals(resultAmt.getQtyDcWay())) {        // 할인 방식 금액일경우
+						i++;
+						tempAmt = resultAmt.getCurrPrice();
 
-					if (i == resultAmt.getQtyTmtbCnt()) {
-						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
-						resultAmt.setTmtb1DcAmt(leftAmt); // tmtb1 할인금액
-						leftAmt = 0;
-						i = 0;
-					} else {
-						double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
-						leftAmt -= (int)tempDcAmt;
-						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
-						
-						resultAmt.setTmtb1DcAmt((int)tempDcAmt); // tmtb1 할인금액
+						if (i == 1) {
+							leftAmt = resultAmt.getQtyDcVal();
+						}
+
+						if (i == resultAmt.getQtyTmtbCnt()) {
+							resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+							resultAmt.setTmtb1DcAmt(leftAmt); // tmtb1 할인금액
+							leftAmt = 0;
+							i = 0;
+						} else {
+							double tempDcAmt = resultAmt.getQtyDcVal() * ((tempAmt) / (double)resultAmt.getQtyTmtbSumAmt());
+							leftAmt -= (int)tempDcAmt;
+							resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+
+							resultAmt.setTmtb1DcAmt((int)tempDcAmt); // tmtb1 할인금액
+						}
+					} else {                                                                // 할인 방식 할인율일 경우
+						tempAmt = resultAmt.getCurrPrice();
+						tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
+						resultAmt.setTmtbDcAmt(tempAmt);
+
+						// 2021.04.29 다다익선할인금액수정
+						resultAmt.setTmtb1DcAmt((int) (resultAmt.getCurrPrice() * (resultAmt.getQtyDcVal() / 100.0))); // tmtb1 할인금액
 					}
-				} else {                                                                // 할인 방식 할인율일 경우
-					tempAmt = resultAmt.getCurrPrice();
-					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getQtyDcVal() / 100.0)));
-					resultAmt.setTmtbDcAmt(tempAmt);
-					
-					// 2021.04.29 다다익선할인금액수정
-					resultAmt.setTmtb1DcAmt((int) (resultAmt.getCurrPrice() * (resultAmt.getQtyDcVal() / 100.0))); // tmtb1 할인금액
 				}
-			}
 
-			if (resultAmt.getTmtbDcAmt() > 0) {
-				resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
+				if (resultAmt.getTmtbDcAmt() > 0) {
+					resultAmt.setCurrPrice(resultAmt.getTmtbDcAmt());
+				}
 			}
-		}
 
-		// 금액 다다익선에 맞춰 정렬
-		Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
-			@Override
-			public int compare(Order c1, Order c2) {
-				return c1.getAmtTmtbSq() - c2.getAmtTmtbSq();
-			}
-		});
+			// 금액 다다익선에 맞춰 정렬
+			Collections.sort((ArrayList<Order>) tmtbApplyList, new Comparator<Order>() {
+				@Override
+				public int compare(Order c1, Order c2) {
+					return c1.getAmtTmtbSq() - c2.getAmtTmtbSq();
+				}
+			});
+
+			// 금액 다다익선 할인 계산
+			leftAmt = 0;
+			i = 0;
+			for(Order resultAmt : tmtbApplyList) {
+				int tempAmt  = 0;
+
+				if("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
+					if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {        // 할인 방식 금액일경우
+						i++;
+						tempAmt = resultAmt.getCurrPrice();
+						if (i == 1) {
+							leftAmt = resultAmt.getAmtDcVal();
+						}
 
-		// 금액 다다익선 할인 계산
-		leftAmt = 0;
-		i = 0;
-		for(Order resultAmt : tmtbApplyList) {
-			int tempAmt  = 0;
-			
-			if("Y".equals(resultAmt.getApplyAmtSectionYn()) && resultAmt.getAmtTmtbSq() > 0) {
-				if (TscConstants.DcWay.AMT.value().equals(resultAmt.getAmtDcWay())) {        // 할인 방식 금액일경우
-					i++;
-					tempAmt = resultAmt.getCurrPrice();
-					if (i == 1) {
-						leftAmt = resultAmt.getAmtDcVal();
-					}
+						if (i == resultAmt.getAmtTmtbCnt()) {
+							resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
+							resultAmt.setTmtb2DcAmt(leftAmt); // tmtb1 할인금액
 
-					if (i == resultAmt.getAmtTmtbCnt()) {
-						resultAmt.setTmtbDcAmt(tempAmt - leftAmt);
-						resultAmt.setTmtb2DcAmt(leftAmt); // tmtb1 할인금액
-						
-						leftAmt = 0;
-						i = 0;
-					} else {
-						double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
-						leftAmt -= (int)tempDcAmt;
-						resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
-						
-						resultAmt.setTmtb2DcAmt((int)tempDcAmt); // tmtb1 할인금액
+							leftAmt = 0;
+							i = 0;
+						} else {
+							double tempDcAmt = resultAmt.getAmtDcVal() * ((tempAmt) / (double)resultAmt.getAmtTmtbSumAmt());
+							leftAmt -= (int)tempDcAmt;
+							resultAmt.setTmtbDcAmt(tempAmt - (int)tempDcAmt);
+
+							resultAmt.setTmtb2DcAmt((int)tempDcAmt); // tmtb1 할인금액
+						}
+					} else {                                                                // 할인 방식 할인율일 경우
+						tempAmt = resultAmt.getCurrPrice();
+						tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
+						resultAmt.setTmtbDcAmt(tempAmt);
+
+						// 2021.04.29 다다익선할인금액수정
+						resultAmt.setTmtb2DcAmt((int) (resultAmt.getCurrPrice() * (resultAmt.getAmtDcVal() / 100.0))); // tmtb2 할인금액
 					}
-				} else {                                                                // 할인 방식 할인율일 경우
-					tempAmt = resultAmt.getCurrPrice();
-					tempAmt = (int) (tempAmt - (tempAmt * (resultAmt.getAmtDcVal() / 100.0)));
-					resultAmt.setTmtbDcAmt(tempAmt);
-					
-					// 2021.04.29 다다익선할인금액수정
-					resultAmt.setTmtb2DcAmt((int) (resultAmt.getCurrPrice() * (resultAmt.getAmtDcVal() / 100.0))); // tmtb2 할인금액
 				}
 			}
-		}
 
-		// 장바구니 정보에 수량 다다익선 정보 입력
-		for (Order cart : cartGoodsList) {
-			for (Order apply : tmtbApplyList) {
-				if (cart.getCartSq().equals(apply.getCartSq())) {
-					// 2021.02.24 jsh77b
-					cart.setTmtb1DcAmt(apply.getTmtb1DcAmt());
-					cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
-					
-					cart.setTmtbDcAmt(apply.getTmtbDcAmt());
-					cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
-					cart.setQtyTmtbNm(apply.getQtyTmtbNm());
-					cart.setQtyTmtbSq(apply.getQtyTmtbSq());
-					cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
-					cart.setAmtTmtbNm(apply.getAmtTmtbNm());
-					cart.setAmtTmtbSq(apply.getAmtTmtbSq());
+			// 장바구니 정보에 수량 다다익선 정보 입력
+			for (Order cart : cartGoodsList) {
+				for (Order apply : tmtbApplyList) {
+					if (cart.getCartSq().equals(apply.getCartSq())) {
+						// 2021.02.24 jsh77b
+						cart.setTmtb1DcAmt(apply.getTmtb1DcAmt());
+						cart.setTmtb2DcAmt(apply.getTmtb2DcAmt());
+
+						cart.setTmtbDcAmt(apply.getTmtbDcAmt());
+						cart.setApplyQtySectionYn(apply.getApplyQtySectionYn());
+						cart.setQtyTmtbNm(apply.getQtyTmtbNm());
+						cart.setQtyTmtbSq(apply.getQtyTmtbSq());
+						cart.setApplyAmtSectionYn(apply.getApplyAmtSectionYn());
+						cart.setAmtTmtbNm(apply.getAmtTmtbNm());
+						cart.setAmtTmtbSq(apply.getAmtTmtbSq());
+					}
 				}
 			}
 		}

+ 35 - 4
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -359,10 +359,6 @@ public class TsfCartController extends TsfBaseController {
 	@ResponseBody
 	public Order getCartList() {
 		Order cart = new Order();
-		int custNo = 0;
-		if(TsfSession.isLogin()) {
-			custNo = TsfSession.getInfo().getCustNo();
-		}
 
 		// 장바구니 상품목록
 		cart = cartService.getCartGoodsList(cart);
@@ -377,9 +373,44 @@ public class TsfCartController extends TsfBaseController {
 			}
 		});
 
+		List<Order> cartList = new ArrayList<>();
+		for(Order oneData : cart.getDelvAllCartList()) {
+			if(oneData.getOrdCanQty() < 6 && oneData.getOrdCanQty() > 0) {
+				cartList.add(oneData);
+			}
+		}
+
+		// 장바구니 등록 최신순 정렬
+		Collections.sort((ArrayList<Order>) cart.getDelvAllCartList(), new Comparator<Order>() {
+			@Override
+			public int compare(Order c1, Order c2) {
+				return c2.getCartSq() - c1.getCartSq();	//역순 정렬
+			}
+		});
+
+		for(Order oneData : cart.getDelvAllCartList()) {
+			if(oneData.getOrdCanQty() > 5) {
+				cartList.add(oneData);
+			}
+		}
+
+		cart.setDelvAllCartList(cartList);
+
 		return cart;
 	}
 
+	/**
+	 * 장바구니 수량 조회(모바일 헤더)
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 05. 04
+	 */
+	@ResponseBody
+	@GetMapping("/goods/not/soldout/cnt")
+	public Order getCartNotSoldoutCnt() {
+		return cartService.getCartNotSoldoutCnt();
+	}
+
 	/**
 	 * 상품 품절 제외 옵션 조회
 	 * @param param

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

@@ -662,6 +662,9 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 반품 사유 목록 조회
 		mav.addObject("returnReason", rendererService.getCommonCodeList("G688", "Y"));
+		
+		// 2021.05.03 은행목록추가
+		mav.addObject("bankList", rendererService.getCommonCodeList("G942", "Y"));
 
 		mav.setViewName(super.getDeviceViewName("/mypage/MypageReturnForm"));
 
@@ -1008,6 +1011,7 @@ public class TsfMypageController extends TsfBaseController {
 		OrderChange oneData = (OrderChange) map.get("oneData");
 		mav.addObject("returnDetailList", map);
 		mav.addObject("oneData", oneData);
+		mav.addObject("refundYn", map.getString("refundYn"));
 
 		// 주문 결제정보 조회
 		Order order = new Order();

+ 31 - 6
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -136,7 +136,7 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 로그인여부 설정
 		mav.addObject("isLogin", false);
 
-		// 주문번호 설정
+		// 비회원 정보 설정
 		mav.addObject("ordNo", order.getOrdNo());
 		mav.addObject("ordNm", order.getOrdNm());
 		mav.addObject("ordPhnno", order.getOrdPhnno());
@@ -406,6 +406,11 @@ public class TsfNoMemberController extends TsfBaseController {
 	public ModelAndView noMemberCancelForm(Order order) {
 		ModelAndView mav = new ModelAndView();
 
+		// 비회원 정보 설정
+		mav.addObject("ordNo", order.getOrdNo());
+		mav.addObject("ordNm", order.getOrdNm());
+		mav.addObject("ordPhnno", order.getOrdPhnno());
+
 		// 취소 가능 리스트 조회
 		GagaMap map = orderChangeService.getCancelListForMypage(order);
 		Order oneData = (Order)map.get("oneData");
@@ -476,8 +481,10 @@ public class TsfNoMemberController extends TsfBaseController {
 	public ModelAndView returnForm(Order order) {
 		ModelAndView mav = new ModelAndView();
 
-		// 주문번호 설정
+		// 비회원 정보 설정
 		mav.addObject("ordNo", order.getOrdNo());
+		mav.addObject("ordNm", order.getOrdNm());
+		mav.addObject("ordPhnno", order.getOrdPhnno());
 
 		// 로그인여부 설정
 		mav.addObject("isLogin", false);
@@ -636,8 +643,10 @@ public class TsfNoMemberController extends TsfBaseController {
 	public ModelAndView exchangeForm(Order order) {
 		ModelAndView mav = new ModelAndView();
 
-		// 주문번호 설정
+		// 비회원 정보 설정
 		mav.addObject("ordNo", order.getOrdNo());
+		mav.addObject("ordNm", order.getOrdNm());
+		mav.addObject("ordPhnno", order.getOrdPhnno());
 
 		// 로그인여부 설정
 		mav.addObject("isLogin", false);
@@ -789,7 +798,7 @@ public class TsfNoMemberController extends TsfBaseController {
 	public ModelAndView mypageCreListForm(Order order) {
 		ModelAndView mav = new ModelAndView();
 
-		// 주문 정보 설정
+		// 비회원 정보 설정
 		mav.addObject("ordNo", order.getOrdNo());
 		mav.addObject("ordNm", order.getOrdNm());
 		mav.addObject("ordPhnno", order.getOrdPhnno());
@@ -872,6 +881,11 @@ public class TsfNoMemberController extends TsfBaseController {
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// 비회원 정보 설정
+		mav.addObject("ordNo", orderChange.getOrdNo());
+		mav.addObject("ordNm", orderChange.getOrdNm());
+		mav.addObject("ordPhnno", orderChange.getOrdPhnno());
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreCancelDetailForm"));
 
 		return mav;
@@ -892,17 +906,23 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 로그인여부 설정
 		mav.addObject("isLogin", false);
 
-		// 취소상세 데이터 조회
+		// 반품상세 데이터 조회
 		GagaMap map = orderChangeService.getCreReturnDetailInfo(orderChange);
 		OrderChange oneData = (OrderChange) map.get("oneData");
 		mav.addObject("returnDetailList", map);
 		mav.addObject("oneData", oneData);
+		mav.addObject("refundYn", map.getString("refundYn"));
 
 		// 주문 결제정보 조회
 		Order order = new Order();
 		order.setOrdNo(orderChange.getOrdNo());
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
 
+		// 비회원 정보 설정
+		mav.addObject("ordNo", orderChange.getOrdNo());
+		mav.addObject("ordNm", orderChange.getOrdNm());
+		mav.addObject("ordPhnno", orderChange.getOrdPhnno());
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreReturnDetailForm"));
 
 		return mav;
@@ -923,12 +943,17 @@ public class TsfNoMemberController extends TsfBaseController {
 		// 로그인여부 설정
 		mav.addObject("isLogin", false);
 
-		// 취소상세 데이터 조회
+		// 교환상세 데이터 조회
 		GagaMap map = orderChangeService.getCreExchangeDetailInfo(orderChange);
 		OrderChange oneData = (OrderChange) map.get("oneData");
 		mav.addObject("exchangeDetailList", map);
 		mav.addObject("oneData", oneData);
 
+		// 비회원 정보 설정
+		mav.addObject("ordNo", orderChange.getOrdNo());
+		mav.addObject("ordNm", orderChange.getOrdNm());
+		mav.addObject("ordPhnno", orderChange.getOrdPhnno());
+
 		mav.setViewName(super.getDeviceViewName("mypage/NoMemberCreExchangeDetailForm"));
 
 		return mav;

+ 50 - 4
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -814,10 +814,56 @@ public class TsfOrderController extends TsfBaseController {
 		coreOrderService.updateOrderInfo(order);
 		
 		// TODO 4. 보증보험 API 연동
-		
-		
-		
-		
+		// orderDao.createInsurance(order);
+
+		/*
+		 * temp.setItemNmArr(goodsNameArr);			// 상품명 배열
+		 * temp.setGoodsPriceArr(goodsPriceArr);	// 상품별 가격 배열
+		 * temp.setItemQtyArr(goodsQuantityArr);	// 상품별 수량 배열
+		 * temp.setOrdNo(1);						// 주문번호
+		 * temp.setRealOrdAmt(32000);				// 결제금액
+		 * temp.setBirthYmd("198912021");			// 생년월일 + 성별(남자 : 1, 여자 : 2)
+		 * temp.setPayMeans(TscConstants.PayMeans.ACCOUNT_TRANSFER.value());		// 무통장입금 or 계좌이체
+		 * temp.setBankNm("신한은행");					// 은행명  >> PG 송부 후 result에서 값 입력하면됨
+		 * temp.setOrdNm("이태영");					// 주문자명
+		 * temp.setOrdTelno("");					// 주문자전화1 ("-" 포함)
+		 * temp.setOrdPhnno("010-7111-4489");		// 주문자전화2 ("-" 포함)
+		 * temp.setRecipZipcode("08755");			// 주문자우편번호
+		 * temp.setRecipAddr("서울시 관악구 신림동 1414-26 해피타워 501호");	// 주문자주소
+		 * temp.setOrdEmail("xodud1202@naver.com");	// 주문자이메일
+		 * temp.setRecipNm("이태영");					// 수령인명
+		 * temp.setRecipTelno("");					// 수령인전화번호
+		 * temp.setRecipPhnno("010-7111-4489");		// 수령인휴대폰번호
+		 * temp.setCustNo(100010);					// 고객번호
+		 * temp.setPgTid("20210423952698");			// temp.setVaNo("110242222222");  >> PG 송부 후 result에서 값 입력하면됨
+		 *  */
+		
+		String[] goodsNameArr = new String[2]; goodsNameArr[0] ="테스트1";goodsNameArr[1] = "테스트2";
+		String[] goodsPriceArr = new String[2]; goodsPriceArr[0] ="10000";goodsPriceArr[1] = "12000";
+		String[] goodsQuantityArr = new String[2]; goodsQuantityArr[0] ="2";goodsQuantityArr[1] = "3";
+		
+		order.setItemNmArr(goodsNameArr);		// 상품명 배열
+		order.setGoodsPriceArr(goodsPriceArr);	// 상품별 가격 배열
+		order.setItemQtyArr(goodsQuantityArr);	// 상품별 수량 배열
+		order.setOrdNo(order.getOrdNo());		// 주문번호
+		order.setRealOrdAmt(32000);				// 결제금액
+		order.setBirthYmd("198912021");			// 생년월일 + 성별(남자 : 1, 여자 : 2)
+		order.setPayMeans(TscConstants.PayMeans.ACCOUNT_TRANSFER.value());		// 무통장입금 or 계좌이체
+		order.setBankNm("신한은행");				// 은행명  >> PG 송부 후 result에서 값 입력하면됨
+		order.setOrdNm("이태영");					// 주문자명
+		order.setOrdTelno("");					// 주문자전화1 ("-" 포함)
+		order.setOrdPhnno("010-1234-5555");		// 주문자전화2 ("-" 포함)
+		order.setRecipZipcode("08755");			// 주문자우편번호
+		order.setRecipAddr("서울시 관악구 신림동 1414-11 타워타워 101호");	// 주문자주소
+		order.setOrdEmail("xodud1202@naver.com");	// 주문자이메일
+		order.setRecipNm("이태영");					// 수령인명
+		order.setRecipTelno("");					// 수령인전화번호
+		order.setRecipPhnno("010-1234-5555");		// 수령인휴대폰번호
+		order.setCustNo(100010);					// 고객번호
+		order.setVaNo("110242222222");				// 가상계좌번호
+
+		// uSafeGuaranteeInsurance(order);
+		orderService.uSafeGuaranteeInsurance(order);
 		
 		// 2021.03.16 주문완료화면이동처리
 		mav.setViewName("redirect:/order/complete?ordNo=" + order.getOrdNo());

+ 4 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml

@@ -464,7 +464,8 @@
 		                   FROM   TB_TMTB_SECTION TS
 		                   WHERE  TS.DEL_YN = 'N'
 		                   GROUP  BY TS.TMTB_SQ) TS
-		ON TC.TMTB_SQ = TS.TMTB_SQ
+		ON     TC.TMTB_SQ = TS.TMTB_SQ
+		AND    TC.SECTION_VAL = TS.SECTION_VAL
 		WHERE  1=1
 		AND	   TC.DEL_YN = 'N'
 		AND	   TV.DEL_YN = 'N'
@@ -510,8 +511,7 @@
 		     , (Z.CURR_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS CURR_PRICE
 		     , (Z.LIST_PRICE + SUM(Z.OPT_ADD_PRICE)) * Z.GOODS_QTY AS LIST_PRICE
 		     , Z.SOLDOUT_YN
-		     , CASE WHEN #{frontGb} = 'P' THEN (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_PRATE/100)
-		            ELSE (Z.CURR_PRICE * Z.GOODS_QTY) * (Z.PNT_MRATE/100) END AS SAVE_PNT_AMT
+		     , CASE WHEN #{frontGb} = 'P' THEN Z.PNT_PRATE ELSE Z.PNT_MRATE END AS PNT_RATE
 		     , SYS_IMG_NM
 		FROM   (SELECT C.CART_SQ
 		             , C.GOODS_CD
@@ -695,7 +695,7 @@
 		     , CURR_PRICE
 		     , LIST_PRICE
 		     , Z.SOLDOUT_YN
-		     , SAVE_PNT_AMT
+		     , PNT_RATE
 		     , SYS_IMG_NM
 		ORDER  BY Z.DELV_FEE_CD DESC
 		     , Z.GOODS_CD DESC

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

@@ -342,7 +342,6 @@
 				   , SUM(REAL_DELV_AMT)   AS REAL_DELV_AMT
 				FROM TB_DELIVERY_FEE
 			   WHERE ORD_NO = #{ordNo}
-				 AND DELV_FEE_GB = 'G018_10'
 			   GROUP BY ORD_NO
 		  ) DF
 		    ON OD.ORD_NO = DF.ORD_NO

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

@@ -1187,6 +1187,7 @@
 		     , 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
@@ -1248,6 +1249,7 @@
 		             , OC.CHGER_PHNNO
 		             , OC.CHGER_BASE_ADDR
 		             , OC.CHGER_DTL_ADDR
+		             , OC.CHGER_RTN_MEMO
 		             , OC.CHG_MEMO
 		             , OC.WD_INVOICE_NO
 		             , OC.SHIP_COMP_CD
@@ -1320,7 +1322,7 @@
 		        , 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.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.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.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
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>

+ 11 - 1
src/main/webapp/WEB-INF/views/mob/common/fragments/FooterMob.html

@@ -113,7 +113,17 @@
 
 <script th:inline="javascript">
 /*<![CDATA[*/
-	$(document).ready( function() {
+	$(document).ready(function() {
+		$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {
+			let cartCnt;
+			if (order.totCartCnt > 99) {
+				cartCnt = "99+";
+			} else {
+				cartCnt = order.totCartCnt;
+			}
+
+			$("header #htopSub .button_wrap .store>span").text(cartCnt);
+		});
 	});
 /*]]>*/
 </script>

+ 366 - 256
src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html

@@ -20,9 +20,9 @@
 <main role="" id="" class="container my">
 	<section class="content my_return">
 		<form id="cancelForm" 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="accountNo" 	th:value="${oneData.accountNo}"/>
+			<input type="hidden" name="accountNm" 	th:value="${oneData.accountNm}"/>
+			<input type="hidden" name="bankCd" 		th:value="${oneData.bankCd}"/>
 					
 			<div class="inner wide bg_beige">
 				<div class="order_number">
@@ -38,102 +38,78 @@
 						<div th:unless="${oneData.giftPackYn == 'Y'}" class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
 						<div th:if="${oneData.giftPackYn == 'Y'}" class="goods_date">선물일<span class="date" th:text="${oneData.ordDt}"></span></div>
 					</div>
-					<div class="goods_section">
-						<div class="goods_detail">
-							<a href="">
-								<div class="thumb_box">
-									<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
-								</div>
-								<div class="info_box">
-									<div class="od_name">
-										<div class="brand">
-											<span>Mollimelli 몰리멜리</span>
-											<div class="badge_wrap">
-												<em class="order_badge">업체직배송</em>
+					
+					<!-- 취소상품목록 -->
+					<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+						<div class="goods_section">
+							<div class="goods_detail">
+								<a href="">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
+									</div>
+									<div class="info_box">
+										<div class="od_name">
+											<div class="brand">
+												<span th:text="${cancel.brandNm}"></span>
+												<div class="badge_wrap">
+													<em class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</em>
+													<em class="tag" th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</em>
+													<em class="tag" th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</em>
+												</div>
 											</div>
+											<div class="name" th:text="${cancel.goodsNm}"></div>
 										</div>
-										<div class="name">몰리겨울상하복 균일가 택1 유아동/상하복/기모상하복/상하의세트 몰리겨울상하복 균일가 택1</div>
-									</div>
-									<div class="od_opt">
-										<div class="option">
-											<em>Black</em>
-											<em>XXL</em>
+										<div class="od_opt">
+												<div class="option">
+													<th:block th:if="${cancel.goodsType == 'G056_S'}" th:each="option, status : ${cancel.colorNmArr}">
+														<em th:text="${cancel.itemNmArr[status.index]}"></em>
+														<em th:text="${cancel.optCd2Arr[status.index]}"></em>
+													</th:block>
+													<th:block th:unless="${cancel.goodsType == 'G056_S'}">
+														<em th:text="${cancel.colorNm}"></em>
+														<em th:text="${cancel.optCd2}"></em>
+													</th:block>
+												</div>
+										</div>
+										<div class="od_calc">
+											<th:block th:if="${(cancel.ordAmt - cancel.cnclRtnAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}">
+												<p class="sale_price">
+													<del><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt, 1, 'COMMA')}"></em>원</del>
+												</p>
+											</th:block>
+											<p class="price">
+												<span class="selling_price">
+													<em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원
+												</span>
+											</p>
 										</div>
 									</div>
-									<div class="od_calc">
-										<p class="sale_price"><del><em>95,000</em>원</del></p>
-										<p class="price">
-											<span class="selling_price"><em>61,200</em>원</span>
-										</p>
+								</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=${cancel.ordDtlNo}, ordCanChgQty=${cancel.ordCanChgQty}"/>
+										<div class="select">수량 0개</div>
 									</div>
 								</div>
-							</a>
-						</div>
-						<div class="goods_select">
-							<div class="select_custom select_count">
-								<div class="combo">
-									<div class="select">수량 0개</div>
-								</div>
 							</div>
+							<th:block th:if="${#lists.size(cancelList.cancelList) == status.count}">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">취소하실 상품의 수량을 선택하신 후<br>취소 신청을 하실 수 있습니다.</p>
+								</div>
+							</th:block>
 						</div>
-						<div class="goods_txt">
-							<p class="cf_txt cf_desc">취소하실 상품의 수량을 선택하신 후<br>취소 신청을 하실 수 있습니다.</p>
-						</div>
-					</div>
-				</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>
-											<ul class="list">
-												<li>단순 변심</li>
-												<li>색상/사이즈가 상이</li>
-												<li>타사이트가 더 저렴함</li>
-												<li>상품옵션 선택 잘못 함</li>
-												<li>상품 결함이 있음</li>
-												<li>실제 상품이 상품 설명과 다름</li>
-												<li>포장과 상품이 훼손 됨</li>
-												<li>상품이 훼손 됨(포장은 양호)</li>
-												<li>주문상품 일부가 배송되지 않음</li>
-												<li>구성품, 부속품이 없음</li>
-												<li>다른 상품이 배송됨(주문상품 아님)</li>
-												<li>상품이 늦게 배송 됨</li>
-											</ul>
-										</div>
-									</div>
-								</td>
-							</tr>
-							<tr>
-								<th class="sr-only">취소 완료 일자</th>
-								<td>
-									<div class="textarea_wrap">
-										<textarea class="doc_return" name="" id="" placeholder="자세한 사유를 입력해주세요."></textarea>
-										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
-									</div>
-								</td>
-							</tr>
-						</table>
-					</div>
+					</th:block>
+					<!-- //취소상품목록 -->
+					
 				</div>
 			</div>
 			<div class="inner">
 				<div class="tbl_wrap pay_wrap">
 					<div class="tbl_tit"> 
 						<h3>환불 정보</h3>
-						<strong class="pay"><span>123,456,789</span>원</strong>
+						<strong class="pay"><span id="returnAmt">0</span>원</strong>
 					</div>
 					<div class="tbl type1">
 						<table>
@@ -148,7 +124,7 @@
 											<dt>상품 취소 금액</dt>
 											<dd>
 												<div>
-													<span>123,456,789</span>원
+													<span id="goodsCancelAmt">0</span>원
 												</div>
 											</dd>
 										</div>
@@ -156,7 +132,7 @@
 											<dt>배송비</dt>
 											<dd>
 												<div>
-													<span>-123,456,789</span>원
+													<span id="deliveryFee">0</span>원
 												</div>
 											</dd>
 										</div>
@@ -164,7 +140,7 @@
 											<dt>할인 금액 차감</dt>
 											<dd>
 												<div>
-													<span>-123,456,789</span>원
+													<span id="deductDcAmt">0</span>원
 												</div>
 											</dd>
 										</div>
@@ -174,7 +150,10 @@
 											<dt>환불 수단</dt>
 											<dd>
 												<div>
-													<span>-123,456,789</span>원
+													<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>
@@ -182,7 +161,7 @@
 											<dt>결제금액 환불</dt>
 											<dd>
 												<div>
-													<span>-123,456,789</span>원
+													<span id="refundPayAmt">0</span>원
 												</div>
 											</dd>
 										</div>
@@ -190,7 +169,7 @@
 											<dt>포인트 환불</dt>
 											<dd>
 												<div>
-													<span>-123,456,789</span>원
+													<span id="refundPoint">0</span>P
 												</div>
 											</dd>
 										</div>
@@ -198,7 +177,7 @@
 											<dt>상품권 환불</dt>
 											<dd>
 												<div>
-													<span>3000</span>P
+													<span id="refundGiftCard">0</span>원
 												</div>
 											</dd>
 										</div>
@@ -206,207 +185,338 @@
 								</td>
 							</tr>
 						</table>
+						<!-- 
 						<button type="button" class="btn btn_default"><span>취소 전표 보기</span></button>
+						 -->
 					</div>
 				</div>
 				<div class="required_group">
-					<p>배송비 <span class="c_primary">5,000원</span> 추가 결제가 필요합니다.</p>
+					<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"><span>취소</span></button></div>
-					<div><button type="button" id="btn_order_return" class="btn btn_dark"><span>취소 신청</span></button></div> <!-- 210409_추가 : btn_order_return id 추가 -->
+					<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>취소</span></button></div>
+					<div><button type="button" id="btn_order_return" class="btn btn_dark" onclick="fnCancel();"><span>주문 취소</span></button></div>
 				</div>
 			</div>
 		</form>
 	</section>
 </main>
+
+<!-- 210408_취소 수량 선택 팝업 -->
+<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}">
+	<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"><span>수량 0개</span></button>
+					<th:block th:each="num : ${#numbers.sequence(1,cancel.ordCanChgQty)}">
+						<button type="button" th:qty="${num}" onclick="fnChangeCancelQty(this);"><span th:text="|수량 ${num}개|"></span></button>
+					</th:block>
+					<input type="hidden" name="ordDtlNo" th:value="${cancel.ordDtlNo}">
+				</div> 
+			</div>
+		</div>
+	</div>
+</th:block>
+<!-- //210408_취소 수량 선택 팝업 -->
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
-	let cancelList = [[${cancelList}]];
-	let oneData = [[${oneData}]];
-	let paymentInfo = [[${paymentInfo}]];
-	let addPayCost = 0;
+let cancelList 		= [[${cancelList}]];
+let oneData 		= [[${oneData}]];
+let paymentInfo 	= [[${paymentInfo}]];
+let addPayCost 		= 0;
 
-	$(document).ready(function() {
-		// 마이페이지 LNB 설정
-		fnSetMypageLnbList(2);
+$(document).ready(function() {
+	
+});
 
-		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
+// 취소수량버튼기능
+$(".select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".returnCountPop").hide();
+		
+		// 수량팝업활성화
+		$(".returnCountPop").eq(idx).show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
+});
 
-		// 셀렉트박스 활성화
-		$(".myOrderView .part_goods .select_custom.select_count").each(function() {
-			new sCombo(this);
-		});
+// 취소 처리
+var fnCancel = function() {
+	// 주문상세번호 및 취소 수량 설정
+	let ordDtlNoArr 			= [];
+	let cnclRtnReqQtyArr 		= [];
+	let chkQty 					= 0;
+	
+	$.each($('#cancelForm input[name=chgQty]'), function(idx, item) {
+		let chgQty 		= $(item).val();
+		let ordDtlNo 	= $(item).attr('ordDtlNo');
+		
+		ordDtlNoArr.push(Number(ordDtlNo));
+		cnclRtnReqQtyArr.push(Number(chgQty));
+		chkQty += chgQty;
 	});
 
-	// 취소 처리
-	var fnCancel = function() {
-		// 취소수량 설정
-		//fnChangeCancelQty();
-
-		// 주문상세번호 및 취소 수량 설정
-		let ordDtlNoArr = [];
-		let cnclRtnReqQtyArr = [];
-		let chkQty = 0;
-		$.each($('#cancelForm input[name=chgQty]'), function(idx, item) {
-			let chgQty = $(item).val();
-			let ordDtlNo = $(item).attr('ordDtlNo');
-			
-			ordDtlNoArr.push(Number(ordDtlNo));
-			cnclRtnReqQtyArr.push(Number(chgQty));
-			chkQty += chgQty;
+	// 취소 수량 체크
+	if (chkQty == 0) {
+		mcxDialog.alert('취소하실 상품의 수량을 선택해주세요.');
+		return false;
+	}
+
+	// 환불계좌 체크
+	let accountNo 	= $('#cancelForm input[name=accountNo]').val();
+	let accountNm 	= $('#cancelForm input[name=accountNm]').val();
+	let bankCd 		= $('#cancelForm input[name=bankCd]').val();
+
+	// 무통장입금, 결제완료 일때 환불계좌정보 체크
+	if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+		let data 		= {};
+		data.ordNo 		= oneData.ordNo;
+		data.accountNm 	= oneData.accountNm;
+		let jsonData	 = JSON.stringify(data);
+
+		$.ajax( {
+			type		: "POST",
+			url 		: '/mypage/refund/account/register/popup/form',
+			data		: jsonData,
+			dataType 	: 'html',
+			beforeSend : function(xhr, settings) {
+				xhr.setRequestHeader("AJAX"			, "true");
+				xhr.setRequestHeader('Accept'		, 'application/json');
+				xhr.setRequestHeader('Content-Type'	, 'application/json');
+			},
+			success 	: function(result) {
+				$("#refundPop .modal-dialog .modal-content").html(result);
+				$("#refundPop").modal("show");
+			}
 		});
+		
+		return false;
+	}
 
-		// 취소 수량 체크
-		if (chkQty == 0) {
-			mcxDialog.alert('취소하실 상품의 수량을 선택해주세요.');
-			return false;
-		}
+	// 취소요청 데이터 설정
+	let url = '/mypage/cancel';
+
+	// 취소 처리
+	let data = {};
+	data.ordNo 				= oneData.ordNo;
+	data.chgReason 			= 'G686_10';
+	data.chgReasonNm 		= '고객변심';
+	data.accountNo 			= accountNo;
+	data.accountNm 			= accountNm;
+	data.bankCd 			= bankCd;
+	data.isCustomer 		= 'Y';
+	data.reqGbn 			= 'cnclComplete';
+	data.pgTid 				= paymentInfo.pgTid;
+	data.payAmt 			= paymentInfo.payAmt;
+	data.ordDtlNoArr 		= ordDtlNoArr;
+	data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
 
-		// 환불계좌 체크
-		let accountNo = $('#cancelForm input[name=accountNo]').val();
-		let accountNm = $('#cancelForm input[name=accountNm]').val();
-		let bankCd = $('#cancelForm input[name=bankCd]').val();
-
-		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
-			let data = {};
-			data.ordNo = oneData.ordNo;
-			data.accountNm = oneData.accountNm;
-
-			let jsonData = JSON.stringify(data);
-
-			$.ajax( {
-				type		: "POST",
-				url 		: '/mypage/refund/account/register/popup/form',
-				data		: jsonData,
-				dataType 	: 'html',
-				beforeSend : function(xhr, settings) {
-					xhr.setRequestHeader("AJAX"			, "true");
-					xhr.setRequestHeader('Accept'		, 'application/json');
-					xhr.setRequestHeader('Content-Type'	, 'application/json');
-				},
-				success 	: function(result) {
-					$("#refundPop .modal-dialog .modal-content").html(result);
-					$("#refundPop").modal("show");
-				}
+	let jsonData = JSON.stringify(data);
+	
+	// 취소 처리 가능 여부 조회
+	gagajf.ajaxJsonSubmit('/mypage/wms/cancel/available', jsonData, function(result) {
+		if (result.cancelYn == 'Y') {
+			// 취소 처리
+			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+				cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
 			});
-			
-			return false;
+		} else {
+			mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
 		}
+	});
+}
 
-		// 취소요청 데이터 설정
-		let url = '/mypage/cancel';
-
-		// 취소 처리
-		let data = {};
-		data.ordNo = oneData.ordNo;
-		data.chgReason = 'G686_10';
-		data.chgReasonNm = '고객변심';
-		data.accountNo = accountNo;
-		data.accountNm = accountNm;
-		data.bankCd = bankCd;
-		data.isCustomer = 'Y';
-		data.reqGbn = 'cnclComplete';
-		data.pgTid = paymentInfo.pgTid;
-		data.payAmt = paymentInfo.payAmt;
-		data.ordDtlNoArr = ordDtlNoArr;
-		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
-
-		let jsonData = JSON.stringify(data);
-		
-		// 취소 처리 가능 여부 조회
-		gagajf.ajaxJsonSubmit('/mypage/wms/cancel/available', jsonData, function(result) {
-			if (result.cancelYn == 'Y') {
-				// 취소 처리
-				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-					cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
-				});
-			} else {
-				mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
+// 취소 수량 변경 이벤트 처리
+var fnChangeCancelQty = function(param) {
+	let url = '/mypage/cancel/refund/amt/calculate';
+	
+	// 취소수량설정
+	if (param != null) {
+		$("#cancelForm 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 cnclRtnReqQtyArr 	= [];
+	let ordDtlNoArr 		= [];
+	let ordCanChgQtyArr 	= [];
 	
-	// 취소 수량 변경 이벤트 처리
-	var fnChangeCancelQty = function(param) {
-		let url = '/mypage/cancel/refund/amt/calculate';
+	$.each($('#cancelForm 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.ordDtlNoArr 		= ordDtlNoArr;
+	data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+
+	let jsonData = JSON.stringify(data);
 
-		if (param != null) {
-			$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
+	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;				// 환불예정금액
+
+		// 추가배송비 영역 설정
+		if (refundPayAmt < 0) {
+			refundPayAmt = spanRefundAmt;
+			$('#addDeliveryFee').css('display', '');
+			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			addPayCost = spanTotDeliveryFee;
+		} else {
+			$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+			addPayCost = 0;
 		}
 
-		// 취소 수량 설정
-		let cnclRtnReqQtyArr = [];
-		let ordDtlNoArr = [];
-		let ordCanChgQtyArr = [];
-		$.each($('#cancelForm 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));
-		});
+		// 금액 설정
+		$('#returnAmt').text(returnAmt.addComma());
+		$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
+		$('#deliveryFee').text(deliveryFee.addComma());
+		$('#deductDcAmt').text(deductDcAmt.addComma());
+		$('#refundPayAmt').text(refundPayAmt.addComma());
+		$('#refundPoint').text(refundPoint.addComma());
+		$('#refundGiftCard').text(refundGiftCard.addComma());
+	});
+}
 
-		let data = {};
-		data.ordNo = oneData.ordNo;
-		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 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;				// 환불예정금액
-
-			// 추가배송비 영역 설정
-			if (refundPayAmt < 0) {
-				refundPayAmt = spanRefundAmt;
-				$('#addDeliveryFee').css('display', '');
-				$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
-				addPayCost = spanTotDeliveryFee;
-			} else {
-				addPayCost = 0;
-			}
+// 환불계좌 등록 콜백 처리
+var fnRegisterAccountCallback = function(result) {
+	// 환불계좌 정보 설정
+	$('#cancelForm input[name=accountNo]').val(result.accountNo);
+	$('#cancelForm input[name=accountNm]').val(result.accountNm);
+	$('#cancelForm input[name=bankCd]').val(result.bankCd);
 
-			// 금액 설정
-			$('#returnAmt').text(returnAmt.addComma());
-			$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
-			$('#deliveryFee').text(deliveryFee.addComma());
-			$('#deductDcAmt').text(deductDcAmt.addComma());
-			$('#refundPayAmt').text(refundPayAmt.addComma());
-			$('#refundPoint').text(refundPoint.addComma());
-			$('#refundGiftCard').text(refundGiftCard.addComma());
+	// 취소처리
+	fnCancel();
+}
+</script>
+
+<script>
+$(document).ready(function(){
+	/*
+	// 세부 사유 글자 수 제한
+	$('.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");
+		}
+	});
+
+	//210408_추가 : 스크립트 추가.
+	//반품회수방법 선택 스크립트 추가
+	$(document).on('change','.my_return .retrieve_method #rdi_retrieve_visit',function(e){
+		$('.my_return .retrieve_box.direct').hide();
+		$('.my_return .retrieve_box.visit').show();
+		return false;
+	}).on('change','.my_return .retrieve_method #rdi_retrieve_direct',function(e){
+		$('.my_return .retrieve_box.visit').hide();
+		$('.my_return .retrieve_box.direct').show();
+		return false;
+	});
+
+	//버튼 색
+	$(document).on('click','.popup_box .button_list button',function(){
+		$('.popup_box .button_list button').removeClass('on');
+		$(this).addClass('on');
+	});
+
+	// 반품 수량 선택 팝업
+	//$(document).on("click",".select_custom.select_count",function(e){
+		//$('#returnCountPop').show().addClass("active");
+		//$("body").css({"overflow":"hidden"});
+	//});
+
+	//반품 사유 선택 팝업
+	$(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','#btn_adrsAdd_pop',function(e){
+		$("#adrsAddPop").modal("show");
+		return false;
+	});      
+	$("#adrsAddPop_close").click(function() {
+		$("#adrsAddPop").modal("hide");
+	});
+
+	//배송지정보_팝업
+	$(document).on('click','#btn_adrsChange_pop',function(e){
+		$("#adrsChangePop").modal("show");
+		return false;
+	});
+	$("#adrsChangePop_close").click(function() {
+		$("#adrsChangePop").modal("hide");
+	});
+
+	//배송지수정_팝업
+	$(document).on('click','#btn_addrModify_pop',function(e){
+		$("#adrsModifyPop").modal("show");
+		return false;
+	});
+	$("#adrsModifyPop_close").click(function() {
+		$("#adrsModifyPop").modal("hide");
+	});
+
+	$(document).on("click", "#btn_order_return", function(){
+		mcxDialog.alert("반품 신청이 접수되었습니다.", {
+				//alert("반품하실 상품의 수량을 선택해주세요.") : 클릭 시 반품 수량을 모두 0개로 선택한 경우
+				//alert("반품 사유를 선택해주세요.") : 반품 사유를 선택하지 않는 경우
+			sureBtnText: "확인",  // Confirmation button text
 		});
-	}
+	});
+	*/
 
-	// 환불계좌 등록 콜백 처리
-	var fnRegisterAccountCallback = function(result) {
-		// 환불계좌 정보 설정
-		$('#cancelForm input[name=accountNo]').val(result.accountNo);
-		$('#cancelForm input[name=accountNm]').val(result.accountNm);
-		$('#cancelForm input[name=bankCd]').val(result.bankCd);
+});
 
-		// 취소처리
-		fnCancel();
+//210408_송장번호 input 글자 수 제한
+function handleOnInput(el, maxlength) {
+	if(el.value.length > maxlength)  {
+		el.value = el.value.substr(0, maxlength);
 	}
+}
 </script>
 
 </th:block>

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

@@ -311,7 +311,7 @@
 			data.ordChgSq = ordChgSq;
 			data.chgerRtnMemo = delvMemo;
 		} else {
-			url = 'change/delvery/memo';
+			url = '/mypage/change/delvery/memo';
 			data.delvAddrSq = delvAddrSq;
 			data.delvMemo = delvMemo;
 		}

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

@@ -104,7 +104,7 @@
 											<p class="point"><span th:text="${#numbers.formatInteger(ordDtl.savePntAmt, 1, 'COMMA')}"></span>P 적립예정</p>
 											<p class="sale_price">
 												<del>
-													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</em>원
+													<em th:if="${(ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}">95,000</em>원
 												</del>
 											</p>
 											<p class="price">
@@ -126,7 +126,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 class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_default btn_cncl_complete"><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}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></div>
 									</div>
 								</th:block>
 								<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 : 주문취소 -->
@@ -142,10 +142,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"><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}" 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"><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}" onclick="fnCreateChange(this, 'return');"><span>반품 신청</span></button></div>
 											</th:block>
 										</div>
 									</th:block>
@@ -156,7 +156,7 @@
 										<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</div>
@@ -169,25 +169,25 @@
 									<div class="goods_btn_wrap btn_group_flex">
 										<!-- 교환가능, 반품가능 -->
 										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-											<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+											<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>
 										</th:block>
 										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-											<div><button type="button" class="btn btn_default btn_rtn_req"><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}" 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"><span>구매 확정</span></button></div>
+										<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>
 									<div class="goods_btn_wrap btn_group_flex">
 										<!-- 교환불가, 반품불가 -->
 										<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
-											<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+											<div><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
 										</th:block>
 										<!-- //교환불가, 반품불가 -->
 										
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</div>
@@ -197,12 +197,12 @@
 								<!-- 구매확정 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
 									<div class="goods_btn_wrap btn_group_flex">
-										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
-										<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+										<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><button type="button" class="btn btn_default btn_qna_write" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
 										
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</div>
@@ -214,23 +214,23 @@
 							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
 								<!-- 배송지등록전 -->
 								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
-									<div><button type="button" class="btn btn_primary btn_sms_send"><span>SMS 재발송</span></button></div>
+									<div><button type="button" class="btn btn_primary btn_sms_send" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></div>
 								</th:block>
 								<!-- //배송지등록전 -->
 								
 								<!-- 배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
-									<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+									<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>
 								</th:block>
 								<!-- //배송지등록후 (입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								
 								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
 								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
 									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<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>
 										<!-- 리뷰사용가능, 리뷰등록전일때 -->
 										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
-											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+											<div><button type="button" class="btn btn_primary btn_review_write" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></div>
 										</th:block>
 										<!-- //리뷰사용가능, 리뷰등록전일때 -->
 									</th:block>
@@ -690,6 +690,22 @@
 	</section>
 </main>
 
+<form id="exchangeForm" name="exchangeForm" th:action="@{'/mypage/exchange/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="returnForm" name="returnForm" th:action="@{'/mypage/return/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
+	<input type="hidden" name="ordNo"/>
+	<input type="hidden" name="ordDtlNo"/>
+	<input type="hidden" name="delvFeeCd"/>
+</form>
+
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	let giftMsg				= [[${orderInfo.giftMsg}]];		// 선물메세지

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

@@ -81,10 +81,10 @@
 									</div>
 									<div class="od_calc">
 										<!-- 판매금액과 할인금액이 같으면 표시 안함 -->
-										<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt} - ${ordDtl.cpn1DcAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
+										<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
 											<p class="sale_price">
 												<del>
-													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt, 1, 'COMMA')}"></em>원
 												</del>
 											</p>
 										</th:block>

+ 889 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageReturnFormMob.html

@@ -0,0 +1,889 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="mob/common/layout/MypageLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : MypagReturnFormMob.html
+ * @desc    : 마이페이지 > 취소신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.03   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+
+<main role="" id="" 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 th:unless="${oneData.giftPackYn == 'Y'}" class="goods_date">주문일<span class="date" th:text="${oneData.ordDt}"></span></div>
+						<div th:if="${oneData.giftPackYn == 'Y'}" 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="">
+									<div class="thumb_box">
+										<img th:src="${imageUrl + '/' + return.sysImgNm}" 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="" id="" 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">
+				<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>
+										<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
+									</div>
+									<div class="addr">
+										<dt><span class="sr-only">배송주소</span></dt>
+										<dd id="chgerAddr" th:text="|${deliveryAddrInfo.recipBaseAddr}    ${deliveryAddrInfo.recipDtlAddr}|"></dd>
+										<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 class="phone">
+										<dt><span class="sr-only">휴대폰 번호</span></dt>
+										<dd th:text="${deliveryAddrInfo.recipPhnno}"></dd>
+										<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+									</div>
+									<div class="desc_txt">택배사에서 반품 상품을 직접 회수할 장소 선택</div>
+								</dl>
+							</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>
+						<!-- 
+						<button type="button" class="btn btn_default"><span>취소 전표 보기</span></button>
+						 -->
+					</div>
+				</div>
+				<div class="required_group">
+					<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_MYPAGE_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"><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="${customerInfo.custNm}" 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" 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="|bankCd_${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 		= {};
+
+$(document).ready(function() {
+	// 입점업체의 경우 회수방식 직접배송 처리
+	if (oneData.selfGoodsYn != 'Y') {
+		$('#withdraw').click();
+		$('.wdGb').css('display','none');
+	}
+});
+
+// 반품수량버튼기능
+$(".select_custom.select_count").each(function(idx){
+	$(this).on("click", function(){
+		// 전체비활성화
+		$(".returnCountPop").hide();
+		
+		// 수량팝업활성화
+		$("#returnCountPop").eq(idx).show().addClass("active");
+		
+		$("body").css({"overflow":"hidden"});
+	});
+});
+
+// 은행목록 버튼 기능
+$("#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());
+	});
+});
+
+// 반품 처리
+var fnReturn = function() {
+	let url = '/mypage/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_MYPAGE_CRE_LIST);
+		}
+	}, true);
+}
+
+// 반품 수량 변경 이벤트 처리
+var fnChangeReturnQty = function(param) {
+	let url = '/mypage/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.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 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);
+			
+			// 반품 사유 및 반품 방식 배송비 계산
+			if (result.spanRealCnclRtnAmt > 0) {
+				let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+				// 회사사유 : 추가배송비 0, 반품배송비 0
+				if (!isCustomer) {
+					spanTotRtnDelvFee = 0;
+				}
+				// 고객사유(직접발송) : 반품배송비 0
+				else if (wdGb == 'D') {
+					spanTotRtnDelvFee = 0;
+				}
+			} else {
+				spanTotRtnDelvFee = 0;
+			}
+			
+			let goodsCancelAmt 	= spanCnclRtnAmt;										// 상품취소금액
+			let addDelvFee 		= spanTotRtnDelvFee;									// 추가배송비
+			let deductDcAmt 	= 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감(쿠폰+다다익선+선포인트)
+			let refundPayAmt 	= spanRefundAmt - spanTotRtnDelvFee;					// 결제금액 환불
+			
+			if (!isCustomer) {
+				refundPayAmt += spanTotDeliveryFee;
+			}
+			
+			// 추가배송비 영역 설정
+			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(deductDcAmt.addComma());
+			$('#refundPayAmt').text(refundPayAmt.addComma());
+			$('#refundPoint').text(refundPoint.addComma());
+			$('#refundGiftCard').text(refundGiftCard.addComma());
+		});
+	}
+}
+
+// 반품 방식 변경 이벤트
+$('#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();
+});
+
+// 환불계좌 등록 콜백 처리
+var fnRegisterAccountCallback = function(result) {
+	// 환불계좌 정보 설정
+	$('#cancelForm input[name=accountNo]').val(result.accountNo);
+	$('#cancelForm input[name=accountNm]').val(result.accountNm);
+	$('#cancelForm input[name=bankCd]').val(result.bankCd);
+
+	// 취소처리
+	fnCancel();
+}
+
+// 반품 사유 변경 이벤트
+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);
+}
+</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){
+	$('#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');
+});
+
+/* 210409_추가 : alert 모음 */
+$(document).on("click", "#btn_bank_certi", function(){
+	mcxDialog.alert("계좌인증에 성공했습니다.", {
+			//alert("계좌정보를 다시 확인해주세요.") : 계좌인증 실패/유효하지 않은 경우
+			//alert("은행을 선택해주세요.") : 은행을 선택하지 않은 경우
+			//alert("계좌번호를 입력해주세요.") : 계좌번호를 입력하지 않은 경우
+		sureBtnText: "확인",  // Confirmation button text
+	});
+});
+
+/*
+$(document).ready(function(){
+
+	//210408_추가 : 스크립트 추가.
+	//반품회수방법 선택 스크립트 추가
+	$(document).on('change','.my_return .retrieve_method #rdi_retrieve_visit',function(e){
+		$('.my_return .retrieve_box.direct').hide();
+		$('.my_return .retrieve_box.visit').show();
+		return false;
+	}).on('change','.my_return .retrieve_method #rdi_retrieve_direct',function(e){
+		$('.my_return .retrieve_box.visit').hide();
+		$('.my_return .retrieve_box.direct').show();
+		return false;
+	});
+
+	// 반품 수량 선택 팝업
+	//$(document).on("click",".select_custom.select_count",function(e){
+		//$('#returnCountPop').show().addClass("active");
+		//$("body").css({"overflow":"hidden"});
+	//});
+
+	//배송지추가_팝업
+	$(document).on('click','#btn_adrsAdd_pop',function(e){
+		$("#adrsAddPop").modal("show");
+		return false;
+	});      
+	$("#adrsAddPop_close").click(function() {
+		$("#adrsAddPop").modal("hide");
+	});
+
+	//배송지정보_팝업
+	$(document).on('click','#btn_adrsChange_pop',function(e){
+		$("#adrsChangePop").modal("show");
+		return false;
+	});
+	$("#adrsChangePop_close").click(function() {
+		$("#adrsChangePop").modal("hide");
+	});
+
+	//배송지수정_팝업
+	$(document).on('click','#btn_addrModify_pop',function(e){
+		$("#adrsModifyPop").modal("show");
+		return false;
+	});
+	$("#adrsModifyPop_close").click(function() {
+		$("#adrsModifyPop").modal("hide");
+	});
+
+	// //210408_추가 : 스크립트
+
+	$(document).on("click", "#btn_order_return", function(){
+		mcxDialog.alert("반품 신청이 접수되었습니다.", {
+				//alert("반품하실 상품의 수량을 선택해주세요.") : 클릭 시 반품 수량을 모두 0개로 선택한 경우
+				//alert("반품 사유를 선택해주세요.") : 반품 사유를 선택하지 않는 경우
+			sureBtnText: "확인",  // Confirmation button text
+		});
+	});
+});
+*/
+</script>
+
+</th:block>
+
+</body>
+</html>

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

@@ -2265,7 +2265,7 @@ var custCpnSumAmtCal = function() {
 		cpnDcSumAmt			= cpnDcSumAmt + (goodsCpnDcAmt + cartCpnDcAmt);
 		prePntDcSumAmt		= prePntDcSumAmt + prePntDcAmt1;
 		
-		var ordAmt			= ((orgCurrPrice +  - cpn1DcAmt) + optAddPrice) * goodsQty;
+		var ordAmt			= ((orgCurrPrice - cpn1DcAmt) + optAddPrice) * goodsQty;
 		ordSumAmt			= ordSumAmt + ordAmt;
 		
 		// 선포인트사용여부 

+ 1 - 1
src/main/webapp/WEB-INF/views/web/cart/CartDelvFeeSaveGoodsPopupWeb.html

@@ -33,7 +33,7 @@
 								</div>
 							</div>
 							<!-- Add Scrollbar -->
-							<div class="swiper-scrollbar"></div>
+							<div class="swiper-scrollbar" th:if="${goodsList.size() > 5}"></div>
 							<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
 						</div>
 					</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/cart/CartTmtbSalesGoodsPopupWeb.html

@@ -41,7 +41,7 @@
 							</div>
 						</div>
 						<!-- Add Scrollbar -->
-						<div class="swiper-scrollbar" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>
+						<div class="swiper-scrollbar" th:if="${goodsList.size() > 5}" style="opacity: 0; transition-duration: 400ms;"><div class="swiper-scrollbar-drag" style="width: 514.104px; transform: translate3d(0px, 0px, 0px);"></div></div>
 						<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
 				</div>
 				<!-- -->

+ 1 - 1
src/main/webapp/WEB-INF/views/web/common/fragments/FooterWeb.html

@@ -1071,7 +1071,7 @@
 							if(info.ordCanQty < 6 && info.ordCanQty > 0) {
 								quickShoppingBagHtml += '			<div class="shape"><span>곧 품절돼요!</span></div>';
 							}
-							quickShoppingBagHtml += "			<a href='javascript:fnGoToGoodsDetail(\"" + info.goodsCd + "\")' class='itemLink'>";
+							quickShoppingBagHtml += "			<a href='javascript:cfnGoToGoodsDetail(\"" + info.goodsCd + "\")' class='itemLink'>";
 							quickShoppingBagHtml += '				<div class="itemPic">';
 							quickShoppingBagHtml += '					<img alt="BLACK-a" class="vLHTC pd_img" src="' + _uploadGoodsUrl + '/' + info.sysImgNm + '?RS=120"/>';
 							quickShoppingBagHtml += '				</div>';

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

@@ -79,7 +79,7 @@
 													<span class="count"><em th:text="${cancel.ordQty - cancel.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>
@@ -221,7 +221,7 @@
 		fnSetMypageLnbList(2);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
 
 		// 셀렉트박스 활성화
 		$(".myOrderView .part_goods .select_custom.select_count").each(function() {

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

@@ -215,7 +215,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 상세');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '취소 상세');
 	});
 /*]]>*/
 </script>

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

@@ -92,7 +92,8 @@
 											<p>
 												<th:block 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="|교환진행중|"></th:block>
 												<th:block th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_60' or exchangeDtl.ordDtlStat == 'G013_70')}" th:text="|교환완료|"></th:block>
-												<th:block th:unless="${exchangeDtl.chgStat == 'G685_40'}" th:text="${exchangeDtl.chgStatNm}"></th:block>
+												<th:block th:if="${exchangeDtl.chgStat == 'G685_49'}" th:text="|접수취소|"></th:block>
+												<th:block th:unless="${exchangeDtl.chgStat == 'G685_40' or exchangeDtl.chgStat == 'G685_49'}" th:text="${exchangeDtl.chgStatNm}"></th:block>
 												<span class="date" th:text="${exchangeDtl.chgDate}"></span>
 												<span class="time" th:text="${exchangeDtl.chgTime}"></span>
 											</p>
@@ -163,11 +164,11 @@
 												</li>
 												<li>
 													<span id="recipAddr" th:text="|${oneData.recipBaseAddr} ${oneData.recipDtlAddr}|"></span>
-													<button type="button" class="btn btn_default btn_sm" 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'}" onclick="fnChangeAddr('recip');"><span>배송지 변경</span></button>
+													<button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeAddr('recip');"><span>배송지 변경</span></button>
 												</li>
 												<li>
 													배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${oneData.delvMemo}">직접 받고 부재 시 문 앞</span>
-													<button type="button" class="btn_underline" 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'}" onclick="fnChangeMemo('recip')"><span>변경하기</span></button>
+													<button type="button" class="btn_underline" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeMemo('recip')"><span>변경하기</span></button>
 												</li>
 											</ul>
 										</div>
@@ -291,6 +292,7 @@
 	/*<![CDATA[*/
 	let addrGb = '';
 	let memoGb = '';
+	var isLogin = [[${isLogin}]];
 	let oneData = [[${oneData}]];
 	let ordNo = oneData.ordNo;
 	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
@@ -307,7 +309,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '교환 상세');
 	});
 
 	// 배송메모 및 반품메모 변경 처리
@@ -390,7 +392,7 @@
 			data.ordChgSq = ordChgSq;
 			data.chgerRtnMemo = delvMemo;
 		} else {
-			url = 'change/delvery/memo';
+			url = '/mypage/change/delvery/memo';
 			data.delvAddrSq = delvAddrSq;
 			data.delvMemo = delvMemo;
 		}

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

@@ -163,15 +163,15 @@
 					<input type="hidden" name="stDate" value="" />
 					<input type="hidden" name="edDate" value="" />
 				</form>
-				<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/cre/exchange/detail/form'}" th:method="post">
+				<form id="exchangeDetailForm" name="exchangeDetailForm" action="#" th:action="@{'/mypage/cre/exchange/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
 					<input type="hidden" name="ordNo"/>
 				</form>
-				<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/cre/return/detail/form'}" th:method="post">
+				<form id="returnDetailForm" name="returnDetailForm" action="#" th:action="@{'/mypage/cre/return/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
 					<input type="hidden" name="ordNo"/>
 				</form>
-				<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cre/cancel/detail/form'}" th:method="post">
+				<form id="cancelDetailForm" name="cancelDetailForm" th:action="@{'/mypage/cre/cancel/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
 					<input type="hidden" name="ordNo"/>
 				</form>
@@ -190,7 +190,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/교환내역');
+		fnSetMypageLocation('취소/반품/교환 내역');
 		
 		// datepicker 설정
 		$('.period_datepicker').datepicker();
@@ -444,7 +444,7 @@
 					tag += '										</div>\n';
 					tag += '										<div class="button_box">\n';
 					if (cre.chgStat == 'G685_20' || cre.chgStat == 'G685_21' || cre.chgStat == 'G685_50' || cre.chgStat == 'G685_51') {
-						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" cancelGb="' + cre.chgGb + '" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>\n';
+						//tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" cancelGb="' + cre.chgGb + '" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>\n';
 					}
 					if (cre.chgStat == 'G685_21' || cre.chgStat == 'G685_51' || cre.chgStat == 'G685_32') {
 						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>\n';
@@ -550,17 +550,17 @@
 		let ordNo = $(param).attr('ordNo');
 		
 		if (chgGb == 'G680_20') {
-			$('#cancelForm input[name=ordChgSq]').val(ordChgSq);
-			$('#cancelForm input[name=ordNo]').val(ordNo);
-			document.cancelForm.submit();
+			$('#cancelDetailForm input[name=ordChgSq]').val(ordChgSq);
+			$('#cancelDetailForm input[name=ordNo]').val(ordNo);
+			document.cancelDetailForm.submit();
 		} else if (chgGb == 'G680_30') {
-			$('#returnForm input[name=ordChgSq]').val(ordChgSq);
-			$('#returnForm input[name=ordNo]').val(ordNo);
-			document.returnForm.submit();
+			$('#returnDetailForm input[name=ordChgSq]').val(ordChgSq);
+			$('#returnDetailForm input[name=ordNo]').val(ordNo);
+			document.returnDetailForm.submit();
 		} else if (chgGb == 'G680_40') {
-			$('#exchangeForm input[name=ordChgSq]').val(ordChgSq);
-			$('#exchangeForm input[name=ordNo]').val(ordNo);
-			document.exchangeForm.submit();
+			$('#exchangeDetailForm input[name=ordChgSq]').val(ordChgSq);
+			$('#exchangeDetailForm input[name=ordNo]').val(ordNo);
+			document.exchangeDetailForm.submit();
 		}
 	}
 	

+ 4 - 4
src/main/webapp/WEB-INF/views/web/mypage/MypageCreReturnDetailFormWeb.html

@@ -40,7 +40,7 @@
 						<div class="goods_head">
 							<p th:unless="${oneData.giftPackYn == 'Y'}">주문일 <span th:text="${oneData.ordDt}"></span></p>
 							<p th:if="${oneData.giftPackYn == 'Y'}">선물일 <span th:text="${oneData.ordDt}"></span></p>
-							<a href="javascript:void(0)" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}" onclick="fnCreCancel(this);">전체신청취소</a>
+							<a href="javascript:void(0)" th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}" onclick="fnCreCancel(this);">전체신청취소</a>
 						</div>
 						<div class="goods_cont">
 							<!-- 주문상품 -->
@@ -85,7 +85,7 @@
 											<p>
 												<th:block th:if="${returnDtl.chgStat == 'G685_33'}" th:text="|환불진행중|"></th:block>
 												<th:block th:if="${returnDtl.chgStat == 'G685_69'}" th:text="|접수취소|"></th:block>
-												<th:block th:unless="${returnDtl.chgStat == 'G685_33'}" th:text="${returnDtl.chgStatNm}"></th:block>
+												<th:block th:unless="${returnDtl.chgStat == 'G685_33' or returnDtl.chgStat == 'G685_69'}" th:text="${returnDtl.chgStatNm}"></th:block>
 												<span class="date" th:text="${returnDtl.chgDate}"></span>
 												<span class="time" th:text="${returnDtl.chgTime}"></span>
 											</p>
@@ -243,7 +243,7 @@
 											</div>
 											<div th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
 												<dt class="sr-only">영수증 확인</dt>
-												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+												<dd><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${oneData.ordChgSq}, refundYn=${refundYn}" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
 											</div>
 										</dl>
 									</td>
@@ -280,7 +280,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
 	});
 
 	var fnGoToWithdrawDelivery = function(param) {

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

@@ -76,7 +76,7 @@
 													<span class="count"><em th:text="${exchange.ordQty - exchange.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>
@@ -309,7 +309,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom').each(function() {

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

@@ -251,7 +251,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 	});
 
 	// 교환 옵션 변경 팝업

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

@@ -87,7 +87,7 @@
 															<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.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+															<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>
 														<p>
@@ -380,7 +380,7 @@
 												<dt>총 주문금액 (상품금액+배송비+추가비용)</dt>
 												<dd>
 													<div class="price">
-														<span class="order_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
+														<span class="order_total_price"><em th:text="${#numbers.formatInteger((orderAmtInfo.ordAmt + orderAmtInfo.cpn1DcAmt) - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
 													</div>
 												</dd>
 											</div>

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

@@ -468,8 +468,8 @@
 					tag += '													<span class="count"><em>' + (ordDtl.ordQty - ordDtl.cnclRtnQty) + '</em>개</span>\n';
 					tag += '												</p>\n';
 					tag += '												<p>\n';
-					if ((ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)) {
-						tag += '													<span class="price_org"><em>' + (ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt).addComma() + '</em>원</span>\n';
+					if ((ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)) {
+						tag += '													<span class="price_org"><em>' + (ordDtl.ordAmt - ordDtl.cnclRtnAmt).addComma() + '</em>원</span>\n';
 					}
 					tag += '													<span class="price_sale"><em>' + (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt).addComma() + '</em>원</span>\n';
 					tag += '												</p>\n';

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

@@ -80,7 +80,7 @@
 													<span class="count"><em th:text="${return.ordQty - return.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>
@@ -503,6 +503,7 @@
 
 			let data = {};
 			data.ordNo = oneData.ordNo;
+			data.delvFeeCd = oneData.delvFeeCd;
 			data.chgGb = 'G680_30';
 			data.ordDtlNoArr = ordDtlNoArr;
 			data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
@@ -538,7 +539,8 @@
 					spanTotRtnDelvFee = 0;
 					spanTotDeliveryFee = 0;
 				}
-				
+				console.log('spanTotRtnDelvFee : '+spanTotRtnDelvFee);
+				console.log('spanTotDeliveryFee : '+spanTotDeliveryFee);
 				let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
 				let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
 				let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)

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

@@ -340,7 +340,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
+		fnSetMypageLocation('취소/반품/교환 내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom.type1').each(function(index) {

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

@@ -78,7 +78,7 @@
 													<span class="count"><em th:text="${cancel.ordQty - cancel.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt - cancel.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(cancel.ordAmt - cancel.cnclRtnAmt) > (cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(cancel.ordAmt - cancel.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>

+ 223 - 0
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreCancelDetailFormWeb.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="web/common/layout/NoMemberLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberCreCancelDetailFormWeb.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 취소상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.03   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="${oneData.ordNo}"></em></span>
+				</div>
+				<div class="sec_body">
+					<div class="part_goods">
+						<div class="goods_head">
+							<p>주문일 <span th:text="${oneData.ordDt}"></span></p>
+						</div>
+						<div class="goods_cont">
+							<!-- 주문상품 -->
+							<th:block th:if="${cancelDetailList.cancelDetailList}" th:each="cancelDtl, status : ${cancelDetailList.cancelDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${cancelDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + cancelDtl.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${cancelDtl.brandNm}"></span>
+														<span class="tag primary" th:if="${cancelDtl.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${cancelDtl.shotDelvYn == 'N' and cancelDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${cancelDtl.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${cancelDtl.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${cancelDtl.goodsType == 'G056_S'}" th:each="option, status : ${cancelDtl.colorNmArr}" th:text="|${cancelDtl.itemNmArr[status.index]} / ${option} / ${cancelDtl.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${cancelDtl.goodsType == 'G056_S'}" th:text="|${cancelDtl.colorNm} / ${cancelDtl.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
+												<p>
+													<span class="count"><em th:text="${cancelDtl.chgQty}"></em>개</span>
+												</p>
+<!--												<p>-->
+<!--													<span class="price_org" th:if="${cancelDtl.priceOrg > cancelDtl.priceSale}"><em th:text="${#numbers.formatInteger(cancelDtl.priceOrg, 1, 'COMMA')}"></em>원</span>-->
+<!--													<span class="price_sale"><em th:text="${#numbers.formatInteger(cancelDtl.priceSale, 1, 'COMMA')}"></em>원</span>-->
+<!--												</p>-->
+											</div>
+										</div>
+										<div class="status_box">
+											<p>
+												<th:block th:if="${cancelDtl.chgStat == 'G685_17' or cancelDtl.chgStat == 'G685_18'}" th:text="|주문취소|"></th:block>
+												<th:block th:unless="${cancelDtl.chgStat == 'G685_17' or cancelDtl.chgStat == 'G685_18'}" th:text="${cancelDtl.chgStatNm}"></th:block>
+												<span class="date" th:text="${cancelDtl.chgDate}"></span>
+												<span class="time" th:text="${cancelDtl.chgTime}"></span>
+											</p>
+										</div>
+										<div class="button_box">
+										</div>
+									</div>
+								</div>
+							</th:block>
+							<!-- //주문상품 -->
+						</div>
+					</div>
+					<h4 class="subH3">상세 정보</h4>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="210">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>취소접수 일자</th>
+									<td th:text="${oneData.chgDt}"></td>
+								</tr>
+								<tr>
+									<th>취소완료 일자</th>
+									<td th:text="${oneData.completeDt}"></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h4 class="subH3">환불정보</h4>
+					<div class="tbl type6">
+						<table>
+							<colgroup>
+								<col width="50%">
+								<col width="50%">
+							</colgroup>
+							<tbody>
+								<tr>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 예정 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="return_total_price"><em th:text="${#numbers.formatInteger(oneData.refundAmt + oneData.rfPntAmt + oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품 취소 금액</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfCnclAmt, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>배송비</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>할인 금액 차감</dt>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
+											</div>
+										</dl>
+									</td>
+									<td>
+										<dl>
+											<div>
+												<dt>결제 금액 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.refundAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>포인트 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.rfPntAmt, 1, 'COMMA')}"></em>P
+												</dd>
+											</div>
+											<div>
+												<dt>상품권 환불</dt>
+												<dd>
+													<em  th:text="${#numbers.formatInteger(oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>환불 수단</dt>
+												<dd th:if="${oneData.pgGb == 'KCP'}" th:text="${oneData.payMeansNm}"></dd>
+												<dd th:if="${oneData.pgGb == 'NAVER'}">네이버페이</dd>
+												<dd th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</dd>
+												<dd th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</dd>
+											</div>
+											<div th:if="${oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
+												<dt class="sr-only">영수증 확인</dt>
+												<dd><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${oneData.ordChgSq}, refundYn=${refundYn}" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<div class="txt_info">
+						<ul>
+							<li>
+								카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+							</li>
+						</ul>
+					</div>
+					<div class="btn_footer_area">
+						<button type="button" class="btn btn_dark btn_md" onclick="fnGoToNoMemberCreList()"><span>확인</span></button>
+					</div>
+				</div>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	let oneData = [[${oneData}]];
+	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let refundYn = [[${refundYn}]];
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetNoMemberLnbList(2);
+
+		// 마이페이지 location 설정
+		fnSetNoMemberLocation('취소/반품/교환 내역', '취소 상세');
+	});
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

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

@@ -0,0 +1,420 @@
+<!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  : NoMemberCreExchangeDetailFormWeb.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 교환상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.03   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="${oneData.ordNo}"></em></span>
+				</div>
+				<div class="sec_body">
+					<div class="part_goods">
+						<div class="goods_head">
+							<p>주문일 <span th:text="${oneData.ordDt}"></span></p>
+							<a href="javascript:void(0)" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}, noMember=noMember" onclick="fnCreCancel(this);">전체신청취소</a>
+						</div>
+						<div class="goods_cont">
+							<!-- 주문상품 -->
+							<th:block th:if="${exchangeDetailList.exchangeDetailList}" th:each="exchangeDtl, status : ${exchangeDetailList.exchangeDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${exchangeDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + exchangeDtl.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${exchangeDtl.brandNm}"></span>
+														<span class="tag primary" th:if="${exchangeDtl.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${exchangeDtl.shotDelvYn == 'N' and exchangeDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${exchangeDtl.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${exchangeDtl.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${exchangeDtl.goodsType == 'G056_S'}" th:each="option, status : ${exchangeDtl.colorNmArr}" th:text="|${exchangeDtl.itemNmArr[status.index]} / ${option} / ${exchangeDtl.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${exchangeDtl.goodsType == 'G056_S'}" th:text="|${exchangeDtl.colorNm} / ${exchangeDtl.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
+												<p>
+													<span class="count"><em th:text="${exchangeDtl.chgQty}"></em>개</span>
+												</p>
+<!--												<p>-->
+<!--													<span class="price_org" th:if="${exchangeDtl.priceOrg > exchangeDtl.priceSale}"><em th:text="${#numbers.formatInteger(exchangeDtl.priceOrg, 1, 'COMMA')}"></em>원</span>-->
+<!--													<span class="price_sale"><em th:text="${#numbers.formatInteger(exchangeDtl.priceSale, 1, 'COMMA')}"></em>원</span>-->
+<!--												</p>-->
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title">교환 옵션</span>
+													<span class="option" th:if="${exchangeDtl.goodsType == 'G056_S'}" th:each="option, status : ${exchangeDtl.chgColorNmArr}" th:text="|${exchangeDtl.chgItemNmArr[status.index]} / ${option} / ${exchangeDtl.chgOptCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${exchangeDtl.goodsType == 'G056_S'}" th:text="|${exchangeDtl.chgColorNm} / ${exchangeDtl.chgOptCd2}|"></span>
+												</div>
+											</div>
+										</div>
+										<div class="status_box">
+											<p>
+												<th:block 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="|교환진행중|"></th:block>
+												<th:block th:if="${exchangeDtl.chgStat == 'G685_40' && (exchangeDtl.ordDtlStat == 'G013_60' or exchangeDtl.ordDtlStat == 'G013_70')}" th:text="|교환완료|"></th:block>
+												<th:block th:if="${exchangeDtl.chgStat == 'G685_49'}" th:text="|접수취소|"></th:block>
+												<th:block th:unless="${exchangeDtl.chgStat == 'G685_40' or exchangeDtl.chgStat == 'G685_49'}" th:text="${exchangeDtl.chgStatNm}"></th:block>
+												<span class="date" th:text="${exchangeDtl.chgDate}"></span>
+												<span class="time" th:text="${exchangeDtl.chgTime}"></span>
+											</p>
+										</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>
+										</div>
+									</div>
+									<!-- 교환결제대기 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_21' or (exchangeDtl.chgGb == 'G680_40' and exchangeDtl.chgStat == 'G685_32')}"><p th:text="|${exchangeDtl.addPayCost}|원 결제 후 교환 가능합니다."></p></div>
+									<!-- 교환접수 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_20'}"><p>교환 신청이 접수 되었습니다. 신속하게 처리하여 드리겠습니다.</p></div>
+									<!-- 회수요청 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_30'}"><p>고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p></div>
+									<!-- 교환상품검수중 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_31' and exchangeDtl.chgGb == 'G680_40'}"><p>고객님이 교환하신 상품을 검수 중에 있습니다.</p></div>
+									<!-- 교환완료 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_40' and (exchangeDtl.chgOrdDtlStat == 'G013_60' or exchangeDtl.chgOrdDtlStat == 'G013_70')}"><p>반품이 완료되었습니다.</p></div>
+									<!-- 교환철회 -->
+									<div class="order_text" th:if="${exchangeDtl.chgStat == 'G685_49'}"><p>요청하신 교환을 취소하였습니다.</p></div>
+								</div>
+							</th:block>
+							<!-- //주문상품 -->
+						</div>
+					</div>
+					<h4 class="subH3">상세 정보</h4>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="210">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>교환접수 일자</th>
+									<td th:text="${oneData.chgDt}"></td>
+								</tr>
+								<tr>
+									<th>교환완료 일자</th>
+									<td th:if="${oneData.chgStat == 'G685_40' && (oneData.ordDtlStat == 'G013_60' or oneData.ordDtlStat == 'G013_70')}" th:text="${oneData.completeDt}"></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h4 class="subH3">교환 상품 배송지</h4>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="210">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>
+										배송지 정보
+									</th>
+									<td>
+										<div class="block_line">
+											<ul>
+												<li>
+													<span id="recipNm" th:text="${oneData.recipNm}"></span>
+												</li>
+												<li>
+													<span id="recipPhnno" th:text="${oneData.recipPhnno}"></span>
+												</li>
+												<li>
+													<span id="recipAddr" th:text="|${oneData.recipBaseAddr} ${oneData.recipDtlAddr}|"></span>
+													<button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeAddr('recip');"><span>배송지 변경</span></button>
+												</li>
+												<li>
+													배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${oneData.delvMemo}"></span>
+													<button type="button" class="btn_underline" th:if="${oneData.chgOrdDtlStat == 'G013_20' or oneData.chgOrdDtlStat == 'G013_25' or oneData.chgOrdDtlStat == 'G013_30' or oneData.chgOrdDtlStat == 'G013_35'}" onclick="fnChangeMemo('recip')"><span>변경하기</span></button>
+												</li>
+											</ul>
+										</div>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<th:block th:if="${oneData.wdGb == 'W'}">
+						<h4 class="subH3">교환 회수지 주소</h4>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="210">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th>회수 진행 여부</th>
+										<td>회수요청</td>
+									</tr>
+									<tr>
+										<th>회수지 정보</th>
+										<td>
+											<div class="block_line">
+												<ul>
+													<li>
+														<span id="chgerNm" th:text="${oneData.chgerNm}"></span>
+													</li>
+													<li>
+														<span id="chgerPhnno" th:text="${oneData.chgerPhnno}"></span>
+													</li>
+													<li>
+														<span id="chgerAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></span>
+														<button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" onclick="fnChangeAddr('chger');"><span>회수지 변경</span></button>
+													</li>
+													<li>
+														배송요청 사항&nbsp;:&nbsp;<span id="chgerRtnMemo" th:text="${oneData.chgerRtnMemo}"></span>
+														<button type="button" class="btn_underline" th:if="${oneData.chgStat == 'G685_20' or oneData.chgStat == 'G685_21'}" onclick="fnChangeMemo('chger');"><span>변경하기</span></button>
+													</li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									<tr th:if="${not #strings.isEmpty(oneData.wdInvoiceNo) and not #strings.isEmpty(oneData.shipCompNm)}">
+										<th>회수 정보</th>
+										<td>
+											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
+											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</th:block>
+					<th:block th:if="${oneData.addPayCost > 0}">
+						<h4 class="subH3">결제정보</h4>
+						<div class="tbl type6">
+							<table>
+								<colgroup>
+									<col width="50%">
+									<col width="50%">
+								</colgroup>
+								<tbody>
+									<tr>
+										<td>
+											<dl>
+												<div>
+													<dt>배송비</dt>
+													<dd>
+														<div class="price">
+															<span class="order_total_price"><em th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></em>원</span>
+														</div>
+													</dd>
+												</div>
+	<!--											<div class="include_item"> &lt;!&ndash; 할인항목 표기 class명 include_item &ndash;&gt;-->
+	<!--												<dt>제휴할인</dt>-->
+	<!--												<dd><em>-123,456,789</em>원</dd>-->
+	<!--											</div>-->
+											</dl>
+										</td>
+										<td>
+											<dl>
+												<div>
+													<dt>결제 금액</dt>
+													<dd>
+														<div class="price">
+															<span class="pay_total_price"><em th:text="${#numbers.formatInteger(oneData.addPayCost, 1, 'COMMA')}"></em>원</span>
+														</div>
+													</dd>
+												</div>
+												<div>
+													<dt class="sr-only">결제방법</dt>
+													<dd th:if="${oneData.payMeans == 'G014_30'}" th:text="|${oneData.payMeansNm}(${oneData.cardNm}) / ${oneData.cardMips}|"></dd>
+													<dd th:if="${oneData.payMeans == 'G014_60'}" th:text="${oneData.payMeansNm}"></dd>
+												</div>
+												<div th:if="${oneData.payMeans == 'G014_30'}">
+													<dt class="sr-only">영수증 확인</dt>
+													<dd>
+														<button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('card')"><span>신용카드 전표</span></button>
+													</dd>
+												</div>
+											</dl>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+							<p class="t_help">※ NPAY등의 대체결제수단으로 결제 시 해당 결제 플랫폼에서 영수증 확인이 가능합니다.</p>
+						</div>
+					</th:block>
+					<div class="btn_footer_area">
+						<button type="button" class="btn btn_dark btn_md" onclick="fnGoToNoMemberCreList();"><span>확인</span></button>
+					</div>
+				</div>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	let addrGb = '';
+	let memoGb = '';
+	var isLogin = [[${isLogin}]];
+	let oneData = [[${oneData}]];
+	let ordNo = oneData.ordNo;
+	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+
+	// 추가배송비 전표 데이터 설정
+	let paymentInfo = {};
+	paymentInfo.pgTid = oneData.pgTid;
+	let orderAmtInfo = {};
+	orderAmtInfo.realOrdAmt = oneData.addPayCost;
+	orderAmtInfo.realDelvAmt = 0;
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetNoMemberLnbList(2);
+		
+		// 마이페이지 location 설정
+		fnSetNoMemberLocation('취소/반품/교환 내역', '교환 상세');
+	});
+
+	// 배송메모 및 반품메모 변경 처리
+	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);
+				}
+			}
+		});
+	}
+
+	// 배송메모 설정
+	var delvMemoSet = function(delvMemoObj) {
+		let url = '';
+		let ordChgSq = oneData.ordChgSq;
+		let delvAddrSq = oneData.delvAddrSq;
+		let delvMemo = delvMemoObj.delvMemo;
+
+		let data = {};
+
+		if (memoGb == 'chger') {
+			url = '/noMember/change/chger/rtn/memo';
+			data.ordChgSq = ordChgSq;
+			data.chgerRtnMemo = delvMemo;
+		} else {
+			url = '/noMember/change/delvery/memo';
+			data.delvAddrSq = delvAddrSq;
+			data.delvMemo = delvMemo;
+		}
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			if (result.status == '200') {
+				if (memoGb == 'chger') {
+					$("#chgerRtnMemo").text(delvMemo);
+				} else {
+					$("#delvMemo").text(delvMemo);
+				}
+			}
+		});
+	}
+
+	var fnGoToWithdrawDelivery = function(param) {
+		// TODO
+		// 회수조회 페이지 이동
+	}
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 26 - 20
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreListFormWeb.html

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/MypageLayoutWeb">
+	layout:decorator="web/common/layout/NoMemberLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : NoMemberCreListFormWeb.html
@@ -166,17 +166,23 @@
 					<input type="hidden" name="ordNm" th:value="${ordNm}" />
 					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
 				</form>
-				<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/noMember/cre/exchange/detail/form'}" th:method="post">
+				<form id="exchangeDetailForm" name="exchangeDetailForm" action="#" th:action="@{'/noMember/cre/exchange/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
-					<input type="hidden" name="ordNo"/>
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
 				</form>
-				<form id="returnForm" name="returnForm" action="#" th:action="@{'/noMember/cre/return/detail/form'}" th:method="post">
+				<form id="returnDetailForm" name="returnDetailForm" action="#" th:action="@{'/noMember/cre/return/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
-					<input type="hidden" name="ordNo"/>
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
 				</form>
-				<form id="cancelForm" name="cancelForm" th:action="@{'/noMember/cre/cancel/detail/form'}" th:method="post">
+				<form id="cancelDetailForm" name="cancelDetailForm" th:action="@{'/noMember/cre/cancel/detail/form'}" th:method="post">
 					<input type="hidden" name="ordChgSq"/>
-					<input type="hidden" name="ordNo"/>
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
 				</form>
 			</div>
 			<!-- // CONT-BODY -->
@@ -193,7 +199,7 @@
 		fnSetNoMemberLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetNoMemberLocation('취소/반품/교환내역');
+		fnSetNoMemberLocation('취소/반품/교환 내역');
 		
 		// datepicker 설정
 		$('.period_datepicker').datepicker();
@@ -443,7 +449,7 @@
 					tag += '										</div>\n';
 					tag += '										<div class="button_box">\n';
 					if (cre.chgStat == 'G685_20' || cre.chgStat == 'G685_21' || cre.chgStat == 'G685_50' || cre.chgStat == 'G685_51') {
-						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" cancelGb="' + cre.chgGb + '" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>\n';
+						//tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" cancelGb="' + cre.chgGb + '" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>\n';
 					}
 					if (cre.chgStat == 'G685_21' || cre.chgStat == 'G685_51' || cre.chgStat == 'G685_32') {
 						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + cre.ordNo + '" ordChgSq="' + cre.ordChgSq + '" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>\n';
@@ -545,20 +551,20 @@
 	var fnGoToCreDetail = function(param) {
 		let ordChgSq = $(param).attr('ordChgSq');
 		let chgGb = $(param).attr('chgGb');
-		let ordNo = $(param).attr('ordNo');
-		
+		//let ordNo = $(param).attr('ordNo');
+
 		if (chgGb == 'G680_20') {
-			$('#cancelForm input[name=ordChgSq]').val(ordChgSq);
-			$('#cancelForm input[name=ordNo]').val(ordNo);
-			document.cancelForm.submit();
+			$('#cancelDetailForm input[name=ordChgSq]').val(ordChgSq);
+			//$('#cancelDetailForm input[name=ordNo]').val(ordNo);
+			document.cancelDetailForm.submit();
 		} else if (chgGb == 'G680_30') {
-			$('#returnForm input[name=ordChgSq]').val(ordChgSq);
-			$('#returnForm input[name=ordNo]').val(ordNo);
-			document.returnForm.submit();
+			$('#returnDetailForm input[name=ordChgSq]').val(ordChgSq);
+			//$('#returnDetailForm input[name=ordNo]').val(ordNo);
+			document.returnDetailForm.submit();
 		} else if (chgGb == 'G680_40') {
-			$('#exchangeForm input[name=ordChgSq]').val(ordChgSq);
-			$('#exchangeForm input[name=ordNo]').val(ordNo);
-			document.exchangeForm.submit();
+			$('#exchangeDetailForm input[name=ordChgSq]').val(ordChgSq);
+			//$('#exchangeDetailForm input[name=ordNo]').val(ordNo);
+			document.exchangeDetailForm.submit();
 		}
 	}
 	

+ 345 - 0
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCreReturnDetailFormWeb.html

@@ -0,0 +1,345 @@
+<!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  : NoMemberCreReturnDetailFormWeb.html
+ * @desc    : 비회원 > 취소/반품/교환내역 > 반품상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.03   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="${oneData.ordNo}"></em></span>
+				</div>
+				<div class="sec_body">
+					<div class="part_goods">
+						<div class="goods_head">
+							<p>주문일 <span th:text="${oneData.ordDt}"></span></p>
+							<a href="javascript:void(0)" th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}" th:attr="ordNo=${oneData.ordNo}, ordChgSq=${oneData.ordChgSq}, cancelGb=${oneData.chgGb}, noMember=noMember" onclick="fnCreCancel(this);">전체신청취소</a>
+						</div>
+						<div class="goods_cont">
+							<!-- 주문상품 -->
+							<th:block th:if="${returnDetailList.returnDetailList}" th:each="returnDtl, status : ${returnDetailList.returnDetailList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${returnDtl.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + returnDtl.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${returnDtl.brandNm}"></span>
+														<span class="tag primary" th:if="${returnDtl.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${returnDtl.shotDelvYn == 'N' and returnDtl.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${returnDtl.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${returnDtl.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${returnDtl.goodsType == 'G056_S'}" th:each="option, status : ${returnDtl.colorNmArr}" th:text="|${returnDtl.itemNmArr[status.index]} / ${option} / ${returnDtl.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${returnDtl.goodsType == 'G056_S'}" th:text="|${returnDtl.colorNm} / ${returnDtl.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
+												<p>
+													<span class="count"><em th:text="${returnDtl.chgQty}"></em>개</span>
+												</p>
+<!--												<p>-->
+<!--													<span class="price_org" th:if="${returnDtl.priceOrg > returnDtl.priceSale}"><em th:text="${#numbers.formatInteger(returnDtl.priceOrg, 1, 'COMMA')}"></em>원</span>-->
+<!--													<span class="price_sale"><em th:text="${#numbers.formatInteger(returnDtl.priceSale, 1, 'COMMA')}"></em>원</span>-->
+<!--												</p>-->
+											</div>
+										</div>
+										<div class="status_box">
+											<p>
+												<th:block th:if="${returnDtl.chgStat == 'G685_33'}" th:text="|환불진행중|"></th:block>
+												<th:block th:if="${returnDtl.chgStat == 'G685_69'}" th:text="|접수취소|"></th:block>
+												<th:block th:unless="${returnDtl.chgStat == 'G685_33' or returnDtl.chgStat == 'G685_69'}" th:text="${returnDtl.chgStatNm}"></th:block>
+												<span class="date" th:text="${returnDtl.chgDate}"></span>
+												<span class="time" th:text="${returnDtl.chgTime}"></span>
+											</p>
+										</div>
+										<div class="button_box">
+<!--											<p th:if="${returnDtl.chgStat == 'G685_50' or returnDtl.chgStat == 'G685_51'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${returnDtl.ordNo}, ordChgSq=${returnDtl.ordChgSq}, cancelGb=${returnDtl.chgGb}" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>-->
+											<p th:if="${returnDtl.chgStat == 'G685_32' or returnDtl.chgStat == 'G685_51'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${returnDtl.ordNo}, ordChgSq=${returnDtl.ordChgSq}" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>
+										</div>
+									</div>
+									<!-- 반품결제대기 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_51' or (returnDtl.chgGb == 'G680_30' and returnDtl.chgStat == 'G685_32')}"><p th:text="|${returnDtl.addPayCost}원 결제 후 반품 가능합니다.|"></p></div>
+									<!-- 교환접수 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_50'}"><p>반품 신청이 접수 되었습니다. 신속하게 처리하여 드리겠습니다.</p></div>
+									<!-- 회수요청 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_30'}"><p>고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p></div>
+									<!-- 반품상품검수중 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_31' and returnDtl.chgGb == 'G680_30'}"><p>고객님이 반품하신 상품을 검수 중에 있습니다.</p></div>
+									<!-- 반품진행중 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_33'}"><p>환불을 진행하고 있습니다(영업일 최대 3일 내 환불 예정)</p></div>
+									<!-- 반품완료 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_60'}"><p>반품이 완료되었습니다.</p></div>
+									<!-- 반품철회 -->
+									<div class="order_text" th:if="${returnDtl.chgStat == 'G685_69'}"><p>요청하신 반품을 취소하였습니다.</p></div>
+								</div>
+							</th:block>
+							<!-- //주문상품 -->
+						</div>
+					</div>
+					<h4 class="subH3">상세 정보</h4>
+					<div class="tbl type1">
+						<table>
+							<colgroup>
+								<col width="210">
+								<col width="*">
+							</colgroup>
+							<tbody>
+								<tr>
+									<th>반품접수 일자</th>
+									<td th:text="${oneData.chgDt}"></td>
+								</tr>
+								<tr>
+									<th>반품완료 일자</th>
+									<td th:text="${oneData.completeDt}"></td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<th:block th:if="${oneData.wdGb == 'W'}">
+						<h4 class="subH3">반품 회수지 주소</h4>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="210">
+									<col width="*">
+								</colgroup>
+								<tbody>
+									<tr>
+										<th>회수 진행 여부</th>
+										<td>회수요청</td>
+									</tr>
+									<tr>
+										<th>회수지 정보</th>
+										<td>
+											<div class="block_line">
+												<ul>
+													<li>
+														<span id="chgerNm" th:text="${oneData.chgerNm}"></span>
+													</li>
+													<li>
+														<span id="chgerPhnno" th:text="${oneData.chgerPhnno}"></span>
+													</li>
+													<li>
+														<span id="chgerAddr" th:text="|${oneData.chgerBaseAddr} ${oneData.chgerDtlAddr}|"></span>
+														<button type="button" class="btn btn_default btn_sm" th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
+													</li>
+													<li>
+														배송요청 사항&nbsp;:&nbsp;<span id="chgerRtnMemo" th:text="${oneData.chgerRtnMemo}"></span>
+														<button type="button" class="btn_underline" th:if="${oneData.chgStat == 'G685_50' or oneData.chgStat == 'G685_51'}" onclick="fnChangeDeliveryMemo(this)"><span>변경하기</span></button>
+													</li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									<tr th:if="${not #strings.isEmpty(oneData.wdInvoiceNo) and not #strings.isEmpty(oneData.shipCompNm)}">
+										<th>회수 정보</th>
+										<td>
+											<th:block th:text="|${oneData.shipCompNm} / ${oneData.wdInvoiceNo}|"></th:block>
+											<button type="button" class="btn btn_default btn_sm" onclick="fnGoToWithdrawDelivery()"><span>회수조회</span></button>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+					</th:block>
+					<h4 class="subH3">환불정보</h4>
+					<div class="tbl type6">
+						<table>
+							<colgroup>
+								<col width="50%">
+								<col width="50%">
+							</colgroup>
+							<tbody>
+								<tr>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 예정 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="return_total_price"><em th:text="${#numbers.formatInteger(oneData.refundAmt + oneData.rfPntAmt + oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품 취소 금액</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfCnclAmt, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>배송비</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>할인 금액 차감</dt>
+												<dd><em th:text="${#numbers.formatInteger(-(oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt), 1, 'COMMA')}"></em>원</dd>
+											</div>
+										</dl>
+									</td>
+									<td>
+										<dl>
+											<div>
+												<dt>결제 금액 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.refundAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>포인트 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.rfPntAmt, 1, 'COMMA')}"></em>P
+												</dd>
+											</div>
+											<div>
+												<dt>상품권 환불</dt>
+												<dd>
+													<em  th:text="${#numbers.formatInteger(oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>환불 수단</dt>
+												<dd th:if="${oneData.pgGb == 'KCP'}" th:text="${oneData.payMeansNm}"></dd>
+												<dd th:if="${oneData.pgGb == 'NAVER'}">네이버페이</dd>
+												<dd th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</dd>
+												<dd th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</dd>
+											</div>
+											<div th:if="${refundYn == 'Y' and oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
+												<dt class="sr-only">영수증 확인</dt>
+												<dd><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${oneData.ordChgSq}, refundYn=${refundYn}" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<div class="txt_info">
+						<ul>
+							<li>
+								카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+							</li>
+						</ul>
+					</div>
+					<div class="btn_footer_area">
+						<button type="button" class="btn btn_dark btn_md" onclick="fnGoToNoMemberCreList();"><span>확인</span></button>
+					</div>
+				</div>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	let oneData = [[${oneData}]];
+	var isLogin = [[${isLogin}]];
+	let ordNo = oneData.ordNo;
+	let kcpReceiptUrl = [[${@environment.getProperty('pg.kcp.receipt.url')}]];
+	let jsonObj = {};
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetNoMemberLnbList(2);
+		
+		// 마이페이지 location 설정
+		fnSetNoMemberLocation('취소/반품/교환 내역', '반품 상세');
+	});
+
+	var fnGoToWithdrawDelivery = function(param) {
+		// TODO
+		// 회수조회 페이지 이동
+	}
+
+	// 회수지 정보 설정
+	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>

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

@@ -75,7 +75,7 @@
 													<span class="count"><em th:text="${exchange.ordQty - exchange.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt - exchange.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(exchange.ordAmt - exchange.cnclRtnAmt) > (exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(exchange.ordAmt - exchange.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(exchange.realOrdAmt + exchange.pntDcAmt + exchange.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>

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

@@ -85,7 +85,7 @@
 															<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.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+															<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>
@@ -263,7 +263,7 @@
 													<dt>총 주문금액 (상품금액+배송비+추가비용)</dt>
 													<dd>
 														<div class="price">
-															<span class="order_total_price"><em th:text="${#numbers.formatInteger(orderAmtInfo.ordAmt - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
+															<span class="order_total_price"><em th:text="${#numbers.formatInteger((orderAmtInfo.ordAmt + orderAmtInfo.cpn1DcAmt) - orderAmtInfo.cnclRtnAmt + orderAmtInfo.realDelvAmt, 1, 'COMMA')}"></em>원</span>
 														</div>
 													</dd>
 												</div>
@@ -371,7 +371,7 @@
 			
 			$.ajax( {
 				type		: "POST",
-				url 		: '/mypage/refund/account/register/popup/form',
+				url 		: '/noMember/refund/account/register/popup/form',
 				data		: jsonData,
 				dataType 	: 'html',
 				beforeSend : function(xhr, settings) {

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

@@ -391,8 +391,8 @@
 					tag += '													<span class="count"><em>' + (ordDtl.ordQty - ordDtl.cnclRtnQty) + '</em>개</span>\n';
 					tag += '												</p>\n';
 					tag += '												<p>\n';
-					if ((ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)) {
-						tag += '													<span class="price_org"><em>' + (ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt).addComma() + '</em>원</span>\n';
+					if ((ordDtl.ordAmt - ordDtl.cnclRtnAmt) > (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt)) {
+						tag += '													<span class="price_org"><em>' + (ordDtl.ordAmt - ordDtl.cnclRtnAmt).addComma() + '</em>원</span>\n';
 					}
 					tag += '													<span class="price_sale"><em>' + (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt).addComma() + '</em>원</span>\n';
 					tag += '												</p>\n';

+ 3 - 2
src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html

@@ -78,7 +78,7 @@
 													<span class="count"><em th:text="${return.ordQty - return.cnclRtnQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt, 1, 'COMMA')}"></em>원</span>
 													<span class="price_sale"><em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>
@@ -465,7 +465,7 @@
 
 				document.addPaymentForm.submit();
 			} else {
-				fnGoToNoMemberCreList()
+				fnGoToNoMemberCreList();
 			}
 		}, true);
 	}
@@ -500,6 +500,7 @@
 			data.ordNm = oneData.ordNm;
 			data.ordPhnno = oneData.ordPhnno;
 			data.chgGb = 'G680_30';
+			data.delvFeeCd = oneData.delvFeeCd;
 			data.ordDtlNoArr = ordDtlNoArr;
 			data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 			

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

@@ -2166,7 +2166,7 @@ var custCpnSumAmtCal = function() {
 		cpnDcSumAmt			= cpnDcSumAmt + (goodsCpnDcAmt + cartCpnDcAmt);
 		prePntDcSumAmt		= prePntDcSumAmt + prePntDcAmt1;
 		
-		var ordAmt			= ((orgCurrPrice +  - cpn1DcAmt) + optAddPrice) * goodsQty;
+		var ordAmt			= ((orgCurrPrice - cpn1DcAmt) + optAddPrice) * goodsQty;
 		ordSumAmt			= ordSumAmt + ordAmt;
 		
 		// 선포인트사용여부 

+ 4 - 2
src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html

@@ -63,8 +63,10 @@
 						<td>
 							<div class="form_field">
 								<div class="input_wrap">
-									<input type="text" class="form_control" name="accountNo" value="" data-valid-type="numeric" placeholder="계좌번호를 입력해주세요.">
-									<button type="button" id="confirmAccount" class="btn btn_dark btn_sm"><span>계좌인증</span></button>
+									<input type="text" id="accountNo" name="accountNo" class="form_control" maxlength="20" data-valid-type="numeric"  placeholder="계좌번호를 입력해 주세요"/>
+									<button type="button" id="btnAccountCheck" class="btn btn_dark">
+										<span>계좌인증</span>
+									</button>
 								</div>
 							</div>
 						</td>

+ 16 - 3
src/main/webapp/biz/mypage.js

@@ -386,16 +386,25 @@ var fnCreCancel = function(param) {
 	let ordNo = $(param).attr('ordNo');
 	let ordChgSq = $(param).attr('ordChgSq');
 	let cancelGb = $(param).attr('cancelGb');
+	let noMember = $(param).attr('noMember');
 	let url;
 	let msg;
 
 	if (cancelGb == 'G680_30') {
 		// 반품신청철회
-		url = '/mypage/return/cancel';
+		if (noMember == 'noMember') {
+			url = '/noMember/return/cancel';
+		} else {
+			url = '/mypage/return/cancel';
+		}
 		msg = '반품 신청을 취소하시겠습니까?';
 	} else if (cancelGb == 'G680_40') {
 		// 교환신청철회
-		url = '/mypage/exchange/cancel';
+		if (noMember == 'noMember') {
+			url = '/noMember/exchange/cancel';
+		} else {
+			url = '/mypage/exchange/cancel';
+		}
 		msg = '교환 신청을 취소하시겠습니까?';
 	}
 
@@ -410,7 +419,11 @@ var fnCreCancel = function(param) {
 		sureBtnText: "확인",
 		sureBtnClick: function() {
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
+				if (noMember == 'noMember') {
+					fnGoToNoMemberCreList();
+				} else {
+					cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
+				}
 			});
 		}
 	});

+ 14 - 0
src/main/webapp/ux/style24_link.js

@@ -283,6 +283,20 @@ function cfnAddCart(cartList) {
 						// PC버전에서만 동작해야함(퀵메뉴)
 						if (navigator.userAgent.indexOf('Mobile') == -1) {
 							fnGetCartGoodsList();
+						} else {
+							if($("header #htopSub .button_wrap .store>span")) {
+								// 장바구니 수량 조회
+								$.getJSON('/cart/goods/not/soldout/cnt', function (order, status) {
+									let cartCnt;
+									if (order.totCartCnt > 99) {
+										cartCnt = "99+";
+									} else {
+										cartCnt = order.totCartCnt;
+									}
+									
+									$("header #htopSub .button_wrap .store>span").text(cartCnt);
+								});
+							}
 						}
 						
 						// 장바구니 팝업에서