Procházet zdrojové kódy

Merge branch 'card007' into order

card007 před 5 roky
rodič
revize
02d65b0050

+ 40 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java

@@ -128,4 +128,44 @@ public interface TsfOrderChangeDao {
 	 */
 	Collection<OrderChange> getCreCancelDetailInfo(OrderChange orderChange);
 
+	/**
+	 * 마이페이지 반품 상세 정보 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	Collection<OrderChange> getCreReturnDetailInfo(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 교환 상세 정보 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	Collection<OrderChange> getCreExchangeDetailInfo(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 회수지 수정
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	int updateChgerAddr(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 반품메모 수정
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	int updateChgerRtnMemo(OrderChange orderChange);
+
 }

+ 123 - 4
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -329,7 +329,6 @@ public class TsfOrderChangeService {
 	public GagaMap getCreCancelDetailInfo(OrderChange orderChange) {
 		GagaMap map = new GagaMap();
 		Collection<OrderChange> result = new ArrayList<>();
-		List<Integer> ordDtlNoList = new ArrayList<>();
 
 		for (OrderChange tmpOrderChange : orderChangeDao.getCreCancelDetailInfo(orderChange)) {
 			// 세트상품 옵션별 배열로 담기
@@ -346,12 +345,13 @@ public class TsfOrderChangeService {
 				tmpOrderChange.setOptCd2Arr(arr4);
 			}
 
-			ordDtlNoList.add(tmpOrderChange.getOrdDtlNo());
 			result.add(tmpOrderChange);
 		}
 
-		OrderChange oneData = result.iterator().next();
-		oneData.setOrdDtlNoArr(ordDtlNoList.stream().mapToInt(Integer::intValue).toArray());
+		OrderChange oneData = new OrderChange();
+		if (result.size() > 0) {
+			oneData = result.iterator().next();
+		}
 
 		map.set("oneData", oneData);
 		map.set("cancelDetailList", result);
@@ -359,4 +359,123 @@ public class TsfOrderChangeService {
 		return map;
 	}
 
+	/**
+	 * 마이페이지 반품 상세 정보 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	public GagaMap getCreReturnDetailInfo(OrderChange orderChange) {
+		GagaMap map = new GagaMap();
+		Collection<OrderChange> result = new ArrayList<>();
+
+		for (OrderChange tmpOrderChange : orderChangeDao.getCreReturnDetailInfo(orderChange)) {
+			// 세트상품 옵션별 배열로 담기
+			if (tmpOrderChange.getItemNm().contains("!@!")) {
+				tmpOrderChange.setItemNmArr(tmpOrderChange.getItemNm().split("!@!"));
+				tmpOrderChange.setColorNmArr(tmpOrderChange.getColorNm().split(","));
+				tmpOrderChange.setOptCd1Arr(tmpOrderChange.getOptCd1().split(","));
+				tmpOrderChange.setOptCd2Arr(tmpOrderChange.getOptCd2().split(","));
+			} else {
+				String[] arr = {tmpOrderChange.getItemNm()}, arr2 = {tmpOrderChange.getColorNm()}, arr3 = {tmpOrderChange.getOptCd1()}, arr4 = {tmpOrderChange.getOptCd2()};
+				tmpOrderChange.setItemNmArr(arr);
+				tmpOrderChange.setColorNmArr(arr2);
+				tmpOrderChange.setOptCd1Arr(arr3);
+				tmpOrderChange.setOptCd2Arr(arr4);
+			}
+
+			result.add(tmpOrderChange);
+		}
+
+		OrderChange oneData = new OrderChange();
+		if (result.size() > 0) {
+			oneData = result.iterator().next();
+		}
+
+		map.set("oneData", oneData);
+		map.set("returnDetailList", result);
+
+		return map;
+	}
+
+	/**
+	 * 마이페이지 교환 상세 정보 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	public GagaMap getCreExchangeDetailInfo(OrderChange orderChange) {
+		GagaMap map = new GagaMap();
+		Collection<OrderChange> result = new ArrayList<>();
+
+		for (OrderChange tmpOrderChange : orderChangeDao.getCreExchangeDetailInfo(orderChange)) {
+			// 세트상품 옵션별 배열로 담기
+			if (tmpOrderChange.getItemNm().contains("!@!")) {
+				tmpOrderChange.setItemNmArr(tmpOrderChange.getItemNm().split("!@!"));
+				tmpOrderChange.setColorNmArr(tmpOrderChange.getColorNm().split(","));
+				tmpOrderChange.setOptCd1Arr(tmpOrderChange.getOptCd1().split(","));
+				tmpOrderChange.setOptCd2Arr(tmpOrderChange.getOptCd2().split(","));
+			} else {
+				String[] arr = {tmpOrderChange.getItemNm()}, arr2 = {tmpOrderChange.getColorNm()}, arr3 = {tmpOrderChange.getOptCd1()}, arr4 = {tmpOrderChange.getOptCd2()};
+				tmpOrderChange.setItemNmArr(arr);
+				tmpOrderChange.setColorNmArr(arr2);
+				tmpOrderChange.setOptCd1Arr(arr3);
+				tmpOrderChange.setOptCd2Arr(arr4);
+			}
+
+			// 교환상품 옵션 정보 조회 및 설정
+			OrderChange changeOptionInfo = orderChangeDao.getExchangeGoodsOptionInfoList(tmpOrderChange);
+			if (changeOptionInfo.getItemNm().contains("!@!")) {
+				tmpOrderChange.setChgItemNmArr(changeOptionInfo.getItemNm().split("!@!"));
+				tmpOrderChange.setChgColorNmArr(changeOptionInfo.getColorNm().split(","));
+				tmpOrderChange.setChgOptCd1Arr(changeOptionInfo.getOptCd1().split(","));
+				tmpOrderChange.setChgOptCd2Arr(changeOptionInfo.getOptCd2().split(","));
+			} else {
+				tmpOrderChange.setChgItemNm(changeOptionInfo.getItemNm());
+				tmpOrderChange.setChgColorNm(changeOptionInfo.getColorNm());
+				tmpOrderChange.setChgOptCd1(changeOptionInfo.getOptCd1());
+				tmpOrderChange.setChgOptCd2(changeOptionInfo.getOptCd2());
+			}
+
+			result.add(tmpOrderChange);
+		}
+
+		OrderChange oneData = new OrderChange();
+		if (result.size() > 0) {
+			oneData = result.iterator().next();
+		}
+
+		map.set("oneData", oneData);
+		map.set("exchangeDetailList", result);
+
+		return map;
+	}
+
+	/**
+	 * 마이페이지 회수지 수정
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	public int updateChgerAddr(OrderChange orderChange) {
+		return orderChangeDao.updateChgerAddr(orderChange);
+	}
+
+	/**
+	 * 마이페이지 반품메모 수정
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	public int updateChgerRtnMemo(OrderChange orderChange) {
+		return orderChangeDao.updateChgerRtnMemo(orderChange);
+	}
 }

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

@@ -893,7 +893,11 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("custNo", custNo);
 
 		// 취소상세 데이터 조회
-		mav.addObject("cancelDetailList", orderChangeService.getCreCancelDetailInfo(orderChange));
+		orderChange.setCustNo(custNo);
+		GagaMap map = orderChangeService.getCreCancelDetailInfo(orderChange);
+		OrderChange oneData = (OrderChange) map.get("oneData");
+		mav.addObject("cancelDetailList", map);
+		mav.addObject("oneData", oneData);
 
 		// 주문 결제정보 조회
 		Order order = new Order();
@@ -905,6 +909,71 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 취반교 반품 상세 화면
+	 *
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping({"/cre/return/detail/form"})
+	public ModelAndView mypageCreReturnDetailForm(OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		mav.addObject("custNo", custNo);
+
+		// 로그인여부 설정
+		mav.addObject("isLogin", TsfSession.isLogin());
+
+		// 취소상세 데이터 조회
+		orderChange.setCustNo(custNo);
+		GagaMap map = orderChangeService.getCreReturnDetailInfo(orderChange);
+		OrderChange oneData = (OrderChange) map.get("oneData");
+		mav.addObject("returnDetailList", map);
+		mav.addObject("oneData", oneData);
+
+		// 주문 결제정보 조회
+		Order order = new Order();
+		order.setOrdNo(orderChange.getOrdNo());
+		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
+
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCreReturnDetailForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 취반교 교환 상세 화면
+	 *
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping({"/cre/exchange/detail/form"})
+	public ModelAndView mypageCreExchangeDetailForm(OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		mav.addObject("custNo", custNo);
+
+		// 로그인여부 설정
+		mav.addObject("isLogin", TsfSession.isLogin());
+
+		// 취소상세 데이터 조회
+		orderChange.setCustNo(custNo);
+		GagaMap map = orderChangeService.getCreExchangeDetailInfo(orderChange);
+		OrderChange oneData = (OrderChange) map.get("oneData");
+		mav.addObject("exchangeDetailList", map);
+		mav.addObject("oneData", oneData);
+
+		mav.setViewName(super.getDeviceViewName("mypage/MypageCreExchangeDetailForm"));
+
+		return mav;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -1002,6 +1071,14 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap changeDelveryAddr(@RequestBody Order order) {
 		GagaMap result = new GagaMap();
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		result.set("message", message.getMessage("DELV_0001"));
+
+		if (TsfSession.isLogin()) {
+			order.setCustNo(TsfSession.getInfo().getCustNo());
+		} else {
+			order.setCustNo(0);
+		}
 
 		try {
 			commonService.updateDeliverAddr(order);
@@ -1014,9 +1091,6 @@ public class TsfMypageController extends TsfBaseController {
 			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
-		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", message.getMessage("DELV_0002"));
-
 		return result;
 	}
 
@@ -1032,6 +1106,8 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap changeDelveryAddrDelvMemo(@RequestBody Order order) {
 		GagaMap result = new GagaMap();
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		result.set("message", message.getMessage("DELV_0002"));
 
 		if (TsfSession.isLogin()) {
 			order.setCustNo(TsfSession.getInfo().getCustNo());
@@ -1046,8 +1122,62 @@ public class TsfMypageController extends TsfBaseController {
 			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
+		return result;
+	}
+
+	/**
+	 * 마이페이지 회수지 정보 수정
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping("/change/chger/addr")
+	@ResponseBody
+	public GagaMap changeChgerAddr(@RequestBody OrderChange orderChange) {
+		GagaMap result = new GagaMap();
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", message.getMessage("DELV_0002"));
+		result.set("message", message.getMessage("DELV_0003"));
+
+		try {
+			orderChange.setUpdNo(TsfSession.getInfo().getCustNo());
+			orderChangeService.updateChgerAddr(orderChange);
+
+			// TODO
+			// WMS IF TABLE 내 정보 업데이트 처리 필요
+		} catch (Exception e) {
+			result.set("status", GagaResponseStatus.FAIL.getCode());
+			result.set("message", message.getMessage("FAIL_0002"));
+		}
+
+		return result;
+	}
+
+	/**
+	 * 마이페이지 반품메모 수정
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 04. 13
+	 */
+	@PostMapping("/change/chger/rtn/memo")
+	@ResponseBody
+	public GagaMap changeChgerRtnMemo(@RequestBody OrderChange orderChange) {
+		GagaMap result = new GagaMap();
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		result.set("message", message.getMessage("DELV_0004"));
+
+		try {
+			orderChange.setUpdNo(TsfSession.getInfo().getCustNo());
+			orderChangeService.updateChgerRtnMemo(orderChange);
+
+			// TODO
+			// WMS IF TABLE 내 정보 업데이트 처리 필요
+		} catch (Exception e) {
+			throw new IllegalStateException(message.getMessage("FAIL_0002"));
+		}
 
 		return result;
 	}

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

@@ -768,6 +768,8 @@
 		     , Z.ORD_NO
 		     , Z.ORD_AMT
 		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , Z.CNCL_RTN_AMT
 		     , Z.CPN1_DC_AMT
 		     , Z.REAL_ORD_AMT
 		     , Z.PNT_DC_AMT
@@ -779,7 +781,8 @@
 		     , Z.SELF_GOODS_YN
 		     , Z.GOODS_NM
 		     , Z.GOODS_TYPE
-		     , Z.LIST_PRICE
+		     , Z.PRICE_ORG
+		     , Z.PRICE_SALE
 		     , Z.ADD_PAY_COST
 		     , Z.SYS_IMG_NM
 		     , Z.GIFT_PACK_YN
@@ -795,6 +798,10 @@
 		     , Z.RF_CNCL_AMT
 		     , Z.RF_DELIVERY_FEE
 		     , Z.RF_REAL_CNCL_AMT
+		     , Z.PG_GB
+		     , Z.PAY_STAT
+		     , Z.PAY_MEANS
+		     , Z.PAY_MEANS_NM
 		  FROM (SELECT OC.ORD_CHG_SQ
 		             , OC.CHG_GB
 		             , OCD.CHG_QTY
@@ -808,6 +815,8 @@
 		             , OD.ORD_NO
 		             , OD.ORD_AMT
 		             , OD.ORD_QTY
+		             , OD.CNCL_RTN_QTY
+		             , OD.CNCL_RTN_AMT
 		             , OD.CPN1_DC_AMT
 		             , OD.REAL_ORD_AMT
 		             , OD.PNT_DC_AMT
@@ -824,7 +833,8 @@
 		             , ODI.ORD_DTL_ITEM_SQ
 		             , ODI.OPT_CD1
 		             , ODI.OPT_CD2
-		             , G1.LIST_PRICE
+		             , ((OD.ORD_AMT - OD.CNCL_RTN_AMT - OD.CPN1_DC_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_ORG
+		             , ((OD.REAL_ORD_AMT + OD.PNT_DC_AMT + OD.GFCD_USE_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_SALE
 		             , OC.ADD_PAY_COST
 		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
 		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
@@ -841,6 +851,10 @@
 		             , R.RF_CNCL_AMT
 		             , R.RF_DELIVERY_FEE
 		             , R.RF_REAL_CNCL_AMT
+		             , P.PG_GB
+		             , P.PAY_STAT
+		             , P.PAY_MEANS
+		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
 		          FROM TB_ORDER_CHANGE OC
 		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
 		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
@@ -868,6 +882,9 @@
 		           AND C.USE_YN = 'Y'
 		          LEFT OUTER JOIN TB_REFUND R
 		            ON R.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		         INNER JOIN TB_PAYMENT P
+		            ON P.ORD_NO = O.ORD_NO
+		           AND P.PAY_GB = 'O'
 		         WHERE OCD.DEL_YN = 'N'
 		           AND O.DISP_YN = 'Y'
 		<choose>
@@ -884,11 +901,379 @@
 		</if>
 		  ) Z
 		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.CHG_QTY, Z.ORD_DT, Z.CHG_DATE, Z.CHG_TIME, Z.CHG_DT, Z.COMPLETE_DT, Z.CHG_STAT
-				, Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
+				, Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
 				, Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
-				, Z.GOODS_TYPE, Z.LIST_PRICE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
+				, Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
 				, Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
-				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT
+				, Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM
 		 ORDER BY Z.ORD_CHG_SQ DESC
 	</select>
+
+	<!-- 마이페이지 반품 상세 정보 조회 -->
+	<select id="getCreReturnDetailInfo" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getCreReturnDetailInfo */
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!')       AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ)                      AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD2
+		     , Z.ORD_CHG_SQ
+		     , Z.CHG_GB
+		     , Z.CHG_QTY
+		     , Z.ORD_DT
+		     , Z.CHG_DATE
+		     , Z.CHG_TIME
+		     , Z.CHG_DT
+		     , Z.COMPLETE_DT
+		     , Z.CHG_STAT
+		     , Z.CHG_STAT_NM
+		     , Z.ORD_NO
+		     , Z.ORD_AMT
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , Z.CNCL_RTN_AMT
+		     , Z.CPN1_DC_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_CD
+		     , Z.BRAND_NM
+		     , Z.SHOT_DELV_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.GOODS_NM
+		     , Z.GOODS_TYPE
+		     , Z.PRICE_ORG
+		     , Z.PRICE_SALE
+		     , Z.ADD_PAY_COST
+		     , Z.SYS_IMG_NM
+		     , Z.GIFT_PACK_YN
+		     , Z.REFUND_AMT
+		     , Z.RF_CPN1_AMT
+		     , Z.RF_TMTB1_AMT
+		     , Z.RF_TMTB2_AMT
+		     , Z.RF_GOODS_CPN_AMT
+		     , Z.RF_CART_CPN_AMT
+		     , Z.RF_PNT_AMT
+		     , Z.RF_PRE_PNT_AMT
+		     , Z.RF_GFCD_USE_AMT
+		     , Z.RF_CNCL_AMT
+		     , Z.RF_DELIVERY_FEE
+		     , Z.RF_REAL_CNCL_AMT
+		     , Z.PG_GB
+		     , Z.PAY_STAT
+		     , Z.PAY_MEANS
+		     , Z.PAY_MEANS_NM
+		     , Z.WD_GB
+		     , Z.CHGER_NM
+		     , Z.CHGER_PHNNO
+		     , Z.CHGER_BASE_ADDR
+		     , Z.CHGER_DTL_ADDR
+		     , Z.CHGER_RTN_MEMO
+		     , Z.WD_INVOICE_NO
+		     , Z.SHIP_COMP_CD
+		     , Z.SHIP_COMP_NM
+		  FROM (SELECT OC.ORD_CHG_SQ
+		             , OC.CHG_GB
+		             , OCD.CHG_QTY
+		             , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')                                AS ORD_DT
+		             , DATE_FORMAT(OCDH.REG_DT, '%Y.%m.%d')                             AS CHG_DATE
+		             , DATE_FORMAT(OCDH.REG_DT,'%H:%i:%S')                              AS CHG_TIME
+		             , DATE_FORMAT(OCD.REG_DT, '%Y.%m.%d')                              AS CHG_DT
+		             , DATE_FORMAT(OCD.COMPLETE_DT, '%Y.%m.%d')                         AS COMPLETE_DT
+		             , OCD.CHG_STAT
+		             , FN_GET_CODE_NM('G685', OCD.CHG_STAT)                             AS CHG_STAT_NM
+		             , OD.ORD_NO
+		             , OD.ORD_AMT
+		             , OD.ORD_QTY
+		             , OD.CNCL_RTN_QTY
+		             , OD.CNCL_RTN_AMT
+		             , OD.CPN1_DC_AMT
+		             , OD.REAL_ORD_AMT
+		             , OD.PNT_DC_AMT
+		             , OD.GFCD_USE_AMT
+		             , OCD.ORD_DTL_NO
+		             , G1.GOODS_CD
+		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , OD.SHOT_DELV_YN
+		             , G1.SELF_GOODS_YN
+		             , G1.GOODS_NM
+		             , IFNULL(C.COLOR_KNM, ODI.OPT_CD1)                                 AS COLOR_NM
+		             , G2.GOODS_NM                                                      AS ITEM_NM
+		             , G1.GOODS_TYPE
+		             , ODI.ORD_DTL_ITEM_SQ
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , ((OD.ORD_AMT - OD.CNCL_RTN_AMT - OD.CPN1_DC_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_ORG
+		             , ((OD.REAL_ORD_AMT + OD.PNT_DC_AMT + OD.GFCD_USE_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_SALE
+		             , OC.ADD_PAY_COST
+		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		             , OD.GIFT_PACK_YN
+		             , R.REFUND_AMT
+		             , R.RF_CPN1_AMT
+		             , R.RF_TMTB1_AMT
+		             , R.RF_TMTB2_AMT
+		             , R.RF_GOODS_CPN_AMT
+		             , R.RF_CART_CPN_AMT
+		             , R.RF_PNT_AMT
+		             , R.RF_PRE_PNT_AMT
+		             , R.RF_GFCD_USE_AMT
+		             , R.RF_CNCL_AMT
+		             , R.RF_DELIVERY_FEE
+		             , R.RF_REAL_CNCL_AMT
+		             , P.PG_GB
+		             , P.PAY_STAT
+		             , P.PAY_MEANS
+		             , FN_GET_CODE_NM('G014', P.PAY_MEANS)                              AS PAY_MEANS_NM
+		             , OC.WD_GB
+		             , OC.CHGER_NM
+		             , OC.CHGER_PHNNO
+		             , OC.CHGER_BASE_ADDR
+		             , OC.CHGER_DTL_ADDR
+		             , OC.CHGER_RTN_MEMO
+		             , OC.WD_INVOICE_NO
+		             , OC.SHIP_COMP_CD
+		             , (SELECT SHIP_COMP_NM
+		                  FROM TB_SHIP_COMPANY SC
+		                 WHERE SC.SHIP_COMP_CD = OC.SHIP_COMP_CD)                       AS SHIP_COMP_NM
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL_HST OCDH
+		            ON OCD.ORD_CHG_SQ = OCDH.ORD_CHG_SQ
+		           AND OCD.ORD_DTL_NO = OCDH.ORD_DTL_NO
+		           AND OCD.CHG_STAT = OCDH.CHG_STAT
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_ORDER O
+		            ON OD.ORD_NO = O.ORD_NO
+		         INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		            ON OD.ORD_NO = ODI.ORD_NO
+		           AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_GOODS G1
+		            ON OD.GOODS_CD = G1.GOODS_CD
+		         INNER JOIN TB_GOODS G2
+		            ON ODI.ITEM_CD = G2.GOODS_CD
+		         INNER JOIN TB_BRAND B
+		            ON G1.BRAND_CD = B.BRAND_CD
+		          LEFT OUTER JOIN TB_COLOR C
+		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
+		           AND C.USE_YN = 'Y'
+		          LEFT OUTER JOIN TB_REFUND R
+		            ON R.ORD_CHG_SQ = OC.ORD_CHG_SQ
+		         INNER JOIN TB_PAYMENT P
+		            ON P.ORD_NO = O.ORD_NO
+		           AND P.PAY_GB = 'O'
+		         WHERE OCD.DEL_YN = 'N'
+		           AND O.DISP_YN = 'Y'
+		<choose>
+			<when test="custNo != null and custNo != ''">
+			       AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+			       AND O.ORD_NO = #{ordNo}
+			       AND O.ORD_NM = #{orderNm}
+			</otherwise>
+		</choose>
+		<if test="ordChgSq != null and ordChgSq != ''">
+			       AND OC.ORD_CHG_SQ = #{ordChgSq}
+		</if>
+		       ) Z
+		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.CHG_QTY, Z.ORD_DT, Z.CHG_DATE, Z.CHG_TIME, Z.CHG_DT, Z.COMPLETE_DT, Z.CHG_STAT
+		        , Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
+		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
+		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.REFUND_AMT, Z.RF_CPN1_AMT, Z.RF_TMTB1_AMT
+		        , Z.RF_TMTB2_AMT, Z.RF_GOODS_CPN_AMT, Z.RF_CART_CPN_AMT, Z.RF_PNT_AMT, Z.RF_PRE_PNT_AMT, Z.RF_GFCD_USE_AMT, Z.RF_CNCL_AMT
+		        , Z.RF_DELIVERY_FEE, Z.RF_REAL_CNCL_AMT, Z.PG_GB, Z.PAY_STAT, Z.PAY_MEANS, Z.PAY_MEANS_NM, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
+		        , Z.CHGER_DTL_ADDR, Z.CHGER_RTN_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM
+		 ORDER BY Z.ORD_CHG_SQ DESC
+	</select>
+
+	<!-- 마이페이지 교환 상세 정보 조회 -->
+	<select id="getCreExchangeDetailInfo" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getCreCancelDetailInfo */
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!')       AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ)                      AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD2
+		     , Z.ORD_CHG_SQ
+		     , Z.CHG_GB
+		     , Z.CHG_QTY
+		     , Z.ORD_DT
+		     , Z.CHG_DATE
+		     , Z.CHG_TIME
+		     , Z.CHG_DT
+		     , Z.COMPLETE_DT
+		     , Z.CHG_STAT
+		     , Z.CHG_STAT_NM
+		     , Z.ORD_NO
+		     , Z.ORD_AMT
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , Z.CNCL_RTN_AMT
+		     , Z.CPN1_DC_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_CD
+		     , Z.BRAND_NM
+		     , Z.SHOT_DELV_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.GOODS_NM
+		     , Z.GOODS_TYPE
+		     , Z.PRICE_ORG
+		     , Z.PRICE_SALE
+		     , Z.ADD_PAY_COST
+		     , Z.SYS_IMG_NM
+		     , Z.GIFT_PACK_YN
+		     , Z.WD_GB
+		     , Z.CHGER_NM
+		     , Z.CHGER_PHNNO
+		     , Z.CHGER_BASE_ADDR
+		     , Z.CHGER_DTL_ADDR
+		     , Z.CHG_MEMO
+		     , Z.WD_INVOICE_NO
+		     , Z.SHIP_COMP_CD
+		     , Z.SHIP_COMP_NM
+		     , Z.DELV_ADDR_SQ
+		     , Z.RECIP_NM
+		     , Z.RECIP_PHNNO
+		     , Z.RECIP_BASE_ADDR
+		     , Z.RECIP_DTL_ADDR
+		     , Z.DELV_MEMO
+		  FROM (SELECT OC.ORD_CHG_SQ
+		             , OC.CHG_GB
+		             , OCD.CHG_QTY
+		             , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')                                AS ORD_DT
+		             , DATE_FORMAT(OCDH.REG_DT, '%Y.%m.%d')                             AS CHG_DATE
+		             , DATE_FORMAT(OCDH.REG_DT,'%H:%i:%S')                              AS CHG_TIME
+		             , DATE_FORMAT(OCD.REG_DT, '%Y.%m.%d')                              AS CHG_DT
+		             , DATE_FORMAT(OCD.COMPLETE_DT, '%Y.%m.%d')                         AS COMPLETE_DT
+		             , OCD.CHG_STAT
+		             , FN_GET_CODE_NM('G685', OCD.CHG_STAT)                             AS CHG_STAT_NM
+		             , OD.ORD_NO
+		             , OD.ORD_AMT
+		             , OD.ORD_QTY
+		             , OD.CNCL_RTN_QTY
+		             , OD.CNCL_RTN_AMT
+		             , OD.CPN1_DC_AMT
+		             , OD.REAL_ORD_AMT
+		             , OD.PNT_DC_AMT
+		             , OD.GFCD_USE_AMT
+		             , OCD.ORD_DTL_NO
+		             , G1.GOODS_CD
+		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , OD.SHOT_DELV_YN
+		             , G1.SELF_GOODS_YN
+		             , G1.GOODS_NM
+		             , IFNULL(C.COLOR_KNM, ODI.OPT_CD1)                                 AS COLOR_NM
+		             , G2.GOODS_NM                                                      AS ITEM_NM
+		             , G1.GOODS_TYPE
+		             , ODI.ORD_DTL_ITEM_SQ
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , ((OD.ORD_AMT - OD.CNCL_RTN_AMT - OD.CPN1_DC_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_ORG
+		             , ((OD.REAL_ORD_AMT + OD.PNT_DC_AMT + OD.GFCD_USE_AMT) * (OCD.CHG_QTY / (OD.ORD_QTY - OD.CNCL_RTN_QTY))) AS PRICE_SALE
+		             , OC.ADD_PAY_COST
+		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		             , OD.GIFT_PACK_YN
+		             , OC.WD_GB
+		             , OC.CHGER_NM
+		             , OC.CHGER_PHNNO
+		             , OC.CHGER_BASE_ADDR
+		             , OC.CHGER_DTL_ADDR
+		             , OC.CHG_MEMO
+		             , OC.WD_INVOICE_NO
+		             , OC.SHIP_COMP_CD
+		             , (SELECT SHIP_COMP_NM
+		                  FROM TB_SHIP_COMPANY SC
+		                 WHERE SC.SHIP_COMP_CD = OC.SHIP_COMP_CD)                       AS SHIP_COMP_NM
+		             , DA.DELV_ADDR_SQ
+		             , DA.RECIP_NM
+		             , DA.RECIP_PHNNO
+		             , DA.RECIP_BASE_ADDR
+		             , DA.RECIP_DTL_ADDR
+		             , DA.DELV_MEMO
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL_HST OCDH
+		            ON OCD.ORD_CHG_SQ = OCDH.ORD_CHG_SQ
+		           AND OCD.ORD_DTL_NO = OCDH.ORD_DTL_NO
+		           AND OCD.CHG_STAT = OCDH.CHG_STAT
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_ORDER_DETAIL OD2
+		            ON OCD.CHG_ORD_DTL_NO = OD2.ORD_DTL_NO
+		           AND OD2.ORD_EXCH_GB = 'E'
+		          LEFT OUTER JOIN TB_DELIVERY_ADDR DA
+		            ON OD2.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
+		         INNER JOIN TB_ORDER O
+		            ON OD.ORD_NO = O.ORD_NO
+		         INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		            ON OD.ORD_NO = ODI.ORD_NO
+		           AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_GOODS G1
+		            ON OD.GOODS_CD = G1.GOODS_CD
+		         INNER JOIN TB_GOODS G2
+		            ON ODI.ITEM_CD = G2.GOODS_CD
+		         INNER JOIN TB_BRAND B
+		            ON G1.BRAND_CD = B.BRAND_CD
+		          LEFT OUTER JOIN TB_COLOR C
+		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
+		           AND C.USE_YN = 'Y'
+		         WHERE OCD.DEL_YN = 'N'
+		           AND O.DISP_YN = 'Y'
+		<choose>
+			<when test="custNo != null and custNo != ''">
+			       AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+			       AND O.ORD_NO = #{ordNo}
+			       AND O.ORD_NM = #{orderNm}
+			</otherwise>
+		</choose>
+		<if test="ordChgSq != null and ordChgSq != ''">
+			       AND OC.ORD_CHG_SQ = #{ordChgSq}
+		</if>
+		       ) Z
+		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_GB, Z.CHG_QTY, Z.ORD_DT, Z.CHG_DATE, Z.CHG_TIME, Z.CHG_DT, Z.COMPLETE_DT, Z.CHG_STAT
+		        , Z.CHG_STAT_NM, Z.ORD_NO, Z.ORD_AMT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.REAL_ORD_AMT, Z.PNT_DC_AMT
+		        , Z.GFCD_USE_AMT, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM, Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM
+		        , Z.GOODS_TYPE, Z.PRICE_ORG, Z.PRICE_SALE, Z.ADD_PAY_COST, Z.SYS_IMG_NM, Z.GIFT_PACK_YN, Z.WD_GB, Z.CHGER_NM, Z.CHGER_PHNNO, Z.CHGER_BASE_ADDR
+		        , Z.CHGER_DTL_ADDR, Z.CHG_MEMO, Z.WD_INVOICE_NO, Z.SHIP_COMP_CD, Z.SHIP_COMP_NM, Z.DELV_ADDR_SQ, Z.RECIP_NM, Z.RECIP_PHNNO
+		        , Z.RECIP_BASE_ADDR, Z.RECIP_DTL_ADDR, Z.DELV_MEMO
+		 ORDER BY Z.ORD_CHG_SQ DESC
+	</select>
+	
+	<!-- 마이페이지 회수지 수정 -->
+	<update id="updateChgerAddr" parameterType="OrderChange">
+		/* TsfOrderChange.updateChgerAddr */
+		UPDATE TB_ORDER_CHANGE
+		   SET CHGER_NM = #{chgerNm}
+		     , CHGER_PHNNO = #{chgerPhnno}
+		     , CHGER_ZIPCODE = #{chgerZipcode}
+		     , CHGER_BASE_ADDR = #{chgerBaseAddr}
+		     , CHGER_DTL_ADDR = #{chgerDtlAddr}
+		     , CHGER_RTN_MEMO = #{chgerRtnMemo}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		 WHERE ORD_CHG_SQ = #{ordChgSq}
+	</update>
+	
+	<!-- 마이페이지 반품메모 수정 -->
+	<update id="updateChgerRtnMemo" parameterType="OrderChange">
+		/* TsfOrderChange.updateChgerRtnMemo */
+		UPDATE TB_ORDER_CHANGE
+		   SET CHGER_RTN_MEMO = #{chgerRtnMemo}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		 WHERE ORD_CHG_SQ = #{ordChgSq}
+	</update>
 </mapper>

+ 2 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -105,4 +105,6 @@ CANCEL_0001=\uC8FC\uBB38 \uCDE8\uC18C\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8
 #\uBC30\uC1A1
 DELV_0001=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uC9C0\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 DELV_0002=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uBA54\uBAA8\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+DELV_0003=\uC815\uC0C1\uC801\uC73C\uB85C \uD68C\uC218\uC9C0\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+DELV_0004=\uC815\uC0C1\uC801\uC73C\uB85C \uBC18\uD488\uBA54\uBAA8\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 

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

@@ -34,14 +34,14 @@
 			<div class="cont">
 				<div class="sec_head">
 					<h3 class="subH1">취소상세</h3>
-					<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${cancelDetailList.oneData.ordNo}"></em></span>
+					<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="${cancelDetailList.oneData.giftPackYn == 'Y'}">주문일 <span th:text="${cancelDetailList.oneData.ordDt}"></span></p>
-							<p th:if="${cancelDetailList.oneData.giftPackYn == 'Y'}">선물일 <span th:text="${cancelDetailList.oneData.ordDt}"></span></p>
-							<a href="javascript:void(0)" th:attr="ordNo=${cancelDetailList.oneData.ordNo}" onclick="fnGoToOrderDetail(this);">상세보기</a>
+							<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">
 							<!-- 주문상품 -->
@@ -77,8 +77,8 @@
 													<span class="count"><em th:text="${cancelDtl.chgQty}"></em>개</span>
 												</p>
 												<p>
-													<span class="price_org" th:if="${(cancelDtl.ordAmt - cancelDtl.cnclRtnAmt - cancelDtl.cpn1DcAmt) * (cancelDtl.chgQty / cancelDtl.ordQty) > (cancelDtl.realOrdAmt + cancelDtl.pntDcAmt + cancelDtl.gfcdUseAmt) * (cancelDtl.chgQty / cancelDtl.ordQty)}"><em th:text="${#numbers.formatInteger((ordDtl.ordAmt - ordDtl.cnclRtnAmt - ordDtl.cpn1DcAmt) * (cancelDtl.chgQty / cancelDtl.ordQty), 1, 'COMMA')}"></em>원</span>
-													<span class="price_sale"><em th:text="${#numbers.formatInteger((ordDtl.realOrdAmt + ordDtl.pntDcAmt + ordDtl.gfcdUseAmt) * (cancelDtl.chgQty / cancelDtl.ordQty), 1, 'COMMA')}"></em>원</span>
+													<span class="price_org" th:if="${cancelDtl.priceOrg > cancelDtl.priceSale}"><em th:text="${#numbers.formatInteger(cancelDtl.priceOrg, 1, 'COMMA')}"></em>원</span>
+													<span class="price_sale"><em th:text="${#numbers.formatInteger(cancelDtl.priceSale, 1, 'COMMA')}"></em>원</span>
 												</p>
 											</div>
 										</div>
@@ -90,13 +90,9 @@
 											</p>
 										</div>
 										<div class="button_box">
-											<p th:if="${chgStat == 'G685_20' or chgStat == 'G685_21' or chgStat == 'G685_50' or chgStat == 'G685_51'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${cancelDtl.ordChgSq}" onclick="fnCreCancel(this);"><span>신청취소</span></button></p>
-											<p th:if="${chgStat == 'G685_21' or chgStat == 'G685_32' or chgStat == 'G685_51'}"><button type="button" class="btn btn_default btn_sm" th:attr="ordChgSq=${cancelDtl.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="${chgStat == 'G685_21' or (chgGb == 'G680_40' and chgStat == 'G685_32')}"><p th:text="|${cancelDtl.addPayCost}|원 결제 후 교환 가능합니다."></p></div>
 								</div>
 							</th:block>
 							<!-- //주문상품 -->
@@ -109,23 +105,17 @@
 								<col width="210">
 								<col width="*">
 							</colgroup>
-							<tbody><tr>
-								<th>
-									취소접수 일자
-								</th>
-								<td>
-									2021.01.18
-								</td>
-							</tr>
-							<tr>
-								<th>
-									취소완료 일자
-								</th>
-								<td>
-									2021.01.30
-								</td>
-							</tr>
-							</tbody></table>
+							<tbody>
+								<tr>
+									<th>취소접수 일자</th>
+									<td th:text="${oneData.chgDt}"></td>
+								</tr>
+								<tr>
+									<th>취소완료 일자</th>
+									<td th:text="${oneData.completeDt}"></td>
+								</tr>
+							</tbody>
+						</table>
 					</div>
 					<h4 class="subH3">환불정보</h4>
 					<div class="tbl type6">
@@ -134,67 +124,68 @@
 								<col width="50%">
 								<col width="50%">
 							</colgroup>
-							<tbody><tr>
-								<td>
-									<dl>
-										<div>
-											<dt>환불 예정 금액</dt>
-											<dd>
-												<div class="price">
-													<span class="return_total_price"><em>3,546,200</em>원</span>
-												</div>
-											</dd>
-										</div>
-										<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
-											<dt>상품 취소 금액</dt>
-											<dd><em>123,456,789</em>원</dd>
-										</div>
-										<div class="include_item">
-											<dt>배송비</dt>
-											<dd><em>-2,500</em>원</dd>
-										</div>
-										<div class="include_item">
-											<dt>할인 금액 차감</dt>
-											<dd><em>-123,456,789</em>원</dd>
-										</div>
-									</dl>
-								</td>
-								<td>
-									<dl>
-										<div>
-											<dt>결제 금액 환불</dt>
-											<dd>
-												<em>123,456,789</em>원
-											</dd>
-										</div>
-										<div>
-											<dt>포인트 환불</dt>
-											<dd>
-												<em>123,456,789P</em>
-											</dd>
-										</div>
-										<div>
-											<dt>상품권 환불</dt>
-											<dd>
-												<em>-123,456,789</em>원
-											</dd>
-										</div>
-										<div>
-											<dt>환불 수단</dt>
-											<dd>
-												신용카드(현대카드) / 일시불
-											</dd>
-										</div>
-										<div>
-											<dt class="sr-only">영수증 확인</dt>
-											<dd>
-												<button type="button" class="btn btn_default btn_sm"><span>취소 전표 보기</span>
-												</button></dd>
-										</div>
-									</dl>
-								</td>
-							</tr>
-							</tbody></table>
+							<tbody>
+								<tr>
+									<td>
+										<dl>
+											<div>
+												<dt>환불 예정 금액</dt>
+												<dd>
+													<div class="price">
+														<span class="return_total_price"><em th:text="${#numbers.formatInteger(oneData.refundAmt + oneData.rfPntAmt + oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+													</div>
+												</dd>
+											</div>
+											<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+												<dt>상품 취소 금액</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfCnclAmt, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>배송비</dt>
+												<dd><em th:text="${#numbers.formatInteger(oneData.rfDeliveryFee, 1, 'COMMA')}"></em>원</dd>
+											</div>
+											<div class="include_item">
+												<dt>할인 금액 차감</dt>
+												<dd><em th:text="${#numbers.formatInteger((oneData.rfCpn1Amt + oneData.rfTmtb1Amt + oneData.rfTmtb2Amt + oneData.rfGoodsCpnAmt + oneData.rfCartCpnAmt + oneData.rfPrePntAmt) * -1, 1, 'COMMA')}"></em>원</dd>
+											</div>
+										</dl>
+									</td>
+									<td>
+										<dl>
+											<div>
+												<dt>결제 금액 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.refundAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>포인트 환불</dt>
+												<dd>
+													<em th:text="${#numbers.formatInteger(oneData.rfPntAmt, 1, 'COMMA')}"></em>P
+												</dd>
+											</div>
+											<div>
+												<dt>상품권 환불</dt>
+												<dd>
+													<em  th:text="${#numbers.formatInteger(oneData.rfGfcdUseAmt, 1, 'COMMA')}"></em>원
+												</dd>
+											</div>
+											<div>
+												<dt>환불 수단</dt>
+												<dd th:if="${oneData.pgGb == 'KCP'}" th:text="${oneData.payMeansNm}"></dd>
+												<dd th:if="${oneData.pgGb == 'NAVER'}">네이버페이</dd>
+												<dd th:if="${oneData.pgGb == 'KAKAO'}">카카오페이</dd>
+												<dd th:if="${oneData.pgGb == 'PAYCO'}">PAYCO</dd>
+											</div>
+											<div th:if="${oneData.pgGb == 'KCP' and oneData.payMeans == 'G014_30'}">
+												<dt class="sr-only">영수증 확인</dt>
+												<dd><button type="button" class="btn btn_default btn_sm" onclick="fnReceipt('cancel')"><span>취소 전표 보기</span></button></dd>
+											</div>
+										</dl>
+									</td>
+								</tr>
+							</tbody>
+						</table>
 					</div>
 					<div class="txt_info">
 						<ul>
@@ -204,7 +195,7 @@
 						</ul>
 					</div>
 					<div class="btn_footer_area">
-						<button type="button" class="btn btn_dark btn_md"><span>확인</span></button>
+						<button type="button" class="btn btn_dark btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"><span>확인</span></button>
 					</div>
 				</div>
 			</div>
@@ -214,329 +205,13 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	/*<![CDATA[*/
-	let totalCount = 0;
-	let pageSize = 0;
-
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/교환내역');
-		
-		// 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);
-		
-		// 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() + 1)).slice(-2);
-		date.setMonth(date.getMonth() - period);
-		let stDate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + (date.getDate() + 1)).slice(-2);
-
-		$('#edDate').val(edDate);
-		$('#searchForm input[name=edDate]').val(edDate);
-		$('#stDate').val(stDate);
-		$('#searchForm input[name=stDate]').val(stDate);
-	}
-
-	// 주문 목록 조회
-	var fnSearchCreList = function() {
-		gagaPaging.load(1);
-	}
-
-	// 주문 목록 조회 콜백
-	var fnSearchCallback = function(result) {
-		$('#creList').html(fnCreateCreList(result));
-
-		// Create pagination
-		gagaPaging.createPagination(result.creInfo.pageable);
-	}
-
-	// 검색기간 설정 체크
-	var fnCheckPeriod = function(param) {
-		let stDate = $('#stDate').val();
-		let edDate = $('#edDate').val();
-
-		let sdt = new Date(stDate);
-		let edt = new Date(edDate);
-		let dateDiff = Math.ceil((edt.getTime() - sdt.getTime()) / (1000 * 3600 * 24));
-
-		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);
-
-				$('#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);
-			}
-		}
-	}
-
-	// 상태값 별 수량 업데이트 처리
-	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);
-		});
-	}
-
-	// 주문상세상태코드 셀렉트박스 변경 이벤트
-	$('.select_custom.demand_status').find('li').on('click', function() {
-		$('#searchForm input[name=chgStat]').val($(this).attr('code'));
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 상세');
 	});
-
-	// 주문내역 리스트 처리
-	var fnCreateCreList = function(param) {
-		let tag = '';
-		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-
-		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 + '" 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" ordChgSq="' + cre.ordChgSq + '" 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" 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>';
-		}
-
-		return tag;
-	}
-	
-	// 취반교 상세 페이지 이동
-	var fnGoToCreDetail = function(param) {
-		let ordChgSq = $(param).attr('ordChgSq');
-		let chgGb = $(param).attr('chgGb');
-		
-		console.log('ordChgSq : ' + ordChgSq);
-		console.log('chgGb : ' + chgGb);
-		// TODO
-		// 취반교 상세 페이지 이동
-	}
-	
-	// 취반교 신청 취소 버튼 클릭 이벤트
-	var fnCreCancel = function(param) {
-		let ordChgSq = $(param).attr('ordChgSq');
-		// TODO
-		// 취반교 신청 철회 처리
-	}
-	
-	// 취반교 결제하기 버튼 클릭 이벤트
-	var fnCrePayAddCost = function(param) {
-		let ordChgSq = $(param).attr('ordChgSq');
-		// TODO
-		// 취반교 추가 배송비 결제 화면 이동 처리
-	}
-	
-	// 취반교 배송조회 버튼 클릭 이벤트
-	var fnGoToDeliveryTrack = function(param) {
-		let ordDtlNo = $(param).attr('ordDtlNo');
-		// TODO
-		// 최반교 배송조회 페이지 이동 처리
-	}
 /*]]>*/
 </script>
 

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

@@ -0,0 +1,353 @@
+<!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  : 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="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>

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

@@ -154,12 +154,15 @@
 				</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>
 			</div>
 			<!-- // CONT-BODY -->
@@ -289,7 +292,7 @@
 				} else {
 					tag += '								<p>주문일 <span>' + creList.ordDt + '</span></p>\n';
 				}
-				tag += '								<a href="javascript:void(0)" ordChgSq="' + creList.ordChgSq + '" chgGb="' + creList.oneData.chgGb + '" onclick="fnGoToCreDetail(this)">상세보기</a>\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) {
@@ -464,11 +467,21 @@
 	var fnGoToCreDetail = function(param) {
 		let ordChgSq = $(param).attr('ordChgSq');
 		let chgGb = $(param).attr('chgGb');
+		let ordNo = $(param).attr('ordNo');
 		
-		console.log('ordChgSq : ' + ordChgSq);
-		console.log('chgGb : ' + chgGb);
-		// TODO
-		// 취반교 상세 페이지 이동
+		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();
+		}
 	}
 	
 	// 취반교 신청 취소 버튼 클릭 이벤트

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

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

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

@@ -265,7 +265,7 @@
 													</li>
 													<li>
 														배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
-														<button type="button" class="btn_underline" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
+														<button type="button" class="btn_underline" onclick="fnChangeDeliveryMemo(this)"><span>변경하기</span></button>
 													</li>
 												</ul>
 											</div>

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

@@ -354,7 +354,7 @@
 													</li>
 													<li>
 														배송요청 사항&nbsp;:&nbsp;<span id="delvMemo" th:text="${deliveryAddrInfo.delvMemo}"></span>
-														<button type="button" class="btn_underline" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryMemo()"><span>변경하기</span></button>
+														<button type="button" class="btn_underline" th:if="${allCanYn == 'Y'}" onclick="fnChangeDeliveryMemo(this)"><span>변경하기</span></button>
 													</li>
 												</ul>
 											</div>

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

@@ -242,11 +242,11 @@ var fnChangeDeliveryAddr = function(param) {
 }
 
 // 배송메모 설정 팝업
-var fnChangeDeliveryMemo = function() {
+var fnChangeDeliveryMemo = function(param) {
 	var data = {};
-	data.delvMemo = $('input[name=delvMemo]').val();
+	data.delvMemo = $(param).parent().find('span').eq(0).text();
 	data.ordNo = oneData.ordNo;
-	
+
 	$.ajax({
 		type		: "POST",
 		url 		: "/common/delvMemoChangePop",

+ 1 - 0
src/main/webapp/ux/plugins/gaga/gaga.validation.js

@@ -675,6 +675,7 @@ var gagajf = {
 						}
 					}
 				} else { // 실패
+					console.log(result.error);
 					if (!gagajf.isNull(result.error.message)) {
 						mcxDialog.alert(result.error.message);
 					}