Przeglądaj źródła

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

gagamel 5 lat temu
rodzic
commit
49290f412f
97 zmienionych plików z 3579 dodań i 926 usunięć
  1. 8 0
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 32 4
      src/main/java/com/style24/front/biz/service/TsfCartService.java
  3. 37 1
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  4. 9 42
      src/main/java/com/style24/front/biz/web/TsfCartController.java
  5. 43 0
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  6. 256 0
      src/main/java/com/style24/front/biz/web/TsfNoMemberController.java
  7. 11 3
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  8. 3 1
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  9. 3 4
      src/main/java/com/style24/front/support/config/TsfWebMvcConfig.java
  10. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  11. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfCart.xml
  12. 40 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  13. 30 11
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  14. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  15. 4 1
      src/main/resources/config/application-locd.yml
  16. 4 1
      src/main/resources/config/application-run.yml
  17. 5 1
      src/main/resources/config/application-tsit.yml
  18. 402 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html
  19. 438 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html
  20. 350 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreExchangeDetailFormMob.html
  21. 282 294
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html
  22. 176 133
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListInfoMob.html
  23. 330 0
      src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html
  24. 5 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderDetailFormMob.html
  25. 4 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListFormMob.html
  26. 320 318
      src/main/webapp/WEB-INF/views/mob/mypage/MypageOrderListInfoMob.html
  27. 0 21
      src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html
  28. 3 3
      src/main/webapp/WEB-INF/views/mob/order/OrderFormMob.html
  29. 100 0
      src/main/webapp/WEB-INF/views/web/cart/CartAddGoodsPopupWeb.html
  30. 4 5
      src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html
  31. 26 0
      src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html
  32. 12 1
      src/main/webapp/WEB-INF/views/web/customer/NonCustOrderConfirmFormWeb.html
  33. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  34. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  35. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  36. 565 0
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  37. 25 17
      src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html
  38. 0 21
      src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html
  39. 3 14
      src/main/webapp/WEB-INF/views/web/order/OrderFormWeb.html
  40. 1 0
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html
  41. 8 1
      src/main/webapp/biz/mypage.js
  42. BIN
      src/main/webapp/images/mo/br_minus.png
  43. BIN
      src/main/webapp/images/mo/btn_main_pop_arrow.png
  44. 3 0
      src/main/webapp/images/mo/desktop.ini
  45. BIN
      src/main/webapp/images/mo/dp_refresh.png
  46. BIN
      src/main/webapp/images/mo/ico_bg_check.png
  47. BIN
      src/main/webapp/images/mo/ico_bg_point.png
  48. BIN
      src/main/webapp/images/mo/ico_btn_cls1.png
  49. BIN
      src/main/webapp/images/mo/ico_coupon_5.png
  50. BIN
      src/main/webapp/images/mo/ico_err.png
  51. BIN
      src/main/webapp/images/mo/shc_clock.png
  52. BIN
      src/main/webapp/images/pc/chk_top_banner.png
  53. BIN
      src/main/webapp/images/pc/ico_bracket_primary.png
  54. BIN
      src/main/webapp/images/pc/ico_home.png
  55. BIN
      src/main/webapp/images/pc/ico_lnb_category.png
  56. BIN
      src/main/webapp/images/pc/ico_shopbag.png
  57. BIN
      src/main/webapp/images/pc/info_size_bag.jpg
  58. BIN
      src/main/webapp/images/pc/info_size_pants.jpg
  59. BIN
      src/main/webapp/images/pc/info_size_shoe.jpg
  60. BIN
      src/main/webapp/images/pc/info_size_top.jpg
  61. BIN
      src/main/webapp/images/pc/info_size_underwear.jpg
  62. BIN
      src/main/webapp/images/pc/logo_STYLE24.png
  63. BIN
      src/main/webapp/images/pc/logo_andew.png
  64. BIN
      src/main/webapp/images/pc/logo_andew_bk.png
  65. BIN
      src/main/webapp/images/pc/logo_buckaroo.png
  66. BIN
      src/main/webapp/images/pc/logo_buckaroo_bk.png
  67. BIN
      src/main/webapp/images/pc/logo_conversekisds.png
  68. BIN
      src/main/webapp/images/pc/logo_conversekisds_bk.png
  69. BIN
      src/main/webapp/images/pc/logo_curlysu.png
  70. BIN
      src/main/webapp/images/pc/logo_curlysue_bk.png
  71. BIN
      src/main/webapp/images/pc/logo_frj.png
  72. BIN
      src/main/webapp/images/pc/logo_frj_bk.png
  73. BIN
      src/main/webapp/images/pc/logo_hurley.png
  74. BIN
      src/main/webapp/images/pc/logo_hurley_bk.png
  75. BIN
      src/main/webapp/images/pc/logo_jordan.png
  76. BIN
      src/main/webapp/images/pc/logo_jordan_bk.png
  77. BIN
      src/main/webapp/images/pc/logo_levis.png
  78. BIN
      src/main/webapp/images/pc/logo_levis_bk.png
  79. BIN
      src/main/webapp/images/pc/logo_lpga.png
  80. BIN
      src/main/webapp/images/pc/logo_lpga_bk.png
  81. BIN
      src/main/webapp/images/pc/logo_moi.png
  82. BIN
      src/main/webapp/images/pc/logo_moi_bk.png
  83. BIN
      src/main/webapp/images/pc/logo_nba.png
  84. BIN
      src/main/webapp/images/pc/logo_nba_bk.png
  85. BIN
      src/main/webapp/images/pc/logo_nbakids.png
  86. BIN
      src/main/webapp/images/pc/logo_nbakids_bk.png
  87. BIN
      src/main/webapp/images/pc/logo_nike.png
  88. BIN
      src/main/webapp/images/pc/logo_nike_bk.png
  89. BIN
      src/main/webapp/images/pc/logo_pga.png
  90. BIN
      src/main/webapp/images/pc/logo_pga_bk.png
  91. BIN
      src/main/webapp/images/pc/logo_style24_bk.png
  92. BIN
      src/main/webapp/images/pc/logo_tbj.png
  93. BIN
      src/main/webapp/images/pc/logo_tbj_bk.png
  94. BIN
      src/main/webapp/images/pc/movloading.gif
  95. 2 2
      src/main/webapp/ux/plugins/gaga/gaga.paging.js
  96. 20 14
      src/main/webapp/ux/plugins/gaga/gaga.validation.js
  97. 6 0
      src/main/webapp/ux/style24_link.js

+ 8 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -355,4 +355,12 @@ public interface TsfGoodsDao {
 	 */
 	Collection<Goods> getContentsCategoryNewGoodsList(Cate4Srch cate);
 
+	/**
+	 * 배송비 SAVE 상품 조회
+	 * @param cate - 카테고리 정보
+	 * @return
+	 * @author xodud1202
+	 * @date 2021. 04. 27
+	 */
+	Collection<Goods> getDelvFeeSaveGoodsList(Goods param);
 }

+ 32 - 4
src/main/java/com/style24/front/biz/service/TsfCartService.java

@@ -16,18 +16,16 @@ import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.dao.TscEnvsetDao;
 import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.biz.service.TscOrderService;
-import com.style24.core.support.annotation.ShopDs;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
 import com.style24.front.biz.dao.TsfCartDao;
+import com.style24.front.biz.dao.TsfGoodsDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Cart;
-import com.style24.persistence.domain.Envset;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.Login;
 import com.style24.persistence.domain.Order;
-import com.style24.persistence.domain.Payment;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -44,6 +42,9 @@ public class TsfCartService {
 	@Autowired
 	private TsfCartDao cartDao;
 
+	@Autowired
+	private TsfGoodsDao goodsDao;
+
 	@Autowired
 	private TsfGoodsService goodsService;
 
@@ -799,9 +800,9 @@ public class TsfCartService {
 			if(lastCompCheck != null) {
 				// 한 업체의 마지막 상품 체크
 				lastCompCheck.setAddDelvFeeYn("Y");
-
 				// 배송 상품 존재 여부
 				lastCompCheck.setDelvYn(delvYn);
+				// 배송상품 금액차이
 			}
 		}
 
@@ -818,6 +819,8 @@ public class TsfCartService {
 					} else if (TscConstants.DelvFeeCrite.NORMAL.value().equals(delv.getDelvFeeCrite()) && delv.getCompSumPrice() > delv.getMinOrdAmt()) {
 						param.setDelvFee(0);
 					} else {
+						param.setCompSumPrice(delv.getCompSumPrice());
+						param.setMinOrdAmt(delv.getMinOrdAmt());
 						param.setDelvFee(delv.getDelvFee());
 					}
 				}
@@ -839,6 +842,8 @@ public class TsfCartService {
 				order.setWmsDelvFee(0);
 			} else {
 				order.setWmsDelvFee(wmsDelvFee);
+				order.setCompSumPrice(wmsSumPrice);
+				order.setMinOrdAmt(wmsMinOrdAmt);
 			}
 
 			// 배송 상품 존재 여부
@@ -932,6 +937,29 @@ public class TsfCartService {
 		}
 	}
 
+	public Collection<Goods> getDelvFeeSaveGoodsList(Order param) {
+		Goods goods = new Goods();
+		if(StringUtils.isEmpty(param.getDelvFeeCd())) {
+			return null;
+		}
+
+		if("WMS".equals(param.getDelvFeeCd())) {
+			goods.setSelfGoodsYn("Y");
+		} else {
+			goods.setDelvFeeCd(param.getDelvFeeCd());
+		}
+
+		goods.setPrice(param.getDelvFeeSaveGoodsAmt());
+
+		if(TsfSession.isLogin()) {
+			goods.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			goods.setCustNo(0);
+		}
+
+		return goodsDao.getDelvFeeSaveGoodsList(goods);
+	}
+
 	public Cart getCartGoodsInfo(Cart param) {
 		// Collection<Cart> result = new ArrayList<Cart>();
 		/* cart.add(cartDao.selectCartGoodsInfo(param)); */

+ 37 - 1
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -639,6 +639,7 @@ public class TsfOrderService {
 	 * @author xodud1202
 	 * @since 2021. 04. 23
 	 */
+	@Transactional("shopTxnManager")
 	public GiftCard kcpCashReceiptsRequest(GiftCard param) {
 		GiftCard result = new GiftCard();
 		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
@@ -729,8 +730,9 @@ public class TsfOrderService {
 	 * @author xodud1202
 	 * @since 2021. 04. 26
 	 */
+	@Transactional("shopTxnManager")
 	public String uSafeGuaranteeInsurance(Order param) {
-		InsuranceManager manager = new InsuranceManager("http://gateway.usafe.co.kr/esafe/guartrn.asp" , null );
+		InsuranceManager manager = new InsuranceManager(env.getProperty("usafe.guarantee.send.url") , null );
 
 		InsuranceInfo dInfo = new InsuranceInfo();
 
@@ -801,4 +803,38 @@ public class TsfOrderService {
 
 		return "SUCCESS";
 	}
+
+	/**
+	 * USAFE 보증보험 신청
+	 * temp.setOrdNo(111);			// 상품명 배열
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 04. 26
+	 */
+	@Transactional("shopTxnManager")
+	public String uSafeGuaranteeDepositCompleted(Order param) {
+		// 보증보험 정보 조회
+		Order insurance = coreOrderDao.getInsuranceInfo(param);
+
+		if(insurance != null) {
+			// 보증보험 입금 완료 정보 송부
+			InsuranceManager manager = new InsuranceManager(env.getProperty("usafe.guarantee.send.url"), null);
+			String result = manager.confirmPayment(env.getProperty("usafe.guarantee.mall.id"), String.valueOf(param.getOrdNo()), insurance.getInsNo());
+
+			// 송부 결과
+			String rtnResult[]	= result.split("[\u007C]");
+			param.setResultCd(rtnResult[0]);
+			param.setResultMsg(rtnResult[1]);
+
+			if("0".equals(param.getResultCd())) {
+				param.setIfYn("Y");
+			} else {
+				param.setIfYn("F");
+			}
+
+			coreOrderDao.updateInsuranceInfo(param);
+		}
+
+		return "SUCCESS";
+	}
 }

+ 9 - 42
src/main/java/com/style24/front/biz/web/TsfCartController.java

@@ -148,51 +148,18 @@ public class TsfCartController extends TsfBaseController {
 		model.addAttribute("order", order);
 		model.addAttribute("IMG_PATH", env.getProperty("upload.goods.view"));
 
-
-		Order temp = new Order();
-		String[]	goodsNameArr	= new String[3];	 //상품명
-		String[]	goodsPriceArr	= new String[3];	 //가격
-		String[]	goodsQuantityArr = new String[3]; //상품수량
-
-		// goodsCount 수량에 맞춰 아래 필드 작성
-		goodsNameArr[0] = "테스트아이템1";
-		goodsNameArr[1] = "테스트아이템2";
-		goodsNameArr[2] = "테스트아이템3";
-
-		goodsPriceArr[0] = "100";
-		goodsPriceArr[1] = "500";
-		goodsPriceArr[2] = "300";
-
-		goodsQuantityArr[0] = "1";
-		goodsQuantityArr[1] = "2";
-		goodsQuantityArr[2] = "3";
-
-		temp.setItemNmArr(goodsNameArr);		// 상품명 배열
-		temp.setGoodsPriceArr(goodsPriceArr);	// 상품별 가격 배열
-		temp.setItemQtyArr(goodsQuantityArr);	// 상품별 수량 배열
-		temp.setOrdNo(6);						// 주문번호
-		temp.setRealOrdAmt(10200);				// 결제금액
-		temp.setBirthYmd("198912021");			// 생년월일 + 성별(남자 : 1, 여자 : 2)
-		temp.setPayMeans(TscConstants.PayMeans.BANK_DEPOSIT.value());		// 무통장입금 or 계좌이체
-		temp.setBankNm("신한은행");					// 은행코드
-
-		/* 무통장입금 : 가상계좌번호, 계좌이체 : pgTid */
-		temp.setVaNo("26190167204848");
-		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);
-		//orderService.uSafeGuaranteeInsurance(temp);
-
 		return super.getDeviceViewName("cart/CartListAjaxForm");
 	}
 
+	@PostMapping("/add/goods/list")
+	public ModelAndView selectCartAddGoodsList(Order param, Model model) {
+		log.info("CHECK PARAM ::::: {} / {}", param.getDelvFeeCd(), param.getDelvFeeSaveGoodsAmt());
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("goodsList", cartService.getDelvFeeSaveGoodsList(param));
+		mav.setViewName(super.getDeviceViewName("cart/CartAddGoodsPopup"));
+		return mav;
+	}
+
 	/**
 	 * 장바구니 로그인 정보 조회
 	 * @param param

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

@@ -888,6 +888,12 @@ public class TsfMypageController extends TsfBaseController {
 		Order order = new Order();
 		order.setCustNo(custNo);
 		mav.addObject("orderCount", coreOrderService.getOrderStatCount(order));
+		
+		// 2021.04.21 모바일에서 사용하려고 추가
+		OrderChange orderChange = new OrderChange();
+		orderChange.setCustNo(custNo);
+		int totalCnt = orderChangeService.getPagingCreListCount(orderChange);
+		mav.addObject("totalCnt", totalCnt);
 
 		// 주문상세상태코드 설정
 		mav.addObject("chgStatList", rendererService.getCommonCodeList("G685", "Y", new String[] {"G685_10", "G685_11", "G685_19"}));
@@ -2182,5 +2188,42 @@ public class TsfMypageController extends TsfBaseController {
 
 		return result;
 	}
+	
+	/**
+	 * 마이페이지 취반교 목록 조회
+	 *
+	 * @param OrderChange
+	 * @return ModelAndView
+	 * @author jsh77b
+	 * @since 2021. 02. 18
+	 */
+	@PostMapping("/cre/listInfo")
+	@ResponseBody
+	public ModelAndView getCreListInfo(@RequestBody OrderChange orderChange) {
+		// 주문목록조회
+		ModelAndView mav = new ModelAndView();
+
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((orderChange.getPageNo() > 0 ? orderChange.getPageNo() - 1 : 0), orderChange.getPageSize(), orderChange.getPageUnit());
+		pageable.setTotalCount(orderChangeService.getPagingCreListCount(orderChange));
+		orderChange.setPageable(pageable);
+
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordChgSqList = new ArrayList<>();
+
+		for (OrderChange tmpOrderChange : orderChangeService.getPagingCreList(orderChange)) {
+			ordChgSqList.add(tmpOrderChange.getOrdChgSq());
+		}
+
+		if (ordChgSqList.size() > 0) {
+			orderChange.setOrdChgSqArr(ordChgSqList.stream().mapToInt(Integer::intValue).toArray());
+		}
+
+		mav.addObject("creList", orderChangeService.getCreList(orderChange));
+		mav.addObject("creInfo", orderChange);
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCreListInfo"));
+
+		return mav;
+	}
 
 }

+ 256 - 0
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -0,0 +1,256 @@
+package com.style24.front.biz.web;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
+import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.biz.service.TscFreegiftService;
+import com.style24.core.biz.service.TscOrderChangeService;
+import com.style24.core.biz.service.TscOrderRefundService;
+import com.style24.core.biz.service.TscOrderService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.front.biz.service.TsfCartService;
+import com.style24.front.biz.service.TsfCustomerService;
+import com.style24.front.biz.service.TsfGiftcardService;
+import com.style24.front.biz.service.TsfOrderChangeService;
+import com.style24.front.biz.service.TsfOrderService;
+import com.style24.front.biz.service.TsfRendererService;
+import com.style24.front.biz.thirdparty.NiceCertify;
+import com.style24.front.support.controller.TsfBaseController;
+import com.style24.front.support.security.session.TsfSession;
+import com.style24.persistence.TscPageRequest;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.Order;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 비회원 Controller
+ * 
+ * @author card007
+ * @since 2021. 04. 27
+ */
+@Controller
+@RequestMapping("/noMember")
+@Slf4j
+public class TsfNoMemberController extends TsfBaseController {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private TscOrderService coreOrderService;
+
+	@Autowired
+	private TsfOrderService orderService;
+
+	@Autowired
+	private TscFreegiftService coreFreegiftService;
+
+	@Autowired
+	private TsfCartService cartService;
+
+	@Autowired
+	private Environment env;
+	
+	@Autowired
+	private NiceCertify niceCertify;
+
+	@Autowired
+	private TsfCustomerService customerService;
+
+	@Autowired
+	private TscCustomerService coreCustomerService;
+
+	@Autowired
+	private TsfOrderChangeService orderChangeService;
+
+	@Autowired
+	private TscOrderChangeService coreOrderChangeService;
+
+	@Autowired
+	private TscOrderRefundService coreOrderRefundService;
+
+	@Autowired
+	private TsfRendererService rendererService;
+
+	@Autowired
+	private TsfGiftcardService giftcardService;
+
+	/**
+	 * 마이페이지 메인 화면
+	 *
+	 * @param Order(ordNm, ordPhnno, ordNo)
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 04. 27
+	 */
+	@PostMapping("/order/list/form")
+	public ModelAndView noMemberOrderListForm(Order order) {
+		ModelAndView mav = new ModelAndView();
+
+		// 비회원 정보 설정
+		mav.addObject("ordNo", order.getOrdNo());
+		mav.addObject("ordNm", order.getOrdNm());
+		mav.addObject("ordPhnno", order.getOrdPhnno());
+
+		// 주문 상태 별 수량 조회
+		mav.addObject("orderCount", coreOrderService.getOrderStatCount(order));
+
+		// 2021.04.21 모바일에서 사용하려고 추가
+		int totalCnt = orderService.getPagingOrdNoListCount(order);
+		mav.addObject("totalCnt", totalCnt);
+
+		// 주문상세상태코드 설정
+		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_10", "G013_11", "G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
+
+		mav.setViewName(super.getDeviceViewName("mypage/NoMemberOrderListForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 주문상세 화면
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	@GetMapping({"/order/detail/form/{ordNo}"})
+	public ModelAndView mypageOrderDetailForm(@PathVariable(value = "ordNo") int ordNo) {
+		ModelAndView mav = new ModelAndView();
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		mav.addObject("custNo", custNo);
+
+		// 고객정보 조회
+		Customer customer = new Customer();
+		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+		customer.setCustNo(custNo);
+		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
+		customer = coreCustomerService.getCustomerInfo(customer);
+
+		mav.addObject("customerInfo", customer);
+
+		// 로그인여부 설정
+		mav.addObject("isLogin", TsfSession.isLogin());
+
+		// 주문번호 설정
+		mav.addObject("ordNo", ordNo);
+
+		Order order = new Order();
+		order.setCustNo(custNo);
+		order.setOrdNo(ordNo);
+
+		// 주문목록 조회
+		Collection<GagaMap> orderList = orderService.getOrderListForMypage(order);
+
+		if (orderList.size() == 0) {
+			mav.setViewName("redirect:/mypage/order/list/form");
+			return mav;
+		}
+
+		mav.addObject("orderList", orderList);
+		mav.addObject("oneData", orderList.iterator().next().get("oneData"));
+		mav.addObject("allCanYn", orderList.iterator().next().get("allCanYn"));
+
+		// 주문정보 조회
+		mav.addObject("orderInfo", coreOrderService.getOrderInfoList(order).iterator().next());
+
+		// 주문 금액정보 조회
+		mav.addObject("orderAmtInfo", orderService.getOrderAmtForMypage(order));
+
+		// 주문 결제정보 조회
+		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
+
+		// 주문 배송지 정보 조회
+		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
+
+		// 상품권 현금영수증 신청 정보 조회
+		mav.addObject("cashReceiptsInfo", giftcardService.getCashReceiptsRequestInfo(order));
+
+		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderDetailForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 주문목록 조회
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 02. 18
+	 */
+	@PostMapping("/order/list")
+	@ResponseBody
+	public GagaMap getOrderList(@RequestBody Order order) {
+		GagaMap map = new GagaMap();
+
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
+		pageable.setTotalCount(orderService.getPagingOrdNoListCount(order));
+		order.setPageable(pageable);
+
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordNoList = new ArrayList<>();
+
+		for (Order tmpOrder : orderService.getPagingOrdNoList(order)) {
+			ordNoList.add(tmpOrder.getOrdNo());
+		}
+
+		if (ordNoList.size() > 0) {
+			order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
+			map.set("orderList", orderService.getOrderListForMypage(order));
+		}
+
+		map.set("orderInfo", order);
+
+		return map;
+	}
+
+	/**
+	 * 마이페이지 주문상세 주문내역 삭제
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 15
+	 */
+	@PostMapping("/order/delete")
+	@ResponseBody
+	public GagaMap deleteOrder(@RequestBody Order order) {
+		GagaMap result = new GagaMap();
+
+		// 고객번호 설정
+
+		// 주문내역 삭제 처리
+		order.setUpdNo(0);
+		int chk = orderService.updateOrderDisplayYn(order);
+
+		if (chk > 0) {
+			result.set("message", message.getMessage("SUCC_0003"));
+			result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		} else {
+			result.set("message", message.getMessage("FAIL_0003"));
+			result.set("status", GagaResponseStatus.FAIL.getCode());
+		}
+
+		return result;
+	}
+}

+ 11 - 3
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -866,11 +866,18 @@ public class TsfOrderController extends TsfBaseController {
 		
 		// TODO 주문정보 알림톡전송
 		
+		// 2021.04.27 마일리지, 제휴할인정보
+		Order payOrder = orderService.getPaymentInfoForMypage(order);
+		int mileageDcAmt 	= payOrder.getNpayPntAmt();
+		int allianceDcAmt 	= payOrder.getPgCpnAmt();
+		int realOrdSumAmt 	= (int) resultMap.get("realOrdSumAmt");
+		realOrdSumAmt = realOrdSumAmt - mileageDcAmt - allianceDcAmt;
+		
 		// 4. 화면전송변수설정
 		mav.addObject("orderInfo"			, resultMap.get("orderInfo"));			// 주문기본정보
 		mav.addObject("ordSumAmt"			, resultMap.get("ordSumAmt"));			// 주문금액합계
 		mav.addObject("dcSumAmt"			, resultMap.get("dcSumAmt"));			// 할인금액합계
-		mav.addObject("realOrdSumAmt"		, resultMap.get("realOrdSumAmt"));		// 결제금액합계
+		mav.addObject("realOrdSumAmt"		, realOrdSumAmt);						// 결제금액합계
 		mav.addObject("listSumAmt"			, resultMap.get("listSumAmt"));			// 상품금액합계(정상가)
 		mav.addObject("goodsSumAmt"			, resultMap.get("goodsSumAmt"));		// 상품금액합계(판매가)
 		mav.addObject("delvFeeSumAmt"		, resultMap.get("delvFeeSumAmt"));		// 배송비합계
@@ -881,8 +888,9 @@ public class TsfOrderController extends TsfBaseController {
 		mav.addObject("pntDcSumAmt"			, resultMap.get("pntDcSumAmt"));		// 포인트사용합계
 		mav.addObject("gfcdUseSumAmt"		, resultMap.get("gfcdUseSumAmt"));		// 상품권사용합계
 		mav.addObject("savePntSumAmt"		, resultMap.get("savePntSumAmt"));		// 적립예정포인트합계
-		mav.addObject("mileageDcAmt"		, resultMap.get("mileageDcAmt"));		// 마일리지사용합계
-		mav.addObject("allianceDcAmt"		, resultMap.get("allianceDcAmt"));		// 제휴할인합계
+		mav.addObject("mileageDcAmt"		, mileageDcAmt);						// 마일리지사용합계
+		mav.addObject("allianceDcAmt"		, allianceDcAmt);						// 제휴할인합계
+		
 		mav.addObject("isLogin"				, TsfSession.isLogin());				// 로그인여부
 		mav.addObject("delvAddrSq"			, resultMap.get("delvAddrSq"));			// 배송지번호
 		mav.setViewName(super.getDeviceViewName("order/OrderComplete"));

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

@@ -72,7 +72,9 @@ public class TsfPgController extends TsfBaseController {
 			order.setCustNo(0);
 			order.setUpdNo(0);
 			coreOrderService.updateOrderInfoVBank(order);
-			
+
+			// USAFE 보증보험 입금확인 송부
+			orderService.uSafeGuaranteeDepositCompleted(order);
 		} catch(Exception e) {
 			result = "9999";		// 실패. return 하지 말것.
 		}

+ 3 - 4
src/main/java/com/style24/front/support/config/TsfWebMvcConfig.java

@@ -18,6 +18,8 @@ import org.springframework.web.multipart.support.MultipartFilter;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
+import com.gagaframework.web.core.filter.GagaXssServletFilter;
+import com.gagaframework.web.rest.client.GagaRequestStringTrim;
 import com.style24.front.support.interceptor.TsfAflinkInterceptor;
 import com.style24.front.support.interceptor.TsfDefaultInterceptor;
 import com.style24.front.support.interceptor.TsfGoodsViewInterceptor;
@@ -25,9 +27,6 @@ import com.style24.front.support.interceptor.TsfLoginCheckInterceptor;
 import com.style24.front.support.interceptor.TsfRememberMeInterceptor;
 import com.style24.front.support.interceptor.TsfReturnUrlInterceptor;
 
-import com.gagaframework.web.core.filter.GagaXssServletFilter;
-import com.gagaframework.web.rest.client.GagaRequestStringTrim;
-
 /**
  * Web MVC Configuration
  * 
@@ -61,7 +60,7 @@ public class TsfWebMvcConfig implements WebMvcConfigurer {
 			"/", "/index", "/signin/**",
 			"/images/**", "/ux/**",
 			"/error/**", "/data/**",
-			"/login", "/logout"
+			"/login", "/logout", "/noMember/**"
 		};
 
 		// 디바이스 해석

+ 1 - 0
src/main/java/com/style24/persistence/domain/Goods.java

@@ -31,6 +31,7 @@ public class Goods extends TscBaseDomain {
 	private String goodsType;		//상품타입(공통코드G056)
 	private int listPrice;		//정상가(최초판매가)
 	private int currPrice;		//현재판매가
+	private int price;			// 금액
 	private String priceUpdDt;		//가격변경일시
 	private float dcRate;		//할인율
 	private int pntAmt;				// 적립금

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

@@ -561,8 +561,8 @@
 		                                            AND    OD.GOODS_CD = C.GOODS_CD
 		                                            AND    DATE(ORD_DT) = CURRENT_DATE) + C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END CUST_TODAY_ORD
 		             , CASE WHEN C.CUST_NO = 0 AND C.GOODS_QTY > G.DAY_MAX_ORD_QTY THEN 1 ELSE 0 END AS NOCUST_TODAY_ORD
-		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = CD.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
-		            		ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = CD.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
+		            		ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
 		        FROM   TB_CART C
 		        INNER  JOIN TB_CART_DETAIL CD
 		        ON     C.CART_SQ = CD.CART_SQ

+ 40 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1430,6 +1430,45 @@
 		</if>
 	</select>
 
-
+	<!-- 배송비 SAVE 상품 조회 -->
+	<select id="getDelvFeeSaveGoodsList" parameterType="Goods" resultType="Goods">
+		/* TsfGoods.getDelvFeeSaveGoodsList : 배송비 SAVE 상품 조회 */
+		SELECT A.GOODS_CD
+		     , A.CURR_PRICE
+		     , A.PRICE
+		     , ROUND((((A.PRICE / A.CURR_PRICE) - 1) * 100) * - 1, 0) AS DC_RATE
+		     , A.BRAND_NM
+		     , A.SYS_IMG_NM
+		FROM (SELECT G.GOODS_CD
+		           , CASE WHEN G.LIST_PRICE <![CDATA[ < ]]> G.CURR_PRICE THEN G.LIST_PRICE ELSE G.CURR_PRICE END AS CURR_PRICE
+		           , FN_GET_APPLY_CPN1_PRICE(G.GOODS_CD, #{frontGb}) AS PRICE
+		           , G.MAIN_COLOR_CD
+		           , (SELECT BRAND_ENM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_NM
+		           , G.GOODS_TYPE
+		           , G.SELF_GOODS_YN
+		           , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' LIMIT 1)
+		                  ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y' LIMIT 1) END AS SYS_IMG_NM
+		      FROM TB_GOODS G
+		      INNER JOIN (SELECT VS.GOODS_CD
+		                  FROM   VW_STOCK VS
+		                  WHERE  VS.SOLDOUT_YN = 'N'
+		                  AND    VS.CURR_STOCK_QTY > 0
+		                  GROUP  BY VS.GOODS_CD ) VS
+		      ON    G.GOODS_CD = VS.GOODS_CD
+		      WHERE 1=1
+		      AND G.GOODS_STAT = 'G008_90'
+		      AND G.GOODS_TYPE = 'G056_N'
+		      AND G.SELF_MALL_YN = 'Y'
+		      AND G.MIN_ORD_QTY = 1
+		      AND G.CURR_PRICE BETWEEN ${price} AND ${price} + 10000
+		      <if test="delvFeeCd != null and delvFeeCd != ''">
+		      AND G.DELV_FEE_CD = #{delvFeeCd}
+			  </if>
+		      <if test="selfGoodsYn != null and selfGoodsYn != ''">
+		      AND G.SELF_GOODS_YN = #{selfGoodsYn}
+			  </if>
+		      ORDER  BY ITEMKIND_CD
+		      LIMIT 20) A
+	</select>
 	
 </mapper>

+ 30 - 11
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -171,11 +171,12 @@
 				    ON O.CUST_NO = CA.CUST_NO
 		<where>
 			<choose>
-				<when test="custNo != null and custNo != ''">
+				<when test="custNo > 0">
 		   AND O.CUST_NO = #{custNo}
 				</when>
 				<otherwise>
 		   AND O.ORD_NO = #{ordNo}
+		   AND O.ORD_PHNNO = #{ordPhnno}
 		   AND O.ORD_NM = #{orderNm}
 				</otherwise>
 			</choose>
@@ -218,8 +219,7 @@
 				  FROM TB_ORDER O
 				 INNER JOIN TB_ORDER_DETAIL OD
 				    ON O.ORD_NO = OD.ORD_NO
-				 WHERE O.CUST_NO = #{custNo}
-				   AND O.DISP_YN = 'Y'
+				 WHERE O.DISP_YN = 'Y'
 				   AND OD.ORD_QTY - OD.CNCL_RTN_QTY > 0
 				   AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25', 'G013_97', 'G013_98', 'G013_99')
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
@@ -235,6 +235,16 @@
 				</otherwise>
 			</choose>
 		</if>
+		<choose>
+			<when test="custNo > 0">
+				   AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+				   AND O.ORD_NM = #{ordNm}
+				   AND O.ORD_PHNNO = #{ordPhnno}
+				   AND O.ORD_NO = #{ordNo}
+			</otherwise>
+		</choose>
 				 GROUP BY O.ORD_NO
 			   ) Z
 	</select>
@@ -248,8 +258,7 @@
 		  FROM TB_ORDER O
 		 INNER JOIN TB_ORDER_DETAIL OD
 		    ON O.ORD_NO = OD.ORD_NO
-		 WHERE O.CUST_NO = #{custNo}
-		   AND O.DISP_YN = 'Y'
+		 WHERE O.DISP_YN = 'Y'
 		   AND OD.ORD_QTY - OD.CNCL_RTN_QTY > 0
 		   AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25', 'G013_97', 'G013_98', 'G013_99')
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
@@ -258,6 +267,16 @@
 		<if test="ordDtlStat != null and ordDtlStat != ''">
 		   AND OD.ORD_DTL_STAT = #{ordDtlStat}
 		</if>
+		<choose>
+			<when test="custNo > 0">
+		   AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+		   AND O.ORD_NM = #{ordNm}
+		   AND O.ORD_PHNNO = #{ordPhnno}
+		   AND O.ORD_NO = #{ordNo}
+			</otherwise>
+		</choose>
 		 GROUP BY O.ORD_NO
 		<include refid="selectForPagingFooter"/>
 	</select>
@@ -292,10 +311,10 @@
 			 , SUM(OD.CPN1_DC_AMT + OD.TMTB1_DC_AMT + OD.TMTB2_DC_AMT + OD.CART_CPN_DC_AMT + OD.GOODS_CPN_DC_AMT + OD.PRE_PNT_DC_AMT + OD.PNT_DC_AMT + OD.GFCD_USE_AMT) AS TOTAL_DC_AMT
 			 , SUM(OD.REAL_ORD_AMT)     AS REAL_ORD_AMT
 			 , SUM(OD.SAVE_PNT_AMT)     AS SAVE_PNT_AMT
-			 , SUM(DF.DELV_CPN_DC_AMT)  AS DELV_CPN_DC_AMT
-			 , SUM(DF.REAL_DELV_AMT)    AS REAL_DELV_AMT
-			 , SUM(P.PAY_AMT)           AS PAY_AMT
-			 , SUM(P.NPAY_PNT_AMT)      AS NPAY_PNT_AMT
+			 , DF.DELV_CPN_DC_AMT
+			 , DF.REAL_DELV_AMT
+			 , P.PAY_AMT
+			 , P.NPAY_PNT_AMT
 		  FROM TB_ORDER_DETAIL OD
 		  LEFT OUTER JOIN (
 			  SELECT ORD_NO
@@ -345,7 +364,7 @@
 		     , CARD_PCABLE_YN
 		     , VA_NO
 		     , VA_NM
-		     , VA_BANK
+		     , FN_GET_CODE_NM('G940', VA_BANK) AS VA_BANK
 		     , VA_DEADLINE
 		     , DATE_FORMAT(VA_DEADLINE, '%Y.%m.%d') AS VA_DEADLINE_YMD
 		     , DATE_FORMAT(VA_DEADLINE, '%H:%i:%S') AS VA_DEADLINE_HMS
@@ -491,7 +510,7 @@
 		<foreach collection="freegiftValArr" item="item" index="index"  open="(" close=")" separator=",">
 			#{item}
 		</foreach> 
-		    AND    FV.ITEM_QTY <![CDATA[>=]]> FV.LEFT_QTY
+		    AND    FV.ITEM_QTY <![CDATA[>]]> FV.LEFT_QTY
 		    UNION  ALL
 		    SELECT COUNT(1) AS CNT
 		    FROM   TB_FREEGIFT_VAL FV

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

@@ -126,7 +126,7 @@
 		          LEFT OUTER JOIN TB_CUST_ACCOUNT CA
 		            ON O.CUST_NO = CA.CUST_NO
 		         WHERE O.ORD_NO = #{ordNo}
-		           AND OD.ORD_DTL_STAT IN ('G013_10', 'G013_11', 'G013_20', 'G013_30', 'G013_35')
+		           AND OD.ORD_DTL_STAT IN ('G013_10', 'G013_11', 'G013_20', 'G013_30', 'G013_35', 'G013_40')
 		<choose>
 			<when test='custNo != null and custNo != ""'>
 		           AND O.CUST_NO = #{custNo}

+ 4 - 1
src/main/resources/config/application-locd.yml

@@ -54,7 +54,10 @@ upload:
 
 download.path: /WIDE/workspace/files/data
 
-usafe.guarantee.mall.id: TEST00
+# USAFE 보증보험 정보
+usafe.guarantee:
+    mall.id: TEST00
+    send.url: http://gateway.usafe.co.kr/esafe/guartrn.asp
 
 # PG
 pg:

+ 4 - 1
src/main/resources/config/application-run.yml

@@ -61,7 +61,10 @@ mail:
     image.url: http://www.style24.com/image/mailing
     template.path: /app/was/deploy/wivismall.front/WEB-INF/mail
 
-usafe.guarantee.mall.id: istyle2400
+# USAFE 보증보험 정보
+usafe.guarantee:
+    mall.id: istyle2400
+    send.url: https://gateway.usafe.co.kr/esafe/guartrn.asp
 
 # PG
 pg:

+ 5 - 1
src/main/resources/config/application-tsit.yml

@@ -54,7 +54,11 @@ upload:
 
 download.path: /TSIT/servers/files/data
 
-usafe.guarantee.mall.id: TEST00
+# USAFE 보증보험 정보
+usafe.guarantee:
+    mall.id: TEST00
+    send.url: http://gateway.usafe.co.kr/esafe/guartrn.asp
+
 
 # PG
 pg:

+ 402 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCancelFormMob.html

@@ -0,0 +1,402 @@
+<!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  : MypageCancelFormWeb.html
+ * @desc    : 마이페이지 > 취소신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.27   jsh77b     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="content 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">
+				<form id="cancelForm">
+					<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="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 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>
+							</div>
+							<div class="goods_cont">
+								<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" 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=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${cancel.brandNm}"></span>
+														<span class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${cancel.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${cancel.goodsType == 'G056_S'}" th:each="option, status : ${cancel.colorNmArr}" th:text="|${cancel.itemNmArr[status.index]} / ${option} / ${cancel.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${cancel.goodsType == 'G056_S'}" th:text="|${cancel.colorNm} / ${cancel.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
+												<p>
+													<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_sale"><em th:text="${#numbers.formatInteger(cancel.realOrdAmt + cancel.pntDcAmt + cancel.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+												</p>
+											</div>
+										</div>
+										<div class="button_box">
+											<div class="count_modify">
+												<span class="txt">수량</span>
+												<form class="form_wrap">
+													<div class="form_field">
+														<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">선택</div>
+																<ul class="list">
+																	<li class="selected" qty="0" onclick="fnChangeCancelQty(this);">선택</li>
+																	<li th:if="${cancel.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,cancel.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeCancelQty(this);"></li>
+																</ul>
+															</div>
+														</div>
+													</div>
+												</form>
+											</div>
+										</div>
+									</div>
+									<div class="order_text">
+										<p>취소하실 수량을 선택하신 후 주문 취소를 하실 수 있습니다.</p>
+									</div>
+								</div>
+								<!-- //주문상품 -->
+								</th:block>
+							</div>
+						</div>
+						<h4 class="subH3">환불정보</h4>
+						<div class="tbl type6">
+							<table>
+								<colgroup>
+									<col width="50%">
+									<col width="50%">
+								</colgroup>
+								<tr>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 예정 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="return_total_price"><em id="returnAmt">0</em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품 취소 금액</dt>
+												<dd><em id="goodsCancelAmt">0</em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>배송비</dt>
+												<dd><em id="deliveryFee">0</em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>할인 금액 차감</dt>
+												<dd><em id="deductDcAmt">0</em>원</dd>
+											</div>
+										</dl>
+									</td>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 수단</dt>
+												<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'NAVER'}" th:text="|네이버페이|"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'KAKAO'}" th:text="|카카오페이|"></dd>
+												<dd th:if="${paymentInfo.pgGb == 'PAYCO'}" th:text="|PAYCO|"></dd>
+											</div>
+											<div>
+												<dt>결제 금액 환불</dt>
+												<dd>
+													<em id="refundPayAmt">0</em>원
+												</dd>
+											</div>
+											<div>
+												<dt>포인트 환불</dt>
+												<dd>
+													<em id="refundPoint">0</em>P
+												</dd>
+											</div>
+											<div>
+												<dt>상품권 환불</dt>
+												<dd>
+													<em id="refundGiftCard">0</em>원
+												</dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</table>
+						</div>
+						<div class="txt_info">
+							<ul>
+								<li>
+									카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+								</li>
+							</ul>
+						</div>
+						<div class="info_footer_area" id="addDeliveryFee" style="display:none">
+							<p>
+								<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
+								<input type="hidden" name="addPayCost"/>
+							</p>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"><span>취소</span></button>
+							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnCancel();"><span>주문 취소</span></button>
+						</div>
+					</div>
+				</form>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+
+		<!-- 환불계좌 등록 팝업 -->
+		<div class="modal fade refund_pop" id="refundPop" tabindex="-1" role="dialog" aria-labelledby="refundLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content"></div>
+			</div>
+			<a href="#close-modal" rel="modal:close" id="refundPop_close" class="close-modal">Close</a>
+			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+		</div>
+		<!-- //환불계좌 등록 팝업 -->
+	</div>
+<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;
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(2);
+
+		// 마이페이지 location 설정
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
+
+		// 셀렉트박스 활성화
+		$(".myOrderView .part_goods .select_custom.select_count").each(function() {
+			new sCombo(this);
+		});
+	});
+
+	// 취소 처리
+	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');
+					gagajf.showProgressbar(true);
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+			
+			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 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) {
+			$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
+		}
+
+		// 취소 수량 설정
+		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));
+		});
+
+		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;
+			}
+
+			// 금액 설정
+			$('#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());
+		});
+	}
+
+	// 환불계좌 등록 콜백 처리
+	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();
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 438 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreCancelDetailFormMob.html

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

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

@@ -0,0 +1,350 @@
+<!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  : MypageCreExchangeDetailFormWeb.html
+ * @desc    : 마이페이지 > 취소/반품/교환내역 > 교환상세 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   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 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}" onclick="fnGoToOrderDetail(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: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_20' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>
+											<p th:if="${exchangeDtl.chgStat == 'G685_32' or exchangeDtl.chgStat == 'G685_21'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${exchangeDtl.ordNo}, ordChgSq=${exchangeDtl.ordChgSq}" onclick="fnCrePayAddCost(this);"><span>결제하기</span></button></p>
+											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</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: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>서울시 영등포구 은행로 11, 8층 (여의도동, 일신빌딩)</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>
+												</li>
+												<li>
+													배송요청 사항&nbsp;:&nbsp;<span>직접 받고 부재 시 문 앞</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>
+												</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="delvMemo" th:text="${oneData.delvMemo}"></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>
+					<div class="btn_footer_area">
+						<button type="button" class="btn btn_dark btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"><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 = '';
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(2);
+		
+		// 마이페이지 location 설정
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 상세');
+	});
+	
+	// 배송메모 및 반품메모 변경 처리
+	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 = '/mypage/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 = '/mypage/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 = '/mypage/change/chger/rtn/memo';
+			data.ordChgSq = ordChgSq;
+			data.chgerRtnMemo = delvMemo;
+		} else {
+			url = '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>

+ 282 - 294
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreListFormMob.html

@@ -15,11 +15,41 @@
  -->
 <body>
 <th:block layout:fragment="content">
+
+<!-- 취소/반품/교환목록조회 -->
+<form id="searchForm" name="searchForm" th:action="@{'/mypage/cre/list'}" th:method="post">
+	<input type="hidden" name="pageNo" 		value=1 />
+	<input type="hidden" name="pageSize" 	value=5 />
+	<input type="hidden" name="pageUnit" 	value=10 />
+	<input type="hidden" name="chgStat" 	value="" />
+	<input type="hidden" name="stDate" 		value="" />
+	<input type="hidden" name="edDate" 		value="" />
+	<input type="hidden" name="custNo" 		th:value ="${custNo}"/>
+</form>
+<!-- 교환상세 -->
+<form id="exchangeForm" name="exchangeForm" 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">
+	<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">
+	<input type="hidden" name="ordChgSq"/>
+	<input type="hidden" name="ordNo"/>
+</form>
+<!-- //취소상세 -->
+
 <main role="" id="" class="container my">
 	<section class="content my_return"> <!-- 210409_수정 : class my_return 변경 -->
 		<div class="inner">
 			<div class="order_sort">
-				<a href="javascript:void(0);" class="od_date_btn">최근 1개월</a>
+				<a href="javascript:void(0);" class="od_date_btn">최근 3개월</a>
 				<a href="javascript:void(0);" class="od_status_btn">전체</a>
 			</div>
 		</div>
@@ -38,327 +68,285 @@
 	</section>
 </main>
 
-<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<!-- 기간 선택 팝업 -->
+<div id="odDatePop" class="popup_box odDatePop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">기간 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" onclick="fnSetSearchPeriod(1);" period="1"><span>최근 1개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(3);" period="3"><span>최근 3개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(6);" period="6"><span>최근 6개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(9);" period="9"><span>최근 9개월</span></button>
+				<button type="button" onclick="fnSetSearchPeriod(12);" period="12"><span>최근 12개월</span></button>
+			</div>
+		</div>
+	</div>
+</div>
+<!-- //기간 선택 팝업 -->
+
+<!-- 주문상태 선택 팝업 -->
+<div id="odStatusPop" class="popup_box odStatusPop">
+	<div class="lap">
+		<div class="popup_close">카테고리닫기</div>
+		<div class="popup_head sr-only">
+			<h2 class="">주문상태 선택 팝업</h2>
+		</div>
+		<div class="popup_con">
+			<div class="button_list clear">
+				<button type="button" class="ordDtlStat on"><span>전체</span></button>
+				<th:block th:each="oneData, status : ${chgStatList}">
+					<button type="button" class="ordDtlStat" th:code="${oneData.cd}">
+						<span th:text="${oneData.cdNm}"></span>
+					</button>
+				</th:block>
+			</div>
+		</div>
+	</div>
+</div>		
+<!-- //주문상태 선택 팝업 -->
+
 <script th:inline="javascript">
-	/*<![CDATA[*/
-	let totalCount = 0;
-	let pageSize = 0;
+//AJAX 로드를 위한 변수 설정
+let custNo 		= [[${custNo}]];
+let totalCnt 	= [[${totalCnt}]];
 
-	$(document).ready(function() {
+/*<![CDATA[*/
+$(document).ready(function() {
+	jsonObj = {
+		"pageNo" 			: 0
+		, "pageSize" 		: 5
+		, "pageUnit" 		: 10
+		, "chgStat" 		: ""
+		, "stDate" 			: ""
+		, "edDate" 			: ""
+		, "custNo"			: custNo
+	}
+	
+	// AJAX 변수 설정
+	jsonData = JSON.stringify(jsonObj);
+	
+	// 전체페이지 구하기
+	totalPage 	= parseInt(totalCnt / 10);
+	remainList 	= totalCnt % 10; 
+	
+	// 나머지가 있으면 전체 페이지 + 1
+	if (remainList > 0) {
+		totalPage = totalPage + 1;
+	}
+	
+	fnSetSearchPeriod(3);
+	
+	var win = $(window);
+	 
+	// Each time the user scrolls
+	win.scroll(function() {
+		// End of the document reached?
+		if ($(document).height() - win.height() == win.scrollTop()) {
+			if (scrollTemp) {
+				var tempPage 	= parseInt($("#searchForm input[name=pageNo]").val());
+				tempPage 		= tempPage + 1;
+				
+				if (totalPage > tempPage) {
+					scrollTemp = false;
+					fnGetInfiniteScrollDataList(tempPage);
+				}
+			}
+		}
+	});
+	
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	$('#odStatusPop .popup_con .button_list .ordDtlStat').on('click', function() {
+		$('#searchForm input[name=chgStat]').val($(this).attr('code'));
+		jsonObj.chgStat = $(this).attr('code');
 		
-		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/교환내역');
+		// 상태값 명칭
+		var ordDtlStatNm = $(this).find("span").text();
+		$(".container .my_return .od_status_btn").text(ordDtlStatNm);
 		
-		// datepicker 설정
-		$('.period_datepicker').datepicker();
-
-		// 셀렉트박스 활성화
-		$('.select_custom.demand_status').each(function(index) {
-			new sCombo($(this));
-		});
-
-		// 주문 검색 기간 설정
-		$('#rdi-month2').click();
-
-		// Initialize a pagination
-		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		// 리헷
+		$("#listBox").html("");
 		
-		// Load data
-		gagaPaging.load(1);
+		// 초기화설정
+		fnGetInfiniteScrollDataList(0);
 	});
-	
-	// 검색기간 버튼 클릭 이벤트 처리
-	var fnSetSearchPeriod = function(period) {
-		let date = new Date();
-		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
-		date.setMonth(date.getMonth() - period);
-		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
+});
 
-		$('#edDate').val(edDate);
-		$('#searchForm input[name=edDate]').val(edDate);
-		$('#stDate').val(stDate);
-		$('#searchForm input[name=stDate]').val(stDate);
-	}
+//취소,반품,교환목록조회
+var fnGetInfiniteScrollDataList = function(pageNo) {
 
-	// 주문 목록 조회
-	var fnSearchCreList = function() {
-		gagaPaging.load(1);
+	// 페이지번호가 없으면 1페이지 설정
+	if (pageNo == null) {
+		pageNo = 1;
 	}
+	
+	// 페이지설정
+	$("#searchForm input[name=pageNo]").val(pageNo);
+	
+	jsonObj.pageNo = pageNo;
+	jsonObj.stDate = $("#searchForm input[name=stDate]").val();
+	jsonObj.edDate = $("#searchForm input[name=edDate]").val();
+	
+	$.ajax( {
+		type		: "POST",
+		url 		: '/mypage/cre/listInfo',
+		data		: JSON.stringify(jsonObj),
+		dataType 	: 'html',
+		beforeSend : function(xhr, settings) {
+			xhr.setRequestHeader("AJAX"			, "true");
+			xhr.setRequestHeader('Accept'		, 'application/json');
+			xhr.setRequestHeader('Content-Type'	, 'application/json');
+			gagajf.showProgressbar(true);
+		},
+		success 	: function(result) {
+			if (result != null) {
+				$("#listBox").css("display", "block");
+				$("#listBox").append(result);
+				
+				scrollTemp = true;
+				
+			}
+		}
+	});
+}
+
+//검색기간 버튼 클릭 이벤트 처리
+var fnSetSearchPeriod = function(period) {
+	let date 		= new Date();
+	let edDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
+	date.setMonth(date.getMonth() - period);
+	let stDate 		= date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
 
-	// 주문 목록 조회 콜백
-	var fnSearchCallback = function(result) {
-		$('#creList').html(fnCreateCreList(result));
+	$('#searchForm input[name=edDate]').val(edDate);
+	$('#searchForm input[name=stDate]').val(stDate);
+	
+	// 리헷
+	$("#listBox").html("");
+	
+	// 초기화설정
+	fnGetInfiniteScrollDataList(0);
+	
+	$("#odDatePop .popup_con button").removeClass("on");
+	
+	// 기간설정
+	$("#odDatePop .popup_con button").each(function() {
+		var tempPeriod = $(this).attr("period");
+		if (tempPeriod == period) {
+			$(this).addClass("on");
+			
+			// 텍스트설정
+			var periodStr = $(this).find("span").text();
+			$(".container .my_return .od_date_btn").text(periodStr);
+		}
+	});
+}
 
-		// Create pagination
-		gagaPaging.createPagination(result.creInfo.pageable);
+// 취반교 상세 페이지 이동
+var fnGoToCreDetail = function(param) {
+	let ordChgSq = $(param).attr('ordChgSq');
+	let chgGb = $(param).attr('chgGb');
+	let ordNo = $(param).attr('ordNo');
+	
+	if (chgGb == 'G680_20') {
+		$('#cancelForm input[name=ordChgSq]').val(ordChgSq);
+		$('#cancelForm input[name=ordNo]').val(ordNo);
+		document.cancelForm.submit();
+	} else if (chgGb == 'G680_30') {
+		$('#returnForm input[name=ordChgSq]').val(ordChgSq);
+		$('#returnForm input[name=ordNo]').val(ordNo);
+		document.returnForm.submit();
+	} else if (chgGb == 'G680_40') {
+		$('#exchangeForm input[name=ordChgSq]').val(ordChgSq);
+		$('#exchangeForm input[name=ordNo]').val(ordNo);
+		document.exchangeForm.submit();
 	}
+}
 
-	// 검색기간 설정 체크
-	var fnCheckPeriod = function(param) {
-		let stDate = $('#stDate').val();
-		let edDate = $('#edDate').val();
+// 취반교 배송조회 버튼 클릭 이벤트
+var fnGoToDeliveryTrack = function(param) {
+	let ordDtlNo = $(param).attr('ordDtlNo');
+	// TODO
+	// 최반교 배송조회 페이지 이동 처리
+}
+/*]]>*/
+</script>
 
-		let sdt = new Date(stDate);
-		let edt = new Date(edDate);
-		let dateDiff = Math.ceil((edt.getTime() - sdt.getTime()) / (1000 * 3600 * 24));
+<script>
+	$(document).ready(function(){
+		$(document).on('click','.popup_box .button_list button',function(){
+			$('.popup_box .button_list button').removeClass('on');
+			$(this).addClass('on');
+		})
+	});
 
-		if (dateDiff > 366) {
-			let id = $(param).attr('id');
-			mcxDialog.alert('조회기간은 최대 1년을 넘을 수 없습니다.');
-			if (id == 'stDate') {
-				sdt.setFullYear(sdt.getFullYear() + 1);
-				let chgEdDate = sdt.getFullYear() + '-' + ('0' + (sdt.getMonth() + 1)).slice(-2) + '-' + ('0' + (sdt.getDate())).slice(-2);
+	//기간 선택 팝업
+	$(document).on("click", ".order_sort .od_date_btn", function(){
+		$('#odDatePop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
 
-				$('#edDate').val(chgEdDate);
-				$('#searchForm input[name=edDate]').val(chgEdDate);
-			} else {
-				edt.setFullYear(edt.getFullYear() - 1);
-				let chgStDate = edt.getFullYear() + '-' + ('0' + (edt.getMonth() + 1)).slice(-2) + '-' + ('0' + (edt.getDate())).slice(-2);
+	//주문상태 선택 팝업
+	$(document).on("click", ".order_sort .od_status_btn", function(){
+		$('#odStatusPop').show().addClass("active");
+		$("body").css({"overflow":"hidden"});
+	});
 
-				$('#stDate').val(chgStDate);
-				$('#searchForm input[name=stDate]').val(chgStDate);
-			}
-		}
-	}
+	//팝업_닫기
+	$('.popup_close').on("click",function(){
+		$('.popup_box').hide().removeClass('active');
+		$("body").css({"overflow":"visible"});
+	});
 
-	// 상태값 별 수량 업데이트 처리
-	var fnReloadStatusCount = function() {
-		let url = '/mypage/status/count';
-		
-		let data = {};
-		data.custNo = customerInfo.custNo;
-		
-		let jsonData = JSON.stringify(data);
-		
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			$('#orderReceiptCount').text(result.orderCount.orderReceiptCount);
-			$('#paymentCompleteCount').text(result.orderCount.paymentCompleteCount);
-			$('#goodsPrepareCount').text(result.orderCount.goodsPrepareCount);
-			$('#shipPrepareCount').text(result.orderCount.shipPrepareCount);
-			$('#shippingCount').text(result.orderCount.shippingCount);
-			$('#shipCompleteCount').text(result.orderCount.shipCompleteCount);
-			$('#orderCreCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
+	/* 210409_추가 : alert 모음 */
+	$(document).on("click", "#btn_purchase_confirm", function(){
+		mcxDialog.confirm("구매확정 후에는 반품/교환이 불가합니다. 구매확정하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",  // Confirmation button text
+			sureBtnClick: function() {  // Confirm button click callback
+				alert("9,999P가 적립되었습니다.");
+			}
 		});
-	}
+	});
 
-	// 주문상세상태코드 셀렉트박스 변경 이벤트
-	$('.select_custom.demand_status').find('li').on('click', function() {
-		$('#searchForm input[name=chgStat]').val($(this).attr('code'));
+	$(document).on("click", "#btn_sms_alert", function(){
+		mcxDialog.alert("SMS로 선물내역을 다시 전송하였습니다.", { 
+				//alert("선물하기 SMS를 조금 전 다시 발송하였습니다. 잠시 후 다시 시도해주세요."); : SMS 발송한지 10분이 지나지 않았을 경우
+			sureBtnText: "닫기",  
+		});
 	});
+	/* //210409_추가 : alert 모음 */
+	
+	// 등급쿠폰 다운 클릭 이벤트
+	var fnDownloadCoupon = function() {
+		let url = '/mypage/coupon/download/all';
 
-	// 주문내역 리스트 처리
-	var fnCreateCreList = function(param) {
-		let tag = '';
-		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
+		let data = {};
+		data.custNo = customerInfo.custNo;
 
-		if (param.creList != null && param.creList.length > 0) {
-			$.each(param.creList, function (idx, creList) {
-				tag += '						<div class="part_goods">\n';
-				tag += '							<div class="goods_head">\n';
-				if (creList.giftPackYn == 'Y') {
-					tag += '								<p>선물일 <span>' + creList.ordDt + '</span></p>\n';
-				} else {
-					tag += '								<p>주문일 <span>' + creList.ordDt + '</span></p>\n';
-				}
-				tag += '								<a href="javascript:void(0)" ordChgSq="' + creList.ordChgSq + '" chgGb="' + creList.oneData.chgGb + '" ordNo ="' + creList.oneData.ordNo + '" onclick="fnGoToCreDetail(this)">상세보기</a>\n';
-				tag += '							</div>\n';
-				tag += '							<div class="goods_cont">\n';
-				$.each(creList.creList, function (index, cre) {
-					tag += '								<!-- 주문상품1 -->\n';
-					tag += '								<div class="goods_info">\n';
-					tag += '									<div class="order_desc">\n';
-					tag += '										<div class="goods_box">\n';
-					tag += '											<div class="gd_item">\n';
-					tag += '												<a href="javascript:void(0)" goodsCd="' + cre.goodsCd + '" onclick="fnGoToGoodsDetail(this)">\n';
-					tag += '													<span class="thumb">\n';
-					tag += '														<img src="' + imageUrl + '/' + cre.sysImgNm + '" width="100%" alt="">\n';
-					tag += '													</span>\n';
-					tag += '													<p>\n';
-					tag += '														<span class="brand">' + cre.brandNm + '</span>\n';
-					// 배송 아이콘 처리
-					if (cre.shotDelvYn == 'Y') {
-						tag += '														<span class="tag primary">총알배송</span>\n';
-					} else if (cre.selfGoodsYn == 'Y') {
-						tag += '														<span class="tag">STYLE24 일반배송</span>\n';
-					} else {
-						tag += '														<span class="tag">업체직배송</span>\n';
-					}
-					tag += '													</p>\n';
-					tag += '													<p>\n';
-					tag += '														<span class="name">' + cre.goodsNm + '</span>\n';
-					tag += '													</p>\n';
-					tag += '												</a>\n';
-					tag += '											</div>\n';
-					tag += '											<div class="gd_opt">\n';
-					tag += '												<div class="option_wrap">\n';
-					tag += '													<span class="title sr-only">주문 옵션</span>\n';
-					// 세트아이템 옵션 처리
-					if (cre.goodsType == 'G056_S') {
-						$.each(cre.colorNmArr, function (index2, option) {
-							tag += '													<span class="option">' + cre.itemNmArr[index2] + ' / ' + option + ' / ' + cre.optCd2Arr[index2] + '</span>\n';
-						});
-					} else {
-						tag += '													<span class="option">' + cre.colorNm + ' / ' + cre.optCd2 + '</span>\n';
-					}
-					tag += '												</div>\n';
-					tag += '											</div>\n';
-					tag += '											<div class="gd_calc">\n';
-					tag += '												<p>\n';
-					tag += '													<span class="count"><em>' + cre.chgQty + '</em>개</span>\n';
-					tag += '												</p>\n';
-					tag += '											</div>\n';
-					tag += '											<div class="gd_opt">\n';
-					tag += '												<div class="option_wrap">\n';
-					// 교환옵션
-					if (cre.chgGb == 'G680_40') {
-						$.each(creList.exchangeOptionList, function(index, exchange) {
-							if (cre.chgOrdDtlNo == exchange.ordDtlNo) {
-								if (cre.goodsType == 'G056_S') {
-									tag += '													<span class="title">교환 옵션</span>';
-									$.each(exchange.colorNmArr, function (index2, option) {
-										tag += '													<span class="option">' + exchange.itemNmArr[index2] + ' / ' + option + ' / ' + exchange.optCd2Arr[index2] + '</span>\n';
-									});
-								} else {
-									tag += '													<span class="option">' + exchange.colorNm + ' / ' + exchange.optCd2 + '</span>\n';
-								}
-							}
-						});
-					}
-					tag += '												</div>\n';
-					tag += '											</div>\n';
-					tag += '										</div>\n';
-					tag += '										<div class="status_box">\n';
-					tag += '											<p>\n';
-					tag += '												' + cre.chgStatNm + '\n';
-					tag += '												<span class="date">' + cre.chgDate + '</span>\n';
-					tag += '												<span class="time">' + cre.chgTime + '</span>\n';
-					tag += '											</p>\n';
-					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';
-					}
-					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';
-					}
-					if (cre.chgStat == 'G685_40') {
-						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordDtlNo="' + cre.ordDtlNo + '" onclick="fnGoToDeliveryTrack(this);"><span>배송조회</span></button></p>\n';
-					}
-					tag += '											<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></p>\n';
-					tag += '										</div>\n';
-					tag += '									</div>\n';
-					//if (cre.chgStat == 'G685_10') {
-					//	tag += '									<div class="order_text"><p>' + cre.addPayCost + '원 결제 후 취소 가능합니다.</p></div>\n';
-					//}
-					// cre.chgGb == 'G680_30' : 반품
-					// cre.chgGb == 'G680_40' : 교환
-					// 교환접수
-					if (cre.chgStat == 'G685_20') {
-						tag += '									<div class="order_text"><p>교환 신청이 접수 되었습니다. 신속하게 처리하여 드리겠습니다.</p></div>\n';
-					}
-					// 교환대기
-					if (cre.chgStat == 'G685_21') {
-						tag += '									<div class="order_text"><p>' + cre.addPayCost.addComma() + '원 결제 후 교환 가능합니다.</p></div>\n';
-					}
-					// 회수요청
-					if (cre.chgStat == 'G685_30') {
-						tag += '									<div class="order_text"><p>고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p></div>\n';
-					}
-					// 상품 검수중(교환)
-					if (cre.chgStat == 'G685_31' && cre.chgGb == 'G680_40') {
-						tag += '									<div class="order_text"><p>고객님이 교환하신 상품을 검수 중에 있습니다.</p></div>\n';
-					}
-					// 결제대기(교환)
-					if (cre.chgStat == 'G685_32' && cre.chgGb == 'G680_40') {
-						tag += '									<div class="order_text"><p>' + cre.addPayCost.addComma() + '원 결제 후 교환 가능합니다.</p></div>\n';
-					}
-					// 교환완료
-					if (cre.chgStat == 'G685_40') {
-						$.each(creList.exchangeOptionList, function(index, exchange) {
-							if (cre.chgOrdDtlNo == exchange.ordDtlNo && (exchange.ordDtlStat == 'G013_60' || exchange.ordDtlStat == 'G013_70')) {
-								tag += '									<div class="order_text"><p>교환이 완료되었습니다.</p></div>\n';
-							}
-						});
-					}
-					// 교환철회
-					if (cre.chgStat == 'G685_49') {
-						tag += '									<div class="order_text"><p>요청하신 교환을 취소하였습니다.</p></div>\n';
-					}
-					// 반품접수
-					if (cre.chgStat == 'G685_50') {
-						tag += '									<div class="order_text"><p>반품 신청이 접수 되었습니다. 신속하게 처리하여 드리겠습니다.</p></div>\n';
-					}
-					// 반품대기
-					if (cre.chgStat == 'G685_51') {
-						tag += '									<div class="order_text"><p>' + cre.addPayCost.addComma() + '원 결제 후 반품 가능합니다.</p></div>\n';
-					}
-					// 상품 검수중(반품)
-					if (cre.chgStat == 'G685_31' && cre.chgGb == 'G680_40') {
-						tag += '									<div class="order_text"><p>고객님이 반품하신 상품을 검수 중에 있습니다.</p></div>\n';
-					}
-					// 결제대기(반품)
-					if (cre.chgStat == 'G685_32' && cre.chgGb == 'G680_40') {
-						tag += '									<div class="order_text"><p>' + cre.addPayCost.addComma() + '원 결제 후 반품 가능합니다.</p></div>\n';
-					}
-					// 환불진행중
-					if (cre.chgStat == 'G685_33') {
-						tag += '									<div class="order_text"><p>' + cre.refundAmt.addComma() + '원 환불을 진행하고 있습니다.(영업일 최대 3일 내 환불 예정)</p></div>\n';
-					}
-					// 반품완료
-					if (cre.chgStat == 'G685_60') {
-						tag += '									<div class="order_text"><p>반품이 완료되었습니다.</p></div>\n';
-					}
-					// 반품철회
-					if (cre.chgStat == 'G685_69') {
-						tag += '									<div class="order_text"><p>요청하신 반품을 취소하였습니다.</p></div>\n';
-					}
-					tag += '								</div>\n';
-				});
-				tag += '							</div>\n';
-				tag += '						</div>\n';
-			});
-		} else {
-			// 데이터 없음 표시
-			tag += '						<div class="nodata">';
-			tag += '							<div class="txt_box">';
-			tag += '								<p>';
-			tag += '									취소/반품/교환내역이 없습니다.<br>';
-			tag += '								</p>';
-			tag += '							</div>';
-			tag += '						</div>';
-		}
+		let jsonData = JSON.stringify(data);
 
-		return tag;
+		gagajf.ajaxJsonSubmit(url, jsonData, function() {
+			fnReloadCouponCount();
+		});
 	}
 	
-	// 취반교 상세 페이지 이동
-	var fnGoToCreDetail = function(param) {
-		let ordChgSq = $(param).attr('ordChgSq');
-		let chgGb = $(param).attr('chgGb');
-		let ordNo = $(param).attr('ordNo');
+	// 보유쿠폰 수량 업데이트 처리
+	var fnReloadCouponCount = function() {
+		let url = '/mypage/coupon/count';
 		
-		if (chgGb == 'G680_20') {
-			$('#cancelForm input[name=ordChgSq]').val(ordChgSq);
-			$('#cancelForm input[name=ordNo]').val(ordNo);
-			document.cancelForm.submit();
-		} else if (chgGb == 'G680_30') {
-			$('#returnForm input[name=ordChgSq]').val(ordChgSq);
-			$('#returnForm input[name=ordNo]').val(ordNo);
-			document.returnForm.submit();
-		} else if (chgGb == 'G680_40') {
-			$('#exchangeForm input[name=ordChgSq]').val(ordChgSq);
-			$('#exchangeForm input[name=ordNo]').val(ordNo);
-			document.exchangeForm.submit();
-		}
-	}
-	
-	// 취반교 배송조회 버튼 클릭 이벤트
-	var fnGoToDeliveryTrack = function(param) {
-		let ordDtlNo = $(param).attr('ordDtlNo');
-		// TODO
-		// 최반교 배송조회 페이지 이동 처리
+		let data = {};
+		data.custNo = customerInfo.custNo;
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			$('#couponCnt').text(result.couponCnt);
+			$('#expiredSoonCouponCnt').text(result.expiredSoonCouponCnt);
+		});
 	}
-/*]]>*/
 </script>
 
 </th:block>

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

@@ -1,211 +1,254 @@
 <div class="inner">
 	<div class="part_goods">
-		<!-- 취소,반품,교환 목록 -->
-		<th:block th:each="creList , i : ${creList}">
-			<div class="goods_top">
-				<!-- 선물주문여부체크 -->
-				<th:block th:if="${creList.giftPackYn} == 'Y'">
-					<div class="goods_date">선물일<span class="date" th:text="${creList.ordDt}"></span></div>
-				</th:block>'
-				<th:block th:unless="${creList.giftPackYn} == 'Y'">
-					<div class="goods_date">주문일<span class="date" th:text="${creList.ordDt}"></span></div>
-				</th:block>
-				<!-- //선물주문여부체크 -->
-				<a href="javascript:void(0);" th:ordChgSq="${creList.ordChgSq}" th:chgGb="${creList.oneData.chgGb}" th:ordNo="${creList.oneData.ordNo}" onclick="fnGoToCreDetail(this);" class="detail_btn">상세보기</a>
-			</div>
-			
-			<th:block th:each="cre , i , ${creList.creList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-				<div class="goods_section">
-					<div class="goods_status">
-						<p class="dlvr_staus" th:text="${cre.chgStatNm}"></p>
-						<!--  
-						<p class="dlvr_staus">회수 요청</p>
-						<p class="dlvr_staus">상품 검수 중</p>
-						<p class="dlvr_staus">교환 상품 발송</p> 
-						<p class="dlvr_staus">환불 진행 중</p>
-						<p class="dlvr_staus">완료</p>
-						<p class="dlvr_staus">접수 취소</p>
-						<p class="dlvr_staus">결제 대기</p>
-						-->
-						<p class="dlvr_desc"><th:block th:text="|${cre.chgDate} ${cre.chgTime}|"></p>
-					</div>
-					<div class="goods_detail">
-						<a href="javascript:void(0);">
-							<div class="thumb_box">
-								<img th:src="${imageUrl + '/' + cre.sysImgNm}" src="/" width="100%" alt="">
-							</div>
-							<div class="info_box">
-								<div class="od_name">
-									<div class="brand">
-										<span th:text="${cre.brandNm}"></span>
-										<div class="badge_wrap">
-											<th:block th:if="${cre.shotDelvYn} == 'Y'">
-												<em class="order_badge">STYLE24 일반배송</em>
-											</th:block>
-											<th:block th:if="${cre.selfGoodsYn} == 'Y' and ${cre.shotDelvYn} == 'N'">
-												<em class="order_badge order_bullet_badge">총알배송</em>
-											</th:block>
-											<th:block th:if="${cre.selfGoodsYn} == 'N' and ${cre.shotDelvYn} == 'N'">
-												<em class="order_badge order_bullet_badge">업체직배송</em>
-											</th:block>
+		<!-- 취소,반품,교환목록 있을때 -->
+		<th:block th:if="${#lists.size(creList) > 0}">
+			<!-- 취소,반품,교환목록 -->
+			<th:block th:each="creList , i : ${creList}">
+				<div class="goods_top">
+					<!-- 선물주문여부체크 -->
+					<th:block th:if="${creList.giftPackYn} == 'Y'">
+						<div class="goods_date">선물일<span class="date" th:text="${creList.ordDt}"></span></div>
+					</th:block>'
+					<th:block th:unless="${creList.giftPackYn} == 'Y'">
+						<div class="goods_date">주문일<span class="date" th:text="${creList.ordDt}"></span></div>
+					</th:block>
+					<!-- //선물주문여부체크 -->
+					<a href="javascript:void(0);" th:ordChgSq="${creList.ordChgSq}" th:chgGb="${creList.oneData.chgGb}" th:ordNo="${creList.oneData.ordNo}" onclick="fnGoToCreDetail(this);" class="detail_btn">상세보기</a>
+				</div>
+				
+				<th:block th:each="cre , i : ${creList.creList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+					<div class="goods_section">
+						<div class="goods_status">
+							<p class="dlvr_staus" th:text="${cre.chgStatNm}"></p>
+							<p class="dlvr_desc"><th:block th:text="|${cre.chgDate} ${cre.chgTime}|"></p>
+						</div>
+						<div class="goods_detail">
+							<a href="javascript:void(0);">
+								<div class="thumb_box">
+									<img th:src="${imageUrl + '/' + cre.sysImgNm}" src="/" width="100%" alt="">
+								</div>
+								<div class="info_box">
+									<div class="od_name">
+										<div class="brand">
+											<span th:text="${cre.brandNm}"></span>
+											<div class="badge_wrap">
+												<th:block th:if="${cre.shotDelvYn} == 'Y'">
+													<em class="order_badge">STYLE24 일반배송</em>
+												</th:block>
+												<th:block th:if="${cre.selfGoodsYn} == 'Y' and ${cre.shotDelvYn} == 'N'">
+													<em class="order_badge order_bullet_badge">총알배송</em>
+												</th:block>
+												<th:block th:if="${cre.selfGoodsYn} == 'N' and ${cre.shotDelvYn} == 'N'">
+													<em class="order_badge order_bullet_badge">업체직배송</em>
+												</th:block>
+											</div>
 										</div>
+										<div class="name" th:text="${cre.goodsNm}"></div>
 									</div>
-									<div class="name" th:text="${cre.goodsNm}"></div>
-								</div>
-								<div class="od_opt">
-									<!-- 세트상품일때 -->
-									<th:block th:if="${cre.goodsType} == 'G056_S'">
-										<th:block th:each="option , index2 , ${cre.colorNmArr}">
+									<div class="od_opt">
+										<!-- 세트상품일때 -->
+										<th:block th:if="${cre.goodsType} == 'G056_S'">
+											<th:block th:each="option , index2 , ${cre.colorNmArr}">
+												<div class="option">
+													<em th:text="${option]}"></em>
+													<em th:text="${cre.optCd2Arr[index2]}"></em>
+												</div>
+											</th:block>
+										</th:block>
+										<!-- //세트상품일때 -->
+										<!-- 단품상품일때 -->
+										<th:block th:unless="${cre.goodsType} == 'G056_S'">
 											<div class="option">
-												<em th:text="${option]}"></em>
-												<em th:text="${cre.optCd2Arr[index2]}"></em>
+												<em th:text="${cre.colorNm}"></em>
+												<em th:text="${cre.optCd2}"></em>
 											</div>
 										</th:block>
-									</th:block>
-									<!-- //세트상품일때 -->
-									<!-- 단품상품일때 -->
-									<th:block th:unless="${cre.goodsType} == 'G056_S'">
-										<div class="option">
-											<em th:text="${cre.colorNm}"></em>
-											<em th:text="${cre.optCd2}"></em>
-										</div>
-									</th:block>
-									<!-- //단품상품일때 -->
-								</div>
-								
-								<!-- 교환일때 -->
-								<th:block th:if="${cre.chgGb} == 'G680_40'">
-									<div class="od_exchange_opt">
-										<span>교환옵션</span>
-										<th:block th:each="exchange , index, ${creList.exchangeOptionList}">
-											<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo}">
-												<!-- 세트상품일때 -->
-												<th:block th:if="${cre.goodsType} == 'G056_S'">
-													<th:block th:each-="option, index2, ${exchange.colorNmArr}">
+										<!-- //단품상품일때 -->
+									</div>
+									
+									<!-- 교환일때 -->
+									<th:block th:if="${cre.chgGb} == 'G680_40'">
+										<div class="od_exchange_opt">
+											<span>교환옵션</span>
+											<th:block th:each="exchange , index, ${creList.exchangeOptionList}">
+												<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo}">
+													<!-- 세트상품일때 -->
+													<th:block th:if="${cre.goodsType} == 'G056_S'">
+														<th:block th:each-="option, index2, ${exchange.colorNmArr}">
+															<div class="option">
+																<em th:text="${exchange.itemNmArr[index2]}"></em>
+																<em th:text="${exchange.optCd2Arr[index2]}"></em>
+															</div>
+														</th:block>
+													</th:block>
+													<!-- //세트상품일때 -->
+													<!-- 일반상품일때 -->
+													<th:block th:unless="${cre.goodsType} == 'G056_S'">
 														<div class="option">
-															<em th:text="${exchange.itemNmArr[index2]}"></em>
-															<em th:text="${exchange.optCd2Arr[index2]}"></em>
+															<em th:text="${exchange.colorNm}"></em>
+															<em th:text="${exchange.optCd2}"></em>
 														</div>
 													</th:block>
+													<!-- //일반상품일때 -->
 												</th:block>
-												<!-- //세트상품일때 -->
-												<!-- 일반상품일때 -->
-												<th:block th:unless="${cre.goodsType} == 'G056_S'">
-													<div class="option">
-														<em th:text="${exchange.colorNm}"></em>
-														<em th:text="${exchange.optCd2}"></em>
-													</div>
-												</th:block>
-												<!-- //일반상품일때 -->
 											</th:block>
-										</th:block>
+										</div>
+									</th:block>
+									<!-- //교환일때 -->
+									
+									<div class="od_calc">
+										<p class="price">
+											<span class="count"><em th:text="${cre.chgQty}"></em>개</span>
+										</p>
 									</div>
-								</th:block>
-								<!-- //교환일때 -->
-								
-								<div class="od_calc">
-									<p class="price">
-										<span class="count"><em th:text="${cre.chgQty}"></em>개</span>
-									</p>
 								</div>
-							</div>
-						</a>
-					</div>
-					
-					<!-- 취소,반품,교환 상태별 버튼기능정의 -->
-					<div class="goods_btn_wrap btn_group_flex">
-						<!-- 교환접수 -->
-						<th:block th:if="${cre.chgStat} == 'G685_20'">
-							<div><button type="button" id="btn_return_cancle" class="btn btn_default"><span>신청 취소</span></button></div>
-							<div><button type="button" class="btn btn_default"><span>1:1 문의</span></button></div>
-						</th:block>
-						<!-- //교환접수 -->
-						<!-- 회수요청 -->
-						<th:block th:if="${cre.chgStat} == 'G685_30'">
-							<div><button type="button" class="btn btn_default"><span>1:1 문의</span></button></div>
-						</th:block>
-						<!-- 회수요청 -->
+							</a>
+						</div>
+						<!-- 취소,반품,교환 상태별 버튼기능정의 -->
+						<div class="goods_btn_wrap btn_group_flex">
+							<!-- 신청취소 -->
+							<th:block th:if="${cre.chgStat} == 'G685_20' or ${cre.chgStat} == 'G685_21' or ${cre.chgStat} == 'G685_50' or ${cre.chgStat} == 'G685_51'">
+								<div>
+									<button type="button" class="btn btn_default" th:ordNo="${cre.ordNo}" th:ordChgSq="${cre.ordChgSq}" th:cancelGb="${cre.chgGb}" onclick="fnCreCancel(this);">
+										<span>신청취소</span>
+									</button>
+								</div>
+							</th:block>
+							<!-- //신청취소 -->
+							<!-- 결제하기 -->
+							<th:block th:if="${cre.chgStat} == 'G685_21' or ${cre.chgStat} == 'G685_51' or ${cre.chgStat} == 'G685_32'">
+								<div>
+									<button type="button" class="btn btn_default" th:ordNo="${cre.ordNo}" th:ordChgSq="${cre.ordChgSq}" onclick="fnCrePayAddCost(this);">
+										<span>결재하기</span>
+									</button>
+								</div>
+							</th:block>
+							<!-- //결제하기 -->
+							<!-- 배송조회 -->
+							<th:block th:if="${cre.chgStat} == 'G685_40'">
+								<div>
+									<button type="button" class="btn btn_default" th:ordDtlNo="${cre.ordDtlNo}" onclick="fnGoToDeliveryTrack(this);">
+										<span>배송조회</span>
+									</button>
+								</div>
+							</th:block>
+							<!-- //배송조회 -->
+							<div><button type="button" class="btn btn_default" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의</span></button></div>
+						</div>
+						<!-- //취소,반품,교환 상태별 버튼기능정의 -->
 						
-					</div>
-					<!-- //취소,반품,교환 상태별 버튼기능정의 -->
-					
-					<!-- 취소,반품,교환 상태별 문구정의 -->
-					<div class="goods_txt">
+						<!-- 취소,반품,교환 상태별 문구정의 -->
 						<!-- 교환접수 -->
 						<th:block th:if="${cre.chgStat} == 'G685_20'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							</div>
 						</th:block>
 						<!-- //교환접수 -->
 						<!-- 회수요청 -->
 						<th:block th:if="${cre.chgStat} == 'G685_30'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">고객님이 요청하신 회수지로 상품을 회수 중에 있습니다.</p></p>
+							</div>
 						</th:block>
 						<!-- //회수요청 -->
 						<!-- 상품검수중(교환) -->
 						<th:block th:if="${cre.chgStat} == 'G685_31' and ${cre.chgGb} == 'G680_40'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">고객님이 교환하신 상품을 검수 중에 있습니다.</p>
+							</div>
 						</th:block>
 						<!-- //상품검수중(교환) -->
 						<!-- 결제대기(교환) -->
 						<th:block th:if="${cre.chgStat} == 'G685_32' and ${cre.chgGb} == 'G680_40'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc" th:text="|${#numbers.formatInteger(cre.addPayCost, 1, 'COMMA')} 원 결제 후 교환 가능합니다.|"></p>
+							</div>
 						</th:block>
 						<!-- //결제대기(교환) -->
 						<!-- 교환완료 -->
 						<th:block th:if="${cre.chgStat} == 'G680_40'">
 							<th:block th:each="exchange, index , ${creList.exchangeOptionList}">
 								<th:block th:if="${cre.chgOrdDtlNo} == ${exchange.ordDtlNo} and (${exchange.ordDtlStat} == 'G013_60' or ${exchange.ordDtlStat} == 'G013_70')">
-									<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">교환이 완료되었습니다.</p>
+									</div>
 								</th:block>
 							</th:block>
 						</th:block>
 						<!-- //교환완료 -->
 						<!-- 교환철회 -->
 						<th:block th:if="${cre.chgStat} == 'G685_49'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">요청하신 교환을 취소하였습니다.</p>
+							</div>
 						</th:block>
 						<!-- //교환철회 -->
 						
 						<!-- 반품접수 -->
 						<th:block th:if="${cre.chgStat} == 'G685_50'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">반품 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							</div>
 						</th:block>
 						<!-- //반품접수 -->
 						<!-- 반품대기 -->
 						<th:block th:if="${cre.chgStat} == 'G685_51'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc" th:text="|${#numbers.formatInteger(cre.addPayCost, 1, 'COMMA')} 원 결제 후 반품 가능합니다.|"></p>
+							</div>
 						</th:block>
 						<!-- //반품대기 -->
 						<!-- 상품검수중(반품) -->
 						<th:block th:if="${cre.chgStat} == 'G685_31' AND ${cre.chgGb} == 'G680_30'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">고객님이 반품하신 상품을 검수 중에 있습니다.</p>
+							</div>
 						</th:block>
 						<!-- //상품검수중(반품) -->	
 						<!-- 결제대기(반품) -->
 						<th:block th:if="${cre.chgStat} == 'G685_32' AND ${cre.chgGb} == 'G680_30'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc" th:text="|${#numbers.formatInteger(cre.addPayCost, 1, 'COMMA')} 원 결제 후 반품 가능합니다.|"></p>
+							</div>
 						</th:block>
 						<!-- //결제대기(반품) -->
 						<!-- 환불진행중 -->
 						<th:block th:if="${cre.chgStat} == 'G685_33'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc" th:text="|${#numbers.formatInteger(cre.addPayCost, 1, 'COMMA')} 원 환불을 진행하고 있습니다.(영업일 최대 3일 내 환불 예정)|"></p>
+							</div>
 						</th:block>
 						<!-- //환불진행중 -->
 						<!-- 반품완료 -->
 						<th:block th:if="${cre.chgStat} == 'G685_60'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">반품이 완료되었습니다.</p>
+							</div>
 						</th:block>
 						<!-- //반품완료 -->
 						<!-- 반품철회 -->
 						<th:block th:if="${cre.chgStat} == 'G685_69'">
-							<p class="cf_txt cf_desc">교환 신청이 접수 되었습니다.<br>신속하게 처리하여 드리겠습니다.</p>
+							<div class="goods_txt">
+								<p class="cf_txt cf_desc">요청하신 반품을 취소하였습니다.</p>
+							</div>
 						</th:block>
 						<!-- //반품철회 -->
+						<!-- //취소,반품,교환 상태별 문구정의 -->
 					</div>
-					<!-- //취소,반품,교환 상태별 문구정의 -->
-				</div>
+				</th:block>
 			</th:block>
 		</th:block>
+		<!-- //취소,반품,교환목록 있을때 -->
+		<!-- 취소,반품,교환목록 없을때 -->
+		<th:block th:if="${#lists.size(creList) < 1}">
+			<div class="nodata">
+				<div class="txt_box">
+					<p>취소/반품/교환내역이 없습니다.<br/></p>
+				</div>
+			</div>
+		</th:block>
+		<!-- //취소,반품,교환목록 없을때 -->
 	</div>
 </div>
 

+ 330 - 0
src/main/webapp/WEB-INF/views/mob/mypage/MypageCreReturnDetailFormMob.html

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

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

@@ -370,7 +370,7 @@
 													<li>
 														<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
 														<th:block th:if="${freeGift.usePoint} > 0">
-															<span class="deduct_p" th:text="|(-${freeGift.usePoint.addComma()}P)|"></span>
+															<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
 														</th:block>
 													</li>
 												</th:block>
@@ -649,7 +649,7 @@
 									<th:block th:if="${orderAmtInfo.savePntAmt} > 0">
 										<div>
 											<dt>적립예정 포인트</dt>
-											<dd><div><span th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}P|">3000</span>P</div></dd>
+											<dd><div><span th:text="|${#numbers.formatInteger(orderAmtInfo.savePntAmt, 1, 'COMMA')}|"></span>P</div></dd>
 										</div>
 									</th:block>
 									<div>
@@ -772,6 +772,7 @@
 					gagajf.showProgressbar(true);
 				},
 				success 	: function(result) {
+					gagajf.showProgressbar(false);
 					$("#adrsChangePop .modal-dialog .modal-content").html(result);
 					$("#adrsChangePop").modal("show");
 				}
@@ -791,6 +792,7 @@
 					gagajf.showProgressbar(true);
 				},
 				success 	: function(result) {
+					gagajf.showProgressbar(false);
 					$("#adrsAddPop .modal-dialog .modal-content").html(result);
 					$("#adrsAddPop").modal("show");
 				}
@@ -824,6 +826,7 @@
 					gagajf.showProgressbar(true);
 				},
 				success 	: function(result) {
+					gagajf.showProgressbar(false);
 					$("#refundPop .modal-dialog .modal-content").html(result);
 					$("#refundPop").modal("show");
 				}

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

@@ -276,6 +276,9 @@ $(document).ready(function() {
 		var ordDtlStatNm = $(this).find("span").text();
 		$(".container .my_order .od_status_btn").text(ordDtlStatNm);
 		
+		// 리헷
+		$("#listBox").html("");
+		
 		// 초기화설정
 		fnGetInfiniteScrollDataList(0);
 	});
@@ -308,6 +311,7 @@ var fnGetInfiniteScrollDataList = function(pageNo) {
 			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
+			gagajf.showProgressbar(false);
 			if (result != null) {
 				$("#listBox").css("display", "block");
 				$("#listBox").append(result);
@@ -390,7 +394,6 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 */
 </script>
 
-<!-- 210408_스크립트 추가 -->
 <script>
 	$(document).ready(function(){
 		$(document).on('click','.popup_box .button_list button',function(){
@@ -465,7 +468,6 @@ $(function() { gagaInfiniteScroll.getHistory(); });
 		});
 	}
 </script>
-<!-- //210408_스크립트 추가 -->
 </th:block>
 </body>
 </html>

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

@@ -1,373 +1,375 @@
 <div class="inner">
 	<div class="part_goods">
-		
-		<th:block th:each="order , i : ${orderList}">
-			<div class="goods_top">
-				<th:block th:if="${order.giftPackYn} == 'Y'">
-					<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
-				</th:block>
-				<th:block th:if="${order.giftPackYn} == 'N'">
-					<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
-				</th:block>
-				<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this)">상세보기</a>
-			</div>
-			
-			<th:block th:each="ordDtl , j : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
-				<!-- 주문 접수 -->
-				<div class="goods_section">
-					<div class="goods_status">
-						<!-- 선물배송일때 -->
-						<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
-							<div class="goods_txt">
-								<!-- 배송지등록전 -->
-								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
-									<p class="dlvr_staus">주소 입력 대기 중</p>
-								</th:block>
-								<!-- //배송지등록전 -->
-								
-								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
-								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
-									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-										<p class="dlvr_staus">선물 완료</p>
+		<!-- 주문목록이 있을때 -->
+		<th:block th:if="${#lists.size(orderList) > 0}">
+			<th:block th:each="order , i : ${orderList}">
+				<div class="goods_top">
+					<th:block th:if="${order.giftPackYn} == 'Y'">
+						<div class="goods_date">선물일<span class="date" th:text="${order.ordDt}"></span></div>
+					</th:block>
+					<th:block th:if="${order.giftPackYn} == 'N'">
+						<div class="goods_date">주문일<span class="date" th:text="${order.ordDt}"></span></div>
+					</th:block>
+					<a href="javascript:void(0);" class="detail_btn" th:ordno="${order.ordNo}" onclick="fnGoToOrderDetail(this)">상세보기</a>
+				</div>
+				
+				<th:block th:each="ordDtl , j : ${order.ordDtlList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+					<!-- 주문 접수 -->
+					<div class="goods_section">
+						<div class="goods_status">
+							<!-- 선물배송일때 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+								<div class="goods_txt">
+									<!-- 배송지등록전 -->
+									<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+										<p class="dlvr_staus">주소 입력 대기 중</p>
 									</th:block>
-								</th:block>
-								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
-								
-								<!-- 선물 취소 -->
-								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
-									<p class="dlvr_staus">선물 취소</p>
-								</th:block>
-								<!-- //선물 취소 -->
-							</div>
-						</th:block>
-						<!-- //선물배송일때 -->
-						
-						<!-- 일반배송일때 -->
-						<th:block th:if="${ordDtl.giftPackYn} == 'N'">
-							<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
-						</th:block>
-						<!-- //일반배송일때 -->
-					</div>
-					<div class="goods_detail">
-						<a href="">
-							<div class="thumb_box">
-								<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" src="/" width="100%" alt="">
-							</div>
-							<div class="info_box">
-								<div class="od_name">
-									<div class="brand">
-										<span th:text="${ordDtl.brandNm}"></span>
-										<div class="badge_wrap">
-											<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
-												<em class="order_badge order_bullet_badge">총알배송</em>
-											</th:block>
-											<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
-												<em class="order_badge">STYLE24 일반배송</em>
-											</th:block>
-											<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
-												<em class="order_badge">업체직배송</em>
-											</th:block>
+									<!-- //배송지등록전 -->
+									
+									<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+										<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+											<p class="dlvr_staus">선물 완료</p>
+										</th:block>
+									</th:block>
+									<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+									
+									<!-- 선물 취소 -->
+									<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+										<p class="dlvr_staus">선물 취소</p>
+									</th:block>
+									<!-- //선물 취소 -->
+								</div>
+							</th:block>
+							<!-- //선물배송일때 -->
+							
+							<!-- 일반배송일때 -->
+							<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+								<p class="dlvr_staus" th:text="${ordDtl.ordDtlStatNm}"></p>
+							</th:block>
+							<!-- //일반배송일때 -->
+						</div>
+						<div class="goods_detail">
+							<a href="">
+								<div class="thumb_box">
+									<img th:src="${imageUrl + '/' + ordDtl.sysImgNm}" src="/" width="100%" alt="">
+								</div>
+								<div class="info_box">
+									<div class="od_name">
+										<div class="brand">
+											<span th:text="${ordDtl.brandNm}"></span>
+											<div class="badge_wrap">
+												<th:block th:if="${ordDtl.shotDelvYn} == 'Y'">
+													<em class="order_badge order_bullet_badge">총알배송</em>
+												</th:block>
+												<th:block th:if="${ordDtl.selfGoodsYn} == 'Y'">
+													<em class="order_badge">STYLE24 일반배송</em>
+												</th:block>
+												<th:block th:if="${ordDtl.shotDelvYn} != 'Y' and ${ordDtl.selfGoodsYn} != 'Y'">
+													<em class="order_badge">업체직배송</em>
+												</th:block>
+											</div>
 										</div>
+										<div class="name" th:text="${ordDtl.goodsNm}"></div>
 									</div>
-									<div class="name" th:text="${ordDtl.goodsNm}"></div>
-								</div>
-								<div class="od_opt">
-									<div class="option" th:each="colorNm, index : ${ordDtl.colorNmArr}">
-										<em th:text="${colorNm}"></em>
-										<em th:text="${ordDtl.optCd2Arr[index.index]}"></em>
+									<div class="od_opt">
+										<div class="option" th:each="colorNm, index : ${ordDtl.colorNmArr}">
+											<em th:text="${colorNm}"></em>
+											<em th:text="${ordDtl.optCd2Arr[index.index]}"></em>
+										</div>
 									</div>
-								</div>
-								<div class="od_calc">
-									<!-- 판매금액과 할인금액이 같으면 표시 안함 -->
-									<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt} - ${ordDtl.cpn1DcAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
-										<p class="sale_price">
-											<del>
-												<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원
-											</del>
+									<div class="od_calc">
+										<!-- 판매금액과 할인금액이 같으면 표시 안함 -->
+										<th:block th:if="(${ordDtl.ordAmt} - ${ordDtl.cnclRtnAmt} - ${ordDtl.cpn1DcAmt}) > ${ordDtl.realOrdAmt} + ${ordDtl.pntDcAmt} + ${ordDtl.gfcdUseAmt}">
+											<p class="sale_price">
+												<del>
+													<em th:text="${#numbers.formatInteger(ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt, 1, 'COMMA')}"></em>원
+												</del>
+											</p>
+										</th:block>
+										<p class="price">
+											<span class="selling_price">
+												<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
+											</span>
+											<span class="count">
+												<em th:text="${ordDtl.ordQty} - ${ordDtl.cnclRtnQty}"></em>개
+											</span>
 										</p>
-									</th:block>
-									<p class="price">
-										<span class="selling_price">
-											<em th:text="${#numbers.formatInteger(ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt, 1, 'COMMA')}"></em>원
-										</span>
-										<span class="count">
-											<em th:text="${ordDtl.ordQty} - ${ordDtl.cnclRtnQty}"></em>개
-										</span>
-									</p>
+									</div>
 								</div>
-							</div>
-						</a>
-					</div>
-					
-					<!-- 버튼기능정리 -->
-					<!-- 일반배송 -->
-					<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
-						<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
-							<div class="goods_btn_wrap btn_group_flex">
-								<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
-							</div>
-						</th:block>
-						<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
-						
-						<!-- 배송준비중-->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
-						</th:block>
-						<!-- //배송준비중-->
+							</a>
+						</div>
 						
-						<!-- 배송중 (교환가능, 반품가능) -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
-							<!-- 교환가능, 반품가능 -->
-							<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+						<!-- 버튼기능정리 -->
+						<!-- 일반배송 -->
+						<th:block th:unless="${ordDtl.giftPackYn} == 'Y'">
+							<!-- 입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
 								<div class="goods_btn_wrap btn_group_flex">
-									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-										<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
-									</th:block>
-									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-										<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
-									</th:block>
+									<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
 								</div>
 							</th:block>
-							<!-- //교환가능, 반품가능 -->
+							<!-- //입금대기, 결제완료, 상품준비중, 출고처지정 (주문취소) -->
 							
-							<!-- 리뷰사용가능, 리뷰등록전일때 -->
-							<div class="goods_btn_wrap btn_group_flex">
-								<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
-								<!-- 리뷰사용가능, 리뷰등록전일때 -->
-								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
-								</th:block>
-								<!-- //리뷰사용가능, 리뷰등록전일때 -->
-							</div>
-							<!-- //리뷰사용가능, 리뷰등록전일때 -->
-						</th:block>
-						<!-- //배송중 (교환가능, 반품가능) -->
+							<!-- 배송준비중-->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+							</th:block>
+							<!-- //배송준비중-->
 							
-						<!-- 배송완료 (교환가능, 반품가능) -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
-							<div class="goods_btn_wrap btn_group_flex">
+							<!-- 배송중 (교환가능, 반품가능) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55'">
 								<!-- 교환가능, 반품가능 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'Y'">
-									<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
-								</th:block>
-								<th:block th:if="${ordDtl.returnableYn} == 'Y'">
-									<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+								<th:block th:if="${ordDtl.changeableYn} == 'Y' or ${ordDtl.returnableYn} == 'Y'">
+									<div class="goods_btn_wrap btn_group_flex">
+										<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+										</th:block>
+										<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+											<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+										</th:block>
+									</div>
 								</th:block>
 								<!-- //교환가능, 반품가능 -->
 								
-								<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><span>구매 확정</span></button></div>
-							</div>
-							<div class="goods_btn_wrap btn_group_flex">
-								<!-- 교환불가, 반품불가 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
-									<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
-								</th:block>
-								<!-- //교환불가, 반품불가 -->
-								
 								<!-- 리뷰사용가능, 리뷰등록전일때 -->
-								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
-								</th:block>
-								<!-- //리뷰사용가능, 리뷰등록전일때 -->
-							</div>
-						</th:block>
-						<!-- //배송완료 (교환가능, 반품가능) -->
-						
-						<!-- 구매확정 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
-							<div class="goods_btn_wrap btn_group_flex">
-								<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
-								<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
-								
-								<!-- 리뷰사용가능, 리뷰등록전일때 -->
-								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
-									<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
-								</th:block>
+								<div class="goods_btn_wrap btn_group_flex">
+									<div><button type="button" class="btn btn_default btn_delv_sch"><span>배송 조회</span></button></div>
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</div>
 								<!-- //리뷰사용가능, 리뷰등록전일때 -->
-							</div>
-						</th:block>
-						<!-- //구매확정 -->
-					</th:block>
-					
-					<!--  선물배송 -->
-					<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
-						<!-- 선물배송, 배송미입력 -->
-						<div class="goods_btn_wrap btn_group_flex">
-							<!-- 배송지등록전 -->
-							<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
-								<div><button type="button" class="btn btn_primary btn_sms_send"><span>SMS 재발송</span></button></div>
 							</th:block>
-							<!-- //배송지등록전 -->
-							
-							<!-- 배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
-								<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
+							<!-- //배송중 (교환가능, 반품가능) -->
+								
+							<!-- 배송완료 (교환가능, 반품가능) -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+								<div class="goods_btn_wrap btn_group_flex">
+									<!-- 교환가능, 반품가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_exch_req"><span>교환 신청</span></button></div>
+									</th:block>
+									<th:block th:if="${ordDtl.returnableYn} == 'Y'">
+										<div><button type="button" class="btn btn_default btn_rtn_req"><span>반품 신청</span></button></div>
+									</th:block>
+									<!-- //교환가능, 반품가능 -->
+									
+									<div><button type="button" id="btn_purchase_confirm btn_ord_confirm" class="btn btn_primary"><span>구매 확정</span></button></div>
+								</div>
+								<div class="goods_btn_wrap btn_group_flex">
+									<!-- 교환불가, 반품불가 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N' or ${ordDtl.returnableYn} == 'N'">
+										<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+									</th:block>
+									<!-- //교환불가, 반품불가 -->
+									
+									<!-- 리뷰사용가능, 리뷰등록전일때 -->
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+									</th:block>
+									<!-- //리뷰사용가능, 리뷰등록전일때 -->
+								</div>
 							</th:block>
-							<!-- //배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+							<!-- //배송완료 (교환가능, 반품가능) -->
 							
-							<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
-							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_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'">
+							<!-- 구매확정 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+								<div class="goods_btn_wrap btn_group_flex">
 									<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+									<div><button type="button" class="btn btn_default btn_qna_write"><span>1:1 문의</span></button></div>
+									
 									<!-- 리뷰사용가능, 리뷰등록전일때 -->
-									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
 										<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
 									</th:block>
 									<!-- //리뷰사용가능, 리뷰등록전일때 -->
-								</th:block>
+								</div>
 							</th:block>
-							<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
-						</div>
-					</th:block>
-					<!-- //선물배송 -->
-					<!-- //버튼기능정리 -->
-					
-					<!-- 상태문구정리 -->
-					<!-- 일반배송일때 -->
-					<th:block th:if="${ordDtl.giftPackYn} == 'N'">
-						<div class="goods_alert">
-							<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
-							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
-								<!-- 교환불가능, 반품불가능 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
-									<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
-								</th:block>
-								<!-- //교환불가능, 반품불가능 -->
-								
-								<!-- 교환불가능 -->
-								<th:block th:if="${ordDtl.changeableYn} == 'N'">
-									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+							<!-- //구매확정 -->
+						</th:block>
+						
+						<!--  선물배송 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+							<!-- 선물배송, 배송미입력 -->
+							<div class="goods_btn_wrap btn_group_flex">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<div><button type="button" class="btn btn_primary btn_sms_send"><span>SMS 재발송</span></button></div>
 								</th:block>
-								<!-- //교환불가능 -->
+								<!-- //배송지등록전 -->
 								
-								<!-- 반품불가능 -->
-								<th:block th:if="${ordDtl.returnableYn} == 'N'">
-									<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+								<!-- 배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10' or ${ordDtl.ordDtlStat} == 'G013_20' or ${ordDtl.ordDtlStat} == 'G013_30' or ${ordDtl.ordDtlStat} == 'G013_35'">
+									<div><button type="button" class="btn btn_default btn_cncl_complete"><span>주문 취소</span></button></div>
 								</th:block>
-								<!-- //반품불가능 -->
+								<!-- //배송지등록후(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
 								
-							</th:block>
-							<!-- //배송중, 배송완료 상태 -->
-						</div>
-						
-						<!-- 주문접수 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
-							<div class="goods_txt">
-								<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
-								<th:block th:if="${ordDtl.delvResDt} != null">
-									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<div><button type="button" class="btn btn_primary btn_cart_save"><span>쇼핑백 담기</span></button></div>
+										<!-- 리뷰사용가능, 리뷰등록전일때 -->
+										<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null and ${ordDtl.ordDtlStat} == 'G013_70'">
+											<div><button type="button" class="btn btn_primary btn_review_write"><span>리뷰 쓰기</span></button></div>
+										</th:block>
+										<!-- //리뷰사용가능, 리뷰등록전일때 -->
+									</th:block>
 								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
 							</div>
 						</th:block>
-						<!-- //주문접수 -->
+						<!-- //선물배송 -->
+						<!-- //버튼기능정리 -->
 						
-						<!-- 결제완료, 예약배송상품 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
-							<th:block th:if="${ordDtl.delvResDt} != null">
+						<!-- 상태문구정리 -->
+						<!-- 일반배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'N'">
+							<div class="goods_alert">
+								<!-- 배송중, 배송완료 상태 교환, 반품 가능 상태 체크 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60'">
+									<!-- 교환불가능, 반품불가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N' and ${ordDtl.returnableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환/반품이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+									</th:block>
+									<!-- //교환불가능, 반품불가능 -->
+									
+									<!-- 교환불가능 -->
+									<th:block th:if="${ordDtl.changeableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+									</th:block>
+									<!-- //교환불가능 -->
+									
+									<!-- 반품불가능 -->
+									<th:block th:if="${ordDtl.returnableYn} == 'N'">
+										<p class="cf_txt cf_desc">해당 상품은 교환이 불가능한 상품입니다.<br>문의사항은 1:1 문의를 이용해 주세요.</p>
+									</th:block>
+									<!-- //반품불가능 -->
+									
+								</th:block>
+								<!-- //배송중, 배송완료 상태 -->
+							</div>
+							
+							<!-- 주문접수 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_10'">
 								<div class="goods_txt">
-									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									<p class="cf_txt cf_desc">주문 완료 / 결제를 기다리고 있습니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
 								</div>
 							</th:block>
-						</th:block>
-						<!-- //결제완료, 예약배송상품 -->
-						
-						<!-- 상품준비중 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
-							<div class="goods_txt">
-								<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
-								<th:block th:if="${ordDtl.delvResDt} != null">
-									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
-								</th:block>
-							</div>
-						</th:block>
-						<!-- //상품준비중 -->
-						
-						<!-- 배송준비중 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
-							<div class="goods_txt">
-								<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
-								<th:block th:if="${ordDtl.delvResDt} != null">
-									<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
-								</th:block>
-							</div>
-						</th:block>
-						<!-- //배송준비중 -->
-						
-						<!-- 배송완료 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
-							<div class="goods_txt">
-								<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
-							</div>
-						</th:block>
-						<!-- //배송완료 -->
-						
-						<!-- 구매확정 -->
-						<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
-							<!-- 리뷰사용가능, 리뷰등록전일때 -->
-							<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+							<!-- //주문접수 -->
+							
+							<!-- 상품준비중 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_30'">
 								<div class="goods_txt">
-									<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+									<p class="cf_txt cf_desc">배송할 상품을 준비 중입니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
 								</div>
 							</th:block>
-							<!-- //리뷰사용가능, 리뷰등록전일때 -->
-						</th:block>
-						<!-- //구매확정 -->
-					</th:block>
-					<!-- //일반배송일때 -->
-					
-					<!-- 선물배송일때 -->
-					<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
-						<div class="goods_txt">
-							<!-- 배송지등록전 -->
-							<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
-								<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
-								<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+							<!-- //상품준비중 -->
+							
+							<!-- 배송준비중 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_40'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">상품 준비가 완료되어 곧 배송될 예정입니다.</p>
+									<th:block th:if="${ordDtl.delvResDt} != null">
+										<p class="cf_txt cf_desc" th:text="|예약판매 상품으로 ${ordDtl.delvResDt} 출고 예정입니다.|"></p>
+									</th:block>
+								</div>
 							</th:block>
-							<!-- //배송지등록전 -->
+							<!-- //배송준비중 -->
 							
-							<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
-							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
-								<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
-									<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
-								</th:block>
+							<!-- 배송완료 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_60'">
+								<div class="goods_txt">
+									<p class="cf_txt cf_desc">15일 후 자동으로 구매확정됩니다.</p>
+								</div>
 							</th:block>
-							<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+							<!-- //배송완료 -->
 							
-							<!-- 선물 취소 -->
-							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
-								<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+							<!-- 구매확정 -->
+							<th:block th:if="${ordDtl.ordDtlStat} == 'G013_70'">
+								<!-- 리뷰사용가능, 리뷰등록전일때 -->
+								<th:block th:if="${ordDtl.reviewableYn} == 'Y' and ${ordDtl.reviewSq} == null">
+									<div class="goods_txt">
+										<p class="cf_txt cf_desc">리뷰를 작성하면 다른 구매자에게 도움이 될 수 있습니다</p>
+									</div>
+								</th:block>
+								<!-- //리뷰사용가능, 리뷰등록전일때 -->
 							</th:block>
-							<!-- //선물 취소 -->
-						</div>
-					</th:block>
-					<!-- //선물배송일때 -->
-					<!-- //상태문구정리 -->
-					
-					<!-- 사은품 영역 -->
-					<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
-						<div class="goods_gift">
-							<div class="gift_wrap">
-								<div class="title">사은품</div>
-								<div class="li_gift">
-									<ul>
-										<th:block th:each="freeGift , j : ${order.freeGiftList}">
-											<li>
-												<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
-												<th:block th:if="${freeGift.usePoint} > 0">
-													<span class="deduct_p" th:text="|(-${freeGift.usePoint.addComma()}P)|"></span>
-												</th:block>
-											</li>
-										</th:block>
-									</ul>
+							<!-- //구매확정 -->
+						</th:block>
+						<!-- //일반배송일때 -->
+						
+						<!-- 선물배송일때 -->
+						<th:block th:if="${ordDtl.giftPackYn} == 'Y'">
+							<div class="goods_txt">
+								<!-- 배송지등록전 -->
+								<th:block th:if="${ordDtl.recipBaseAddr == ''} and ${ordDtl.giftLimitDay} >= 0">
+									<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님 주소를 입력하기 전입니다.</p>
+									<p class="period">입력기한 <span th:text="${ordDtl.giftLimitDt}"></span></p>
+								</th:block>
+								<!-- //배송지등록전 -->
+								
+								<!-- 배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_50' or ${ordDtl.ordDtlStat} == 'G013_55' or ${ordDtl.ordDtlStat} == 'G013_60' or ${ordDtl.ordDtlStat} == 'G013_70'">
+									<th:block th:if="${ordDtl.recipBaseAddr != ''} and ${ordDtl.ordDtlStat} != 'G013_98' and ${ordDtl.ordDtlStat} != 'G013_99'">
+										<p class="cf_txt cf_desc"><span th:text="|‘${ordDtl.recipNm}’|"></span>님께 선물이 발송되었습니다.</p>
+									</th:block>
+								</th:block>
+								<!-- //배송지등록완료, 결제전취소, 결제후취소 아닐경우 -->
+								
+								<!-- 선물 취소 -->
+								<th:block th:if="${ordDtl.ordDtlStat} == 'G013_98' and ${ordDtl.ordDtlStat} == 'G013_99'">
+									<p class="cf_txt cf_desc">주소 입력 기한이 경과되어 선물이 취소 되었습니다.</p>
+								</th:block>
+								<!-- //선물 취소 -->
+							</div>
+						</th:block>
+						<!-- //선물배송일때 -->
+						<!-- //상태문구정리 -->
+						
+						<!-- 사은품 영역 -->
+						<th:block th:if="${order.freeGiftList != null and #lists.size(order.freeGiftList) > 0}">
+							<div class="goods_gift">
+								<div class="gift_wrap">
+									<div class="title">사은품</div>
+									<div class="li_gift">
+										<ul>
+											<th:block th:each="freeGift , j : ${order.freeGiftList}">
+												<li>
+													<span class="gift_name" th:text="${freeGift.goodsNm}"></span> 
+													<th:block th:if="${freeGift.usePoint} > 0">
+														<span class="deduct_p" th:text="|(-${#numbers.formatInteger(freeGift.usePoint, 1, 'COMMA')}P)|"></span>
+													</th:block>
+												</li>
+											</th:block>
+										</ul>
+									</div>
 								</div>
 							</div>
-						</div>
-					</th:block>
-					<!-- //사은품 영역 -->
-				</div>
-				<!-- //주문 접수 -->
+						</th:block>
+						<!-- //사은품 영역 -->
+					</div>
+					<!-- //주문 접수 -->
+				</th:block>
 			</th:block>
 		</th:block>
+		<!-- //주문목록이 있을때 -->
+		<!-- 주문목록이 없을때 -->
+		<th:block th:if="${#lists.size(orderList) < 1}">
+			<div class="nodata">
+				<div class="txt_box">
+					<p>주문내역이 없습니다.<br/></p>
+				</div>
+			</div>
+		</th:block>
+		<!-- //주문목록이 없을때 -->
 	</div>
 </div>
 

+ 0 - 21
src/main/webapp/WEB-INF/views/mob/order/OrderDcAmtInfoMob.html

@@ -156,27 +156,6 @@
 								</div>
 							</th:block>
 							<!-- //선포인트금액 0보다 클때 적용 -->
-							<!-- 선포인트금액 1보다 작을때 적용 -->
-							<th:block th:if="${prePntDcAmt} < 1">
-								<div>
-									<dt>선 포인트 사용</dt>
-									<dd>
-										<div class="form_field">
-											<input type="hidden" name="rmPrePntAmt" th:value="${prePntDcAmt}"/>
-											<div>
-												<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint11" value="N"> 
-												<label for="rdi-beforpoint1"><span>사용 안함</span></label>
-											</div>
-											<div>
-												<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint12" value="Y" checked>
-												<label for="rdi-beforpoint2"><span>사용함</span></label> 
-												<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}P|"></em>&nbsp;사용 가능)</span>
-											</div>
-										</div>
-									</dd>
-								</div>
-							</th:block>
-							<!-- //선포인트금액 1보다 작을때 적용 -->
 							
 							<!-- 포인트금액 0보다 클때 적용 -->
 							<th:block th:if="${rmPntAmt} > 0">

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

@@ -94,7 +94,7 @@
 			<th style="display:none">optCd2</th>
 			<th style="display:none">itemQtyr</th>
 			<th>orgCurrPrice</th>
-			<th>cpn1DcSq</th>
+			<th>cpn1CpnSq</th>
 			<th>cpn1DcAmt</th>
 			<th>optAddPrice</th>
 			<th>goodsQty</th>
@@ -1068,7 +1068,7 @@ var paymentInfoSet = function() {
 							,"currPrice"		: $(this).parent().find(".orgCurrPrice").text()
 							,"optAddPrice"		: $(this).parent().find(".optAddPrice").text()
 							,"ordAmt"			: $(this).parent().find(".ordAmt").text()
-							,"cpn1DcSq"			: $(this).parent().find(".cpn1DcSq").text()
+							,"cpn1CpnSq"		: $(this).parent().find(".cpn1CpnSq").text()
 							,"cpn1DcAmt"		: $(this).parent().find(".cpn1DcAmt").text()
 							,"goodsQty"			: $(this).parent().find(".goodsQty").text()
 							,"tmtb1Sq"			: $(this).parent().find(".tmtb1Sq").text()
@@ -1427,7 +1427,7 @@ var dcAmtInfoSet = function() {
 					}
 					
 					// 결제금액을 초과 할 수 없습니다.
-					if (pntDcamt > realOrdAmt) {
+					if (pntDcAmt > realOrdAmt) {
 						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						// 포인트리셋기능
 						pntDcAmtReset();

+ 100 - 0
src/main/webapp/WEB-INF/views/web/cart/CartAddGoodsPopupWeb.html

@@ -0,0 +1,100 @@
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!-- 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
+	<div class="modal-dialog" role="document">
+		<div class="modal-content"><div class="modal-header">
+			<h5 class="modal-title" id="dlvrSaveLabel">배송비 SAVE 상품</h5>
+			<input type="text" th:value="${goodsList.size()}" />
+		</div>
+			<div class="modal-body">
+				<div class="pop_cont">
+					<div class="area_slider">
+						<div class="swiper-container swiper-container-initialized swiper-container-horizontal">
+							<div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
+								<div class="swiper-slide swiper-slide-active" style="width: 150px; margin-right: 20px;">
+									<div class="item_prod">
+										<div class="item_state">
+											<a href="#none" class="itemLink">
+												<div class="itemPic">
+													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+												</div>
+												<p class="itemBrand">BRAND NAME1</p>
+												<div class="itemName">남성 로고 자카드 방풍 패딩</div>
+												<p class="itemPrice">80,100
+													<span class="itemPrice_original">89,000</span>
+													<span class="itemPercent">10%</span>
+												</p>
+											</a>
+											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+										</div>
+									</div>
+								</div>
+								<div class="swiper-slide swiper-slide-next" style="width: 150px; margin-right: 20px;">
+									<div class="item_prod">
+										<div class="item_state">
+											<a href="#none" class="itemLink">
+												<div class="itemPic">
+													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+												</div>
+												<p class="itemBrand">BRAND NAME1</p>
+												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+												<p class="itemPrice">80,100
+													<span class="itemPrice_original">89,000</span>
+													<span class=" itemPercent">10%</span>
+												</p>
+											</a>
+											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+										</div>
+									</div>
+								</div>
+								<div class="swiper-slide" style="width: 150px; margin-right: 20px;">
+									<div class="item_prod">
+										<div class="item_state">
+											<a href="#none" class="itemLink">
+												<div class="itemPic">
+													<img alt="" class="vLHTC pd_img" src="/images/pc/thumb/tmp_pdTogether1.jpg">
+												</div>
+												<p class="itemBrand">BRAND NAME1</p>
+												<div class="itemName">남성 로고 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건 자카드 방풍 패딩 스웨터 가디건</div>
+												<p class="itemPrice">80,100
+													<span class="itemPrice_original">89,000</span>
+													<span class=" itemPercent">10%</span>
+												</p>
+											</a>
+											<button type="button" class="btn btn_default btn_sm"><span>쇼핑백 담기</span></button>
+										</div>
+									</div>
+								</div>
+							</div>
+							<!-- Add Scrollbar -->
+							<div class="swiper-scrollbar"></div>
+							<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span></div>
+					</div>
+					<!-- -->
+				</div>
+			</div>
+
+			<script>
+				//팝업 - 배송비 SAVE 상품보기 > 슬라이드
+				var dlvrSaveSwiper = new Swiper('.dlvrSave_pop .swiper-container', {
+					observer:true,
+					observeParents: true,
+					slidesPerView: 5,
+					spaceBetween: 20,
+					scrollbar: {
+						el: '.dlvr_save_pop .swiper-scrollbar',
+						hide: true,
+					},
+				});
+			</script>
+		</div>
+	</div>
+	<a href="#close-modal" rel="modal:close" id="dlvrSavePop_close" class="close-modal">Close</a>
+	<!-- // 배송비 SAVE 상품보기, 다다익선 할인 상품 보기 -->
+
+<script th:inline="javascript">
+	$(document).ready(function() {
+
+	});
+</script>
+</html>

+ 4 - 5
src/main/webapp/WEB-INF/views/web/cart/CartListAjaxFormWeb.html

@@ -303,12 +303,11 @@
 						<div class="order_delivery selfGoodsDelv" th:classappend="|delv_${order.cartDelvFeeCd}|">
 							<span class="dlvr_fee delvFeeArea" th:if="${order.wmsDelvFee == 0}">배송비 무료</span>
 							<span class="dlvr_fee delvFeeArea" th:if="${order.wmsDelvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(order.wmsDelvFee, 1, 'COMMA')}"></em>원</span>
-							<a href="#" class="btn_popup_save" th:if="${order.wmsDelvFee > 0}">배송비 SAVE 상품 보기</a>
+							<a th:href="|javascript:fnGetDelvFeeSaveGoods('WMS', '${order.minOrdAmt - order.compSumPrice}');|" class="btn_popup_save btn_dlvrSave_pop" th:if="${order.wmsDelvFee > 0}">배송비 SAVE 상품 보기</a>
 						</div>
 					</div>
 				</div>
 
-
 				<div class="sec_part delvList" th:if="${order.delvCartList != null and order.delvCartList.size() > 0}">
 					<h3 class="subH2">업체직배송</h3>
 					<div class="area_part">
@@ -420,7 +419,7 @@
 										<span class="dlvr_fee delvFeeArea" th:if="${cart.delvFee == 0}">배송비 무료</span>
 										<span class="dlvr_fee delvFeeArea" th:if="${cart.delvFee > 0}">배송비&nbsp;<em th:text="${#numbers.formatInteger(cart.delvFee, 1, 'COMMA')}"></em>원</span>
 										<span class="dlvr_shop"><em th:text="${cart.supplyCompNm}"></em>&nbsp;업체직배송</span>
-										<a href="#" class="btn_popup_save" th:if="${cart.delvFee > 0}">배송비 SAVE 상품 보기</a>
+										<a th:href="|javascript:fnGetDelvFeeSaveGoods('${cart.delvFeeCd}', '${cart.minOrdAmt - cart.compSumPrice}');|" class="btn_popup_save btn_dlvrSave_pop" th:if="${cart.delvFee > 0}">배송비 SAVE 상품 보기</a>
 									</div>
 								</div>
 							</div>
@@ -899,7 +898,7 @@
 				if (order.wmsDelvFee == 0) {
 					$(".selfGoodsDelv").html("<span class='dlvr_fee delvFeeArea'>배송비 무료</span>");
 				} else {
-					let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(order.wmsDelvFee).toLocaleString() + "</em> 원</span><a href='#' class='btn_popup_save'>배송비 SAVE 상품 보기</a>";
+					let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(order.wmsDelvFee).toLocaleString() + "</em> 원</span><a href=\"javascript:fnGetDelvFeeSaveGoods('WMS', '" + (order.minOrdAmt - order.compSumPrice) + "');\" class='btn_popup_save btn_dlvrSave_pop'>배송비 SAVE 상품 보기</a>";
 					$(".selfGoodsDelv").html(html);
 				}
 			}
@@ -955,7 +954,7 @@
 						if(delv.delvFee == 0) {
 							$(".delvList").find(".delv_" + delv.delvFeeCd).html("<span class='dlvr_fee delvFeeArea'>배송비 무료</span><span class='dlvr_fee'><em>" + delv.supplyCompNm + "</em> 업체직배송</span>");
 						} else {
-							let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(delv.delvFee).toLocaleString() + "</em>원</span><span class='dlvr_shop'><em>" + delv.supplyCompNm + "</em> 업체직배송</span><a href='#' class='btn_popup_save'>배송비 SAVE 상품 보기</a>";
+							let html = "<span class='dlvr_fee delvFeeArea'>배송비 <em>" + Number(delv.delvFee).toLocaleString() + "</em>원</span><span class='dlvr_shop'><em>" + delv.supplyCompNm + "</em> 업체직배송</span><a href=\"javascript:fnGetDelvFeeSaveGoods('" + delv.delvFeeCd + "','" + (delv.minOrdAmt - delv.compSumPrice) +  "');\" class='btn_popup_save btn_dlvrSave_pop'>배송비 SAVE 상품 보기</a>";
 							$(".delvList").find(".delv_" + delv.delvFeeCd).html(html);
 						}
 					}

+ 26 - 0
src/main/webapp/WEB-INF/views/web/cart/CartListFormWeb.html

@@ -257,6 +257,9 @@
 	</div>
 	<!-- // container -->
 
+	<!-- 장바구니 배송비 SAVE 상품보기 팝업 -->
+	<div class="modal fade dlvrSave_pop" id="dlvrSavePop" tabindex="-1" role="dialog" aria-labelledby="dlvrSaveLabel" aria-hidden="true" style="display:none;"></div>
+
 <script src="/ux/pc/js/swiper.min.js"></script>
 <link rel="stylesheet" type="text/css" href="/ux/pc/css/swiper.min.css" />
 
@@ -297,6 +300,29 @@
 		$(".cartCpnInfoModal").modal("hide");
 	});
 
+	//팝업 - 다다익선 상품보기
+	$(document).on('click','#btn_moresale_pop',function(e){
+		$("#moresalePop .modal-content").load("popup_moresale.html");
+		// $("#moresalePop").modal("show");
+		return false;
+	});
+	$("#moresalePop_close").click(function() {
+		$("#moresalePop > #dlvrSavePop").modal("hide");
+	});
+
+	//팝업 - 배송비 SAVE 상품보기
+	function fnGetDelvFeeSaveGoods(delvFeeCd, delvFeeSaveGoodsAmt) {
+		var param = new Object();
+		param.delvFeeCd = delvFeeCd;
+		param.delvFeeSaveGoodsAmt = delvFeeSaveGoodsAmt;
+
+		gagajf.ajaxSubmit("/cart/add/goods/list", "html", "dlvrSavePop", param);
+		$("#dlvrSavePop").modal("show");
+	};
+	$("#dlvrSavePop_close").click(function() {
+		$("#dlvrSavePop").modal("hide");
+	});
+
 	//수량조절 이벤트
 	$(document).on('click','.optModify_pop .number_count .minus',function(e){
 		var $input = $(this).parent().find('input');

+ 12 - 1
src/main/webapp/WEB-INF/views/web/customer/NonCustOrderConfirmFormWeb.html

@@ -87,13 +87,24 @@
 		</div>
 	</div>
 </div>
+<form name="noMemberOrderForm" id="noMemberOrderForm" action="/noMember/order/list/form" method="post">
+	<input type="hidden" name="ordNo" />
+	<input type="hidden" name="ordNm" />
+	<input type="hidden" name="ordPhnno" />
+</form>
 <script th:inline="javascript">
 /*<![CDATA[*/
 	$('#btnNonOrder').on('click', function () {
 		if (!gagajf.validation($('#nonCustOrderForm'))) {
 			return;
 		}
-		mcxDialog.alert("개발중입니다.");
+
+		$('#noMemberOrderForm input[name=ordNo]').val($('#ordNo').val());
+		$('#noMemberOrderForm input[name=ordNm]').val($('#ordNm').val());
+		$('#noMemberOrderForm input[name=ordPhnno]').val($('#ordTelno').val());
+		
+		document.noMemberOrderForm.submit();
+		//mcxDialog.alert("개발중입니다.");
 		// mcxDialog.alert("입력하신 정보가 정확하지 않습니다. 다시 시도해주세요.", { //입력정보가 틀릴경우(일치하지 않을경우)
 	});
 

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

@@ -304,18 +304,18 @@
 		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);
-				});
+				}, true);
 			} else {
 				mcxDialog.alert('이미 배송처리 되어 취소 처리에 실패 하였습니다.');
 			}
-		});
+		}, true);
 	}
 	
 	// 취소 수량 변경 이벤트 처리

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

@@ -497,7 +497,7 @@
 			} else {
 				cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 			}
-		});
+		}, true);
 	}
 
 	// 반품 방식 변경 이벤트

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

@@ -474,7 +474,7 @@
 			} else {
 				cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 			}
-		});
+		}, true);
 	}
 
 	// 반품 수량 변경 이벤트 처리

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

@@ -0,0 +1,565 @@
+<!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/MypageLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberOrderListFormWeb.html
+ * @desc    : 비회원 > 주문확인/배송조회 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.27   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="content myOrderList">
+		<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">
+					<div class="my_order_progress">
+						<div class="progress">
+							<ul>
+								<li>
+									<div>
+										<p class="txt">주문접수</p>
+										<p class="count"><span id="orderReceiptCount" th:text="${orderCount.depositWaitingCount}">0</span></p>
+									</div>
+								</li>
+								<li>
+									<div>
+										<p class="txt">결제완료</p>
+										<p class="count"><span id="paymentCompleteCount" th:text="${orderCount.paymentCompleteCount}">0</span></p>
+									</div>
+								</li>
+								<li>
+									<div>
+										<p class="txt">상품 준비 중</p>
+										<p class="count"><span id="goodsPrepareCount" th:text="${orderCount.goodsPrepareCount}">0</span></p>
+									</div>
+								</li>
+								<li>
+									<div>
+										<p class="txt">배송 준비 중</p>
+										<p class="count"><span id="shipPrepareCount" th:text="${orderCount.shipPrepareCount}">0</span></p>
+									</div>
+								</li>
+								<li>
+									<div>
+										<p class="txt">배송 중</p>
+										<p class="count"><span id="shippingCount" th:text="${orderCount.shippingCount}">0</span></p>
+									</div>
+								</li>
+								<li>
+									<div>
+										<p class="txt">배송 완료</p>
+										<p class="count"><span id="shipCompleteCount" th:text="${orderCount.shipCompleteCount}">0</span></p>
+									</div>
+								</li>
+							</ul>
+						</div>
+						<div class="invalid">
+							<p class="txt">취소/교환/반품</p>
+							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount + orderCount.confirmCount}">0</span></p>
+						</div>
+					</div>
+				</div>
+				<div class="sec_body">
+					<h3 class="subH2 mb40">주문확인/배송조회</h3>
+					<!-- 주문조회 검색 -->
+					<div class="area_filter">
+						<div class="select_month_box">
+							<div class="form_field">
+								<div>
+									<input type="radio" name="rdi-month" id="rdi-month1" onclick="fnSetSearchPeriod(1);">
+									<label for="rdi-month1"><span>최근 1개월</span></label>
+								</div>
+								<div>
+									<input type="radio" name="rdi-month" id="rdi-month2" onclick="fnSetSearchPeriod(3);">
+									<label for="rdi-month2"><span>최근 3개월</span></label>
+								</div>
+								<div>
+									<input type="radio" name="rdi-month" id="rdi-month3" onclick="fnSetSearchPeriod(6);">
+									<label for="rdi-month3"><span>최근 6개월</span></label>
+								</div>
+							</div>
+						</div>
+						<div class="select_period_box">
+							<form class="form_wrap">
+								<div class="form_field">
+									<label class="input_label sr-only">선택기간 시작</label>
+									<div class="input_wrap">
+										<input type="text" class="form_control period_datepicker" value="" id="stDate" onchange="fnCheckPeriod(this);">
+									</div>
+								</div>
+								<div class="form_field">
+									<label class="input_label sr-only">선택기간 끝</label>
+									<div class="input_wrap">
+										<input type="text" class="form_control n_input period_datepicker" value="" id="edDate" onchange="fnCheckPeriod(this);">
+									</div>
+								</div>
+								<button type="button" class="btn btn_dark btn_sm" onclick="fnSearchOrderList();"><span>조회</span></button>
+							</form>
+						</div>
+						<div class="select_status_box">
+							<form class="form_wrap">
+								<div class="form_field">
+									<div class="select_custom order_status">
+										<div class="combo">
+											<div class="select">전체상태</div>
+											<ul class="list">
+												<li class="selected" code="">전체상태</li>
+												<li th:if="${ordDtlStatList}" th:each="oneData, status : ${ordDtlStatList}" th:attr="code=${oneData.cd}" th:text="${oneData.cdNm}"></li>
+											</ul>
+										</div>
+									</div>
+								</div>
+							</form>
+						</div>
+					</div>
+					<!-- //주문조회 검색 -->
+					<div class="area_list" id="orderList"></div>
+					<div class="sec_foot">
+						<div class="ui_row">
+							<ul class="pageNav" id="paging">
+							</ul>
+						</div>
+					</div>
+				</div>
+				<form id="searchForm" name="searchForm" th:action="@{'/mypage/order/list'}" th:method="post">
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
+					<input type="hidden" name="pageNo" value=1 />
+					<input type="hidden" name="pageSize" value=5 />
+					<input type="hidden" name="pageUnit" value=10 />
+					<input type="hidden" name="ordDtlStat" value="" />
+					<input type="hidden" name="stDate" value="" />
+					<input type="hidden" name="edDate" value="" />
+				</form>
+				<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/exchange/form'}" th:method="post">
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
+					<input type="hidden" name="ordNo"/>
+					<input type="hidden" name="ordDtlNo"/>
+					<input type="hidden" name="delvFeeCd"/>
+				</form>
+				<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/return/form'}" th:method="post">
+					<input type="hidden" name="ordNo" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
+					<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" th:value="${ordNo}" />
+					<input type="hidden" name="ordNm" th:value="${ordNm}" />
+					<input type="hidden" name="ordPhnno" th:value="${ordPhnno}" />
+					<input type="hidden" name="ordNo"/>
+					<input type="hidden" name="ordDtlNo"/>
+					<input type="hidden" name="delvFeeCd"/>
+				</form>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let ordNo = [[${ordNo}]];
+	let totalCount = 0;
+	let pageSize = 0;
+/*<![CDATA[*/
+	$(document).ready(function() {
+		// 비회원 LNB 설정
+		fnSetNoMemberLnbList(1);
+		
+		// 비회원 location 설정
+		fnSetMypageLocation('주문확인/배송조회');
+		
+		// datepicker 설정
+		$('.period_datepicker').datepicker();
+
+		// 셀렉트박스 활성화
+		$('.select_custom.order_status').each(function(index) {
+			new sCombo($(this));
+		});
+
+		// 주문 검색 기간 설정
+		$('#rdi-month2').click();
+
+		// Initialize a pagination
+		gagaPaging.init('searchForm', fnSearchCallback, 'paging', 5, 10);
+		
+		// Load data
+		gagaPaging.load(1);
+	});
+	
+	// 검색기간 버튼 클릭 이벤트 처리
+	var fnSetSearchPeriod = function(period) {
+		let date = new Date();
+		let edDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
+		date.setMonth(date.getMonth() - period);
+		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate())).slice(-2);
+
+		$('#edDate').val(edDate);
+		$('#searchForm input[name=edDate]').val(edDate);
+		$('#stDate').val(stDate);
+		$('#searchForm input[name=stDate]').val(stDate);
+	}
+
+	// 주문 목록 조회
+	var fnSearchOrderList = function() {
+		gagaPaging.load(1);
+	}
+
+	// 주문 목록 조회 콜백
+	var fnSearchCallback = function(result) {
+		$('#orderList').html(fnCreateOrderList(result));
+
+		// Create pagination
+		gagaPaging.createPagination(result.orderInfo.pageable);
+	}
+
+	// 검색기간 설정 체크
+	var fnCheckPeriod = function(param) {
+		let id = $(param).attr('id');
+		let stDate = $('#stDate').val();
+		let edDate = $('#edDate').val();
+		let chgDate;
+
+		$('#searchForm input[name=stDate]').val(stDate);
+		$('#searchForm input[name=edDate]').val(edDate);
+
+		let sdt = new Date(stDate);
+		let edt = new Date(edDate);
+		let today = new Date();
+
+		// 검색기간 버튼 처리
+		$.each($('.select_month_box input:radio'), function(idx, item) {
+			if ($(item).is(':checked')) {
+				$(item).prop('checked', false);
+			}
+		});
+
+		// 오늘 이후 날짜 선택 처리
+		chgDate = today.getFullYear() + '-' + ('0' + (today.getMonth() + 1)).slice(-2) + '-' + ('0' + (today.getDate())).slice(-2);
+		if (id == 'stDate' && Math.ceil((sdt.getTime() - today.getTime()) / (1000 * 3600 * 24)) > 0) {
+			mcxDialog.alert('조회기간을 확인해주세요.');
+			$('#stDate').val(chgDate);
+			$('#searchForm input[name=stDate]').val(chgDate);
+			
+			return false;
+		} else if (id == 'edDate' && Math.ceil((edt.getTime() - today.getTime()) / (1000 * 3600 * 24)) > 0) {
+			mcxDialog.alert('조회기간을 확인해주세요.');
+			$('#edDate').val(chgDate);
+			$('#searchForm input[name=edDate]').val(chgDate);
+			
+			return false;
+		}
+
+		// 시작 종료일자 확인
+		if (sdt > edt) {
+			mcxDialog.alert('조회기간을 확인해주세요.');
+			
+			if (id == 'stDate') {
+				chgDate = sdt.getFullYear() + '-' + ('0' + (sdt.getMonth() + 1)).slice(-2) + '-' + ('0' + (sdt.getDate())).slice(-2);
+			} else {
+				chgDate = edt.getFullYear() + '-' + ('0' + (edt.getMonth() + 1)).slice(-2) + '-' + ('0' + (edt.getDate())).slice(-2);
+			}
+
+			$('#stDate').val(chgDate);
+			$('#edDate').val(chgDate);
+			$('#searchForm input[name=stDate]').val(chgDate);
+			$('#searchForm input[name=edDate]').val(chgDate);
+
+			return false;
+		}
+
+		// 기간 1년 확인
+		let dateDiff = Math.ceil((edt.getTime() - sdt.getTime()) / (1000 * 3600 * 24));
+
+		if (dateDiff > 366) {
+			mcxDialog.alert('조회기간은 최대 1년을 넘을 수 없습니다.');
+			if (id == 'stDate') {
+				sdt.setFullYear(sdt.getFullYear() + 1);
+				let chgEdDate = sdt.getFullYear() + '-' + ('0' + (sdt.getMonth() + 1)).slice(-2) + '-' + ('0' + (sdt.getDate())).slice(-2);
+
+				$('#edDate').val(chgEdDate);
+				$('#searchForm input[name=edDate]').val(chgEdDate);
+			} else {
+				edt.setFullYear(edt.getFullYear() - 1);
+				let chgStDate = edt.getFullYear() + '-' + ('0' + (edt.getMonth() + 1)).slice(-2) + '-' + ('0' + (edt.getDate())).slice(-2);
+
+				$('#stDate').val(chgStDate);
+				$('#searchForm input[name=stDate]').val(chgStDate);
+			}
+			
+			return false;
+		}
+	}
+
+	// 상태값 별 수량 업데이트 처리
+	var fnReloadStatusCount = function() {
+		let url = '/mypage/status/count';
+		
+		let data = {};
+		
+		let jsonData = JSON.stringify(data);
+		
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			$('#orderReceiptCount').text(result.orderCount.orderReceiptCount);
+			$('#paymentCompleteCount').text(result.orderCount.paymentCompleteCount);
+			$('#goodsPrepareCount').text(result.orderCount.goodsPrepareCount);
+			$('#shipPrepareCount').text(result.orderCount.shipPrepareCount);
+			$('#shippingCount').text(result.orderCount.shippingCount);
+			$('#shipCompleteCount').text(result.orderCount.shipCompleteCount);
+			$('#orderCreCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
+		});
+	}
+
+	// 주문상세상태코드 셀렉트박스 변경 이벤트
+	$('.select_custom.order_status').find('li').on('click', function() {
+		$('#searchForm input[name=ordDtlStat]').val($(this).attr('code'));
+	});
+
+	// 배송조회 버튼 클릭 이벤트
+	var fnGoToDelivery = function(param) {
+		// TODO
+		// 배송조회 페이지 이동
+	}
+
+	// 주문내역 리스트 처리
+	var fnCreateOrderList = function(param) {
+		let tag = '';
+		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
+
+		if (param.orderList != null && param.orderList.length > 0) {
+			$.each(param.orderList, function (idx, order) {
+				tag += '						<div class="part_goods">\n';
+				tag += '							<div class="goods_head">\n';
+				tag += '								<p>주문일 <span>' + order.ordDt + '</span></p>\n';
+				tag += '								<a href="javascript:void(0)" class="btn_detail_view" ordNo="' + order.ordNo + '" onclick="fnGoToOrderDetail(this)">주문상세보기</a>\n';
+				tag += '							</div>\n';
+				tag += '							<div class="goods_cont">\n';
+				$.each(order.ordDtlList, function (index, ordDtl) {
+					tag += '								<div class="goods_info">\n';
+					tag += '									<div class="order_desc">\n';
+					tag += '										<div class="goods_box">\n';
+					tag += '											<div class="gd_item">\n';
+					tag += '												<a href="javascript:void(0)" goodsCd="' + ordDtl.goodsCd + '" onclick="fnGoToGoodsDetail(this)">\n';
+					tag += '													<span class="thumb">\n';
+					tag += '														<img src="' + imageUrl + '/' + ordDtl.sysImgNm + '" width="100%" alt="">\n';
+					tag += '													</span>\n';
+					tag += '													<p>\n';
+					tag += '														<span class="brand">' + ordDtl.brandNm + '</span>\n';
+					// 배송 아이콘 처리
+					if (ordDtl.shotDelvYn == 'Y') {
+						tag += '														<span class="tag primary">총알배송</span>\n';
+					} else if (ordDtl.selfGoodsYn == 'Y') {
+						tag += '														<span class="tag">STYLE24 일반배송</span>\n';
+					} else {
+						tag += '														<span class="tag">업체직배송</span>\n';
+					}
+					tag += '													</p>\n';
+					tag += '													<p>\n';
+					tag += '														<span class="name">' + ordDtl.goodsNm + '</span>\n';
+					tag += '													</p>\n';
+					tag += '												</a>\n';
+					tag += '											</div>\n';
+					tag += '											<div class="gd_opt">\n';
+					tag += '												<div class="option_wrap">\n';
+					tag += '													<span class="title sr-only">주문 옵션</span>\n';
+					// 세트아이템 옵션 처리
+					if (ordDtl.goodsType == 'G056_S') {
+						$.each(ordDtl.colorNmArr, function (index2, option) {
+							tag += '													<span class="option">' + ordDtl.itemNmArr[index2] + ' / ' + option + ' / ' + ordDtl.optCd2Arr[index2] + '</span>\n';
+						});
+					} else {
+						tag += '													<span class="option">' + ordDtl.colorNm + ' / ' + ordDtl.optCd2 + '</span>\n';
+					}
+					tag += '												</div>\n';
+					tag += '											</div>\n';
+					tag += '											<div class="gd_calc">\n';
+					tag += '												<p>\n';
+					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';
+					}
+					tag += '													<span class="price_sale"><em>' + (ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt).addComma() + '</em>원</span>\n';
+					tag += '												</p>\n';
+					tag += '											</div>\n';
+					tag += '										</div>\n';
+					tag += '										<div class="status_box">\n';
+					tag += '											<p>' + ordDtl.ordDtlStatNm + '</p>\n';
+					tag += '										</div>\n';
+					tag += '										<div class="button_box">\n';
+
+					// 버튼 처리
+					// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
+					if (ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
+						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
+					}
+
+					// 교환신청 버튼(배송중, 출고완료, 배송완료)
+					if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60') {
+						// 교환/반품 가능한 상품
+						if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'Y') {
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+						}
+						// 교환 신청 불가 상품
+						else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+						}
+						// 반품 신청 불가 상품
+						else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
+							tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" delvFeeCd="' + ordDtl.delvFeeCd + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+						}
+						// 교환/반품 신청 불가 상품
+						else {
+						}
+					}
+
+					// 배송조회 버튼(배송중)
+					if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55') {
+						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnGoToDelivery(this);"><span>배송 조회</span></button></p>\n';
+					}
+
+					// 쇼핑백담기 버튼(구매확정)
+					if (ordDtl.ordDtlStat == 'G013_70') {
+						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
+					}
+
+					tag += '										</div>\n';
+					tag += '									</div>\n';
+					// 하단 상태값 배너 처리
+					// 주문 접수
+					if (ordDtl.ordDtlStat == 'G013_10') {
+						tag += '									<div class="order_text">';
+						tag += '										<p>주문이 완료되어 결제를 기다리고 있습니다.</p>';
+						// 예약상품
+						if (!gagajf.isNull(ordDtl.delvResDt)) {
+							tag += '										<p>예약판매 상품으로' + ordDtl.delvResDt + ' 출고 예정입니다.</p>';
+						}
+						tag += '									</div>\n';
+					}
+					
+					// 결제완료
+					if (ordDtl.ordDtlStat == 'G013_20' && !gagajf.isNull(ordDtl.delvResDt)) {
+						tag += '									<div class="order_text">';
+						tag += '										<p>예약판매 상품으로' + ordDtl.delvResDt + ' 출고 예정입니다.</p>';
+						tag += '									</div>\n';
+					}
+					
+					// 상품준비중
+					if (ordDtl.ordDtlStat == 'G013_30') {
+						tag += '									<div class="order_text">';
+						tag += '										<p>배송할 상품을 준비 중입니다.</p>';
+						// 예약상품
+						if (!gagajf.isNull(ordDtl.delvResDt)) {
+							tag += '										<p>예약판매 상품으로' + ordDtl.delvResDt + ' 출고 예정입니다.</p>';
+						}
+						tag += '									</div>\n';
+					}
+					
+					// 배송준비중
+					if (ordDtl.ordDtlStat == 'G013_40') {
+						tag += '									<div class="order_text">';
+						tag += '										<p>상품 준비가 완료되어 곧 배송될 예정입니다.</p>';
+						// 예약상품
+						if (!gagajf.isNull(ordDtl.delvResDt)) {
+							tag += '										<p>예약판매 상품으로' + ordDtl.delvResDt + ' 출고 예정입니다.</p>';
+						}
+						tag += '									</div>\n';
+					}
+					
+					// 배송중, 배송완료
+					if ((ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60')) {
+						// 교환/반품 신청 불가 상품 처리
+						if (ordDtl.changeableYn == 'N' || ordDtl.returnableYn == 'N') {
+							// 교환신청 불가 상품
+							tag += '									<div class="order_text">\n';
+							if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
+								tag += '										<p>해당 상품은 교환이 불가능한 상품입니다.</p>\n';
+							}
+							// 반품신청 불가 상품
+							else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
+								tag += '										<p>해당 상품은 반품이 불가능한 상품입니다.</p>\n';
+							}
+							// 교환/반품신청 불가 상품
+							else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'N') {
+								tag += '										<p>해당 상품은 교환/반품이 불가능한 상품입니다.</p>\n';
+							}
+							
+							// 배송완료
+							if (ordDtl.ordDtlStat == 'G013_60') {
+								tag += '										<p>15일 후 자동으로 구매확정됩니다.</p>\n';
+							}
+							
+							tag += '									</div>';
+						} else if (ordDtl.ordDtlStat == 'G013_60') {
+							tag += '									<div class="order_text"><p>15일 후 자동으로 구매확정됩니다.</p></div>\n';
+						}
+					}
+					tag += '								</div>';
+				});
+				tag += '							</div>';
+				//사은품 처리
+				if (order.freeGiftList != null && order.freeGiftList.length > 0) {
+					tag += '							<div class="goods_foot">';
+					tag += '								<div class="order_gift">';
+					tag += '									<span class="title">사은품</span>';
+					tag += '									<ul>';
+					$.each(order.freeGiftList, function(index, freeGift) {
+						// 2021.04.20 무료 사은품일때 - 처리 삭제
+						if (freeGift.usePoint > 0) {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span>(-' + freeGift.usePoint.addComma() + 'P)</span></li>';
+						} else {
+							tag += '										<li>' + freeGift.goodsNm + ' ' + '<span></li>';
+						}
+						
+					});
+					tag += '									</ul>';
+					tag += '								</div>';
+					tag += '							</div>';
+				}
+				tag += '						</div>';
+			});
+		} else {
+			// 데이터 없음 표시
+			tag += '						<div class="nodata">';
+			tag += '							<div class="txt_box">';
+			tag += '								<p>';
+			tag += '									주문내역이 없습니다.<br>';
+			tag += '								</p>';
+			tag += '							</div>';
+			tag += '						</div>';
+		}
+		return tag;
+	}
+/*]]>*/
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 25 - 17
src/main/webapp/WEB-INF/views/web/order/OrderCompleteWeb.html

@@ -273,6 +273,7 @@
 var ordNo			= [[${orderInfo.ordNo}]]		// 배송목록
 var isLogin			= [[${isLogin}]];				// 로그인여부
 var delvAddrSq		= [[${delvAddrSq}]];			// 배송지번호
+let jsonObj			= {};
 
 // 2.1 회원 배송지변경 팝업열기
 $('#btn_adrsChange_pop').on("click", function(){
@@ -358,33 +359,40 @@ var delvAddrSet = function(delvObj) {
 	$("#delvMemo").text(delvObj.delvMemo);
 	
 	// 변수값 설정
-	var jsonObj = {
-		"ordNo" 			: ordNo
-		, "delvAddrSq" 		: delvAddrSq
-		, "recipNm"			: delvObj.recipNm
-		, "recipPhnno"		: delvObj.recipPhnno
-		, "recipZipcode"	: delvObj.recipZipcode
-		, "recipBaseAddr"	: delvObj.recipBaseAddr
-		, "recipDtlAddr"	: delvObj.recipDtlAddr
-		, "delvMemo"		: delvObj.delvMemo
-	}
+	let url = '/mypage/change/delvery/addr';
+	let data = {};
+	data.delvAddrSq = delvAddrSq;
+	data.recipNm = delvObj.recipNm;
+	data.recipPhnno = delvObj.recipPhnno;
+	data.recipZipcode = delvObj.recipZipcode;
+	data.recipBaseAddr = delvObj.recipBaseAddr;
+	data.recipDtlAddr = delvObj.recipDtlAddr;
+	data.delvMemo = delvObj.delvMemo;
+	
+	let jsonData = JSON.stringify(data);
+	
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+	})
 }
 
 // 1.19 배송메모설정
 var delvMemoSet = function(delvMemoObj) {
-	
+	let url = '/mypage/change/delvery/memo';
+	let delvMemo = delvMemoObj.delvMemo;
 	var rtnStr = "";
-	rtnStr += "| delvMemo 			::: " + delvMemoObj.delvMemo;
+	rtnStr += "| delvMemo 			::: " + delvMemo;
 
 	// 변수값 설정
-	var jsonObj = {
-		"delvAddrSq" 		: delvAddrSq
-		, "delvMemo"		: delvMemoObj.delvMemo
-	}
+	let data = {};
+	data.delvAddrSq = delvAddrSq;
+	data.delvMemo = delvMemo;
 	
-	$("#delvMemo").text(delvMemoObj.delvMemo);
+	let jsonData = JSON.stringify(data);
 	
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+	})
 	
+	$("#delvMemo").text(delvMemo);
 }
 
 

+ 0 - 21
src/main/webapp/WEB-INF/views/web/order/OrderDcAmtInfoWeb.html

@@ -161,27 +161,6 @@
 					</div>
 				</th:block>
 				<!-- //선포인트금액 0보다 클때 적용 -->
-				<!-- 선포인트금액 1보다 작을때 적용 -->
-				<th:block th:if="${prePntDcAmt} < 1">
-					<div>
-						<dt>선 포인트 사용</dt>
-						<dd>
-							<div class="form_field">
-								<input type="hidden" name="rmPrePntAmt" th:value="${prePntDcAmt}"/>
-								<div>
-									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint11" value="N"> 
-									<label for="rdi-beforpoint1"><span>사용 안함</span></label>
-								</div>
-								<div>
-									<input type="radio" name="rdi-beforpoint" id="rdi-beforpoint12" value="Y" checked> 
-									<label for="rdi-beforpoint2"><span>사용함</span></label> 
-									<span class="useable_point">(<em th:text="|${#numbers.formatInteger(prePntDcAmt, 1, 'COMMA')}원|"></em>&nbsp;사용 가능)</span>
-								</div>
-							</div>
-						</dd>
-					</div>
-				</th:block>
-				<!-- //선포인트금액 1보다 작을때 적용 -->
 
 				<!-- 포인트금액 0보다 클때 적용 -->
 				<th:block th:if="${rmPntAmt} > 0">

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

@@ -94,7 +94,7 @@
 			<th style="display:none">optCd2</th>
 			<th style="display:none">itemQtyr</th>
 			<th>orgCurrPrice</th>
-			<th>cpn1DcSq</th>
+			<th>cpn1CpnSq</th>
 			<th>cpn1DcAmt</th>
 			<th>optAddPrice</th>
 			<th>goodsQty</th>
@@ -600,7 +600,6 @@ var custemerInfoSet = function() {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			if (result != null) {
@@ -632,7 +631,6 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			$("#deliveryAddrInfo").css("display", "block");
@@ -660,7 +658,6 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 							xhr.setRequestHeader("AJAX"			, "true");
 							xhr.setRequestHeader('Accept'		, 'application/json');
 							xhr.setRequestHeader('Content-Type'	, 'application/json');
-							gagajf.showProgressbar(true);
 						},
 						success 	: function(result) {
 							$("#adrsChangePop .modal-dialog .modal-content").html(result);
@@ -679,7 +676,6 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 							xhr.setRequestHeader("AJAX"			, "true");
 							xhr.setRequestHeader('Accept'		, 'application/json');
 							xhr.setRequestHeader('Content-Type'	, 'application/json');
-							gagajf.showProgressbar(true);
 						},
 						success 	: function(result) {
 							$("#adrsAddPop .modal-dialog .modal-content").html(result);
@@ -703,7 +699,6 @@ var deliveryAddrInfoSet = function(delvObj, temp) {
 						xhr.setRequestHeader("AJAX"			, "true");
 						xhr.setRequestHeader('Accept'		, 'application/json');
 						xhr.setRequestHeader('Content-Type'	, 'application/json');
-						gagajf.showProgressbar(true);
 					},
 					success 	: function(result) {
 						if (result != null) {
@@ -786,7 +781,6 @@ var orderListInfoSet = function(orderListJsonData, temp) {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			if (result != null) {
@@ -825,7 +819,6 @@ var freegiftInfoSet = function() {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			if (result != null) {
@@ -902,7 +895,6 @@ var paymentInfoSet = function() {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			if (result != null) {
@@ -1041,7 +1033,7 @@ var paymentInfoSet = function() {
 							,"currPrice"		: $(this).parent().find(".orgCurrPrice").text()
 							,"optAddPrice"		: $(this).parent().find(".optAddPrice").text()
 							,"ordAmt"			: $(this).parent().find(".ordAmt").text()
-							,"cpn1DcSq"			: $(this).parent().find(".cpn1DcSq").text()
+							,"cpn1CpnSq"		: $(this).parent().find(".cpn1CpnSq").text()
 							,"cpn1DcAmt"		: $(this).parent().find(".cpn1DcAmt").text()
 							,"goodsQty"			: $(this).parent().find(".goodsQty").text()
 							,"tmtb1Sq"			: $(this).parent().find(".tmtb1Sq").text()
@@ -1132,7 +1124,6 @@ var paymentInfoSet = function() {
 							xhr.setRequestHeader("AJAX"			, "true");
 							xhr.setRequestHeader('Accept'		, 'application/json');
 							xhr.setRequestHeader('Content-Type'	, 'application/json');
-							gagajf.showProgressbar(true);
 						},
 						success 	: function(result) {
 							// 결재정보로드
@@ -1211,7 +1202,6 @@ var dcAmtInfoSet = function() {
 			xhr.setRequestHeader("AJAX"			, "true");
 			xhr.setRequestHeader('Accept'		, 'application/json');
 			xhr.setRequestHeader('Content-Type'	, 'application/json');
-			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
 			if (result != null) {
@@ -1228,7 +1218,6 @@ var dcAmtInfoSet = function() {
 						xhr.setRequestHeader("AJAX"			, "true");
 						xhr.setRequestHeader('Accept'		, 'application/json');
 						xhr.setRequestHeader('Content-Type'	, 'application/json');
-						gagajf.showProgressbar(true);
 					},
 					success 	: function(result) {
 						$("#couponModifyPop").html(result);
@@ -1337,7 +1326,7 @@ var dcAmtInfoSet = function() {
 					}
 					
 					// 결제금액을 초과 할 수 없습니다.
-					if (pntDcamt > realOrdAmt) {
+					if (pntDcAmt > realOrdAmt) {
 						mcxDialog.alert("포인트를 입력하신 후 다시 시도해주세요.");
 						// 포인트리셋기능
 						pntDcAmtReset();

+ 1 - 0
src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html

@@ -184,6 +184,7 @@ $("#btn_delivery_modi_save").on("click", function(){
 			gagajf.showProgressbar(true);
 		},
 		success 	: function(result) {
+			gagajf.showProgressbar(false);
 			// custDelvAddrSq 부모창으로 전달
 			var delvObj = {
 				"custDelvAddrSq"	: parseInt($("#deliveryModifyForm input[name=custDelvAddrSq]").val())

+ 8 - 1
src/main/webapp/biz/mypage.js

@@ -12,7 +12,14 @@ var fnSetMypageLnbList = function(lnbLvl) {
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_WISHLIST);"' + (lnbLvl == 9 ? ' class="on"' : '') + '>위시리스트</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_CUSTOMER);"' + (lnbLvl == 10 ? ' class="on"' : '') + '>내 정보 관리</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_SECEDE);"' + (lnbLvl == 11 ? ' class="on"' : '') + '>회원 탈퇴</a></li>\n';
-	tag += '</ul>';
+	$('#mypageLnbList').html(tag);
+}
+
+// 비회원 LNB 처리
+var fnSetNoMemberLnbList = function(lnbLvl) {
+	let tag = '';
+	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_NOMEMBER_ORDER_LIST);"' + (lnbLvl == 1 ? ' class="on"' : '') + '>주문확인/배송조회</a></li>\n';
+	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_NOMEMBER_CRE_LIST);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>취소/반품/교환 내역</a></li>\n';
 	$('#mypageLnbList').html(tag);
 }
 

BIN
src/main/webapp/images/mo/br_minus.png


BIN
src/main/webapp/images/mo/btn_main_pop_arrow.png


+ 3 - 0
src/main/webapp/images/mo/desktop.ini

@@ -0,0 +1,3 @@
+[LocalizedFileNames]
+br_minus.png=@br_minus,0
+main_trendy05.jpg=@main_trendy05,0

BIN
src/main/webapp/images/mo/dp_refresh.png


BIN
src/main/webapp/images/mo/ico_bg_check.png


BIN
src/main/webapp/images/mo/ico_bg_point.png


BIN
src/main/webapp/images/mo/ico_btn_cls1.png


BIN
src/main/webapp/images/mo/ico_coupon_5.png


BIN
src/main/webapp/images/mo/ico_err.png


BIN
src/main/webapp/images/mo/shc_clock.png


BIN
src/main/webapp/images/pc/chk_top_banner.png


BIN
src/main/webapp/images/pc/ico_bracket_primary.png


BIN
src/main/webapp/images/pc/ico_home.png


BIN
src/main/webapp/images/pc/ico_lnb_category.png


BIN
src/main/webapp/images/pc/ico_shopbag.png


BIN
src/main/webapp/images/pc/info_size_bag.jpg


BIN
src/main/webapp/images/pc/info_size_pants.jpg


BIN
src/main/webapp/images/pc/info_size_shoe.jpg


BIN
src/main/webapp/images/pc/info_size_top.jpg


BIN
src/main/webapp/images/pc/info_size_underwear.jpg


BIN
src/main/webapp/images/pc/logo_STYLE24.png


BIN
src/main/webapp/images/pc/logo_andew.png


BIN
src/main/webapp/images/pc/logo_andew_bk.png


BIN
src/main/webapp/images/pc/logo_buckaroo.png


BIN
src/main/webapp/images/pc/logo_buckaroo_bk.png


BIN
src/main/webapp/images/pc/logo_conversekisds.png


BIN
src/main/webapp/images/pc/logo_conversekisds_bk.png


BIN
src/main/webapp/images/pc/logo_curlysu.png


BIN
src/main/webapp/images/pc/logo_curlysue_bk.png


BIN
src/main/webapp/images/pc/logo_frj.png


BIN
src/main/webapp/images/pc/logo_frj_bk.png


BIN
src/main/webapp/images/pc/logo_hurley.png


BIN
src/main/webapp/images/pc/logo_hurley_bk.png


BIN
src/main/webapp/images/pc/logo_jordan.png


BIN
src/main/webapp/images/pc/logo_jordan_bk.png


BIN
src/main/webapp/images/pc/logo_levis.png


BIN
src/main/webapp/images/pc/logo_levis_bk.png


BIN
src/main/webapp/images/pc/logo_lpga.png


BIN
src/main/webapp/images/pc/logo_lpga_bk.png


BIN
src/main/webapp/images/pc/logo_moi.png


BIN
src/main/webapp/images/pc/logo_moi_bk.png


BIN
src/main/webapp/images/pc/logo_nba.png


BIN
src/main/webapp/images/pc/logo_nba_bk.png


BIN
src/main/webapp/images/pc/logo_nbakids.png


BIN
src/main/webapp/images/pc/logo_nbakids_bk.png


BIN
src/main/webapp/images/pc/logo_nike.png


BIN
src/main/webapp/images/pc/logo_nike_bk.png


BIN
src/main/webapp/images/pc/logo_pga.png


BIN
src/main/webapp/images/pc/logo_pga_bk.png


BIN
src/main/webapp/images/pc/logo_style24_bk.png


BIN
src/main/webapp/images/pc/logo_tbj.png


BIN
src/main/webapp/images/pc/logo_tbj_bk.png


BIN
src/main/webapp/images/pc/movloading.gif


+ 2 - 2
src/main/webapp/ux/plugins/gaga/gaga.paging.js

@@ -134,11 +134,11 @@ var gagaPaging = {
 				xhr.setRequestHeader('Content-Type', 'application/json');
 				
 				// Button disabled & progressBar creation
-				gagajf.showProgressbar(true);
+				//gagajf.showProgressbar(true);
 			},
 			complete : function() {
 				// Button abled & progressBar remove
-				gagajf.showProgressbar(false);
+				//gagajf.showProgressbar(false);
 			},
 			success : function(result) {
 				try {

+ 20 - 14
src/main/webapp/ux/plugins/gaga/gaga.validation.js

@@ -517,16 +517,20 @@ var gagajf = {
 		if (isLoading) {
 			// Button disabled & progressBar creation
 			//$('.btn').each(function(idx) { $(this).attr('disabled', true); });
-			var load_AjaxSubmit = '<div id="load_AjaxSubmit" style="'
-				+ 'background: url(/ux/plugins/gaga/loader.gif); border-style: none; background-repeat: no-repeat; '
-				+ 'position: absolute; top: 45%; left: 50%; width: auto; '
-				+ 'z-index: 101; padding: 16px; margin: 5px;'
-				+ '"></div>';
-			$('#content').append(load_AjaxSubmit);
+			//var load_AjaxSubmit = '<div id="load_AjaxSubmit" style="'
+			//	+ 'background: url(/ux/plugins/gaga/loader.gif); border-style: none; background-repeat: no-repeat; '
+			//	+ 'position: absolute; top: 45%; left: 50%; width: auto; '
+			//	+ 'z-index: 101; padding: 16px; margin: 5px;'
+			//	+ '"></div>';
+			//$('#content').append(load_AjaxSubmit);
+
+			$('body').append('<div id="load"></div>');
 		} else {
 			// Button activated & progressBar remove
 			//$('.btn').each(function(idx) { $(this).attr('disabled', false); });
-			$('#load_AjaxSubmit').remove();
+			//$('#load_AjaxSubmit').remove();
+
+			$('#load').remove();
 		}
 	},
 
@@ -534,15 +538,16 @@ var gagajf = {
 	 * form의 데이터를 json으로 변환 후 ajax 방식으로 submit 한다.
 	 * 모든 form의 ajax 처리는 이것으로 진행한다.
 	 * <pre>
-	 *     ajaxFormSubmit('/rest/commoncode/create', '#registerForm', jfRegisterSaveCallback);
+	 *     ajaxFormSubmit('/rest/commoncode/create', '#registerForm', jfRegisterSaveCallback, true);
 	 * </pre>
 	 * @param actionUrl - Request URL
 	 * @param formId - form ID
 	 * @param callbackFn - Callback function
+	 * @param progressbar - progressbar
 	 * @author gagamel
 	 * @since 2019. 4. 8
 	 */
-	ajaxFormSubmit : function(actionUrl, formId, callbackFn) {
+	ajaxFormSubmit : function(actionUrl, formId, callbackFn, progressbar) {
 		// comma(,) 제거
 		gagajf.removeCommaAtNumberFormattedInput(formId);
 		
@@ -565,11 +570,11 @@ var gagajf = {
 				xhr.setRequestHeader('Content-Type', 'application/json');
 
 				// Button disabled & progressBar creation
-				gagajf.showProgressbar(true);
+				if (progressbar) gagajf.showProgressbar(true);
 			},
 			complete : function(xhr) {
 				// Button abled & progressBar remove
-				gagajf.showProgressbar(false);
+				if (progressbar) gagajf.showProgressbar(false);
 
 				// 세션이 없다. 로그인 페이지로 이동
 				if (xhr.status == 901) {
@@ -624,10 +629,11 @@ var gagajf = {
 	 * @param actionUrl - Request URL
 	 * @param jsonData - Data of json format
 	 * @param callbackFn - Callback function
+	 * @param progressbar - progressbar
 	 * @author gagamel
 	 * @since 2019. 4. 8
 	 */
-	ajaxJsonSubmit : function(actionUrl, jsonData, callbackFn) {
+	ajaxJsonSubmit : function(actionUrl, jsonData, callbackFn, progressbar) {
 		$.ajax({
 			type : 'POST',
 			url : actionUrl,
@@ -642,11 +648,11 @@ var gagajf = {
 				xhr.setRequestHeader('Content-Type', 'application/json');
 
 				// Button disabled & progressBar creation
-				gagajf.showProgressbar(true);
+				if (progressbar) gagajf.showProgressbar(true);
 			},
 			complete : function(xhr) {
 				// Button abled & progressBar remove
-				gagajf.showProgressbar(false);
+				if (progressbar) gagajf.showProgressbar(false);
 
 				// 세션이 없다. 로그인 페이지로 이동
 				if (xhr.status == 901) {

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

@@ -78,6 +78,10 @@ const _PAGE_WISHLIST = _frontUrl + "/mypage/wish/list/form";					// 마이페이
 const _PAGE_WISHLIST_PUT = _frontUrl + "/mypage/wish/list/put";					// 위시리스트 담기
 const _PAGE_WISHLIST_DEL = _frontUrl + "/mypage/wish/list/delete";				// 위시리스트 삭제
 
+//== 마이페이지 ==/
+const _PAGE_NOMEMBER_ORDER_LIST = _frontUrl + "/noMember/order/list/form";		// 비회원 > 주문확인/배송조회
+const _PAGE_NOMEMBER_ORDER_DETAIL = _frontUrl + "/noMember/order/detail/form/";	// 비회원 > 주문/배송 상세
+const _PAGE_NOMEMBER_CRE_LIST = _frontUrl + "/noMember/cre/list/form";			// 비회원 > 취소/교환/반품 목록
 
 //== 검색 ==/
 
@@ -263,6 +267,8 @@ function cfnAddCart(cartList) {
 							location.href='/cart/list/form'; 	//내 쇼핑백 이동url
 						}
 					});
+					
+					fnGetCartGoodsList();
 				} else if (result.cartGb == "O"){
 					let orderHtml = "";
 					for(let i = 0 ; i < result.cartSqList.length ; i++) {